Открепленная электронная подпись, в отличии от прикрепленной, хранится в отдельном файле вместе с подписываемым документом. В большинстве случаев она имеет расширение. sig и представляет собой копию открытого сертификата электронной подписи с дополнительным набором мета-данных. А с юридической стороны отличается ли присоединенная и отсоединенная электронная подпись? Какие ещё между ними имеются отличия?
- Общие сведения о типах электронных подписей
- Для чего нужны штампы времени
- Краткое описание протокола TSP
- Запрос на штамп времени
- Ответ сервера штампов времени
- Как хранить штампы времени совместно с документами
- Назначение КриптоПро CSP
- Поддерживаемые алгоритмы
- Поддерживаемые технологии хранения ключей
- Носители с неизвлекаемыми ключами и защищенным обменом сообщениями
- Классические пассивные USB-токены и смарт-карты
- Инструменты КриптоПро
- Поддерживаемое программное обеспечение
- Интеграция с платформой КриптоПро
- Операционные системы и аппаратные платформы
- Интерфейсы для встраивания
- Производительность на любой вкус
- Регулирующие документы
- Использование КриптоПро CSP в ПО Microsoft
- Встраивание КриптоПро CSP в приложения
- Цели использования криптографических функций
- Использование CryptoAPI
- Базовые криптографические функции
- Функции кодирования/декодирования
- Функции работы со справочниками сертификатов
- Высокоуровневые функции обработки криптографических сообщений
- Низкоуровневые функции обработки криптографических сообщений
- Использование SSPI
- Инструментарий разработчика CAPICOM
- Инструментарий разработчика КриптоПро CSP SDK
- Модели Рутокен с аппаратной криптографией, которые подойдут для генерации ключей для ЕГАИС
- Способ 1. С использованием «КриптоПро CSP» версии 5. 0 R2 и новее
- Способ 2. С использованием «Генератора запросов сертификатов для Рутокен ЭЦП 2. 0 и 3
- Способ 3. С использованием программы «КриптоАРМ» 5 версии
- Создание через командную строку
- Как создать файл открепленной подписи
Общие сведения о типах электронных подписей
Условно выделяются три вариации электронных подписей (в плане того, как они закрепляются за подписываемым файлом):
- Присоединенная. Сертификат подписи при этом включен в сам подписанный файл и находится в отдельном, защищенном контейнере. При редактировании того самого файла сертификат удаляется.
- Отсоединенная. Сертификат подписи располагается в отдельном файле с расширением .sig. Однако в нем содержатся мета-данные, ссылающиеся на подписанный файл.
- Интегрированная. Сертификат является нераздельной частью подписанного файла, отредактировать такой документ не получится. Подобная схема часто используется в текстовых документах, создаваемых при помощи офисного пакета Microsoft Office или Adobe Acrobat. Открыть подписанный файл получится только через эти приложения при наличии установленного в системе сертификата удостоверяющего центра.
Соответственно, открепленная и прикрепленная электронная подпись отличаются только тем, включены ли они в подписанный документ или нет. Но информация в них содержится идентичная – этот тот же ключ с указанием данных того, кто подписал документ, и специальный набор мета-данных, подтверждающий факт подписи при помощи легитимного ЭЦП.
С юридической точки зрения никакой разницы между открепленной и присоединенной подписью нет. Отличаются они только удобством использования. Например, файл, подписанный отсоединенной подписью, доступен для просмотра даже без средств криптошифрования (установленная КриптоПРО CSP не понадобится). Открыть же документ с присоединенной подписью без них не получится (то же самое касается и интегрированных электронных подписей).
Сегодняшнюю небольшую запись я решил посветить теме создания электронной цифровой подписи средствами криптопровайдера «КриптоПРО». Речь пойдет о Bat файле, который можно будет использовать для автоматизации подписи электронных документов. Для того что бы автоматизировать процесс подписывания электронных документов нам понадобится:
1) Крипто-ПРО CSP;
2) USB Ключ (например рутокен), вставленный в USB порт;
3) Блокнот (Notepad. exe);
4) Установленные сертификаты для Вашего ключа;
Камнем преткновения во всей этой истории является файл csptest. exe который находится в директории КриптоПро (по умолчанию C:Program FilesCrypto ProCSPcsptest. exe). Откроем командную строку и выполним команду:
cd C:Program FilesCrypto ProCSPи
csptest
Мы увидим все возможные параметры данного exe файла.
Для того, что бы увидеть параметры той или иной глобальной опции, достаточно вызвать данный файл с этой опцией, например
Таким образом, чтобы подписать файл через cmd средствами csptest. exe нужно вызвать команду:
csptest -sfsign -sign -in Dogovor. doc -out Dogovor. doc. sig -my ООО МоиПрограммы Иванов Иван Иванович
где:
-my — Указывает владельца ключа;
-in — Указывает какой файл нужно подписывать. Если файл находится не в папке с csptest то нужно указывать полный путь. ;
-out — Указывает имя файла подписи;
Проверить подпись можно на сайте Госулсуг по данной ссылке.
Скорей всего. Если сейчас загрузить данный файл на сайте госуслуги, то появится ошибка. Вызвано это тем, что необходима информация об удостоверяющем центре. Так же не будет лишней дата и время подписи документов. Для этого к нашей команде нужно добавить два параметра:
csptest -sfsign -sign -in Dogovor. doc -out Dogovor. doc. sig -my ООО МоиПрограммы Иванов Иван Иванович -addsigtime -add
Если же нам нужна подпись в осоединенном формате, то добавим еще один параметр:
csptest -sfsign -sign -in Dogovor. doc -out Dogovor. doc. sig -my ООО МоиПрограммы Иванов Иван Иванович -addsigtime -add -detached
Примечание:Если подпись документа выполняется с ошибкой
Unable to open file
An error occurred in running the program. signtsf. c:321:Cannot open input file. Error number 0x2 (2). Не удается найти указанный файл. при вызове, как в последнем примере, и Вы уверены в правильности путей в параметре -in и -out, попробуйте создать подпись по первому примеру, а после выполнить команду с полным набором параметров!!!
Основную команду для подписи мы получили. Теперь немного упростим процедуру. Сделаем bat файл, при запуске которого будет подписывать файл Secret. txt, находящийся в тойже папке что и bat файл. Откроем блокнот и запишем слудующий код:
chcp 1251
set CurPath=%cd%
cd C:Program FilesCrypto ProCSP
call csptest -sfsign -sign -in %CurPath%Secret. txt -out %CurPath%Secret. txt. sig -my ООО МоиПрограммы Иванов Иван Иванович -addsigtime -add -detached
cd %CurPath%
Нажимаем «Файл» -> «Сохранить как» -> ЗадаемИмя с. bat -> «Сохранить»
Собсвенно и все. Для справки:
chcp 1251 — Задает кодировку для CMD. Необходимо для валидной обработки русских букв в коде;
set CurPath=%cd% — Сохраняет путь текущей директории CMD в переменную CurPath;
cd — Задает текущий путь CMD;
call — Запускает программу;
Использование ПАК “КриптоПро TSP” позволяет участникам информационных систем получать штампы времени, связанные с электронными документами. Штамп времени представляет из себя электронный документ, подписанный электронной цифровой подписью (электронной подписью), где подписанными данными являются значение хэш-функции электронного документа и время предоставления штампа времени. Таким образом, штамп времени однозначно связан с электронным документом, на который он выдается и обеспечивает его целостность.
Для реализации сервиса TSP необходимо на базе “КриптоПро TSP Server” организовать Сервер службы TSP и встроить “КриптоПро TSP Client” в программное обеспечение клиентских рабочих мест. Встраивание “КриптоПро TSP Client” осуществляется с использованием инструментария разработчика – “КриптоПро PKI SDK”.
Для чего нужны штампы времени
- Фиксация времени создания электронного документа. Применение штампа времени позволяет зафиксировать время создания электронного документа. Для этого после создания документа необходимо сформировать запрос на получение штампа времени. Полученный штамп времени обеспечит доказательство факта существования электронного документа на момент времени, указанный в штампе.
- Фиксация времени формирования электронной цифровой подписи (электронной подписи) электронного документа. Штамп времени может использоваться в качестве доказательства, определяющего момент подписания электронного документа (1-ФЗ “Об ЭЦП”, Статья 4; 63-ФЗ “Об ЭП”, Статья 11). Для этого после создания электронной цифровой подписи (электронной подписи) документа необходимо сформировать запрос на получение штампа времени. Полученный штамп времени обеспечит доказательство, определяющее момент времени подписания электронного документа.
- Фиксация времени выполнения какой-либо операции, связанной с обработкой электронного документа. Штамп времени на электронный документ может быть получен при выполнении какой-либо операции, связанной с его обработкой, при необходимости зафиксировать время выполнения этой операции. Например, штамп времени может быть получен при поступлении от пользователя электронного документа на сервер электронного документооборота, либо при предоставлении документа какому-либо пользователю.
- Долговременное хранение электронных документов, в том числе и после истечения срока действия сертификатов проверки подписи пользователя. Использование штампов времени позволяет обеспечить доказательство времени формирования электронной цифровой подписи (электронной подписи) электронного документа. Если дополнительно на момент времени формирования ЭЦП (ЭП) рядом со значением ЭЦП (ЭП) и штампом времени сохранить и доказательство действительности сертификата (например, получить и сохранить OCSP-ответ), то проверку указанной ЭЦП (ЭП) можно обеспечить на момент времени её формирования (полная аналогия с бумажным документооборотом). И такую подпись можно будет успешно проверять в течение срока действия ключа проверки подписи Службы штампов времени. А что делать, когда сертификат Службы штампов времени истечет? Ответ прост: до истечения этого сертификата получить ещё один штамп времени на указанный документ (уже с использованием нового закрытого ключа и сертификата Службы штампов времени): этот новый штамп зафиксирует время, на которое старый сертификат службы штампов времени был действителен, и обеспечит целостность этого электронного документа при дальнейшем хранении в течение срока действия сертификата нового штампа времени.
Краткое описание протокола TSP
Протокол TSP (Time-Stamp Protocol) является протоколом типа “запрос-ответ”. Весь обмен заключается в двух сообщениях. Клиент инициирует взаимодействие, посылая серверу запрос на штамп времени, на что сервер возвращает ответ, содержащий выпущенный штамп или не содержащий его в случае ошибки.
Запрос на штамп времени
Запрос на штамп времени включает следующие поля:
- Значение хэш-функции от документа, на который запрашивается штамп (обязательно указывается, какой именно алгоритм хэширования используется);
- Объектный идентификатор (OID) политики запрашиваемого штампа (необязательно);
- Nonce – случайное число, идентифицирующее данную транзакцию протокола TSP (необязательно);
- Дополнения (Extensions) (необязательно).
Идентификатор политики определяет, по какой политике должен быть выдан штамп времени. Политики штампов времени задаются сервером штампов времени и устанавливают набор правил, по которым выдаются штампы времени, а также области их применения.
Например, в системе может быть определено несколько политик с разными идентификаторами и следующим описанием:
- Политика для тестовых штампов. Штампы по этой политике выдаются всем пользователям, но могут использоваться только для тестовых целей, а система документооборота не будет принимать такие штампы.
- Основная политика штампов. Штампы по этой политике выдаются всем зарегистрированным пользователям системы, стоимость одного штампа составляет 5 копеек, точность времени в штампе составляет 10 секунд, а система документооборота будет принимать такие штампы для документов, не являющихся важными.
- Точная политика штампов. Штампы по этой политике выдаются пользователям, допущенным к работе с важными документами, стоимость одного штампа составляет 25 копеек, точность времени в штампе составляет 1 секунду, а система документооборота будет принимать такие штампы для любых документов.
Поле Nonce позволяет клиенту проверить своевременность полученного ответа, в котором сервер штампов времени должен разместить то же самое значение nonce, которое было в запросе.
Ответ сервера штампов времени
Ответ сервера штампов времени содержит следующие поля:
- Статус операции и информация об ошибке;
- Штамп времени (если статус успешный).
Штамп времени представляет собой CMS-сообщение (PKCS#7) типа SignedData (см. RFC 3369 “Cryptographic Message Syntax (CMS)”). Содержимым этого сообщения является структура со следующими полями:
- Значение хэш-функции от документа, на который выдан штамп (обязательно указывается, какой именно алгоритм хэширования используется);
- Объектный идентификатор (OID) политики штампа;
- Время выдачи штампа;
- Точность времени;
- Признак строгой упорядоченности штампов (Ordering);
- Nonce – случайное число, идентифицирующее данную транзакцию протокола TSP (совпадает с соответствующим полем запроса);
- Дополнения (Extensions) (необязательно).
Сервер штампов указывает признак ordering, если он работает в режиме строгой упорядоченности штампов. сравнение времён двух выданных этим серверов штампов даже без учёта точности времени определяет порядок их выдачи.
Как хранить штампы времени совместно с документами
В RFC 3161 “Internet X. 509 Public Key Infrastructure Time-Stamp Protocol (TSP)” описан вариант хранения штампа времени на документ с ЭЦП (ЭП) формата CMS SignedData в неподписанном атрибуте этого CMS-сообщения.
Для организации долговременного архивного хранения документов с ЭЦП (ЭП) могут использоваться штампы времени, а также дополнительные данные, необходимые для подтверждения подлинности ЭЦП (ЭП) – так называемые доказательства подлинности ЭЦП (ЭП). К таковым относятся:
- Штампы времени;
- Сертификат ключа подписи, использованного для создания оригинальной ЭЦП (ЭП);
- Сертификат УЦ, издавшего сертификат ключа подписи (если цепочка сертификатов содержит другие УЦ, то их сертификаты также необходимо проверить);
- Сертификат Службы штампов времени;
- Цепочка сертификатов для проверки сертификата Службы штампов времени;
- Информацию о статусе сертификатов (Списки отозванных сертификатов или OCSP-ответы).
Для обеспечения актуальности ЭЦП (ЭП) при долговременном хранении необходимо периодически получать новые штампы времени.
Возможный вариант форматов данных и идентификаторы атрибутов для долговременного хранения документов с ЭЦП (ЭП) на основе CMS-сообщений описаны в европейском стандарте CAdES (ETSI TS 101 733). Версия этого стандарта опубликована в виде RFC 5126 “CMS Advanced Electronic Signatures (CAdES)”.
Далее необходимо произвести настройку
клиентской машины и произвести тестовое подключение к шлюзу.
КриптоПро CSP 5. 0 — новое поколение криптопровайдера, развивающее три основные продуктовые линейки компании КриптоПро: КриптоПро CSP (классические токены и другие пассивные хранилища секретных ключей), КриптоПро ФКН CSP/Рутокен CSP (неизвлекаемыe ключи на токенах с защищенным обменом сообщениями) и КриптоПро DSS (ключи в облаке).
Все преимущества продуктов этих линеек не только сохраняются, но и приумножаются в КриптоПро CSP 5. 0: шире список поддерживаемых платформ и алгоритмов, выше быстродействие, удобнее пользовательский интерфейс. Но главное — работа со всеми ключевыми носителями, включая ключи в облаке, теперь единообразна. Для перевода прикладной системы, в которой работал КриптоПро CSP любой из версий, на поддержку ключей в облаке или на новые носители с неизвлекаемыми ключами, не потребуется какая-либо переработка ПО — интерфейс доступа остаётся единым, и работа с ключом в облаке будет происходить точно таким же образом, как и с классическим ключевым носителем.
Назначение КриптоПро CSP
- Формирование и проверка электронной подписи.
- Обеспечение конфиденциальности и контроля целостности информации посредством ее шифрования и имитозащиты.
- Обеспечение аутентичности, конфиденциальности и имитозащиты соединений по протоколам TLS, и IPsec.
- Контроль целостности системного и прикладного программного обеспечения для его защиты от несанкционированных изменений и нарушений доверенного функционирования.
Поддерживаемые алгоритмы
В КриптоПро CSP 5. 0 наряду с российскими реализованы зарубежные криптографические алгоритмы. Теперь пользователи имеют возможность использовать привычные носители ключей для хранения секретных ключей RSA и ECDSA.
Электронная подпись
ГОСТ Р 34. 10-2012 (ГОСТ 34. 10-2018), ECDSA, RSA
Хэш-функции
ГОСТ Р 34. 11-2012 (ГОСТ 34. 11-2018), SHA-1, SHA-2
Шифрование
ГОСТ Р 34. 12-2015 (ГОСТ 34. 12-2018), ГОСТ Р 34. 13-2015 (ГОСТ 34. 13-2018), ГОСТ 28147-89, AES (128/192/256), 3DES, 3DES-112, DES, RC2, RC4
Таблица алгоритмов, поддерживаемых разными версиями КриптоПро CSP.
Поддерживаемые технологии хранения ключей
В криптопровайдере КриптоПро CSP 5. 0 впервые появилась возможность использования ключей, хранящихся на облачном сервисе КриптоПро DSS, через интерфейс CryptoAPI. Теперь ключи, хранимые в облаке, могут быть легко использованы как любыми пользовательскими приложениями, так и большинством приложений компании Microsoft.
Носители с неизвлекаемыми ключами и защищенным обменом сообщениями
В КриптоПро CSP 5. 0 добавлена поддержка носителей с неизвлекаемыми ключами, реализующих протокол SESPAKE, позволяющий провести аутентификацию, не передавая в отрытом виде пароль пользователя, и установить шифрованный канал для обмена сообщений между криптопровайдером и носителем. Нарушитель, находящийся в канале между носителем и приложением пользователя, не может ни украсть пароль при аутентификации, ни подменить подписываемые данные. При использовании подобных носителей полностью решается проблема безопасной работы с неизвлекаемыми ключами.
Компании Актив, ИнфоКрипт и СмартПарк разработали новые защищенные токены, которые поддерживают данный протокол.
Список производителей и моделей поддерживаемых КриптоПро CSP 5. 0 R2
Список производителей и моделей носителей с неизвлекаемыми ключами и защищенным обменом сообщениями поддерживаемых КриптоПро CSP 5. 0 R2
Компания
Носитель
Актив
Рутокен ЭЦП 2. 0 3000 (USB, Type-C, micro)
Смарт-карта Рутокен ЭЦП 3. 0
Инфокрипт
InfoCrypt Token++
СмартПарк
Форос 2. Базис
Многие пользователи хотят иметь возможность работать с неизвлекаемыми ключами, но при этом не обновлять токены до уровня ФКН. Специально для них в провайдер добавлена поддержка популярных ключевых носителей Рутокен ЭЦП 2. 0, JaCarta-2 ГОСТ и InfoCrypt VPN-Key-TLS.
Список производителей и моделей поддерживаемых КриптоПро CSP 5. 0 R2
Список производителей и моделей носителей с неизвлекаемыми ключами поддерживаемых КриптоПро CSP 5. 0 R2
Компания Носитель
ISBC Esmart Token ГОСТ
Актив Рутокен PINPad
Рутокен ЭЦП (USB, micro, Flash)
Рутокен ЭЦП 2. 0 (USB, micro, Flash, Touch)
Рутокен ЭЦП 2. 0 2100 (USB, Type-C, micro)
Рутокен ЭЦП 2. 0 2151
Рутокен ЭЦП PKI (USB, Type-C, micro)
Рутокен ЭЦП 2. 0 Bluetooth
Рутокен TLS (исполнение 1)
Смарт-карта Рутокен ЭЦП SC
Смарт-карта Рутокен ЭЦП 2. 0 2100
Смарт-карта Рутокен ЭЦП 2. 0 2151
Аладдин Р. JaCarta-2 ГОСТ, JaСarta SF/ГОСТ
JaCarta-2 SE/PKI/ГОСТ
Инфокрипт InfoCrypt Token++ TLS
InfoCrypt VPN-Key-TLS
Классические пассивные USB-токены и смарт-карты
Большинство пользователей предпочитает быстрые, дешевые и удобные решения для хранения ключей. Как правило, предпочтение отдаётся токенам и смарт-картам без криптографических сопроцессоров. Как и в предыдущих версиях провайдера, в КриптоПро CSP 5. 0 сохранена поддержка всех совместимых носителей производства компаний Актив, Аладдин Р. , Gemalto/SafeNet, Multisoft, NovaCard, Rosan, Alioth, MorphoKST и СмартПарк.
Кроме того, конечно, как и раньше поддерживаются способы хранения ключей в реестре Windows, на жестком диске, на флеш-накопителях на всех платформах.
Список производителей и моделей поддерживаемых КриптоПро CSP 5. 0 R2
Список производителей и моделей классических пассивных USB-токенов и смарт-карт поддерживаемых КриптоПро CSP 5. 0 R2
Компания Носитель
AliothSCOne Series (v5/v6)
Gemalto Optelio Contactless Dxx Rx
Optelio Dxx FXR3 Java
Optelio G257
Optelio MPH150
ISBC Esmart Token
MorphoKSTMorphoKST
NovaCardCosmo
Rosan G&D element V14 / V15
G&D 3. 45 / 4. 42 / 4. 44 / 4. 45 / 4. 65 / 4. 80
Kona 2200s / 251 / 151s / 261 / 2320
Kona2 S2120s / C2304 / D1080
SafeNet eToken Java Pro JC
eToken 4100
eToken 5100
eToken 5110
eToken 5105
eToken 5205
Актив Рутокен S
Рутокен КП
Рутокен Lite
Смарт-карта Рутокен Lite
Аладдин Р. JaCarta ГОСТ
JaCarta PKI
JaCarta PRO
JaCarta LT
DallasTouch Memory (iButton) DS199x
ИнфокриптInfoCrypt Token++ lite
Мультисофт MS_Key исп. 8 Ангара
MS_Key ESMART исп. 5
СмартПарк Форос
Форос 2
R301 Форос
Оскар
Оскар 2
Рутокен Магистра
Инструменты КриптоПро
В составе КриптоПро CSP 5. 0 появилось кроссплатформенное (Windows/Linux/macOS) графическое приложение — «Инструменты КриптоПро» («CryptoPro Tools»).
Основная идея — предоставить возможность пользователям удобно решать типичные задачи. Все основные функции доступны в простом интерфейсе — при этом мы реализовали и режим для опытных пользователей, открывающий дополнительные возможности.
Поддерживаемое программное обеспечение
КриптоПро CSP позволяет быстро и безопасно использовать российские криптографические алгоритмы в следующих стандартных приложениях:
- Офисный пакет Microsoft Office
- Почтовый сервер Microsoft Exchange и клиент Microsoft Outlook
- Продукты Adobe
- Браузеры Яндекс.Браузер, Спутник, Internet Explorer, Chromium GOST
- Средство формирования и проверки подписи приложений Microsoft Authenticode
- Веб-серверы Microsoft IIS, nginx, Apache
- Средства удаленных рабочих столов Microsoft Remote Desktop Services
- Microsoft Active Directory
Интеграция с платформой КриптоПро
С первого же релиза обеспечивается поддержка и совместимость со всеми нашими продуктами:
- КриптоПро УЦ
- Службы УЦ
- КриптоПро ЭЦП
- КриптоПро IPsec
- КриптоПро EFS
- КриптоПро .NET
- КриптоПро Java CSP
- КриптоПро NGate
Операционные системы и аппаратные платформы
Традиционно мы работаем в непревзойдённо широком спектре систем:
- Microsoft Windows
- macOS
- Linux
- FreeBSD
- Solaris
- AIX
- iOS
- Android
- Sailfish OS
- Аврора
- Intel, AMD
- PowerPC
- ARM (в т.ч. Байкал-М, Apple M1)
- MIPS (Байкал-Т)
- VLIW (Эльбрус)
- Sparc
- Microsoft Hyper-V
- VMWare
- Oracle Virtual Box
- RHEV
Таблица операционных систем, поддерживаемых разными версиями КриптоПро CSP.
Классификация операционных систем для использования КриптоПро CSP c лицензией на рабочее место и сервер.
Интерфейсы для встраивания
Для встраивания в приложения на всех платформах КриптоПро CSP доступен через стандартные интерфейсы для криптографических средств:
- Microsoft CryptoAPI
- OpenSSL engine
- Java CSP (Java Cryptography Architecture)
- Qt SSL
Производительность на любой вкус
Многолетний опыт разработки позволяет нам охватить все решения от миниатюрных ARM-плат, таких как Raspberry PI, до многопроцессорных серверов на базе Intel Xeon, AMD EPYC и PowerPC, отлично масштабируя производительность.
Регулирующие документы
Использование КриптоПро CSP позволяет решить сразу несколько задач:
- для корпоративных пользователей – это возможность использовать стандартные и повсеместно используемые приложения компании Microsoft с надежной российской криптографией;
- для системных интеграторов – это возможность создания новых, надежно защищенных приложений с использованием богатейшего и проверенного временем инструментария разработки компании Microsoft.
Использование КриптоПро CSP в ПО Microsoft
К стандартным приложениям, которые теперь могут использовать российские алгоритмы электронной цифровой подписи и шифрования, относятся:
- Microsoft XML версии 5.0 (Microsoft Office 2003 и Microsoft XML Viewer) и версии 6.0 (Microsoft Visual Studio 2005);
- Microsoft Certification Authority, входящее в состав ОС Windows Server 2000/2003/2008/2008R2 (см. особенности установки);
- Microsoft Outlook Express, входящее в состав Internet Explorer версии 5.0 и выше;
- Microsoft Outlook, входящее в состав MS Office 2000/XP/2003/2007/2010/2013 (при формировании сообщений в формате S/MIME). При использовании ПО Microsoft Outlook 2000 рекомендуем установить Набор исправлений Office 2000 SR-1a, который позволяет корректно обрабатывать кодировки KOI8 и Win1251 в подписанных сообщениях;
- Microsoft Word/Excel, входящее в состав MS Office 2003/2007 (при формировании ЭЦП документов);
- Средства формирования и проверки ЭЦП программного обеспечения, распространяемого по сети (Microsoft Authenticode);
- Защита почтовых соединений (TLS для IMAPS/POP3S/SMTPS) в Microsoft Exchange и Microsoft Outlook;
- Защита соединений удалённого администрирования при использовании Microsoft Terminal Server или серверов и клиентов Citrix;
Встраивание КриптоПро CSP в приложения
Для встраивания КриптоПро CSP в разрабатываемые приложения следует использовать функции Microsoft CryptoAPI, SSPI, CAPICOM, а так же КриптоПро ЭЦП Browser plug-in. Ниже приведено краткое описание этих интерфейсов. Более подробное описание можно найти в программной документации MSDN (Microsoft Developer Network).
Цели использования криптографических функций
Для обеспечения защиты электронных документов и создания защищенной автоматизированной системы в первую очередь используют криптографические методы защиты, которые позволяют обеспечить защиту целостности, авторства и конфиденциальности электронной информации и реализовать их в виде программных или аппаратных средств, встраиваемых в автоматизированную систему. Однако следует отметить, что использование криптографии ни в коем случае не исключает применение организационно-технических мер защиты.
В общем случае создание защищенной автоматизированной системы – это в каждом конкретном случае процесс индивидуальный, поскольку не бывает абсолютно одинаковых систем, а бывают лишь типовые решения, реализующие те или иные функции по защите информации. В первую очередь при создании защищенной автоматизированной системы необходимо определить модель угроз и политику безопасности проектируемой системы. Впоследствии, исходя из этого, можно определить тот набор криптографических функций и организационно-технических мер, реализуемых в создаваемой системе.
Ниже приведен основной перечень функций защиты информации, реализуемый при помощи криптографических функций библиотек СКЗИ.
- Конфиденциальность информации. При передаче данных в сети обеспечивается использованием функций шифрования. При хранении данных (на дисках, в базе данных) может использоваться функция шифрования или (для обеспечения НСД к хранимой информации) функция шифрования на производном (например, от пароля) ключе.
- Идентификация и авторство. При сетевом взаимодействии (установлении сеанса связи) обеспечивается функциями ЭЦП при использовании их в процессе аутентификации (например, в соответствии с рекомендациями Х.509). Одновременно при аутентификации должна использоваться защита от переповторов. Для этих целей может быть использована функция имитозащиты с ограничениями, так как при вычислении имитовставки используется симметричный ключ шифрования, единый для двух субъектов (объектов) системы. При электронном документообороте обеспечивается использованием функций ЭЦП электронного документа. Дополнительно должна быть предусмотрена защита от навязывания, переповтора электронного документа.
- Целостность. Обеспечивается использованием функций ЭЦП электронного документа. При использовании функций шифрования (без использования ЭЦП) обеспечивается имитозащитой. Для обеспечения целостности хранимых данных может быть использована функция хеширования или имитозащиты, но при этом не обеспечивается авторство информации.
- Неотказуемость от передачи электронного документа. Обеспечивается использованием функций ЭЦП (подпись документа отправителем) и хранением документа с ЭЦП в течение установленного срока приемной стороной.
- Неотказуемость от приема электронного документа. Обеспечивается использованием функций ЭЦП и квитированием приема документа (подпись квитанции получателем), хранением документа и квитанции с ЭЦП в течении установленного срока отправляющей стороной.
- Защита от переповторов. Обеспечивается использованием криптографических функций ЭЦП, шифрования или имитозащиты с добавлением уникального идентификатора сетевой сессии (электронного документа) с последующей их проверкой приемной стороной или разработкой специализированного протокола аутентификации (обмена электронными документами).
- Защита от навязывания информации. Зашита от нарушителя с целью навязывания им приемной стороне собственной информации, переданной якобы от лица санкционированного пользователя (нарушение авторства информации). Обеспечивается использованием функций ЭЦП с проверкой атрибутов электронного документа и открытого ключа отправителя. В случае навязывания информации про компрометации ключа обеспечивается организационно-техническими мероприятиями. Например, созданием системы централизованного управления ключевой информацией (оповещением абонентов) или специализированных протоколов электронного документооборота.
- Защита от закладок, вирусов, модификации системного и прикладного ПО. Обеспечивается совместным использованием криптографических средств и организационных мероприятиях.
Использование CryptoAPI
Использование CryptoAPI в ОС Windows/Solaris/Linux/FreeBSD преследует две главные цели:
- Дать прикладному уровню доступ к криптографическим функциям для генерации ключей, формирования/проверки электронной цифровой подписи, шифрования/расшифрования данных. Эта цель была достигнута путем изолирования прикладного уровня от уровня реализаций криптографических функций. Приложениям и прикладным программистам не нужно детально изучать особенности реализации того или иного алгоритма или изменять код в зависимости от алгоритма.
- Изолирование прикладного уровня от криптографических функций позволяет одновременно использовать разные алгоритмы и различные реализации этих алгоритмов, включая аппаратные.
На рисунке ниже приведена общая архитектура криптографических функций.
Общая архитектура CryptoAPI состоит из пяти основных функциональных групп:
Базовые криптографические функции
- Функции инициализации (работы с контекстом). Эти функции предоставляют приложению возможность выбрать определенный криптопровайдер по типу имени или по требуемой функциональности.
- Функции генерации ключей. Эти функции предназначены для формирования и хранения криптографических ключей различных типов.
- Функции обмена ключами. Эти функции предназначены для того чтобы приложения могли обмениваться различными типами ключевой информации для обеспечения взаимодействия между собой.
Функции кодирования/декодирования
Данные функции предназначены для преобразование (кодирования) из внутреннего представления объектов, используемых в CryptoAPI, во внешнее представление и обратно. В качестве внешнего представления объектов используется формат ASN. 1 (Abstracy Syntax Notation One), определенный серией рекомендаций X. 680.
К этой же группе функций можно отнести набор функций, позволяющих расширить функциональность CryptoAPI, путем реализации и регистрации собственных типов объектов.
Функции работы со справочниками сертификатов
Эта группа функций предназначена для хранения и обработки сертификатов в различных типах справочников. Причем в качестве справочника могут использоваться самые различные типы хранилищ: от простого файла до LDAP.
Высокоуровневые функции обработки криптографических сообщений
Именно эта группа функций (Simplified Message Functions) в первую очередь предназначена для использования в прикладном ПО. С помощью этих функций можно:
- Зашифровать/расшифровать сообщение от одного пользователя к другому.
- Подписать данные.
- Проверить подпись данных.
Эти функции (так же как и функции низкого уровня) оперируют сертификатами открытых ключей X. 509 для адресации отправителя/получателя данных. В качестве формата данных, формируемых функциями, используется формат PKCS#7 (RFC2315) или CMS (RFC2630) в Windows.
Низкоуровневые функции обработки криптографических сообщений
Данная группа функция (Low Level Message Functions) предназначена для аналогичных целей, что и группа высокоуровневых функций, но обладает большей функциональностью. Вместе с тем большая функциональность потребует от прикладного программиста более детальных знаний в области прикладной криптографии.
Использование SSPI
Использование SSPI в ОС Windows/Solaris/Linux/FreeBSD преследует две главные цели:
- Дать прикладному уровню доступ к криптографическим функциям аутентификации сторон сетевых соединений, а так же обеспечение конфиденциальности и имитозащиты данных передаваемых по этим соединениям. Эта цель была достигнута путем изолирования прикладного уровня от уровня реализаций криптографических функций. Приложениям и прикладным программистам не нужно детально изучать особенности реализации того или иного алгоритма или изменять код в зависимости от алгоритма.
- Изолирование прикладного уровня от криптографических функций позволяет одновременно использовать разные алгоритмы и различные реализации этих алгоритмов, включая аппаратные.
Инструментарий разработчика CAPICOM
CAPICOM предоставляет COM-интерфейс, использующий основные функции CryptoAPI. Этот компонент является добавлением к уже существующему COM интерфейсу Certificate Enrollment Control (xenroll), который реализуют клиентские функции генерации ключей, запросов на сертификаты и обмена с центром сертификации.
С выпуском данного компонента стало возможным использование функций формирования и проверки электронной цифровой подписи, построения и проверки цепочек сертификатов, взаимодействия с различными справочниками сертификатов (включая Active Directory) с использованием Visual Basic, C++, JavaScript, VBScript и среды разработки Delphi.
Загрузить дистрибутив и примеры использования CAPICOM можно непосредственно с сайта Microsoft.
Подробную информацию о CAPICOM смотрите на сайте Microsoft в следующих разделах:
- CAPICOM Versions;
- Using CAPICOM;
- CAPICOM Reference.
Инструментарий разработчика КриптоПро CSP SDK
КриптоПро CSP может использоваться для встраивания в прикладное программное путем непосредственного вызова функций КриптоПро CSP после загрузки модуля с использованием функции LoadLibrary.
Для этих целей в комплект поставки включается Руководство программиста (csp_2_0. chm, tls_2_0. chm для версии 2. 0, CSP_3_0. chm, SSPI_3_0. chm, CAPILite_3_0. chm для версии 3. 0), описывающее состав функций и тестовое ПО (sample2_0. zip для версии 2. 0 и SDK для версии 3.
Руководство программиста и тестовое ПО для версии 3. 6 доступны на странице загрузки.
Онлайн-версия руководства программиста для версии 3. 6 также доступна на нашем сайте:
- КриптоПро CSP;
- КриптоПро SSPI;
- КриптоПро CAPILite.
Тестовое ПО разработано с использованием компиляторов Microsoft Visual C++ (версия 2. 0) и Microsoft Visual Studio. NET (для 3.
Для компиляции программ, входящих в тестовое ПО, дополнительно необходимы include файлы и библиотеки, входящие в Microsoft Windows Platform SDK.
В состав тестов входят примеры использования различных криптопровайдеров, входящих в состав Windows, для формирования/проверки электронной цифровой подписи, шифрования/расшифрования сообщений, создания и проверки сертификатов и другие примеры. Примеры используют функции CryptoAPI, подробное описание которых можно получить в MSDN, а также позволяют вызывать функции криптопровайдеров непосредственно на низком уровне.
Вы также можете получить уже скомпилированную тестовую программу csptest2_0. exe для версии 2. 0 или SDK для версий 3. 0 и выше.
Модели Рутокен с аппаратной криптографией, которые подойдут для генерации ключей для ЕГАИС
- Рутокен ЭЦП 2.0 2100, серт. ФСБ (USB/micro/Type-C)
- Рутокен ЭЦП 2.0 3000, серт. ФСБ (USB/micro/Type-C)
- Рутокен ЭЦП 2.0 Flash, серт. ФСБ
- Смарт-карта Рутокен ЭЦП 2.0 2100, серт. ФСБ
- Рутокен ЭЦП 2.0 (2000), серт ФСБ (USB/micro)
Неизвлекаемые ключи изначально генерируются внутри устройства, подписание происходит «на борту» с использованием аппаратной криптографии токена. Какая-либо возможность извлечения или копирования закрытого ключа отсутствует.
ВАЖНО! При генерации ключевой пары по алгоритму ГОСТ Р 34. 10 – 2012 следует выбирать короткий ключ 256 бит. С ключами длиной 512 бит УТМ не работает. При подключении к УТМ ключа с длиной закрытой части 512 бит в логах УТМ будет ошибка
Способ 1. С использованием «КриптоПро CSP» версии 5. 0 R2 и новее
Особенности установки «КриптоПро CSP»
Установка в Windows
- Если на компьютере с ОС Windows установлены Драйверы Рутокен, и производитсяпервичная установкаКриптоПро CSP 5.0 R2, то настройка системы будет выполнена автоматически.
- При обновлении программы с предыдущих версий КриптоПро CSP, необходимо:
1) Установить актуальную версию «Драйверов Рутокен».
2) Запустить «КриптоПро CSP» с правами Администратора.
3) Выбрать «Оборудование» — «Настроить считыватели» — «Считыватель смарт-карт PKCS#11».
Установка в Linux
- Если установка КриптоПро происходит скриптом install_gui.sh, то необходимо отметить пункт “Поддержка токенов и смарт-карт”.
- Если установка КриптоПро происходит скриптом install.sh, то после установки основных пакетов необходимо установить пакеты cprocsp-rdr-cryptoki и cprocsp-rdr-rutoken.
Особенности настройки «КриптоПро CSP»
В «КриптоПро CSP» версии 5. 0 R2 и выше в разделе «Оборудование» — «Настроить считыватели» должен быть добавлен пункт «Все считыватели смарт-карт PKCS#11».
Если такого пункта нет, запустите «КриптоПро CSP» с правами Администратора и в этом окне добавьте считыватели, нажав на кнопку «Добавить
Если такой вариант считывателя отсутствует, удалите «КриптоПро CSP» и, убедившись, что вы устанавливаете версию 5. 0 R2 или выше, еще раз ее установите.
1) Установите актуальную версию Драйверов Рутокен.
2) Подключите устройство из семейства Рутокен ЭЦП 2. 0 к компьютеру.
3) При генерации ключей нужно использовать версию «КриптоПро CSP» версии 5. 0 R2 или новее.
4) В окне выбора ключевого носителя выберите режим, который позволяет работать с внутренним криптоядром Рутокена через библиотеку PKCS#11. У вас может быть один из двух вариантов (зависит от версии КриптоПро CSP):
- Вариант 1. Выберите в списке носителей «Rutoken ECP (PKCS#11)».
- Вариант 2. Выберите в списке носителей «Rutoken ECP», а в выпадающем списке “Активный токен (pkcs11_rutoken_ecp_xxxxx).
5) После генерации ключей и записи сертификата на Рутокен, проверьте формат ключей одним из двух способов:
Способ 2. С использованием «Генератора запросов сертификатов для Рутокен ЭЦП 2. 0 и 3
«Генератор запросов сертификатов для Рутокен ЭЦП 2. 0 и 3. 0» входит в состав Драйверов Рутокен.
3) Запустите «Панель управления Рутокен».
4) Перейдите на вкладку «Сертификаты».
5) Нажмите кнопку «Ввести PIN-код» и введите PIN-код Администратора.
6) Нажмите на кнопку «Выписать сертификат», откроется приложение:
Далее используйте Инструкцию по работе с Генератором запросов.
Способ 3. С использованием программы «КриптоАРМ Стандарт Плюс»
Способ 3. С использованием программы «КриптоАРМ» 5 версии
Создание через командную строку
Специалист по программному обеспечению
Задать вопрос эксперту
Если у пользователя установлен дистрибутив КриптоПРО CSP, но при этом отсутствует надстройка КриптоАРМ, то открепленная электронная подпись может быть создана через консольную утилиту Cryptcp (она входит в состав КриптоПРО CSP всех актуальных редакций).
Таким же образом создается отсоединенная электронная подпись в формате pkcs 7 (может потребоваться для работы определенных сайтов, где предусмотрена возможность отправки подписанных запросов), с определенными параметрами шифрования или с защитой (для открытия понадобится ввести код). В плане функционала и возможностей консольная утилита ни в чем не уступает тому же КриптоАРМ.
Итого, проще всего создать файл отсоединенной электронной подписи с помощью надстройки КриптоАРМ для программы КриптоПРО CSP. Подпись при этом хранится в отдельном файле, в него входят все данные из открытого сертификата ЭЦП, а также набор мета-данных, ссылающихся на подписанный файл. При отсутствии КриптоАРМ (программа — платная) можно использовать консольную утилиту Cryptcp, поставляющуюся вместе с КриптоПРО CSP, но там процесс создания отсоединенной подписи несколько сложнее.
Как создать файл открепленной подписи
Для подачи некоторых запросов может потребоваться файл открепленной электронной подписи. Причем, он бывает нескольких вариантов, отличающихся кодировкой – следует учитывать данный нюанс. Самый простой вариант – это использование КриптоАРМ, программной платформы для работы с электронными подписями (входит в состав определенных редакций КриптоПРО CSP версии 3. 6 и старше).
Файл открепленной подписи создается следующим образом:
- на любом документе (который нужно подписать) необходимо кликнуть правой кнопкой мыши (вызвать контекстное меню);
- выбрать «КриптоАРМ»;
- в открывшемся окне следует нажать «Далее» несколько раз, дойдя по пункта выбора типа используемой подписи (также можно добавить сразу несколько файлов для подписи, если есть такая необходимость или же создать архив, в который будет помещена открепленная электронная подпись);
- отметить пункт «Сохранить подпись в отдельном файле»;
- выбрать сертификат ЭЦП (от чьего имени будет осуществлена подпись документа);
- нажать «Готово» (при необходимости – подтвердить свои действия вводом секретного пароля).
В итоге рядом с подписываемом файлом появится отсоединенная электронная подпись der или base64 (в зависимости от заданной настройки). Дважды кликнув на файле сертификата можно будет просмотреть базовую информацию о нем – кому и кем выдан, срок действия и так далее.
Если после нажатия «Готово» система выдает ошибку, то в большинстве случаев это указывает на отсутствие сертификата удостоверяющего центра или на отсутствие прав для работы с электронными подписями (то есть, введено ограничение для пользователей, вошедших под учетной записью «Гость»).