в начало  предыдущее  закрыть  следущее  в конец
141090, Московская область, г.Королев, мкр.Юбилейный, ул. Ленинская, д.4, пом.7
Телефон: +7(495) 589-99-53, e-mail: support@lissi.ru
Главная страница / Решения / Облачный криптографический токен PKCS#11

Облачный криптографический токен PKCS#11

PKCS#11 (Cryptoki) является стандартом, разработанным RSA Laboratories, для взаимодействия программ с криптографическими токенами, смарт-картами и другими аналогичными устройствами с помощью унифицированного программного интерфейса, который реализуется через библиотеки.

Криптографические токены обеспечивают как хранение сертификатов и ключевых пар (открытого и закрытого ключа), так и выполнение криптографических операций. Слабым звеном здесь является  хранение закрытого ключа. Если пропал открытый ключ, то его всегда можно восстановить по закрытому ключу или взять из сертификата. Пропажа/уничтожение токена с неизвлекаемым закрытым ключом имеет печальные последствия, например, вы не сможете расшифровать зашифрованные на вашем открытом ключе файлы, не сможете поставить электронную подпись (ЭП). Но последняя проблема решается  генерацией новой ключевой парой и за определенные деньги получением нового сертификата  в одном из удостоверяющих центров.

В настоящее время распространены программные, программно-аппаратные и аппаратные токены. И вот сейчас мы рассматриваем еще один вид криптографического токена PKCS#11 – облачного токена.

Сегодня уже никого не удивишь облачной флэшкой. Все преимущества и недостатки облачной флэшки практически один в один присущи и облачному токену. Главное здесь - безопасность хранимых в облачном токене данных, прежде всего, закрытых ключей. Может ли обеспечить это облачный токен? Мы говорим – ДА!

Итак, как работает облачный токен?

Естественно, облако PKCS#11, как любой сетевой ресурс, имеет точку входа -  IP/порт. Мы будет рассматривать реальное облако LS11CLOUD, существующее на просторах Интернет, по адресу pkcs11.ru:4444.

Первым шагом является регистрация клиента в облаке токенов. Для регистрации используется утилита ls11cloud_config:

bash-4.3$/usr/local/bin64/ls11cloud_config 
LS11CLOUD User Utility
usage:  /usr/local/bin64/ls11cloud_config <command> [-p <password>] [-n <new password>]
Commands:
        register <host> <port> <id> - register new user on the server
        duplicate <host> <port> <id> - duplicate user account on other computer
        change_pswd - change SESPAKE authentication password
        status      - display current configuration data
        log         - display server log file
        recreate    - re-create token to initial empty state
        unregister  - remove all user files from the server
