Облачный токен PKCS#11 – миф или реальность?
PKCS#11 (Cryptoki) является стандартом, разработанным RSA Laboratories, для взаимодействия программ с криптографическими токенами, смарт-картами и другими аналогичными устройствами с помощью унифицированного программного интерфейса, который реализуется через библиотеки.
Поддержкой стандарта PKCS#11 для российской криптографии занимается технический комитет по стандартизации «Криптографическая защита информации» (ТК 26).
Если говорить о токенах с поддержкой российский криптографии, то можно говорить о программных токенах, программно-аппаратных токенах и аппаратнах токенах.
Криптографические токены обеспечивают как хранение сертификатов и ключевых пар (открытого и закрытого ключа), так и выполнение криптографических операций с соответствии со стандартом PKCS#11. Слабым звеном здесь является хранение закрытого ключа. Если пропал открытый ключ, то его всегда можно восстановить по закрытому ключу или взять из сертификата. Пропажа/уничтожение закрытого ключа имеет печальные последствия, например, вы не сможете расшифровать зашифрованные на вашем открытом ключе файлы, не сможете поставить электронную подпись (ЭП). Для формирования ЭП вам потребуется сгенерить новую ключевую пару и за определенные деньги получить новый сертификат на одном из удостоверяющих центров.
Выше мы упоминали программные, программно-аппаратные и аппаратные токены. Но можно рассматривать еще один вид криптографического токена — облачный.
Сегодня уже никого не удивишь облачной флэшкой. Все преимущества и недостатки облачной флэшки практически один в один присущи и облачному токену.
Главное здесь безопасность хранимых в облачном токене данных, прежде всего, закрытых ключей. Может ли это облачный токен обеспечить? Мы говорим — ДА!
И так как работает облачный токен? Первым шагом является регистрация клиента в облаке токенов. Для этого должна быть предусмотрена утилита, которая позволяет получить доступ к облаку, и зарегистрировать в нем свой логин/nickname.
После регистрации в облаке пользователь должен проинициализировать свой токен, а именно установить метку токена и самое важное установить SO-PIN и пользовательский PIN-коды. Эти операции должны проводиться только по защищенному/шифрованному каналу. Для инициализации токена используется утилита pk11conf. Для шифрования канала предлагается использовать алгоритм шифрования Магма-CTR (ГОСТ Р 34.13–2015).
Для выработки согласованного ключа, на основе которого будет защищаться/шифроваться трафик между клиентом и сервером, предлагается использовать рекомендованный ТК 26 протокол SESPAKE — протокол выработки общего ключа с аутентификацией на основе пароля.
В качестве пароля, на основе которого будет вырабатываться общий ключ, предлагается использовать механизм одноразовых паролей. Поскольку мы говорим о российской криптографии, то, естественно, генерить одноразовые пароли с использованием механизмов CKM_GOSTR3411_12_256_HMAC, CKM_GOSTR3411_12_512_HMAC или CKM_GOSTR3411_HMAC.
Использование данного механизма гарантирует, что доступ к объектам персонального токена в облаке через SO и USER PIN-коды, доступен только пользователю, который их установил с помощью утилиты pk11conf.
Все, после выполнения этих действий, облачный токен готов к использованию. Для доступа в облачному токену достаточно установить на PC библиотеку LS11CLOUD. При использовании облачного токена в приложениях на платформах Android и iOS предусматривается соответствующее SDK. Именно эта библиотека будет указываться при подключении облачного токена в браузере Redfox или прописываться в файле pkcs11.txt для google-chrome. Библиотека LS11CLOUD взаимодействует с токенов в облаке также по защищенному каналу на базе SESPAKE, создаваемому при вызове функции PKCS#11 C_Initialize!
Вот и все, теперь можно заказывать сертификат, устанавливать его в свой облачный токен и идти на сайт госуслуг.