Криптографический облачный сервис PKCS#11: от мифа к реальности
В 2016 году была опубликована статья «Облачный токен PKCS#11 — миф или реальность?». Прошло полгода и вот на просторах Интернет появилось облако (облачный сервис), в котором желающие могут получить персональный облачный токен PKCS#11 с поддержкой российской криптографии.
Предисловие
Напомним, что PKCS#11 (Cryptoki) является стандартом, разработанным RSA Laboratories, для взаимодействия программ с криптографическими токенами, смарт-картами и другими аналогичными устройствами с помощью унифицированного программного интерфейса, который реализуется через библиотеки.
Криптографические токены обеспечивают как хранение сертификатов и ключевых пар (открытого и закрытого ключа), так и выполнение криптографических операций с соответствии со стандартом PKCS#11.
И так, на просторах Интернет появился облачный сервис LS11CLOUD, являющийся облачной реализацией стандарта PKCS#11 v. 2.40, дополненного поддержкой российских криптографических алгоритмов в соответствии со спецификациями, выработанными Техническим комитетом по стандартизации (ТК 26) «Криптографическая защита информации». Облачный сервис LS11CLOUD поддерживает алгоритмы ГОСТ Р 34.10–2012, ГОСТ Р 34.11–2012, ГОСТ Р 34.12–2015 и ГОСТ Р 34.13–2015, а также сопутствующие алгоритмы и параметры, определенные руководящими документами ТК 26.
Безусловным преимуществом облачного токена является то, что теперь пользователю не нужно носить с собой токен/смарткарту, заботиться о его сохранности. Имея личный токен в облаке пользователь может иметь к нему доступ к нему и с домашнего компьютера и с ноутбука и с мобильного устройства.
Обеспечение безопасного удаленного взаимодействия с защищенным личным контейнером криптографических объектов (токеном) по шифрованному сетевому каналу осуществляется с применением протокола аутентификации SESPAKE (Security Evaluated Standardized Password-Authenticated Key Exchange), рекомендованному ТК 26.
На стороне пользователя основная функциональность обеспечивается динамической библиотекой ls11cloud со стандартным программным интерфейсом pkcs#11. Для получения личного облачного токена пользователю необходимо зарегистрироваться на облачном сервисе LS11CLOUD, после которой провести инициализацию и конфигурирование личного токена на облачном сервисе.
Регистрация пользователя на облачном сервисе
Для начала отметим, что облачный токен LS11CLOUD находится по адресу pkcs11.ru и принимает запросы на порт 4444.
Как уже отмечалось, регистрация пользователя на сервере и обслуживание его учетной записи производятся утилитой ls11cloud_config:
bash-4.3$ ./ls11cloud_config
LS11CLOUD User Utility
usage: ./ls11cloud_config [-p ] [-n ]
Commands:
register - register new user on the server
duplicate - 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
bash-4.3$
При регистрации пользователя указывается местоположение облачного сервиса (поле «host»), порт (поле «port»), через который ведется общение с внешним миром, и nickname (поле «id»), пользователя:
bash-4.3$ ls11cloud_config register pkcs11.ru 4444 habrahabr
Для регистрации c платформы MS Windows имеется графическая оболочка с интуитивно понятным интерфейсом LS11CLOUDGUI для данной утилиты:
Получить дистрибутив для пользователя можно здесь.
И так приступаем к тестированию реализации российской криптографии в облачном токене PKCS#11. Тестирование проведем в среде MS Windows.
Установка LS11CLOUD_setup.exe включает в себя и генерацию начального значения датчика случайных чисел:
После скачивания и установки пакета LS11CLOUD_setup.exe, необходимо запустить графическую утилиту ls11cloudgui и нажать кнопку «Регистрации»:
Пароль необходим для создания защищенного канала (протокол SESPAKE) от приложения пользователя до его персонального токена в облаке. Пароль будет запрашиваться каждый раз, когда пользователь создает сессию с токеном:
В терминологии PKCS#11 сессия начинается с выполнения функции C_Initialize и разрывается выполнением функции C_Finalize.
Если вы поставите галочку в поле «Сохранить пароль», то он сохранится в конфигурационном файле пользователя на его компьютере и запрашиваться при установлении сессии не будет.
При успешной регистрации пользователя для него будет создан новый токен с SO-PIN-ом 87654321:
Инициализация токена
После этого требуется провести инициализацию токена (установить метку, сменить SO PIN, установить пользовательский PIN и т.д.). Для инициализации токена используется утилита p11conf, которая входит в установочный дистрибутив:
bash-4.3$ p11conf
usage: p11conf [-hitsmIupPred] -A APIpath [-c slotID -U userPin -S SOPin -n newPin -L label]
-h display usage
-i display PKCS11 info
-t display token info
-s display slot info
-m display mechanism list
-I initialize token
-u initialize user PIN
-p set the user PIN
-P set the SO PIN
-r remove all objects
-e enumerate objects
-d dump all object attributes
bash-4.3$
Для платформы MS Windows имеется графическая оболочка с интуитивно понятным интерфейсом P11CONFGUI для данной утилиты:
Для инициализации личного облачного токена достаточно запустить утилиту P11CONGGUI.exe и нажать кнопку «Инициализировать»:
После нажатия кнопки «ОК» облачный токен готов к работе. Если вы хотите использовать созданный облачный токен на другом компьютере, то вам, естественно, также необходимо установить на нем пакет LS11CLOUD_setup.exe. После этого необходимо запустить графическую утилиту ls11cloudgui и нажать кнопку «Дублировать токен»:
Установка первого личного сертификата в облачный токен
Теперь, когда мы зарегистрировались в облаке и создали в нем свой личный облачный токен, можно приступать к его использованию. Для тестирования возьмем браузер Redfox-52 и почтового клиента Redfoxmail-52 с поддержкой российской криптографии на токенах/смарткартах PKCS#11 и которые созданы на базе Mozilla Firefox и Mozilla Thunderbird.
Тестирование будем проводить на платформе WIN32.
Для начала необходимо скачать и установить Redfox-52.Для установки браузера Redfox необходимо скачать архив — firefox-52-gost и распаковать его.
Распакованную папку Mozilla Firefox переместить в удобное место. Затем создать ярлык для исполняемого файла firefox.exe (находится внутри папки Mozilla Firefox) и разместить его в любом удобном месте.
После запуска браузера необходимо подключить созданный облачный токен, путем добавления в устройства библиотеки ls11cloud.dll:
Обращаем внимание на то, что дистрибутив браузера для MS Windows собран для платформы Win32. Следовательно библиотеку ls11cloud.dll следует также брать для платформы Win32.
После того, как мы включили в число криптографических устройств, с которыми работает браузер, облачный токен, можно приступить к его тестировнию. На первом этапе необходимо получить хотя бы один личный сертификат. Для этого воспользуемся услугами одного из тестовых УЦ:
Нажав кнопку «Продолжить» УЦ предложит проверить данные заявки, а затем предложит выбрать криптографическое устройство (токен/смарткарта) для генерации ключевой пары и хранения личного сертификата:
Естественно выбирается облачный токен и после нажатия кнопки «Продолжить» будет предложено не только получить личный сертификат, сформированный по вашей заявке, но и установить/сохранить корневой сертификат УЦ:
Убедиться в установке сертификата можно просмотрев хранилища сертификатов браузера:
Тестируем HTTPS и PKCS#12
И так механизмы облачного токена работают. Теперь проверим работу облачного токена в режиме авторизованного https на российских шифрсьютах:
Для проверки работы облачного токена на тестовых страницах КриптоПро воспользуемся ранее полученным на тестовом УЦ КриптоПро тестовым сертификатом и выгруженного в контейнер PKCS#12. Для начала необходимо скачать сертификат в формате PKCS#12 и установить его на облачном токене (пароль для контейнера PKCS#12 — 01234567):
В качестве устройства хранения необходимо выбрать облачный токен:
Затем потребуется ввести PIN-для доступам к токену, пароль для PKCS#12 и в итоге сертификат окажется на токене:
При этом не забудьте выставить уровень доверия корневому сертификату УЦ КриптоПро:
Теперь можно смело идти на тестовые страницы КриптоПро, например сюда:
Использование облачного токена для организации безопасной почтовой переписки
Теперь посмотрим как работает облачный токен в почтовом клиенте Redfoxmail/Thunderbird.
Для установки почтового клиента Mozilla Thunderbird на платформу WIN32 необходимо скачать архив — thunderbird-52.0-gost и распаковать его. Распакованную папку Mozilla Thunderbird переложить в удобное место.
Затем создать ярлык для исполняемого файла thunderbird.exe (находится внутри папки Mozilla Thunderbird) и разместить их в любом удобном месте. После запуска почтового клиента подключаем облачный токен, аналогично тому как делали для браузера Redfox:
После подключения облачного токена станут доступны хранящиеся на нем сертификаты. Но этого может оказаться мало — необходимо установить корневые сертификаты УЦ, на которых выпущены личные сертификаты. Именно для этого мы и сохранили при выпуске корневой сертификат:
Теперь в параметрах учетной записи необходимо установить сертификат, который будет использоваться для подписания и шифрования писем:
Теперь можно смело подписывать свои сообщения:
Это сообщение может быть принято любым почтовым клиентом с поддержкой российской криптографии, например KMail:
Заключение
И так, можно говорить о том, что миф становится реальностью. Основной сферой применения может стать внутрикорпоративный документооборот, защищенная почта, банковская сфера.
Облачный сервис LS11CLOUD с его облачными токенами может оказаться очень полезным разработчикам приложений с использованием токенов/смарткарт PKCS#11.