Как стать автором
Обновить

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

Время на прочтение 6 мин
Количество просмотров 13K
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:

$ ./ls11cloud_config 
LS11CLOUD User Utility
Usage:
ls11cloud_config <command> [-p <password>] [-n <new password>]
NB: Use -n <new password> with change_pswd command only!
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!
$

При регистрации пользователя указывается местоположение облачного сервиса (поле «host»), порт (поле «port»), через который ведется общение с внешним миром, и nickname (поле «id») пользователя:

 bash-4.3$ ls11cloud_config register pkcs11.ru 4444 HABRAHABR

Для регистрации c платформ Linux, Windows и OS X (macOS) имеется графическая утилита с интуитивно понятным интерфейсом guils11cloud_conf для данной утилиты:

image

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

image

Если с данного рабочего места не регистрировались в облачном токене, то вам будет предложено создать токен или подключиться к ранее созданному (см. скриншот). Для первичной регистрации в облаке нажимаем кнопку «Регистрация в облаке»:

image

«Логин пользователя» это именно логин, под которым пользователь будет зарегистрирован в облаке.
Пароль необходим для создания защищенного канала (протокол SESPAKE) от приложения пользователя до его персонального токена в облаке. Пароль будет запрашиваться каждый раз, когда пользователь будет обращаться к токену в облаке, если только он не сохранит его сразу же после успешной регистрации в облаке:

image

При успешной регистрации пользователя для него будет создан новый токен с SO-PIN-ом 87654321:

image

Инициализация токена


После нажатия кнопки «OK» появится форма, в которой необходимо будет указать метку токена (по умолчанию она совпадает с логином пользователя в облаке) и PIN-код, которому пользователь будет иметь доступ к свонму облачному токену:

image

После нажатия кнопки «Готово» облачный токен готов к работе:

image

В дальнейшем для конфигурирования облачного токена как и для любого другого токена/смарткарты PKCS#11 используется утилита p11conf:

image

Если вы хотите использовать созданный облачный токен на другом компьютере, то вам, естественно, тоо достаточно запустить графическую утилиту guils11cloud_config и нажать кнопку «Дублировать токен»:

image

После этого вспомнить логин, под которым вы зарегистрированы в облаке и пароль для доступа. Нажав кнопку «Готово» вы получите доступ к вашему токену:

image

Установка первого личного сертификата в облачный токен


Теперь, когда мы зарегистрировались в облаке и создали в нем свой личный облачный токен, можно приступать к его использованию. Для тестирования возьмем браузер Redfox-52 и почтового клиента Redfoxmail-52, которые созданы на базе Mozilla Firefox и Mozilla Thunderbird, с поддержкой российской криптографии на токенах/смарткартах PKCS#11.

Тестирование будем проводить на платформе WIN32.

Для начала необходимо скачать и установить Redfox-52. Для установки браузера Redfox необходимо скачать архив и распаковать его.

Распакованную папку 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 может стать внутрикорпоративный документооборот, защищенная почта, банковская сфера.
Облачный сервис LS11CLOUD с его облачными токенами может оказаться очень полезным разработчикам приложений с использованием токенов/смарткарт PKCS#11.

imageP.S. Положил личный сертификат в облачный токен, подключил его к плагину госуслуг и оплатил налоговую задолжность через портал ГОСУСЛУГ. OC — Linux.
Теги:
Хабы:
+4
Комментарии 10
Комментарии Комментарии 10

Публикации

Истории

Работа

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн