Время на прочтение

- Важное вступление
- Делимся инсайтами
- Статусы от партнеров
- Общие сведения
- Сценарии использования
- Лицензирование
- Системные требования
- Сертификаты
- Предварительные версии КриптоПро. N ET 2. 0 для. N ET Core доступны на нашем github
- Криптопровайдер КриптоПро CSP 3. 6 R2
- КриптоПро Office Signature
- ПАК «КриптоПро УЦ»
- Локальные прокси
- Что имеем на входе?
- Done.
- Запросить счет для юридического лица
- Запрос успешно отправлен
- Криптопровайдеры
- Браузерные плагины
- Кроссбраузерные плагины
- ActiveX
- Криптографические решения. От криптопровайдеров до браузерных плагинов
- Соберем проект с поддержкой ГОСТ Р 34. 11-2012 256 bit
- Первым делом создадим новую папку
- I — Сборка проекта без сборки corefx для Windows
- Так, а что надо на выходе?
- Нативные библиотеки
- PKCS#11
- NSS
- Библиотеки c собственным интерфейсом
- Немного покодим
- Пробный запуск
- Проверка в КриптоАРМ
- Проверка на Госуслугах
- Проверка в Контур. Крипто
- Это вообще законно?
Важное вступление
Для получения штампа времени использован TSP-сервис http://qs.cryptopro.ru/tsp/tsp.srf
Делимся инсайтами
Уникальные IT-практики, кейсы, обзоры и экспертные мнения
Статусы от партнеров

Лицензия КриптоПро. N ET на одно рабочее место, бессрочная
Если нужна лицензия на КРИПТОПРО CSP
Доставка через на электронную почту
Важно: для работы на сервере требуется приобретение серверной лицензии на КриптоПро. NET
КриптоПро . NET — программный продукт, позволяющий использовать средство криптографической защиты информации (СКЗИ) КриптоПро CSP на платформе Microsoft . NET Framework. КриптоПро . NET реализует набор интерфейсов для доступа к криптографическим операциям . NET Cryptographic Provider:
Кроме того КриптоПро . NET позволяет использовать стандартные классы Microsoft для высокоуровневых операций:
КриптоПро . NET обеспечивает применение всех алгоритмов, реализуемых КриптоПро CSP.
КриптоПро . NET функционирует на платформах Microsoft Windows XP/Vista/7/8/8.1 под управлением Microsoft NET Framework 2.0 и выше (3.0, 3.5, 4.0) и требует установленного КриптоПро CSP версии 4.0 и выше.
Общие сведения
КриптоПро . NET — программный продукт, позволяющий использовать средство криптографической защиты информации (СКЗИ) КриптоПро CSP на платформе Microsoft . NET Framework. КриптоПро . NET является новой версией существовавшего ранее программного продукта КриптоПро Sharpei и реализует набор интерфейсов для доступа к криптографическим операциям . NET Cryptographic Provider:
Кроме того КриптоПро . NET позволяет использовать стандартные классы Microsoft для высокоуровневых операций:
КриптоПро . NET состоит из двух частей:
КриптоПро . NET обеспечивает применение всех алгоритмов, реализуемых КриптоПро CSP.
Сценарии использования
Документация на КриптоПро . NET SDK включена в дистрибутив и доступна на портале для разработчиков cpdn.
Вопросы встраивания и использования можно обсудить на форуме.
Лицензирование
Существует два вида лицензий КриптоПро . NET:
КриптоПро . NET SDK распространяется на бесплатной основе в составе КриптоПро SDK.
Системные требования
КриптоПро . NET функционирует на платформах Microsoft Windows 2000 и выше (x86 и x64) под управлением Microsoft . NET Framework 2.0 и выше и требует установленного КриптоПро CSP версии 2.0 и выше.
Для КриптоПро . NET SDK требуется наличие на компьютере установленного КриптоПро . NET.
Сертификаты
КриптоПро . NET использует сертифицированное ФСБ России средство криптографической защиты КриптоПро CSP.
Загрузить «КриптоПро . NET»
Заказать «КриптоПро . NET»
Предварительные версии КриптоПро. N ET 2. 0 для. N ET Core доступны на нашем github
Предупреждение. Срок использования КриптоПро . NET ограничен 90 днями с момента установки. Для дальнейшей эксплуатации необходимо получить лицензию на использование продукта в ООО «КРИПТО-ПРО» или у официального дилера.
Компания КРИПТО-ПРО создана в 2000 году и сейчас является лидером по распространению СКЗИ и ЭЦП в России. Наиболее известным продуктом компании является криптопровайдер КриптоПро СSP, разработанный в 2000 году по техническому заданию, согласованному с ФАПСИ. На текущий момент актуальной версией криптопровайдера является КриптоПро CSP 3.6, имеющая сертификат соответствия ФСБ.
Компания КРИПТО-ПРО сегодня занимается не только разработкой криптографического программного обеспечения, но и оказывает консалтинговые услуги по применению ЭЦП, услуги удостоверяющего центра ( УЦ КриптоПро). Компания также оказывает квалифицированную техническую экспертизу электронной цифровой подписи в судах всех инстанций.
На наиболее известных программных продуктах компании КРИПТО-ПРО мы остановимся подробнее.
Криптопровайдер КриптоПро CSP 3. 6 R2
КриптоПро CSP 3.6 — российский криптопровайдер, выпущенный в 2010 году, использующийся для операций шифрования и электронной подписи. Он поддерживает стандарты шифрования и электронной подписи ГОСТ, что дает возможность применять КриптоПро CSP для сдачи отчетности в гос. органы, построения систем защищенного электронного документооборота и юридически значимой подписи, а также в системах защиты персональных данных.
КриптоПро CSP для Windows выпускается с двумя видами лицензии: годовой и бессрочной. Существуют версии криптопровайдера и под операционные системы, отличные от клиентских версий Windows:
Вышеперечисленные продукты вы можете приобрести в нашем интернет-магазине:
КриптоПро Office Signature
КриптоПро Office Signature — это продукт компании КриптоПро, предназначенный для электронной подписи и проверки подписей в документах Microsoft Word и Excel, прямо из интерфейса офисных программ. Для использования необходим установленный криптопровайдер КриптоПро CSP.
КриптоПро . NET — программный продукт, позволяющий использовать КриптоПро CSP на платформе Microsoft . NET Framework. КриптоПро . NET является новой версией КриптоПро Sharpei (более не разрабатываемого и не поддерживаемого) и реализует набор интерфейсов для доступа к криптографическим операциям . NET Cryptographic Provider:
ПАК «КриптоПро УЦ»
Компания КРИПТО-ПРО является разработчиком и поставщиком программно-аппаратного комплекса «Удостоверяющий Центр «КриптоПро УЦ» (ПАК «КриптоПро УЦ»), обеспечивающего автоматизацию целевых функций Удостоверяющего центра.
Удостоверяющий центр — это организационный элемент АИС, обеспечивающий изготовление сертификатов открытых ключей и управление (аннулирование, приостановление, возобновление) ими, а также выполняющий иные функции, установленные законодательством Российской Федерации.
ПАК «КриптоПро УЦ» предназначен для выполнения организационно-технических мероприятий по обеспечению участников АИС средствами применения электронной цифровой подписи (электронной подписи) в целях:
Локальные прокси
Основным принципом действия локального прокси является прием незащищенного соединения от приложения, установка TLS-туннеля с удаленным сервером и передача «прикладного уровня» между приложением и удаленным сервером по этому туннелю.
Некоторые локальные прокси кроме того дополнены механизмом ЭЦП специальным образом промаркированных WEB-форм (Inter-PRO, МагПро КриптоТуннель). Существуют локальные прокси, которые предоставляют для браузера WEB API ЭЦП (систему HTTP-запросов и ответов, аналогичных программному API криптобиблиотеки).

Что имеем на входе?
Лицензирование ПО и версииКриптоПро CSP версии 5.0 — у меня установлена версия 5.0.11944 КС1, лицензия встроена в ЭП. КриптоПро TSP Client 2.0 и КриптоПро OCSP Client 2.0 — лицензии покупается отдельно, а для гайда мне хватило демонстрационного срока. КриптоПро . NET Client версии 1.0.7132.2 — в рамках этого гайда я использовал демонстрационную версию клиентской части и все действия выполнялись локально. Лицензию на сервер нужно покупать отдельно. Контур. Крипто бесплатен, но требует регистрации. В нем также можно подписать документы КЭП, УКЭП и проверить созданную подпись загрузив ее файлы.
UPD1: Поменял в коде переменную, куда записываются байты файла подписи.
Также я забыл написать немного про подпись штампа времени — он подписывается сертификатом владельца TSP-сервиса. По гайду это ООО «КРИПТО-ПРО»:

UPD2: Про библиотеки CAdESCOM и CAPICOM
Если создать пустой проект на . NET Core 3.1, подключив непропатченные библиотеки, то при обращении к закрытому ключу выпадет исключение «System. NotSupportedException» c сообщением «The certificate key algorithm is not supported.»:

. NET Core 3.1 — Исключение без пропатченных библиотек
Но при использовании пропатченных библиотек это исключение не выпадает и с приватным ключем можно взаимодействовать:

Также код из гайда работает с . NET Framework 4.8 без использования пропатченных библиотек, но вместо обращения к пространству имен «System. Security. Cryptography», которое подменяется пропатченными библиотеками для . NET Core, CSP Gost3410_2012_256CryptoServiceProvider будет использован из пространства имен «CryptoPro. Sharpei»:

Done.
Гайд написан с исследовательской целью — проверить возможность подписания документов УКЭП с помощью самописного сервиса на . NET Core 3.1 с формированием штампов подлинности и времени подписания документов.
Безусловно это решение не стоит брать в работу «как есть» и нужны некоторые доработки, но в целом оно работает и подписывает документы подписью УКЭП.
Запросить счет для юридического лица
Отправляя данную форму, вы даете согласие на обработку персональных данных и соглашаетесь c политикой конфиденциальности.
Запрос успешно отправлен
На указанный e-mail придет письмо с информацией о стоимости товара.
Криптопровайдеры
Де-факто стандартом отрасли является класс криптосредств, известных как криптопровайдеры. Криптопровайдер — это предоставляющая специальный API и специальным образом зарегистрированная в ОС библиотека, которая позволяет расширить список поддерживаемых в ОС криптоалгоритмов.
Следует отметить, что несовершенство предлагаемых MS Windows механизмов расширения вынуждает разработчиков криптопровайдеров дополнительно модифицировать высокоуровневые криптобиблиотеки и приложения MS Windows в процессе их выполнения для того, чтобы «научить» их использовать российские криптоалгоритмы.
Следует понимать, что не все СКЗИ одного вида реализуют полный объем функциональности, приведенный в таблицах. Для уточнения возможностей криптосредств следуют обратиться к производителю.

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

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

В следующих статьях будут подробно рассмотрены оставшиеся решения.
Криптографические решения. От криптопровайдеров до браузерных плагинов
Производители средств криптографической защиты информации (СКЗИ) предлагают различные механизмы для интеграции криптосредств в информационные системы. Существуют решения, ориентированные на поддержку систем с Web-интерфейсом, мобильных и десктопных приложений, серверных компонентов. С КЗИ интегрируются в приложения Microsoft и в продукты Open Source, обеспечивают поддержку различных прикладных протоколов и форматов электронной подписи.
С учетом растущего количества проектов с применением ЭЦП и появления массовых проектов для физических лиц, разработчикам подобных проектов требуется хорошо ориентироваться в предлагаемых производителями решениях по ЭЦП для того, чтобы сделать систему удобной в эксплуатации и недорогой в плане техподдержки. Таким образом, если еще лет 5 назад главным фактором выбора криптосредства являлось его полное соответствие требованиям регуляторов, то при сегодняшнем разнообразии важными критериями могут выступать охват поддерживаемых платформ, возможность интеграции с браузером, поддержка мобильных пользователей, возможность установки без прав системного администратора и т.п.
В данном материале сделана попытка классифицировать средства криптографической защиты информации.
Классификация построена на основе:
Кроме того, показаны способы интеграции СКЗИ с Web-приложениями и возможность его использования на мобильных платформах
Общая схема классификации приведена в таблице:
В первой статье рассмотрим решения, начиная с криптопровайдеров по браузерные плагины включительно. В последующих статьях будут рассмотрены остальные средства.
Соберем проект с поддержкой ГОСТ Р 34. 11-2012 256 bit
Гайд разделен на несколько этапов. Основная инструкция по сборке опубликована вместе с репозиторием DotnetCoreSampleProject — периодически я буду на нее ссылаться.
Первым делом создадим новую папку
Инструкция делится на 2 этапа — мне пришлось выполнить оба, чтобы решение заработало. В папку добавьте подпапки .
untime и .packages
I — Сборка проекта без сборки corefx для Windows
На этом месте у вас должно получиться решение, которое поддерживает ГОСТ Р 34.11-2012 256 bit.
Так, а что надо на выходе?
А на выходе надо получить готовое решение, которое сделает отсоединенную ЭП в формате .sig со штампом времени на подпись и доказательством подлинности. Для этого зададим следующие критерии:
Нативные библиотеки
Open Source библиотека OpenSSL обладает широкими криптографическими возможностями и удобным механизмом ее расширения другими криптоалгоритмами. OpenSSL является основным криптоядром для широкого спектра приложений Open Source.
После того, как в эту библиотеку компанией Криптоком были добавлены ГОСТы, появились патчи для «гостификации» многих популярных приложения, использующих OpenSSL. На базе OpenSSL некоторые вендоры разработали и сертифицировали СКЗИ, кроме того в ряд продуктов OpenSSL входит «неявным» образом.

PKCS#11
Библиотека PKCS#11 предоставляет универсальный кроссплатформенный программный интерфейс к USB-токенам и смарт-картам.
Функции делятся на:
Таким образом, стандарт 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.
Пример совместимости приложений приведен на схеме. Таким образом, возможно использование подходящего приложения в соответствующем месте инфосистемы.

PKCS#11 бывают также без поддержки аппаратных устройств с программной реализацией криптоалгоритмов и хранением объектов в файловой системе.
Примеры – PKCS#11 интегрированный в NSS (Mozilla), проект aToken, библиотека Агава-Про.
У компании Крипто-Про есть библиотека PKCS#11, реализованная на базе MS CryptoAPI:
Существуют PKCS#11-библиотеки для мобильных платоформ. Примером подобной библиотеки служит библиотека для Рутокен ЭЦП Bluetooth, которая позволяет использовать устройство на iOS и Android.
NSS
NSS представляет собой криптографическую библиотеку от сообщества Mozilla. N SS используется такими приложениями, как браузер Mozilla Firefox, почтовым клиентом Mozilla Thunderbird.
В данный момент существуют два проекта по «гостификации» NSS:
Библиотеки c собственным интерфейсом
Проприетарные библиотеки предоставляют собственный API для встраивания в приложения. В данный список можно внести:
Немного покодим
Потребуется 2 COM библиотеки: «CAPICOM v2.1 Type Library» и «Crypto-Pro CAdES 1.0 Type Library». Они содержат необходимые объекты для создания УКЭП.
В этом примере будет подписываться BASE64 строка, содержащая в себе PDF-файл. Немного доработав код можно будет подписать hash-значение этого фала.
Основной код для подписания был взят со страниц Подпись PDF с помощью УЭЦП- Page 2 (cryptopro.ru) и Подпись НЕОПРЕДЕЛЕНА при создании УЭЦП для PDF на c# (cryptopro.ru), но он использовался для штампа подписи на PDF документ. Код из этого гайда переделан под сохранение файла подписи в отдельный файл.
Условно процесс можно поделить на 4 этапа:
Пробный запуск
Для подписания возьмем PDF-документ, который содержит надпись «Тестовое заявление.»:
Больше для теста нам ничего не надо
Далее запустим программу и дождемся подписания файла:

Готово. Теперь можно приступать к проверкам.
Проверка в КриптоАРМ
Время создания ЭП заполнено:
Штамп времени на подпись есть:

Доказательства подлинности также заполнены:

В протоколе проверки есть блоки «Доказательства подлинности», «Штамп времени на подпись» и «Время подписания»:



Важно отметить, что серийный номер параметров сертификата принадлежит TSP-сервису http://qs.cryptopro.ru/tsp/tsp.srf
Проверка на Госуслугах

Проверка в Контур. Крипто

Это вообще законно?
С удовольствием узнаю ваше мнение в комментариях.
