Криптографический центр etax и Центр загрузки

Криптографический центр etax и Центр загрузки Электронная цифровая подпись
Содержание
  1. Нативные библиотеки
  2. OpenSSL-style
  3. PKCS#11
  4. NSS
  5. Библиотеки c собственным интерфейсом
  6. Особенности некоторых браузеров по настройке работы плагина
  7. Как работает КриптоПро
  8. Главные функции КриптоПро
  9. Кому нужна программа КриптоПро
  10. Что нужно для работы с КЭП под macOS
  11. Проверить подпись на документе
  12. Криптопровайдеры
  13. Инициализация XML-подписи в Santuario
  14. Где купить КриптоПро
  15. Резюме
  16. Преимущества компании КриптоПро
  17. Среди главных преимуществ КриптоПро выделяют:
  18. Подготовка OpenSSL для работы с ГОСТ
  19. Как мы можем грубо заставить Крипто Про отдать ключи
  20. Выдача контейнера PKCS12
  21. Вопросы и ответы
  22. Тестовые самоподписанные ключи
  23. Программные средства для цифровой подписи документов
  24. СКЗИ (Средства Криптографической Защиты Информации
  25. Устанавливаем и настраиваем КЭП под macOS
  26. Устанавливаем КриптоПро CSP
  27. Устанавливаем драйверы Рутокен
  28. Устанавливаем сертификаты
  29. Удаляем все старые ГОСТовские сертификаты
  30. Устанавливаем корневые сертификаты
  31. Скачиваем сертификаты удостоверяющего центра
  32. Устанавливаем сертификат с Рутокен
  33. Конфигурируем CryptoPro для работы ссертификатами ГОСТ Р 34. 10-2012
  34. Устанавливаем специальный браузер Chromium-GOST
  35. Устанавливаем расширения для браузера
  36. 1 КриптоПро ЭЦП Browser plug-in
  37. Плагин для Госуслуг
  38. Настраиваем плагин для Госуслуг
  39. Активируем расширения
  40. Настраиваем расширение КриптоПро ЭЦП Browser plug-in
  41. Проверяем что все работает
  42. Заходим на тестовую страницу КриптоПро
  43. Заходим в Личный Кабинет на nalog
  44. Заходим на Госуслуги
  45. Что делать, если перестало работать
  46. Можно ли скачать КриптоПро бесплатно
  47. Выдача контейнера JKS
  48. Криптографические решения. От криптопровайдеров до браузерных плагинов
  49. Локальные прокси
  50. Как этим пользоваться?
  51. Центр загрузки
  52. Смена PIN-кода контейнера
  53. Выясняем название контейнера КЭП
  54. Смена PIN командой из terminal
  55. Что нужно допилить в готовом клиенте, чтобы сбежать с Крипто Про
  56. Как подписать документ ЭЦП с помощью КриптоПро 5
  57. Браузерные плагины
  58. Кроссбраузерные плагины
  59. ActiveX
  60. Подпись файлов в macOS
  61. Выясняем хэш сертификата КЭП
  62. Подпись файла командой из terminal
  63. Установка Apple Automator Script
  64. Как мы можем попросить Крипто Про отдать ключи (на самом деле, нет)

Нативные библиотеки

OpenSSL-style

Open Source библиотека OpenSSL обладает широкими криптографическими возможностями и удобным механизмом ее расширения другими криптоалгоритмами. OpenSSL является основным криптоядром для широкого спектра приложений Open Source.

После того, как в эту библиотеку компанией Криптоком были добавлены ГОСТы, появились патчи для «гостификации» многих популярных приложения, использующих OpenSSL. На базе OpenSSL некоторые вендоры разработали и сертифицировали СКЗИ, кроме того в ряд продуктов OpenSSL входит «неявным» образом.

Криптографический центр etax и Центр загрузки

СпецификацияOpenSSL API — один из де-факто стандартов для СПО
ПлатформыСемейство Windows, GNU\Linux, OS X, iOS, Android
Алгоритмы и криптографические протоколыЭЦП, шифрование, хэш-функция, имитозащита, HMAC, VKO;
TLS
Интеграция с PKIX.509, PKCS#10, CMS, CRL, OCSP, TSP
Механизмы ЭЦПНативный программный интерфейс, Си-style;
Механизмы аутентификацииклиентская аутентификация в рамках TLS
собственные механизмы на базе ЭЦП случайных данных
Механизмы “гостирования” TLSTLS с российской криптографией поддержан в библиотеке (в случае использования OpenSSL в качестве браузерного криптодвижка)
TLS-прокси на базе OpenSSL (например, sTunnel)
Форматы защищенных сообщенийPKCS#7, CMS, XMLSec (при использовании с библиотекой www.aleksey.com/xmlsec, в том числе ГОСТ), S/MIME
Интеграция с браузеромЧерез TLS-прокси
Через проприетарные плагины
В Chromium OpenSSL один из возможных криптодвижков
Интеграция со службой каталоговOpenLDAP
Мобильные платформыiOS, Android
Команднострочная утилитаЕсть
Хранилища ключейФайлы, USB-токены
Взаимодействие с USB-токенамиХранилище ключей и сертификатов
Использование аппаратной реализации алгоритмов
Через PKCS#11
ПриложенияOpenVPN, Apache, sTunnel, Nginx, Postgre SQL, postfix, dovecot
Проприетарные приложения
Интеграция с фреймворкамиOpenSSL интегрирован в большое количество фреймворков (PHP, Python, .NET и др.), но ГОСТа нет. Требуется выпускать патчи к фреймворкам
ИнсталляцияПрограмма установки, в целом не требуются права системного администратора
Копирование
Запуск использующих rкриптосредства приложений с FLASH-памяти USB-токена
Примеры (ГОСТ)МагПро КриптоПакет
ЛирССЛ
OpenSSL (несерт.)
OpenSSL + engine PKCS11_GOST + Рутокен ЭЦП

Проблемы:

  • OpenSSL и его аналоги не поддерживается приложениями Microsoft;
  • Необходимость патчить СПО, которое поддерживает OpenSSL, для включения ГОСТов.

Плюсы:

  • Кроссплатформенность;
  • Использование в огромном количестве проектов, открытые исходники большей части проекта — выявление и устранение уязвимостей (как пример, недавнее выявление heartbleed);
  • Распространяется копированием — можно делать приложения, не требующие инсталляции;
  • Широкий охват приложений СПО, на базе которых можно делать защищенные сертифицированные продукты;
  • Широкая интеграция в фреймворки, но при этом проблемы с ГОСТами.

PKCS#11

Библиотека PKCS#11 предоставляет универсальный кроссплатформенный программный интерфейс к USB-токенам и смарт-картам.

Функции делятся на:

  • Функции доступа к устройству;
  • Функции записи/чтения произвольных данных;
  • Функции работы с ключами (поиск, создание, удаление, импорт, экспорт);
  • Функции работы с сертификатами (поиск, импорт, экспорт);
  • Функции ЭЦП;
  • Функции хэширования;
  • Функции шифрования;
  • Функции вычисления имитовставки;
  • Функции выработки ключа согласования (Диффи-Хeллман);
  • Функции экспорта/импорта сессионного ключа;

Таким образом, стандарт PKCS#11 поддерживает полный набор криптопримитивов, пригодный для реализации криптографических форматов (PKCS#7/CMS/CADES, PKCS#10, X.509 и др.) и протоколов (TLS, IPSEC, openvpn и др.).

Для обеспечения быстродействия часть криптопримитивов может быть реализована программно.

В стандарте PKCS#11, начиная с версии 2.30, поддерживаются ГОСТ Р 34.10-2001, ГОСТ Р 34.11-94, ГОСТ 28147-89.

Использование библиотеки PKCS#11 обеспечивает совместимость ПО различных вендоров при работе с токенами. Через PKCS#11 интерфейс умеют работать приложения, написанные на на базе CryptoAPI, NSS, OpenSSL.

Пример совместимости приложений приведен на схеме. Таким образом, возможно использование подходящего приложения в соответствующем месте инфосистемы.

Криптографический центр etax и Центр загрузки

PKCS#11 бывают также без поддержки аппаратных устройств с программной реализацией криптоалгоритмов и хранением объектов в файловой системе.

Примеры – PKCS#11 интегрированный в NSS (Mozilla), проект aToken, библиотека Агава-Про.

У компании Крипто-Про есть библиотека PKCS#11, реализованная на базе MS CryptoAPI:

Криптографический центр etax и Центр загрузки

Существуют PKCS#11-библиотеки для мобильных платоформ. Примером подобной библиотеки служит библиотека для Рутокен ЭЦП Bluetooth, которая позволяет использовать устройство на iOS и Android.

NSS

NSS представляет собой криптографическую библиотеку от сообщества Mozilla. NSS используется такими приложениями, как браузер Mozilla Firefox, почтовым клиентом Mozilla Thunderbird.

В данный момент существуют два проекта по «гостификации» NSS:

  • Компания Лисси периодически публикует на своем сайте доступные для скачивания актуальные версии Mozilla Firefox и Mozilla Thunderbird, пересобранные с поддержкой российской криптографии. Кроме того, существует ряд продуктов этой компании, построенный на базе модифицированной библиотеки NSS — высокоуровневая библиотека NSSCryptoWrapper, плагин LCSignPlugin, десктопное приложение для ЭЦП под Android SignMaker-A.
    Следует отметить, что модифицированный специалистами этой компании NSS позволяет использовать как программные PKCS#11-токены, так и аппаратные (Рутокен ЭЦП, eToken ГОСТ, JaCarta ГОСТ, MS_KEY).
  • Atoken — это open source проект компании R-Альфа. В рамках проекта создан программный PKCS#11-токен с российской криптографией и выложены патчи для определенной версии NSS и компонента Security Manаger, позволяющие использовать в продуктах Mozilla россиийскую криптографию (TLS, ЭЦП, PKI). Кроме того R-Альфа предлагает реализацию программного PKCS#11-токена с поддержкой сертифицированной библиотеки Агава-С под названием Агава-Про.

Библиотеки c собственным интерфейсом

Проприетарные библиотеки предоставляют собственный API для встраивания в приложения. В данный список можно внести:

  • Агава-С
  • Крипто-C
  • Крипто-КОМ

Особенности некоторых браузеров по настройке работы плагина

  • в Mozilla Firefox 29 и выше: необходимо включить работу плагина (браузер может не запросить разрешения на включение плагина). Для этого пройти диагностику и выполнить фикс «Включение плагинов в Mozilla Firefox», после чего обязательно перезапустить Firefox. Также это можно сделать вручную: нажать Ctrl+Shift+A, перейти в раздел «Плагины», выбрать CryptoPro CAdES NPAPI Browser Plug-in и перевести его в состояние «Всегда включать» (Always active), после чего обязательно перезапустить Firefox.
  • в Google Chrome необходимо зайти по ссылке и установить расширение.
  • В Yandex Browser и Opera нужно установить расширение, доступное по этой ссылке
  • В Internet Explorer необходимо сделать следующие настройки:
  1. Добавить адрес сайта, на котором работаете с плагином, в надёжные узлы (Свойства браузера / безопасность / надёжные сайты / сайты / добавить адрес сайта).
  2. Если работа ведётся в Internet Explorer 11, то попробовать работу в режиме совместимости.
  3. Проверить, что адрес сайта добавлен в надёжные узлы плагина (большинство сайтов, принимающих сертификаты нашего УЦ, можно добавить автоматически с помощью диагностики https://help.kontur.ru/uc). Чтобы проверить, что сайт добавлен в надежные узлы плагина, нужно перейти в Пуск — Все программы — КРИПТО-ПРО – Настройки КриптоПро ЭЦП Browser plug-in. Откроется окно браузера, в котором нужно будет позволить разблокировать все содержимое страницы/разрешить доступ. 

Была ли полезна информация?

Не нашли ответ? 
Задайте вопрос специалисту

Спасибо за ответ

Как работает КриптоПро

Первым делом пользователь устанавливает КриптоПро на компьютер, чтобы пользоваться подписью. Программа обращается к сертификату на ПК, флешке, токенах или других носителях, потом завершает работу установкой подписи на документе.
Электронная подпись не может корректно функционировать в условиях отсутствия закрытого ключа. Поэтому корректное использование КриптоПро заключается в том, что софт сначала проверяет сертификат, потом подтверждает, и только последняя стадия — шифровка и отправка документа.

Главные функции КриптоПро

1

Защита информации. Для сохранности ЭЦП её надо правильно зашифровать. С последней задачей корректно справляется указанный софт. Последний релиз добавил множество полезных функций относительно степени защиты информации. Такие вещи, как хэширование и имитозащита, существовали и в старых версиях. Тестирования, проведённыенезависимыми экспертами, показывают хороший результат

2

Создание ключей шифрования. Допускается использование разных типов носителей

3

Форммирование ПИН-кода. Эта функция используется, чтобы усложнить работу злоумышленнику и обеспечить пользователя дополнительной защитой

4

Защита информации от случайных или преднамеренных потерь. Последние версии КриптоПро показали надёжность софта

5

Защита от вредоносного кода, а также целенаправленного взлома

Кому нужна программа КриптоПро

Используют КриптоПро все, кому нужен криптографический сертификат для установки электронного реквизита в документ. Не обойтись без этой программы работникам на государственных площадках.

Законодатель определил требования для каждого участника производственного процесса на таких площадках. Обязательно нужен усиленный квалифицированный вариант. Для этого ставят КриптоПро даже в том случае, если предполагается работа всего с одного компьютера. Последние нововведения делают программу нужной в том числе тем, кто использует онлайн-кассы.

Сферы работы с электронным сертификатом со временем будут только увеличиваться.

Что нужно для работы с КЭП под macOS

  1. КЭП на USB-токене Рутокен Lite или Рутокен ЭЦП
  2. криптоконтейнер в формате КриптоПро
  3. со встроенной лицензией на КриптоПро CSP
  4. открытый сертификат должен храниться в контейнере закрытого ключа

Поддержка 
eToken и JaCarta в связке с КриптоПро под macOS под вопросом. Носитель Рутокен Lite – оптимальный выбор, стоит недорого, шустро работает и позволяет хранить до 15 ключей.

Криптопровайдеры VipNet, Signal-COM и ЛИССИ в macOS не поддерживаются. Преобразовать контейнеры никак не получится. КриптоПро – оптимальный выбор, стоимость сертификата в себестоимости от 500= руб. Можно выпустить сертификат с встроенной лицензией на КриптоПро CSP, это удобно и выгодно. 
Если лицензия не зашита, то необходимо купить и активировать полноценную лицензию на КриптоПро CSP.

Обычно открытый сертификат хранится в контейнере закрытого ключа, но это нужно уточнить при выпуске КЭП и попросить сделать как нужно. Если не получается, то импортировать открытый ключ в закрытый контейнер можно самостоятельно средствами КриптоПро CSP под Windows.

Проверить подпись на документе

Если содержимое документа не содержит секретов и тайн, то проще всего воспользоваться web-сервисом на портале Госуслуг – https://www.gosuslugi.ru/pgu/eds. Так можно сделать скриншот с авторитетного ресурса и быть уверенным что с подписью все ок.

Скриншоты

Криптографический центр etax и Центр загрузки

Криптографический центр etax и Центр загрузки

Криптопровайдеры

Де-факто стандартом отрасли является класс криптосредств, известных как криптопровайдеры. Криптопровайдер — это предоставляющая специальный API и специальным образом зарегистрированная в ОС библиотека, которая позволяет расширить список поддерживаемых в ОС криптоалгоритмов.

Следует отметить, что несовершенство предлагаемых MS Windows механизмов расширения вынуждает разработчиков криптопровайдеров дополнительно модифицировать высокоуровневые криптобиблиотеки и приложения MS Windows в процессе их выполнения для того, чтобы «научить» их использовать российские криптоалгоритмы.

Следует понимать, что не все СКЗИ одного вида реализуют полный объем функциональности, приведенный в таблицах. Для уточнения возможностей криптосредств следуют обратиться к производителю.

Криптографический центр etax и Центр загрузки

СпецификацияMicrosoft CSP, Microsoft CNG, CryptoAPI 1.0 -> CryptoAPI 2.0
ПлатформыСемейство Windows. Есть порт на GNU\Linux, OS X, iOS, Android
Алгоритмы и криптографические протоколыЭЦП, шифрование, хэш-функция, имитозащита, HMAC, VKO;
TLS, EAP-TLS, Kerberos
Интеграция с PKIX.509, PKCS#10, CMS, CRL, OCSP, TSP
Механизмы ЭЦПНативный программный интерфейс, Си-style;
Встраивание в приложения
Механизмы аутентификацииКлиентская аутентификация в рамках TLS.
KERBEROS-аутентификация в домене Windows.
Собственные механизмы аутентификации на базе ЭЦП случайных данных
Механизмы “гостирования” TLSВстраивание в системный TLS
Поддержка прикладных протоколовHTTPS, SMTPS, IMAPS, POP3S, RDP, NNTPS, FTPS, LDAPS
Форматы защищенных сообщенийPKCS#7, CMS, XMLSec, S/MIME;
CADES (КриптоПро ЭЦП), PDF signature (КриптоПро PDF), MS Office Signature (КриптоПро Office Signature)
Интеграция с браузеромЭЦП в IE через ActiveX CAPICOM, PKCS#10 через ActiveX XEnroll/CertEnrool
TLS в IE через встраивание в SSPI-провайдер
ЭЦП в различных браузерах через проприетарные плагины (КриптоПро ЭЦП Browser Plugin)
TLS-прокси (КриптоПро sTunnel)
Кастомные браузеры (КриптоПро Fox, Защищенный браузер Digital Design)
Интеграция со службой каталоговMS Active Directory; клиентская часть с произвольным LDAP-каталогом
Мобильные платформыПорт КриптоПро CSP на iOS, Android
Команднострочная утилитаЕсть
Хранилища ключейРеестр, USB-токены
Взаимодействие с USB-токенамиХранилище ключей и сертификатов
Использование аппаратной реализации алгоритмов
Через PKCS#11, PC/SC, APDU
ПриложенияIE, Microsoft Office, Microsoft Outlook Express, Microsoft Outlook, Microsoft Word/Excel, Microsoft Authenticode, Microsoft RDP, Microsoft Certification Authority, Microsoft IIS, Microsoft Exchange, Microsoft Terminal Server, Winlogon, Microsoft EFC
Проприетарные приложения
СПО (sTunnel, FireFox, Apache через Trusted TLS, патч для OpenVPN)
Adobe Reader
SAP
Интеграция с фреймворкамиMicrosoft.NET (КриптоПро.NET)
ИнсталляцияПрограмма установки, требуются права системного администратора
Примеры (ГОСТ)КриптоПро CSP
ViPNet CSP
Signal-COM CSP
Лисси CSP
КриптоПро Рутокен CSP
Валидата CSP
Читайте также:  QUIK 7: как исправить ошибку авторизации, пошаговая инструкция для торгового терминала

Проблемы:

  • Отсутствие нормальной кроссплатформенности;
  • Установка с правами администратора, настройка;
  • Установка обновления Windows может потребовать обновления провайдера;
  • Необходимость встраивания в приложения посредством модификации кода «на лету»;
  • CSP — неродной интерфейс для не-Windows-приложений.

Плюсы:

  • Широкий охват Windows-приложений;
  • Богатый инструментарий для разработчиков защищенных систем;
  • Апробированная на большом количестве проектов технология.

Инициализация XML-подписи в Santuario

Ах да, тут есть один интересный момент. В сети множество советов, касающихся СМЭВа, заключающихся в ручном парсинге кусков XMLек, и прочим закатом солнца вручную, но это не наш метод (и не метод, который использовали создатели клиента)

Замес в том, что сгенерить самоподписанные ключи по госту легко (копипаста на SO ищется за секунды). А вот подписать — нет, ибо по мнению интернет-школьников якобы Bouncycastle не поддерживает xml-подпись. Конкретней, при работе с Apache Santuario, XMLSignature из santuario-xmlsec не понимает что использовать для обработки метода “xmldsig-more#gostr34102001-gostr3411” при вызове xmlSignature.sign(privateKey).

Отдельная хохма в том, что IntelliJ IDEA Community глючит при попытке отдебажить xmlsec, бросая step in отладчика в неверное место верных исходников. Я попробовал все разумные версии Идеи, поэтому понимать как это работает надо вслепую, написуя тактические письма в Спортлото. Это не в укор Идее, не существует идеальных инструментов, просто фактор повлиявший на скорость понимания вопроса.

Чтобы это заработало, нужно:

1) Заимплементить реализацию SignatureAlgorithmSpi из Apache Santuario. В GetEngineUri вернуть строку: “http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411” (или что там у вас). Это ключевая магия. Совершенно ничего умного этот класс делать не должен.

Инициализация раз за всю жизнь приложения (н-р в синглтон-бине спринга):

2) Загрузить провайдер, чтобы не патчить JDK:

Security.addProvider(new BouncyCastleProvider());

3) Впердолить в рантайм только что написанный класс:

String algorithmClassName = "fully qualified name класса реализующего SignatureAlgorithmSpi";
Class.forName(algorithmClassName);
SignatureAlgorithm.providerInit();
SignatureAlgorithm.register("http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411", algorithmClassName);

4) Достучаться до маппингов алгоритмов JCE:

String ns = "http://www.xmlsecurity.org/NS/#configuration";
Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
Element rootElement = document.createElementNS(ns, "JCEAlgorithmMappings");
Element algorithms = document.createElementNS(ns, "Algorithms");

5) Замапить метод на алгоритм:

Element aElem = document.createElementNS(NameSpace, "Algorithm");
aElem.setAttribute("URI", "http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411");
aElem.setAttribute("Description", "GOST R 34102001 Digital Signature Algorithm with GOST R 3411 Digest");
aElem.setAttribute("AlgorithmClass", "Signature");
aElem.setAttribute("RequirementLevel", "OPTIONAL");
aElem.setAttribute("JCEName", "GOST3411WITHECGOST3410");
algorithms.appendChild(aElem);

6) Применить маппинги:

org.apache.xml.security.Init.init();
JCEMapper.init(rootElement);

6) PROFIT!
После этого XMLSignature резко начинает понимать этот метод, и начнет делать xmlSignature.sign.

Где купить КриптоПро

Приобрести продукцию и актуальную лицензию КриптоПро можно в «Астрал-М». «Астрал-М» является официальным дилером продукции торговой марки КриптоПро. Этот статус даёт право на распространение, внедрение и сопровождение программ КриптоПро с круглосуточной поддержкой пользователей 24/7. Достаточно заполнить на сайте, вписав своё имя, телефон и адрес электронной почты.

Резюме

В результате всех вышеописанных действий мы получили относительно легий способ избавиться от тяжкой ноши Крипто Про.

В дальнейшем хотелось бы продолжить борьбу за выпил до финальной победы: оформить все утилиты, генераторы ключей, самописные смэв-клиенты итп в виде одного репозитория на Гитхабе. Еще, очень хотелось бы получить права на модификацию и распространение под пермиссивной лицензией официального клиента СМЭВ. Тогда половина этой статьи была бы просто не нужна, и проблема решалась бы скачиванием нужного кода с Гитхаба.

Преимущества компании КриптоПро

Общество с ограниченной ответственностью «КриптоПро» существует с 2000 года. Основная деятельность ООО — разработка средств криптографической защиты информации (СКЗИ) и электронной цифровой подписи.

Среди главных преимуществ КриптоПро выделяют:

1

Опыт работы компании в информационной безопасности. Программа широко распространена — бизнес обычно ставит КриптоПро в качестве стандартного софта для работы с ЭЦП

2

Совместимость КриптоПро с альтернативным софтом. Прочитать сертификат можно даже в том случае, если для его установки использовалось другое ПО. Компания предлагает версию КриптоПро для операционных систем Mac, Linux и Windows. Для корректного использования не нужны эмуляторы или другие дополнительные способы запуска софта

3

Консультации. Если пользователь ЭЦП не знает, как обращаться с софтом, можно проконсультироваться с техподдержкой криптопровайдера

Работа системы КриптоПро высоко оценена экспертами, поэтому разработчикам криптопровайдера было вручено множество наград и сертификатов. Количество достижений расширяется. Заинтересованные пользователи могут посмотреть дополнительную информацию у производителя криптографического софта.

Подготовка OpenSSL для работы с ГОСТ

Если у вас в начале статьи на стене висит OpenSSL, когда-нибудь он точно выстрелит.
Так что да, это важный момент, необходимый для осуществления дальнейшего текста.

  • Так как у нас Крипто Про, и на Маке оно не взлетает, нам понадобится виртуальная машина с Windows (можно даже Windows XP), и установленной Криптой
  • Установить как можно более актуальную версию OpenSSL (так, чтобы в ней уже была поддержка ГОСТ):
    https://wiki.openssl.org/index.php/Binaries
    https://slproweb.com/products/Win32OpenSSL.html
  • Проверить, что в установленной версии есть файл gost.dll
  • В установленном OpenSSL найти файл openssl.cfg
  • В самое начало файла добавить строчку:
    openssl_conf = openssl_def
  • В самый конец файла добавить строчки:

    [openssl_def]
    engines = engine_section
    
    [engine_section]
    gost = gost_section
    
    [gost_section]
    engine_id = gost
    dynamic_path = ./gost.dll
    default_algorithms = ALL
    CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet

  • PROFIT

Как мы можем грубо заставить Крипто Про отдать ключи

Можно очень долго мучиться, пытаясь засучив C++ вычитать ключ из контейнера с помощью OpenSSL и такой-то матери. Я честно пытался, и разбился об задачу как корабль об скалы (по крайней мере, это задачка больше чем на 1 день для человека, который давно таким не занимался). На просторе интернетов мы не единственные, кто разбился об те же скалы: http://gigamir.net/techno/pub903517

Вот тут наступает момент “это радость со слезами на глазах”. Некая контора под названием Лисси Софт, всего за 2 тыщи рублей отдает нам гениальную утилиту P12FromGostCSP. Ее создатели таки победили ту проблему, которую не осилило сообщество, и она выдирает ключи в PFX. Радость — потому что она работает.

Со слезами — потому что это проприетарщина, и она фиг знает как работает.
На картинке Ричард Столлман как бы удивляется и спрашивает: “неужели вы боретесь с проприетарщиной с помощью другой проприетарщины?”

image

Так что целиком инструкция по перегону ключей выглядит как-то так:

  • Все действия производить на Windows (подойдет виртуальная машина) с установленным Крипто Про CSP;
  • Подготовить OpenSSL с ГОСТом по инструкции (есть в этой статье).
  • Купить P12FromGostCSP. Поплакать.
  • Установить исходный ключ в КриптоПро (это заслуживает отдельной инструкции, но она гуглится).
  • Запустить P12FromGostCSP (перед этим спрятать икону Ричарда Столлмана под стол, чтобы он не проклял тебя за запуск проприетарщины)
  • Выбрать установленный сертификат, указать пароль сертификата КриптоПро
  • Указать произвольный новый пароль (парольную фразу) для ключевой пары PFX
  • Указать местоположение для сохранения файла. Файл лучше именовать в формате p12.pfx (это название по-умолчанию, лучше не трогать — говорят, есть баги, если переименовать)
  • Получить pem файл:
    openssl pkcs12 -in p12.pfx -out private.key.pem -name "alias"
  • (-name “alias” — эта опция поменяет имя ключа внутри контейнера. Это нужно потому, что P12FromGostCSP именует ключи как попало (на самом деле, по порядку, цифрами), без сохранения исходного алиаса.
  • Получить pkcs12 файл:
    openssl pkcs12 -export -out private.key.pkcs12 -in private.key.pem -name "alias"
  • Готово

Выдача контейнера PKCS12

В принципе, это не особо нужно, потому что у нас уже есть простой и удобный способ выдавать JKS, а JKS для Java это самое что ни на есть родное решение. Но для полноты картины, пусть будет.

  • Подготовить OpenSSL с ГОСТом по инструкции (есть в этой статье).
  • Сделать Cerificate Signing Request + приватный ключ (вписать нужные данные о ключе!):
    openssl req -newkey gost2001 -pkeyopt paramset:A -passout pass:aofvlgzm -subj "/C=RU/ST=Moscow/L=Moscow/O=foo_bar/OU=foo_bar/CN=developer/[email protected]" -keyout private.key.pem -out csr.csr
  • Подписать приватным ключом (на Windows эту операцию нужно делать с правами Administrator, иначе свалится с ошибкой “unable to write ‘random state'”):
    openssl x509 -req -days 365 -in csr.csr -signkey private.key.pem -out crt.crt
  • GOST2001-md_gost94 hex (если надо):
    openssl.exe dgst -hex -sign private.key.pem message.xml 
  • MIME application/x-pkcs7-signature (если надо):
    openssl smime -sign -inkey private.key.pem -signer crt.crt -in message.xml
  • Превратить pem в pkcs12:
    openssl pkcs12 -export -out private.key.pkcs12 -in private.key.pem -name "alias" 

Вопросы и ответы

КриптоПро ЭЦП browser plug-in (он же КриптоПро CADESCOM или Кадеском) – плагин, необходимый для создания и проверки электронной подписи на web-страницах с использованием КриптоПро CSP. Используется для работы на торговых площадках и порталах. Дистрибутив доступен на сайте КриптоПро в разделе Продукты / КриптоПро ЭЦП Browser plug-in http://www.cryptopro.ru/products/cades/plugin/get_2_0.

Тестовые самоподписанные ключи

Так как мы деламем все это в тестовых целях, теперь мы подходим к кульминации и начинаем сами себе выдавать ключи.

Как выдать ключи в формате Крипто Про, я особо не заморачивался, потому что это просто не нужно в рамках текущей задачи. Но на всякий случай, существует сервис выдачи таких ключей: http://www.cryptopro.ru/certsrv/

  • Все действия производить на Windows (подойдет виртуальная машина) с установленным Крипто Про CSP;
  • Открыть сайт и перейти к выдаче ключа;
  • Нужно выбрать пункт “Сформировать ключи и отправить запрос на сертификат” и нажать кнопку “Дальше”;
  • Щелкнуть по ссылке “Создать и выдать запрос к этому ЦС”;
  • Заполнить необходимые поля;
  • Нажат кнопку “Выдать”;
  • Установить сертификат.

Программные средства для цифровой подписи документов

1)КриптЭК-Д
«КриптЭК-Д» – расширенная версия программы «КриптЭК», предназначенная для работы с сертификатами ЭЦП и подачи деклараций об объемах производства, оборота (в том числе розничной продажи) и использования этилового спирта, алкогольной и спиртосодержащей продукции в Федеральную службу по регулированию алкогольного рынка и в уполномоченный орган субъекта Российской Федерации.
– для работы необходимо наличие установленного Net Framework 2.0

2)КриптоАРМ
КриптоАРМ – программа, предназначенная для шифрования и расшифрования данных, создания и проверки электронной цифровой подписи (ЭЦП) с использованием сертификатов открытых ключей, для работы с сертификатами и криптопровайдерами. «КриптоАРМ», наряду со стандартными криптопровайдерами (входящими в поставку Windows), использует реализацию криптоалгоритмов в сертифицированных ФСБ РФ криптопровайдерах компании «КРИПТО-ПРО».
Разработчик: ООО «Цифровые технологии» (Йошкар-Ола).
Используя криптопровайдер «КриптоПро CSP», программа «КриптоАРМ» позволяет работать с сертифицированными средствами, создавать электронную цифровую подпись, равнозначную собственноручной.

СКЗИ (Средства Криптографической Защиты Информации

Все программы для ЭО используют СКЗИ. Некоторые (к примеры СБИС) работают с не сколькими СКЗИ, другие только с КриптоПро..

Основыне разработчики сертифицированных СКЗИ:

Программные средства

Поддержка в Linux (wine)

КриптоПро.

КриптоПро.

В wine работает.
Были раньше пробелемы с установкой, но сейчас они решены.
http://bugs.etersoft.ru/show_bug.cgi?id=5348

Сигнал-Ком.

Signal-COM CSP & Signal-COM TLS

ЛИССИ

Lissi-CSP – программный комплекс защиты информации, позволяющий использовать российские криптографические алгоритмы в операционных системах Microsoft через стандартные интерфейсы: MS CryptoAPI, MS CAPICOM, MSXML версии 5.0, MS SSPI, MS Certificate Enrollment Control.

Инфотек

(http://www.infotecs.ru/bt/cl_coord_3_2_btformregsent.htm)

МОПНИЭИ

СКЗИ “Верба-OW”

ИнфоКрипт

СКЗИ “Бикрипт-КСБ-С” предназначено для встраивания в программные продукты, работающие под управлением операционных систем Windows 98SE/2000/XP/NT 4.0/2003 Server/Vista (в вариантах исполнения 1, 2, 3) и Linux (ядра 2.4 и 2.6) (в вариантах исполнения 4, 5). Центр генерации и распределения ключей Банка функционирует под управлением ОС MS DOS версии 6.22. Используется в Сбербанке

Устанавливаем и настраиваем КЭП под macOS

Очевидные вещи

  • все загружаемые файлы скачиваются в каталог по-умолчанию: ~/Downloads/;
  • во всех установщиках ничего не меняем, все оставляем по-умолчанию;
  • если macOS запрашивает пароль пользователя и разрешение на управление компьютером – нужно ввести пароль и со всем согласиться.

Устанавливаем КриптоПро CSP

Регистрируемся на сайте КриптоПро и со страницы загрузок скачиваем и устанавливаем версию КриптоПро CSP 4.0 R4 для macOSскачать.

Устанавливаем драйверы Рутокен

На сайте написано что это опционально, но лучше поставить. Со страницы загрузок на сайте Рутокен скачиваем и устанавливаем Модуль поддержки Связки Ключей (KeyChain)скачать.

Далее подключаем usb-токен, запускаем terminal и выполняем команду:

/opt/cprocsp/bin/csptest -card -enum

В ответе должно быть:

Aktiv Rutoken…
Card present…
[ErrorCode: 0x00000000]

Устанавливаем сертификаты

Удаляем все старые ГОСТовские сертификаты

Если ранее были попытки запустить КЭП под macOS, то необходимо почистить все ранее установленные сертификаты. Данные команды в terminal удалят только сертификаты КриптоПро и не затронут обычные сертификаты из Keychain в macOS.

sudo /opt/cprocsp/bin/certmgr -delete -all -store mroot

sudo /opt/cprocsp/bin/certmgr -delete -all -store uroot

/opt/cprocsp/bin/certmgr -delete -all

В ответе каждой команды должно быть:

No certificate matching the criteria

или

Deleting complete

Устанавливаем корневые сертификаты

Корневые сертификаты являются общими для всех КЭП, выданных любым удостоверяющим центром. Скачиваем со страницы загрузок УФО Минкомсвязи:

  • https://e-trust.gosuslugi.ru/Shared/DownloadCert?thumbprint=4BC6DC14D97010C41A26E058AD851F81C842415A
  • https://e-trust.gosuslugi.ru/Shared/DownloadCert?thumbprint=8CAE88BBFD404A7A53630864F9033606E1DC45E2
  • https://e-trust.gosuslugi.ru/Shared/DownloadCert?thumbprint=0408435EB90E5C8796A160E69E4BFAC453435D1D

Устанавливаем командами в terminal:

sudo /opt/cprocsp/bin/certmgr -inst -store mroot -f ~/Downloads/4BC6DC14D97010C41A26E058AD851F81C842415A.cer

sudo /opt/cprocsp/bin/certmgr -inst -store mroot -f ~/Downloads/8CAE88BBFD404A7A53630864F9033606E1DC45E2.cer

sudo /opt/cprocsp/bin/certmgr -inst -store mroot -f ~/Downloads/0408435EB90E5C8796A160E69E4BFAC453435D1D.cer

Каждая команда должна возвращать:

Installing:

[ErrorCode: 0x00000000]

Скачиваем сертификаты удостоверяющего центра

Далее нужно установить сертификаты удостоверяющего центра, в котором вы выпускали КЭП. Обычно корневые сертификаты каждого УЦ находятся на его сайте в разделе загрузок.

Альтернативно, сертификаты любого УЦ можно скачать с сайта УФО Минкомсвязи. Для этого в форме поиска нужно найти УЦ по названию, перейти на страницу с сертификатами и скачать все действующие сертификаты – то есть те, у которых в поле ‘Действует’ вторая дата еще не наступила. Скачивать по ссылке из поля ‘Отпечаток’.

Скриншоты

Криптографический центр etax и Центр загрузки

Криптографический центр etax и Центр загрузки

На примере УЦ Корус-Консалтинг: нужно скачать 4 сертификата со страницы загрузок:

  • https://e-trust.gosuslugi.ru/Shared/DownloadCert?thumbprint=15EB064ABCB96C5AFCE22B9FEA52A1964637D101
  • https://e-trust.gosuslugi.ru/Shared/DownloadCert?thumbprint=B9F1D3F78971D48C34AA73786CDCD138477FEE3F
  • https://e-trust.gosuslugi.ru/Shared/DownloadCert?thumbprint=55EC48193B6716D38E80BD9D1D2D827BC8A07DE3
  • https://e-trust.gosuslugi.ru/Shared/DownloadCert?thumbprint=A0D19D700E2A5F1CAFCE82D3EFE49A0D882559DF

Скачанные сертификаты УЦ устанавливаем командами из terminal:

sudo /opt/cprocsp/bin/certmgr -inst -store mroot -f ~/Downloads/B9F1D3F78971D48C34AA73786CDCD138477FEE3F.cer

sudo /opt/cprocsp/bin/certmgr -inst -store mroot -f ~/Downloads/A0D19D700E2A5F1CAFCE82D3EFE49A0D882559DF.cer

sudo /opt/cprocsp/bin/certmgr -inst -store mroot -f ~/Downloads/55EC48193B6716D38E80BD9D1D2D827BC8A07DE3.cer

sudo /opt/cprocsp/bin/certmgr -inst -store mroot -f ~/Downloads/15EB064ABCB96C5AFCE22B9FEA52A1964637D101.cer

где после ~/Downloads/ идут имена скачанных файлов, для каждого УЦ они будут свои.

Каждая команда должна возвращать:

Installing:

[ErrorCode: 0x00000000]

Устанавливаем сертификат с Рутокен

Команда в terminal:

/opt/cprocsp/bin/csptestf -absorb -certs

Команда должна вернуть:

OK.
[ErrorCode: 0x00000000]

Конфигурируем CryptoPro для работы ссертификатами ГОСТ Р 34. 10-2012

Для корректной работы на nalog.ru с сертификатами, выдаваемыми с 2019 года, инструкция на сайте CryptoPro рекомендует:

Команды в terminal:

sudo /opt/cprocsp/sbin/cpconfig -ini '\cryptography\OID\1.2.643.7.1.1.1.1!3' -add string 'Name' 'GOST R 34.10-2012 256 bit'

sudo /opt/cprocsp/sbin/cpconfig -ini '\cryptography\OID\1.2.643.7.1.1.1.2!3' -add string 'Name' 'GOST R 34.10-2012 512 bit'

Команды ничего не возвращают.

Устанавливаем специальный браузер Chromium-GOST

Для работы с гос.порталами потребуется специальная сборка браузера сhromium – Chromium-GOST скачать.
Исходный код проекта открыт, ссылка на репозиторий на GitHub приводится на сайте КриптоПро. По опыту, другие браузеры CryptoFox и Яндекс.Браузер для работы с гос.порталами под macOS не годятся.

Скачиваем, устанавливаем копированием или drag&drop в каталог Applications. После установки принудительно закрываем Chromium-Gost командой из terminal и пока не открываем (работаем из Safari):

killall Chromium-Gost

Устанавливаем расширения для браузера

1 КриптоПро ЭЦП Browser plug-in

Со страницы загрузок на сайте КриптоПро скачиваем и устанавливаем КриптоПро ЭЦП Browser plug-in версия 2.0 для пользователейскачать.

Плагин для Госуслуг

Со страницы загрузок на портале Госуслуг скачиваем и устанавливаем Плагин для работы с порталом государственных услуг (версия для macOS)скачать.

Настраиваем плагин для Госуслуг

Скачиваем корректный конфигурационный файл для расширения Госуслуг для поддержки macOS и новых ЭЦП в стандарте ГОСТ2012 – скачать.

Выполняем команды в terminal:

sudo rm /Library/Internet\ Plug-Ins/IFCPlugin.plugin/Contents/ifc.cfg

sudo cp ~/Downloads/ifc.cfg /Library/Internet\ Plug-Ins/IFCPlugin.plugin/Contents


sudo cp /Library/Google/Chrome/NativeMessagingHosts/ru.rtlabs.ifcplugin.json /Library/Application\ Support/Chromium/NativeMessagingHosts

Активируем расширения

Запускаем браузер Chromium-Gost и в адресной строке набираем:

chrome://extensions/

Включаем оба установленных расширения:

  • CryptoPro Extension for CAdES Browser Plug-in
  • Расширение для плагина Госуслуг

Скриншот

Криптографический центр etax и Центр загрузки

Настраиваем расширение КриптоПро ЭЦП Browser plug-in

В адресной строке Chromium-Gost набираем:

/etc/opt/cprocsp/trusted_sites.html

На появившейся странице в список доверенных узлов по-очереди добавляем сайты:

https://*.cryptopro.ru
https://*.nalog.ru
https://*.gosuslugi.ru

Жмем “Сохранить”. Должна появиться зеленая плашка:

Список доверенных узлов успешно сохранен.

Скриншот

Криптографический центр etax и Центр загрузки

Проверяем что все работает

Заходим на тестовую страницу КриптоПро

В адресной строке Chromium-Gost набираем:

https://www.cryptopro.ru/sites/default/files/products/cades/demopage/cades_bes_sample.html

Должно выводиться “Плагин загружен”, а в списке ниже присутствовать ваш сертификат.
Выбираем сертификат из списка и жмем “Подписать”. Будет запрошен PIN-код сертификата. В итоге должно отобразиться

Подпись сформирована успешно

Скриншот

Криптографический центр etax и Центр загрузки

Заходим в Личный Кабинет на nalog

По ссылкам с сайта nalog.ru зайти может не получиться, т.к. не будут пройдены проверки. Заходить нужно по прямым ссылкам:

  • Личный кабинет ИП: https://lkipgost.nalog.ru/lk
  • Личный кабинет ЮЛ: https://lkul.nalog.ru

Скриншот

Криптографический центр etax и Центр загрузки

Заходим на Госуслуги

При авторизации выбираем “Вход с помощью электронной подписи”. В появившемся списке “Выбор сертификата ключа проверки электронной подписи” будут отображены все сертификаты, включая корневые и УЦ, нужно выбрать ваш с usb-токена и ввести PIN.

Скриншот

Криптографический центр etax и Центр загрузки

Криптографический центр etax и Центр загрузки

Что делать, если перестало работать

  1. Переподключаем usb-токен и проверяем что он виден с помощью команды в terminal:

    sudo /opt/cprocsp/bin/csptest -card -enum

  2. Очищаем кеш браузера за все время, для чего в адресной строке Chromium-Gost набираем:

    
chrome://settings/clearBrowserData


  3. Переустанавливаем сертификат КЭП с помощью команды в terminal:

    /opt/cprocsp/bin/csptestf -absorb -certs

  4. Если команды Cryptopro не отрабатывают (csptest и csptestf превратились в corrupted) – нужно переустановить Cryptopro.

Можно ли скачать КриптоПро бесплатно

Производитель даёт возможность бесплатно скачать, начать работу и пользоваться программой. Скачать программу можно на официальном сайте производителя СКЗИ КриптоПро CSP. Но у программы есть бесплатный тестовый период, срок действия которого составляет 3 месяца. Запустить последний раз можно через 90 дней после установки софта.

Чтобы работа продолжалась, бесплатная версия не подходит, нужно покупать лицензию. Если планируется работать с одним сертификатом с одного компьютера, потребуется годовая лицензия.

Если пользователь скачал и купил программу для работы с ЭЦП с одного компьютера, софт привязывается к конкретному устройству. Годовая электронная лицензия не подходит, если пользователь хочет использовать большее количество ЭП. Бесплатная программа тоже не подходит. Требуется продлить разрешение на применение нужного количества ЭП на одном компьютере либо выбрать бессрочный вариант.

Существуют браузерные версии в форме плагина. Это бесплатный вариант, называющийся КриптоПро ЭЦП Browser plug-in. Плагин КриптоПро скачали миллионы юзеров. Дополнение эффективно, но действует исключительно в браузере.

Также на официальном сайте КриптоПро можно скачать дополнительные программные продукты для специальных нужд — например, для того, чтобы подписывать электронные документы в формате PDF или Word, работать в системе СМЭВ и т.д.

Официальный сайт содержит актуальные версии программных продуктов КриптоПро, которые поддерживают работу с ГОСТ Р 34.10-2012.

Выдача контейнера JKS

Этот вопрос широко представлен в интернете, поэтому можно сразу смотреть Stackoverflow:
http://stackoverflow.com/questions/14580340/generate-gost-34-10-2001-keypair-and-save-it-to-some-keystore

Идея в том, что раз уж мы все равно используем Bouncy Castle, то им же можем и сгенерить ключ.
Этот код не самый идеальный, но дает реально работающую реализацию (на практике у меня в результате получилось несколько объемных классов, чтобы сделать удобный интерфейс)

Security.addProvider( new org.bouncycastle.jce.provider.BouncyCastleProvider() );

KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance( "ECGOST3410", "BC" );
keyPairGenerator.initialize( new ECGenParameterSpec( "GostR3410-2001-CryptoPro-A" ) );
KeyPair keyPair = keyPairGenerator.generateKeyPair();

org.bouncycastle.asn1.x500.X500Name subject = new org.bouncycastle.asn1.x500.X500Name( "CN=Me" );
org.bouncycastle.asn1.x500.X500Name issuer = subject; // self-signed
BigInteger serial = BigInteger.ONE; // serial number for self-signed does not matter a lot
Date notBefore = new Date();
Date notAfter = new Date( notBefore.getTime() + TimeUnit.DAYS.toMillis( 365 ) );

org.bouncycastle.cert.X509v3CertificateBuilder certificateBuilder = new org.bouncycastle.cert.jcajce.JcaX509v3CertificateBuilder(
        issuer, serial,
        notBefore, notAfter,
        subject, keyPair.getPublic()
);
org.bouncycastle.cert.X509CertificateHolder certificateHolder = certificateBuilder.build(
        new org.bouncycastle.operator.jcajce.JcaContentSignerBuilder( "GOST3411withECGOST3410" )
                .build( keyPair.getPrivate() )
);
org.bouncycastle.cert.jcajce.JcaX509CertificateConverter certificateConverter = new org.bouncycastle.cert.jcajce.JcaX509CertificateConverter();
X509Certificate certificate = certificateConverter.getCertificate( certificateHolder );

KeyStore keyStore = KeyStore.getInstance( "JKS" );
keyStore.load( null, null ); // initialize new keystore
keyStore.setEntry(
        "alias",
        new KeyStore.PrivateKeyEntry(
                keyPair.getPrivate(),
                new Certificate[] { certificate }
        ),
        new KeyStore.PasswordProtection( "entryPassword".toCharArray() )
);
keyStore.store( new FileOutputStream( "test.jks" ), "keystorePassword".toCharArray()

Криптографические решения. От криптопровайдеров до браузерных плагинов

Производители средств криптографической защиты информации (СКЗИ) предлагают различные механизмы для интеграции криптосредств в информационные системы. Существуют решения, ориентированные на поддержку систем с Web-интерфейсом, мобильных и десктопных приложений, серверных компонентов. СКЗИ интегрируются в приложения Microsoft и в продукты Open Source, обеспечивают поддержку различных прикладных протоколов и форматов электронной подписи.

С учетом растущего количества проектов с применением ЭЦП и появления массовых проектов для физических лиц, разработчикам подобных проектов требуется хорошо ориентироваться в предлагаемых производителями решениях по ЭЦП для того, чтобы сделать систему удобной в эксплуатации и недорогой в плане техподдержки. Таким образом, если еще лет 5 назад главным фактором выбора криптосредства являлось его полное соответствие требованиям регуляторов, то при сегодняшнем разнообразии важными критериями могут выступать охват поддерживаемых платформ, возможность интеграции с браузером, поддержка мобильных пользователей, возможность установки без прав системного администратора и т.п.

В данном материале сделана попытка классифицировать средства криптографической защиты информации.

  • Рассмотрены в основном СКЗИ, использующиеся на клиентских местах для защиты клиент-серверных соединений по протоколу TLS, для организации ЭЦП, шифрования передаваемых данных;
  • Не рассматриваются СКЗИ, применяемые для создания VPN и шифрования файловой системы, хранимых данных, а так же УЦ;
  • Отдельно выделены аппаратные криптографические устройства.

Классификация построена на основе:

  • технологий интеграции (CryptoAPI, Active-X, NPAPI и др.), которые поддерживают СКЗИ для встраивания в приложения и прикладные системы;
  • интерфейсов, которые предоставляют СКЗИ для встраивания в приложения и прикладные системы.

Кроме того, показаны способы интеграции СКЗИ с Web-приложениями и возможность его использования на мобильных платформах

Общая схема классификации приведена в таблице:

КриптопровайдерыНативные библиотеки (openssl-style, PKCS#11, NSS, собственные интерфейсы)Локальные проксиБраузерные плагиныОблачная подписьБраузеры с российской криптографией
Почтовые клиенты с российской криптографиейРоссийская криптография в фреймворках, платформах, интерпретаторахНастольные криптографические приложенияКриптография в BIOS UEFIСервис-провайдеры ЭЦПЭмуляторы доверенной среды
Аппаратные средства

В первой статье рассмотрим решения, начиная с криптопровайдеров по браузерные плагины включительно. В последующих статьях будут рассмотрены остальные средства.

Локальные прокси

Основным принципом действия локального прокси является прием незащищенного соединения от приложения, установка TLS-туннеля с удаленным сервером и передача «прикладного уровня» между приложением и удаленным сервером по этому туннелю.

Некоторые локальные прокси кроме того дополнены механизмом ЭЦП специальным образом промаркированных WEB-форм (Inter-PRO, МагПро КриптоТуннель). Существуют локальные прокси, которые предоставляют для браузера WEB API ЭЦП (систему HTTP-запросов и ответов, аналогичных программному API криптобиблиотеки).

Криптографический центр etax и Центр загрузки

Спецификация
ПлатформыСемейство Windows, GNU\Linux, OS X. На базе СПО iOS, Android
Алгоритмы и криптографические протоколыЭЦП, шифрование, хэш-функция, имитозащита, HMAC, VKO;
TLS
Интеграция с PKIX.509, PKCS#10, CMS, CRL, OCSP, TSP
Механизмы ЭЦППодпись WEB-форм при прохождении траффика
WEB API
Механизмы аутентификацииклиентская аутентификация в рамках TLS
Механизмы “гостирования” TLSЧерез механизм проксирования
Форматы защищенных сообщенийPKCS#7, CMS
Интеграция с браузеромЧерез механизм проксирования
Мобильные платформыiiOS, Android на базе СПО sTunnel
Хранилища ключейРеестр, файлы, USB-токены
Взаимодействие с USB-токенамиХранилище ключей и сертификатов
Использование аппаратной реализации алгоритмов
Через PKCS#11, PC/SC, APDU
ПриложенияБраузеры
WEB-сервера
RDP
Почтовые клиенты и сервера
ИнсталляцияПрограмма установки, в целом не требуются права системного администратора
Копирование, запуск
Запуск с FLASH-памяти USB-токена
Примеры (ГОСТ)МагПро КриптоТуннель
Inter-PRO
VPNKey-TLS
LirTunnel
КриптоПро sTunnel
sTunnel

Проблемы:

  • прокси должен быть запущен;
  • приложение должно работать через прокси, нужно «научить» его этому;
  • могут использоваться нестандартные порты, отсюда проблемы в файрволом
  • если приложение «ходит» через localhost, то, например, в адресной строке браузера прописано localhost… — нестандартно
  • дополнительные ограничения на разработку web-сайта — в ряде случаев использование только относительных ссылок, чтобы не «вылететь» из туннеля
  • прокси сконфигурирован на проксирование конечной группы сайтов, расширение группы — это обновление клиентского конфига
  • работа через внешний прокси требует дополнительного конфигурирования локального прокси, при этом могут быть проблемы с аутентификацией пользователя на внешнем прокси

Плюсы:

  • решение использует универсальную технологию, поэтому можно не бояться его устаревания;
  • решение может применяться на большом числе платформ, в том числе на мобильных платформах;
  • кроссбраузерность, поддержка всех WEB-серверов без модификации;
  • не требует инсталляции;
  • поддержка различных прикладных протоколов.

Как этим пользоваться?

  1. Нажмите на кнопку Начать диагностику.
  2. После завершения диагностики выберите Выполнить рекомендуемые действия.
    Откроется окно автоматической установки и настройки компонентов.
  3. Рекомендуем поставить флажок Выбрать все.
  4. Нажмите на кнопку Начать установку и настройку.

После завершения процесса проверьте, исчезли ли ошибки.

Если остались − нажмите на ссылку Отправить заявку в техподдержку, заполните форму,
указав свои контактные данные и суть вопроса. Специалист технической
поддержки свяжется с вами в кратчайшие сроки.

Центр загрузки

ДистрибутивЗагрузка файла

Криптографический центр etax и Центр загрузки 

КриптоПро CSP 4.0

универсальный установщик (версия КриптоПро CSP 4.0.9963 от 23.11.2018)

Криптографический центр etax и Центр загрузки

КриптоПро CSP 5.0 

КриптоПро CSP 5.0.11998 (K) RC6.

cspclean

Программа очистки следов Крипто Про

Криптографический центр etax и Центр загрузки

Rutoken

32 и 64-разрядные Microsoft Windows 10/ 8.1/ 2012R2/ 8/2012/ 7/2008R2/ Vista/2008/XP/2003

Криптографический центр etax и Центр загрузки

Rutoken для ЕГАИС

Версия: v.4.7.0.1 от 04.04.2019

32- и 64-разрядные Microsoft Windows 10/8.1/2012R2/8/2012/7/2008R2/Vista/2008/XP/2003

Криптографический центр etax и Центр загрузки

eToken

MS Windows 8.1/2012 R2/8/2012/7/2008/Vista/2003/XP

32-разрядные

64-разрядные

Криптографический центр etax и Центр загрузки

Программа TeamViewer teamviewer.com

необходима при удаленной настройки компьютера

Криптографический центр etax и Центр загрузки

Программа Ammy admin сайт ammyy.com/ru/

необходима при удаленной настройки компьютера

Криптографический центр etax и Центр загрузки

Инструкция по работе с ЭЦП

Таблица поддерживаемых операционных систем:

Криптографический центр etax и Центр загрузки

Контактные лица:

В Энгельсе

Мария Серова

тел.: +7 (8453) 768-574, 759-202

e-mail: [email protected]

В Саратове

Юлия Ким

тел.: +7 (8452) 324-524, 349-499

e-mail: [email protected]

Криптографический центр etax и Центр загрузкиКриптографический центр etax и Центр загрузки

Криптографический центр etax и Центр загрузки

Тарифы на электронную подпись

Список площадок

Аккредитация на площадках

Смена PIN-кода контейнера

Пользовательский PIN-код на Рутокен по-умолчанию 12345678, и оставлять его в таком виде никак нельзя. Требования к PIN-коду Рутокен: 16 символов max., может содержать латинские буквы и цифры.

Выясняем название контейнера КЭП

На usb-токене и в других хранилищах может храниться несколько сертификатов, и нужно выбрать правильный. При вставленном usb-токене получаем список всех контейнеров в системе командой в terminal:

/opt/cprocsp/bin/csptest -keyset -enum_cont -fqcn -verifycontext

Команда должна вывести минимум 1 контейнер и вернуть

[ErrorCode: 0x00000000]

Нужный нам контейнер имеет вид

\.\Aktiv Rutoken lite\XXXXXXXX

Если таких контейнеров выводится несколько – значит значит на токене записано несколько сертификатов, и вы в курсе какой именно вам нужен. Значение XXXXXXXX после слэша нужно скопировать и подставить в команду ниже.

Смена PIN командой из terminal

/opt/cprocsp/bin/csptest -passwd -qchange -container "XXXXXXXX"

где XXXXXXXX – название контейнера, полученное на шаге 1 (обязательно в кавычках).

Появится диалог КриптоПро с запросом старого PIN-кода для доступа к сертификату, затем еще один диалог для ввода нового PIN-кода. Готово.

Скриншот

Криптографический центр etax и Центр загрузки

Что нужно допилить в готовом клиенте, чтобы сбежать с Крипто Про

Код написан довольно дружелюбно для расширения, поэтому можно просто взять за основу класс KeyStoreWrapperJCP, и аналогично написать KeyStoreWrapperBouncyCastlePKCS12, KeyStoreWrapperBouncyCastleJKS.

Переписать DigitalSignatureFactory, так, чтобы он на вход начал принимать путь до криптоконтейнера на файловой системе и пароль от него (для КриптоПро это просто не нужно). Там есть свич, который проверяет тип криптопровайдера, в него надо дописать дополнительно два кейса, для имен типа BOUNCY_JKS и BOUNCY_PKCS12 и навешать использование соответсвующих KeyWrapper и вызов initXmlSec.

В initXmlSec нужно дописать
1) возможность принимать вообще любой провайдер, а не только криптопро (это просто удобно)
2) Security.addProvider(new BouncyCastleProvider());
3) для XMLDSIG_SIGN_METHOD сделать свич: если КриптоПро, то алгоритм называется “GOST3411withGOST3410EL”, а если BouncyCastle алгоритм называется “GOST3411WITHECGOST3410”.

Ну вроде как и все. Если бы была известна лицензия на этот смэв-клиент, я бы приложил конкретный код под Apache License 2, а так это просто список идей.

Как подписать документ ЭЦП с помощью КриптоПро 5

Для того чтобы подписать электронный документ, нужны установленные на компьютер СКЗИ Криптопро версии 5.0 и действующий сертификат электронной подписи.

Шаг 1. Найдите в списке установленных программ приложение «Инструменты КриптоПро». Для этого в строке поиска (1) введите название приложения (2) и выберите нужное из выпавшего списка (3).

Выберите нужное приложение

Выберите нужное приложение

Шаг 2.В главном окне нажмите на кнопку «Показать расширенные».

Нажмите на кнопку «Показать расширенные»

Шаг 3. Откроется список дополнительных разделов. В нём выберите «Создание подписи» (1). Справа откроется список сертификатов, в котором нужно выбрать вашу подпись (2). Затем нажмите на кнопку «Выбрать файл для подписи» (3).

Нажмите на кнопку «Выбрать файл для подписи»

Шаг 4. В открывшемся окне проводника выберите файл, который нужно подписать электронной подписью.

Выберите файл

Шаг 5. В строке адреса отразится путь к выбранному файлу. Убедитесь, что выбрали правильный сертификат и файл для подписи, и нажмите на кнопку «Подписать».

Выбор путь к файлу

Шаг 6. Если не возникло ошибок, внизу окна появится надпись «Создание подписи завершилось успехом».

«Создание подписи завершилось успехом»

Шаг 7. В папке, где хранится файл для подписи, появится зашифрованный файл с таким же названием, но с расшсайтирением *.P7S.

Файл с расширением с расширением *.P7S

Браузерные плагины

Для того, чтобы из скриптов WEB-страницы вызвать нативную библиотеку большинство браузеров поддерживают специальные расширения — ActiveX для IE и NPAPI-плагин для GH, MF, Opera, Sаfari и др. В данный момент на рынке существует широкий спектр продуктов, относящихся к браузерным плагинам. Архитектурно данные плагины могут быть исполнены по-разному. Некоторые работают на базе CryptoAPI и требуют дополнительной установки криптопровайдера, другие используют в качестве криптоядра PKCS#11-совместимые устройства и не требуют установки дополнительных СКЗИ на рабочее место клиента. Есть универсальные плагины, которые поддерживают как все основные криптопровайдеры, так и широкий спектр аппаратных СКЗИ.

Кроссбраузерные плагины

Криптографический центр etax и Центр загрузки

Спецификация
ПлатформыСемейство Windows, GNU\Linux, OS X
Алгоритмы и криптографические протоколыЭЦП, шифрование, хэш-функция, имитозащита, HMAC
Интеграция с PKIX.509, PKCS#10, CMS, CRL, OCSP (КриптоПро ЭЦП Browser plugin), TSP (КриптоПро ЭЦП Browser plugin)
Механизмы ЭЦППрограммный интерфейс для использования в JavaScript
Механизмы аутентификацииЭЦП случайных данных
Механизмы “гостирования” TLS
Форматы защищенных сообщенийPKCS#7, CMS, XMLSec (КриптоПро ЭЦП Browser plugin), CADES (КриптоПро ЭЦП Browser plugin)
Интеграция с браузеромActiveX (для IE)
NPAPI
Мобильные платформыне поддерживаются
Хранилища ключейРеестр, файлы, USB-токены
Взаимодействие с USB-токенамиХранилище ключей и сертификатов
Использование аппаратной реализации алгоритмов
Через PKCS#11, через CryptoAPI
ПриложенияБраузеры
ИнсталляцияПрограмма установки, не требуются права системного администратора
Примеры (ГОСТ)КриптоПро ЭЦП Browser plugin
eSign-PRO
КриптоПлагин Лисси
Плагин портала госуслуг
JC-WebClient
Рутокен Плагин
Плагин BSS
КриптоАРМ Browser plugin

Проблемы:

  • отсутствие TLS
  • удаление NPAPI из Chromium
  • браузеры на мобильных платформах не поддерживают плагины
  • настройки безопасности IE могут блокировать исполнение плагина

Плюсы:

  • кроссплатформенность для плагинов на базе PKCS#11
  • кроссбраузерность
  • плагины на базе PKCS#11 не требуют установки СКЗИ
  • прозрачное использование для пользователя

ActiveX

Компания Microsoft разработала два основных клиентских ActiveX-компонента, которые транслируют функционал CryptoAPI в скрипты, в браузер.
Для генерации ключа и создания PKCS#10-запроса применятся компонент XEnroll/CertEnroll, а для ЭЦП/шифрования и работы с сертификатами компонент CAPICOM.

Криптографический центр etax и Центр загрузки

В следующих статьях будут подробно рассмотрены оставшиеся решения.

Подпись файлов в macOS

В macOS файлы можно подписывать в ПО КриптоАрм (стоимость лицензии 2500= руб.), или несложной командой через terminal – бесплатно.

Выясняем хэш сертификата КЭП

На токене и в других хранилищах может быть несколько сертификатов. Нужно однозначно идентифицировать тот, которым будем впредь подписывать документы. Делается один раз.
Токен должен быть вставлен. Получаем список сертификатов в хранилищах командой из terminal:

/opt/cprocsp/bin/certmgr -list

Команда должна вывести минимум 1 сертификат вида:

Certmgr 1.1 © “Crypto-Pro”, 2007-2018.
program for managing certificates, CRLs and stores
= = = = = = = = = = = = = = = = = = = =
1——-
Issuer: [email protected],… CN=ООО КОРУС Консалтинг СНГ…
Subject: [email protected],… CN=Захаров Сергей Анатольевич…
Serial: 0x0000000000000000000000000000000000
SHA1 Hash: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Container: SCARD\rutoken_lt_00000000\0000\0000

= = = = = = = = = = = = = = = = = = = =
[ErrorCode: 0x00000000]

У нужного нам сертификата в параметре Container должно быть значение вида SCARD\rutoken…. Если сертификатов с такими значениями несколько, то значит на токене записано несколько сертификатов, и вы в курсе какой именно вам нужен. Значение параметра SHA1 Hash (40 символов) нужно скопировать и подставить в команду ниже.

Подпись файла командой из terminal

В terminal переходим в каталог с файлом для подписания и выполняем команду:

/opt/cprocsp/bin/cryptcp -signf -detach -cert -der -strict -thumbprint ХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХ FILE

где ХХХХ… – хэш сертификата, полученный на шаге 1, а FILE – имя файла для подписания (со всеми расширениями, но без пути).

Команда должна вернуть:

Signed message is created.
[ErrorCode: 0x00000000]

Будет создан файл электронной подписи с расширением *.sgn – это отсоединенная подпись в формате CMS с кодировкой DER.

Установка Apple Automator Script

Чтобы каждый раз не работать с терминалом, можно один раз установить Automator Script, с помощью которого подписывать документы можно будет из контекстного меню Finder. Для этого скачиваем архив – скачать.

  1. Распаковываем архив ‘Sign with CryptoPro.zip’
  2. Запускаем Automator
  3. Находим и открываем распакованный файл ‘Sign with CryptoPro.workflow’
  4. В блоке Run Shell Script меняем текст ХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХ на значение параметра SHA1 Hash сертификата КЭП, полученное выше.
  5. Сохраняем скрипт: ⌘Command + S
  6. Запускаем файл ‘Sign with CryptoPro.workflow’ и подтверждаем установку.
  7. В Finder вызываем контекстное меню любого файла, и в разделе Quick Actions и/или Services выбрать пункт Sign with CryptoPro
  8. В появившемся диалоге КриптоПро ввести PIN-код пользователя от КЭП
  9. В текущем каталоге появится файл с расширением *.sgn – отсоединенная подпись в формате CMS с кодировкой DER.

Скриншоты

Окно Apple Automator:

System Preferences:
Криптографический центр etax и Центр загрузки

Контекстное меню Finder:

Криптографический центр etax и Центр загрузки

Как мы можем попросить Крипто Про отдать ключи (на самом деле, нет)

Если у нас уже есть настоящие (не самоподписанные) ключи, то совершенно некисло было бы проверить их в действии. Да, мы говорим о тестовых целях, но таки доверяй — но проверяй!

Если поставить винду в виртуальную машину, накатить туда Крипто Про, установить ключи и попробовать их экспортировать, то обнаруживаем удивительную вещь: в экспортере не работает экспорт в PKCS12, а все остальные направления в экспортере заблокированы (англ. “grayed out”).

Гуглю ошибку, и что же мы видим на официальном форуме?
https://www.cryptopro.ru/forum2/default.aspx?g=posts&t=2425

“От Алексея Писинина был получен ответ:
Добрый день. PKCS12 не соответствует требованиям безопасности ФСБ в части хранения закрытых ключей. В теории, закрытые ключи должны храниться на так называемых “съемных” носителях. Собственно, по этой причине и не работает экспорт.”

Я правильно это читаю как, что у них гуй для экспорта есть, но бизнес-логики к нему нету?!
Ппоэтому каких галочек ни нащелкай — всегда будет выпадать ошибка на последнем шаге гуевого мастера?!

Какой же стыд.

Dear God,
Please kill them all.
Love, Greg.

image

Оцените статью
ЭЦП Эксперт
Добавить комментарий