NB: Don't use non-latin letters to avoid encoding problems!
Copyright(C) LISSI-Soft, Ltd (http://soft.lissi.ru) 2017-2018
bash-4.3$

Команда «register» утилиты ls11cloud_config и выполняет регистрацию пользователя под nickname-ом (поле «id») в облаке. Взаимодействие пользователя с облаком ведется по шифрованному каналу.Для выработки согласованного ключа, на основе которого будет защищаться/шифроваться трафик между клиентом и сервером, используется протокол SESPAKE - протокол выработки общего ключа с аутентификацией на основе пароля. Пароль для протокола SESPAKE также задается при регистрации в облаке.  Сразу отметим, что этот пароль не имеет ничего общего с PIN-кодами токена, который у пользователя будет находиться в облаке. Это пароль,  который участвует в создании защищенного канала между облаком и пользователем:

Именно по этому защищенному каналу и происходит доступ к токену в облаке. Отметим, что правилом хорошего тона могла бы быть смена пароля (команда «change_pswd») перед началом или окончанием каждого сеанса. Утилита ls11cloud_config имеет графическую оболочку, которая значительно облегчает процесс взаимодействия с облаком:

В этом случае регистрация выглядит следующим образом:

И после задания пароля пользователь будет зарегистрирован в облаке LS11CLOUD:

Есть вторая схема регистрации в облаке, она может быть предпочтительна, например, для корпоративного облака или если пользователь уже имеет облачный токен.

Администратор  регистрирует в облаке некоторое количество nickname-ов и дает им первоначальные пароли. Затем эти nickname-ы вместе с паролями выдаются сотрудникам. В этом случае, сотрудник сначала должен продублировать nickname с облака на своем рабочем месте:


Затем у него будет запрошен пароль, который ему выдал администратор облака PKCS#11, или, который у него уже есть. И если все прошло успешно, то сотрудник получит доступ к облаку:

Если пользователь дублировал токен, выданный ему администратором облачного токена, то сотруднику необходимо  изменить пароль. Это довольно стандартная процедура, когда будет запрошен текущий пароль, а затем дважды новый.

После регистрации в облаке пользователь должен проинициализировать свой персональный токен в облаке, который будет доступен ему и только ему. Инициализация облачного токена ничем не отличается от инициализации любого другого токена PKCS#11 и состоит в установке метки токена и, самое важное, установке секретных PIN-кодов.  Токены обладают двумя типами PIN-кода: пользовательский PIN-код (USER PIN) и PIN-код администратора (SO PIN). Пользовательский PIN-код должен быть известен только владельцу токена и им самим устанавливаться. Что касается SO PIN-кода, то владельцы токенов очень часто не обращают на него внимание. Это неправильно! И если мы говорим об облачном токене, его безопасности, то только владелец такого токена должен владеть обоими типами PIN-кода. Эти операции должны проводиться только по защищенному/шифрованному каналу. Для инициализации токена используется утилита pk11conf:

bash-4.3$ /usr/local/bin64/p11conf 
usage:  /usr/local/bin64/p11conf [-hitsmIupPredf] -A APIpath [-c slotID
-U userPin -S SOPin -n newPin -L label]
       -h display usage
       -i display PKCS#11 library info
       -s display slot(s) info (-c slotID is optional)
       -t display token(s) info (-c slotID is optional)
Others must use -c slotID
       -m display mechanism list
       -I initialize token 
       -u initialize user PIN
       -p set the user PIN
       -P set the SO PIN
       -e enumerate objects
       -d dump all object attributes (additional to -e and to -f)
       -r remove all objects
       -e -r remove enumerated objects with prompt
       -f enumerate certificates and write them to DER-files with promp
t
Version 5.7
Copyright(C)  2011-2018
bash-4.3$

Прежде чем пойти дальше, скажем о главном. Получить дистрибутивы со всем необходимым для работы с облаком PKCS#11 на компьютерах с операционными системами Linux и Windows, можно здесь.

Утилита p11conf, также как утилита ls11cloud_config, имеет графическую оболочку, которая находится в дистрибутивах:

В дистрибутивах также находится и библиотека ls11cloud, которая собственно и предоставляет пользователям интерфейс PKCS#11. Выбрав библиотеку облачного токена ls11cloud, можно инициализировать облачный токен:

При инициализации токена следует иметь ввиду, что по умолчанию SO PIN равен 87654321. После инициализации токена его требуется поменять. Итак, если все прошло успешно, пользователь получит следующую информацию:

Всё! После выполнения этих действий, облачный токен готов к использованию. Следует отметить, что в настоящее время облачный токен LS11CLOUD поддерживает только российскую криптографию (в соответствии со стандартами ГОСТ Р 34.10-2001/2012, ГОСТ Р 34.11-94/2012, ГОСТ 28147-89, ГОСТ Р 34.12-2015 и ГОСТ Р 34.13-2015). Посмотреть, какие криптографические механизмы поддерживаются облачным токеном, можно все той же утилитой p11conf:

Облачный токен может использоваться в любых приложениях, работающих с криптографическими провайдерами по протоколу PKCS#11.

Самый простой способ протестировать работу облачного токена - это установить версию Mozilla Firefox с поддержкой российской криптографии. Скачать эту версию под именем RedFox можно здесь. После того, как будет установлен браузер RedFox, необходимо подключить облачный токен (Правка->Настройки->Дополнительные->Устройства защиты->Загрузить):


После подключения браузер запросит PIN-код на доступ к облачному токену.

Теперь, когда подключен облачный токен, подключена российская криптография, можно попытаться установить анонимное TLS-соединение с любым веб-сервером по российским шифрсьютам, например по этому адресу - https://soft.lissi.ru/:


Если вы отключите облачный токен, то вы не сможете установить соединение. Для того, чтобы воспользоваться авторизованным https/tls или защищенной электронной почтой,  необходимо иметь личные сертификаты в облачном токене. Их можно установить тем же браузером из защищенного контейнера PKCS#12 либо получить в удостоверяющем центре (УЦ), воспользовавшись тем же браузером. Поскольку речь идет о тестировании, то сертификат заказать и получить можно на тестовом  УЦ.

Получить корневой сертификат тестового УЦ можно здесь.

Создать ключевую пару (ключ ЭП и ключ проверки ЭП), сформировать запрос и получить сертификат ключа проверки ЭП в тестовом УЦ, перейдя по следующей ссылке.

Облачный криптографический токен просто незаменим на мобильных платформах:

Вот и все, теперь можно заказывать «боевой» сертификат, устанавливать его в свой облачный токен и идти на сайт Госуслуг.

Скачать дистрибутив LS11CLOUD для пользователя.

© 2002-2017. ООО "ЛИССИ-Софт". Все права защищены
Телефон: +7(495) 589-99-53, e-mail: support@lissi.ru