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

imageВ 2016 году была опубликована статья «Облачный токен PKCS#11 – миф или реальность?». Прошло полгода и вот на просторах Интернет появилось облако (облачный сервис), в котором желающие могут получить персональный облачный токен PKCS#11 с поддержкой российской криптографии.

ПРЕДИСЛОВИЕ

Напомним, что PKCS#11 (Cryptoki) является стандартом, разработанным RSA Laboratories, для взаимодействия программ с криптографическими токенами, смарт-картами и другими аналогичными устройствами с помощью унифицированного программного интерфейса, который реализуется через библиотеки.
Криптографические токены обеспечивают как хранение сертификатов и ключевых пар (открытого и закрытого ключа), так и выполнение криптографических операций с соответствии со стандартом PKCS#11.
imageИ так, на просторах Интернет появился облачный сервис 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 для данной утилиты:
image
Получить дистрибутив для пользователя можно здесь
И так приступаем к тестированию реализации российской криптографии в облачном токене PKCS#11. Тестирование проведем в среде MS Windows.
Установка LS11CLOUD_setup.exe включает в себя и генерацию начального значения датчика случайных чисел:
image
После скачивания и установки пакета LS11CLOUD_setup.exe, необходимо запустить графическую утилиту ls11cloudgui и нажать кнопку «Регистрации»:
image
Пароль необходим для создания защищенного канала (протокол SESPAKE) от приложения пользователя до его персонального токена в облаке. Пароль будет запрашиваться каждый раз, когда пользователь создает сессию с токеном:

image

В терминологии PKCS#11 сессия начинается с выполнения функции C_Initialize и разрывается выполнением функции C_Finalize.
Если вы поставите галочку в поле «Сохранить пароль», то он сохранится в конфигурационном файле пользователя на его компьютере и запрашиваться при установлении сессии не будет.
При успешной регистрации пользователя для него будет создан новый токен с SO-PIN-ом 87654321:
image

ИНИЦИАЛИЗАЦИЯ ТОКЕНА

После этого требуется провести инициализацию токена (установить метку, сменить 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 для данной утилиты:
image
Для инициализации личного облачного токена достаточно запустить утилиту P11CONGGUI.exe и нажать кнопку «Инициализировать»:
image
После нажатия кнопки «ОК» облачный токен готов к работе.
Если вы хотите использовать созданный облачный токен на другом компьютере, то вам, естественно, также необходимо установить на нем пакет LS11CLOUD_setup.exe. После этого необходимо запустить графическую утилиту ls11cloudgui и нажать кнопку «Дублировать токен»:
image

УСТАНОВКА ПЕРВОГО ЛИЧНОГО СЕРТИФИКАТА В ОБЛАЧНЫЙ ТОКЕН

Теперь, когда мы зарегистрировались в облаке и создали в нем свой личный облачный токен, можно приступать к его использованию. Для тестирования возьмем браузер 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:
image
Обращаем внимание на то, что дистрибутив браузера для MS Windows собран для платформы Win32. Следовательно библиотеку ls11cloud.dll следует также брать для платформы Win32.
После того, как мы включили в число криптографических устройств, с которыми работает браузер, облачный токен, можно приступить к его тестировнию. На первом этапе необходимо получить хотя бы один личный сертификат. Для этого воспользуемся услугами одного из тестовых УЦ:
image
Нажав кнопку «Продолжить» УЦ предложит проверить данные заявки, а затем предложит выбрать криптографическое устройство (токен/смарткарта) для генерации ключевой пары и хранения личного сертификата:
image
Естественно выбирается облачный токен и после нажатия кнопки «Продолжить» будет предложено не только получить личный сертификат, сформированный по вашей заявке, но и установить/сохранить корневой сертификат УЦ:
image
Убедиться в установке сертификата можно просмотрев хранилища сертификатов браузера:
image

ТЕСТИРУЕМ HTTPS и PKCS#12

И так механизмы облачного токена работают. Теперь проверим работу облачного токена в режиме авторизованного https на российских шифрсьютах:
image
Для проверки работы облачного токена на тестовых страницах КриптоПро воспользуемся ранее полученным на тестовом УЦ КриптоПро тестовым сертификатом и выгруженного в контейнер PKCS#12. Для начала необходимо скачать сертификат в формате PKCS#12 и установить его на облачном токене (пароль для контейнера PKCS#12 — 01234567):
image
В качестве устройства хранения необходимо выбрать облачный токен:
image
Затем потребуется ввести PIN-для доступам к токену, пароль для PKCS#12 и в итоге сертификат окажется на токене:
image
При этом не забудьте выставить уровень доверия корневому сертификату УЦ КриптоПро:
image
Теперь можно смело идти на тестовые страницы КриптоПро, например сюда:
image

ИСПОЛЬЗОВАНИЕ ОБЛАЧНОГО ТОКЕНА ДЛЯ ОРГАНИЗАЦИИ БЕЗОПАСНОЙ ПОЧТОВОЙ ПЕРЕПИСКИ

Теперь посмотрим как работает облачный токен в почтовом клиенте Redfoxmail/Thunderbird.
Для установки почтового клиента Mozilla Thunderbird на платформу WIN32 необходимо скачать архив — thunderbird-52.0-gost и распаковать его. Распакованную папку Mozilla Thunderbird переложить в удобное место…
Затем создать ярлык для исполняемого файла thunderbird.exe (находится внутри папки Mozilla Thunderbird) и разместить их в любом удобном месте. После запуска почтового клиента подключаем облачный токен, аналогично тому как делали для браузера Redfox:
image
После подключения облачного токена станут доступны хранящиеся на нем сертификаты. Но этого может оказаться мало – необходимо установить корневые сертификаты УЦ, на которых выпущены личные сертификаты. Именно для этого мы и сохранили при выпуске корневой сертификат:
image
Теперь в параметрах учетной записи необходимо установить сертификат, который будет использоваться для подписания и шифрования писем:
image
Теперь можно смело подписывать свои сообщения:
image
Это сообщение может быть принято любым почтовым клиентом с поддержкой российской криптографии, например KMail:
image

ЗАКЛЮЧЕНИЕ

И так, можно говорить о том, что миф становится реальностью. Основной сферой применения может стать внутрикорпоративный документооборот, защищенная почта, банковская сфера.
Облачный сервис LS11CLOUD с его облачными токенами может оказаться очень полезным разработчикам приложений с использованием токенов/смарткарт PKCS#11.
ссылка на оригинал статьи https://geektimes.ru/post/288674/

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *