Технологии безопасности

Сайт посвященный вопросам безопасности

Криптографический облачный сервис PKCS#11: от мифа к реальности

(adsbygoogle = window.adsbygoogle || []).push({});

В 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 <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
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.