В 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:
При регистрации пользователя указывается местоположение облачного сервиса (поле «host»), порт (поле «port»), через который ведется общение с внешним миром, и nickname (поле «id») пользователя:
Для регистрации 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, которая входит в установочный дистрибутив:
Для платформы MS Windows имеется графическая оболочка с интуитивно понятным интерфейсом P11CONFGUI для данной утилиты:
Для инициализации личного облачного токена достаточно запустить утилиту P11CONGGUI.exe и нажать кнопку «Инициализировать»:
После нажатия кнопки «ОК» облачный токен готов к работе. Если вы хотите использовать созданный облачный токен на другом компьютере, то вам, естественно, также необходимо установить на нем пакет LS11CLOUD_setup.exe. После этого необходимо запустить графическую утилиту ls11cloudgui и нажать кнопку «Дублировать токен»:
Теперь, когда мы зарегистрировались в облаке и создали в нем свой личный облачный токен, можно приступать к его использованию. Для тестирования возьмем браузер Redfox-52 и почтового клиента Redfoxmail-52, которые созданы на базе Mozilla Firefox и Mozilla Thunderbird, с поддержкой российской криптографии на токенах/смарткартах PKCS#11.
Тестирование будем проводить на платформе WIN32.
Для начала необходимо скачать и установить Redfox-52. Для установки браузера Redfox необходимо скачать архив firefox-52-gost и распаковать его.
Распакованную папку Mozilla Firefox переместить в удобное место. Затем создать ярлык для исполняемого файла firefox.exe (находится внутри папки Mozilla Firefox) и разместить его в любом удобном месте.
После запуска браузера необходимо подключить созданный облачный токен путем добавления в устройства библиотеки ls11cloud.dll:
Обращаем внимание на то, что дистрибутив браузера для MS Windows собран для платформы Win32. Следовательно, библиотеку ls11cloud.dll следует также брать для платформы Win32.
После того, как мы включили в число криптографических устройств, с которыми работает браузер, облачный токен, можно приступить к его тестировнию. На первом этапе необходимо получить хотя бы один личный сертификат. Для этого воспользуемся услугами одного из тестовых УЦ:
При нажатии кнопки «Продолжить» УЦ предложит проверить данные заявки, а затем выбрать криптографическое устройство (токен/смарткарта) для генерации ключевой пары и хранения личного сертификата:
Естественно, выбирается облачный токен и после нажатия кнопки «Продолжить» будет предложено не только получить личный сертификат, сформированный по вашей заявке, но и установить/сохранить корневой сертификат УЦ:
Убедиться в установке сертификата можно просмотрев хранилища сертификатов браузера:
Итак, механизмы облачного токена работают. Теперь проверим работу облачного токена в режиме авторизованного 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 может стать внутрикорпоративный документооборот, защищенная почта, банковская сфера.
Облачный сервис LS11CLOUD с его облачными токенами может оказаться очень полезным разработчикам приложений с использованием токенов/смарткарт PKCS#11.
P.S. Положил личный сертификат в облачный токен, подключил его к плагину госуслуг и оплатил налоговую задолжность через портал ГОСУСЛУГ. OC — Linux.
Предисловие
Напомним, что 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, которые созданы на базе Mozilla Firefox и Mozilla Thunderbird, с поддержкой российской криптографии на токенах/смарткартах PKCS#11.
Тестирование будем проводить на платформе 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 может стать внутрикорпоративный документооборот, защищенная почта, банковская сфера.
Облачный сервис LS11CLOUD с его облачными токенами может оказаться очень полезным разработчикам приложений с использованием токенов/смарткарт PKCS#11.
P.S. Положил личный сертификат в облачный токен, подключил его к плагину госуслуг и оплатил налоговую задолжность через портал ГОСУСЛУГ. OC — Linux.
Поделиться с друзьями
Комментарии (10)
saipr
29.04.2017 10:42-1Положил личный сертификат в облачный токен, подключил его к плагину госуслуг и оплатил налоговую задолжность через портал ГОСУСЛУГ .
OC — linux.hokum13
02.05.2017 11:17+1А зачем? Безопасность от такого решения падает, а сложность реализации растет. Можно спокойно авторизоваться с помощью двухфакторной авторизации самих ГУ.
На сайте той-же налоговой есть свой облачный токен, для подписи деклараций. Но там он оправдан, т.к. сильно упрощает процесс подачи декларации, при этом подпись Вы можете осуществить и с обычного токена (на сколько я помню).saipr
02.05.2017 11:32-1Можно спокойно авторизоваться с помощью двухфакторной авторизации самих ГУ.
На сайте ГУ есть несколько способов авторизации:
— с помощью пароля
— с помощью электронных средств.
С помощью пароля — к этому способу вообще нет доверия.
С помощью электронных средств — имеется в виду использования сертификата и электронной подписи.
Если обычный токен — это токен, используемый как флэшка, только с PIN-кодом (а так используется 99% токенов у нас), то тоже доверия мало. Если же вы имеете в виду ГОСТ-вый токен PKCS#11, то да.
Недостаток у реального, а не облачного токена, один — стеречь его надо.hokum13
02.05.2017 13:34+1— с помощью пароля
Авторизация с помощью пароля используется двухфакторная, с помощью СМС. Не верх секьюрности, но при хранении пароля отдельно от телефона позволяет гарантировать неуязвимость от автоматического взлома. Разумеется, если ломать будут лично Вас, то это возможно. Но неуязвимых систем вообще не существует.
Если же вы имеете в виду ГОСТ-вый токен PKCS#11, то да.
Под токеном я имею ввиду что-то вроде этого, дешево и сердито!
Недостаток у реального, а не облачного токена, один — стеречь его надо.
Так это не недостаток, а достоинство:
Для доступа к физическому токену мне нужно знать пароль/пин-код и иметь физический доступ к носителю одновременно. Т.е. хакер на другом конце планеты не вскроет сейф, а медвежатник не узнает пароль.
Для доступа же к облачному токену достаточно знать пароль! Более того, нужно доверять другому человеку свой токен, что в наше время может слишком дорого стоить!saipr
02.05.2017 15:16-1Ссылку на токен вы дали правильную. Но Вопрос остался: как этот токен используют — как флэшку или токен PKCS#11.
Но неуязвимых систем вообще не существует
Да, именно так.
Ноесли мы доверяем СМС от банка, то что мешает тому же банку вместо генерации одноразовых паролей, зпвести у себя для своих клиентов облачный криптографический токен. Мы же доверяем банкам!?hokum13
02.05.2017 16:38+1как флэшку или токен PKCS#11.
Разумеется я имею ввиду вариант использования с неизвлекаемым ключом. Хранишь в открытом виде — «сам себе злобный Буратино».
зпвести у себя для своих клиентов облачный криптографический токен.
На сайте налоговой это костыль, который закрывает законную необходимость в подписании декларации! Это я понимаю.
А зачем на сайте банка? Авторизация по «облачному криптоконтейнеру» менее надежна, чем простой пароль, а подпись на документах может быть легко заменена подписью самого банка. Зачем мне и банку это? Какой в этом смысл?
imbasoft
Решение интересное.
Но на мой взгляд нужно делать продукт, который будет реализовывать «облачный токен» внутри компании.
Держать приватные ключи «где-то у кого-то» в Интернете можно только в исключительных случаях, когда ключи не представляют большой ценности.
saipr
Спасибо.
По первому замечанию. Нет проблем развернуть облачный сервис на сервере в корпоративной сети (на каком-нибудь сервере с IP-адресом 192.168.х.х). Так что ничего делать не надо.
Что касается второго. Весь вопрос что-такое Интернет и «где-то у кого-то». Конечно, это должен быть проверенный провайдер.
imbasoft
Правильно ли я понял что в статье описывается — продукт (фрагмент) компании ЛИСИ-СФОТ LCSSL (http://soft.lissi.ru/ls_product/skzi/OpenSSL)?
Если нет то как реализовать функционал облачного токена в частном облаке?
saipr
По первому вопросу — нет не так. Это разные продукты, но имеющие на нижнем уровне одну и туже реализацию российскиз криптоалгоритмов. Если говорить о каких-то прототипах — то это естественно программый токен LS11SW.
По второму. Облако состоит из двух частей: серверной и клиентской/пользовательской.
Материал написан на основании того, что серверная часть уже поднята в интернете по адресу pkcs11.ru:4444 и статье не рассматривается. Для Частного облака компания должна выделить сервер, например, по адрему 192.168.0.45:4567 и на нем запустить серверную часть облака. Остальное по тексту с учетом адреса сервиса.