Как подписать документ электронной подписью? Виды подписей и программное обеспечение | NTK Protekt

Как подписать документ электронной подписью? Виды подписей и программное обеспечение | NTK Protekt Электронная цифровая подпись
Содержание
  1. Что потребуется для создания эцп в файле sig
  2. Электронная подпись в почтовой клиенте #
  3. «криптоарм»
  4. «криптопро csp»
  5. Возможные проблемы с созданием и открытием файла
  6. Встроенная эп
  7. Где используются подобные файлы
  8. Как открыть файл в формате sig
  9. Как подписывать документы с помощью файла
  10. Какие программы нужны
  11. Конфигурирование openssl
  12. Общие сведения о типах электронных подписей
  13. Открепленная (отсоединенная) электронная подпись
  14. Отсоединенная
  15. Плагин для office
  16. Подписи в формате sig
  17. Поиск подключенных устройств
  18. Полезные ссылки
  19. Получение информации об устройстве
  20. Работа с ключевыми парами гост р 34.10-2001
  21. Работа с сертификатами
  22. Расшифрование данных, полученных с сервера, на клиенте
  23. Сертификат выдается при регистрации в системе
  24. Сертификат уже имеется на токене, выдан внешним уц
  25. Смена pin-кода
  26. Совмещенная (присоединенная) эцп
  27. Строгая аутентификация на портале
  28. Такском криптолайн. #
  29. Через «госуслуги»
  30. Через «росреестр»
  31. Через блокнот
  32. Шифрование данных на клиенте для сервера

Что потребуется для создания эцп в файле sig

Для проставления подписи используются разные программы. Наиболее популярной считается «КриптоАРМ». Софт применяется не только для заверки, но и для шифрования. Пользователям предлагается демонстрационный период длительностью 2 недели.

Электронная подпись в почтовой клиенте #

Использование Электронной подписи возможно только в почтовом клиенте Microsoft Outlook. Настраиваемая почтовая учётная запись в MS Outlook должна совпадать с электронной почтой, указанной в сертификате ключа.

«криптоарм»

Программа предназначена для личного или коммерческого пользования. Лицензия стоит 55 тыс. руб. Помимо просмотра документа программа позволяет:

  • кодировать файлы;
  • проставлять ЦП;
  • расшифровывать документы;
  • заверять другие подписи;
  • проверять ЭЦП.

Для открытия файла с ЭП выполняют следующие действия:

  1. Запускают приложение. Переходят в раздел «Файл». Выбирают вариант «Просмотреть…».
  2. Нажимают «Продолжить». Используют клавишу «Добавить». Выбирают открываемый объект.
  3. Нажимают кнопку «Готово».

Основной документ открывается в том случае, если загруженный sig не является отсоединенной ЦП. Текст редактировать нельзя, можно только читать.

«криптопро csp»

Это платный сервис для просмотра и проверки sig-файлов. Устанавливать ПО простому пользователю нецелесообразно. Оно требуется только некоторым сотрудникам госструктур. Открыть подписанный файл с помощью «КриптоПро CSP» можно только после загрузки авторского сертификата на сервер приложения.

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

Для открытия ЭЦП выполняют следующие действия:

  1. Вызывают контекстное меню объекта правой кнопкой мыши. В списке выбирают вариант Crypto.
  2. Активируют функцию «Проверить». Просматривают информацию о подписи.

Возможные проблемы с созданием и открытием файла

Чаще всего сложности возникают из-за отсутствия специального ПО. Справиться с проблемой поможет установка софта. Иногда файл не открывается из-за повреждения его компонентов. Нужно попросить отправителя прислать документ повторно.

Встроенная эп

Подписание внутри документов Word, Excel, PDF с помощью дополнительного ПО КриптоПро Office Signature и КриптоПро PDF.Формат исходного документа не меняется, информацию о подписи можно просмотреть, открыв документ. Если в документ после подписания внести изменения, подпись будет определяться как недействительная.

Где используются подобные файлы

Наиболее часто они применяются «Росреестром». Кроме того, файлы sig используются при:

  • участии в интернет-аукционах;
  • сдаче отчетности в ЕГАИС;
  • работе с государственными порталами;
  • подаче заявлений в учебные заведения.

Как открыть файл в формате sig

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

Как подписывать документы с помощью файла

Инструкция будет рассмотрена на примере «КриптоАРМ». Подписанный файл через программу создают так:

  1. Нажимают правой клавишей мыши на название подписываемого объекта. В открывшемся списке находят вариант «КриптоАРМ».
  2. Выбирают пункт «Подписать». Запускается мастер постановки ЭЦП, после чего нажимают «Продолжить». Откроется перечень, в который добавляют новые объекты или удаляют ненужные.
  3. Выбирают конечное расширение и способ шифрования. Чаще всего менять предустановленные настройки не приходится.
  4. Указывают параметры подписи. На этом этапе выбирают тип ЦП: присоединенный или открепленный. Сохраняют внесенные изменения.
  5. Переходят к этапу подписания. Нажимают клавишу «Выбрать». Находят в списке собственный сертификат. Нажимают кнопку «Готово».

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

Какие программы нужны

Для скачивания «КриптоАРМ» нужно:

  1. Перейти на сайт разработчиков. Найти свежую версию софта.
  2. Нажать на клавишу скачивания. Дождаться загрузки инсталлятора.
  3. Выполнить установку по инструкциям, даваемым системой.
Читайте также:  Инструкция по работе с Рутокен/JaCarta

Для создания объектов формата sig используются и другие программы:

  1. «Контур.Крипто». Приложение предназначено для подписания и кодирования документов. Софт работает с любыми выданными удостоверяющими центрами сертификатами. Можно создать усовершенствованную ЦП с пометкой времени. После заверки открепленная подпись появляется рядом с исходным объектом. Готовые документы можно отправлять по электронной почте.
  2. «КриптоПро Office Signature». Плагин предназначен для создания присоединенной подписи. ЭЦП может отображаться после текста или в отдельной вкладке. Строку подписи можно перемещать или ставить в нескольких местах.
  3. Microsoft Outlook. Чтобы подписать документ электронной подписью, нужно авторизоваться в почте, используемой при регистрации сертификата.
  4. «КриптоПро PDF». Приложение предназначено для заверки документов соответствующего формата. Подпись может быть видимой или скрытой. Возможна настройка правок, при внесении которых ЦП не утратит своей силы, например, добавление комментариев.

Конфигурирование openssl

Openssl поддерживает российские криптоалгоритмы, начиная с версии 1.0. Для того, чтобы их использовать, в openssl требуется подгружать engine gost. В большинстве дистрибутивов openssl эта библиотека присутствует. Чтобы engine подгружалась, можно прописать ее в конфигурационном файле openssl:

[openssl_def]
engines = engine_section

[engine_section]
gost  = gost_section

[gost_section]
engine_id  = gost
default_algorithms = ALL

Если конфигурационный файл openssl не расположен в стандартном месте, то путь к нему можно задать через переменную окружения OPENSSL_CONF.

Другим вариантом подгрузки engine gost является ее передача в параметрах командной строки утилиты openssl.

Если engine gost не расположена в стандартном месте, то через переменную окружения OPENSSL_ENGINES можно задать путь к директории, в которой openssl будет ее искать.

Для получения информации о том, успешен ли был вызов утилиты openssl или нет, с возможностью уточнения ошибки, требуется парсить stdout и stderror. В конце статьи приведена ссылка на PHP-скрипт, который использует данную утилиту.

Теперь перейдем к реализации законченных пользовательских сценариев.

Общие сведения о типах электронных подписей

Условно выделяются три вариации электронных подписей (в плане того, как они закрепляются за подписываемым файлом):

  1. Присоединенная. Сертификат подписи при этом включен в сам подписанный файл и находится в отдельном, защищенном контейнере. При редактировании того самого файла сертификат удаляется.
  2. Отсоединенная. Сертификат подписи располагается в отдельном файле с расширением .sig. Однако в нем содержатся мета-данные, ссылающиеся на подписанный файл.
  3. Интегрированная. Сертификат является нераздельной частью подписанного файла, отредактировать такой документ не получится. Подобная схема часто используется в текстовых документах, создаваемых при помощи офисного пакета Microsoft Office или Adobe Acrobat. Открыть подписанный файл получится только через эти приложения при наличии установленного в системе сертификата удостоверяющего центра.

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

С юридической точки зрения никакой разницы между открепленной и присоединенной подписью нет. Отличаются они только удобством использования. Например, файл, подписанный отсоединенной подписью, доступен для просмотра даже без средств криптошифрования (установленная КриптоПРО CSP не понадобится).

Открепленная (отсоединенная) электронная подпись

  • Цифровая подпись создается и сохраняется в виде отдельного файла от подписываемого файла.
  • Чтобы поверить подпись необходимо выслать два файла — сам документ и сохраненный файл подписи.
  • Отсутствует ограничение по типу и формату подписываемого документа.
  • Файл цифровой подписи сохраняется как правило с расширением sig,.sgn,.p7s.
  • Можно создавать открепленную подпись файл которой будет содержать отметку времени.
  • Есть возможность подписать документ подписями нескольких различных лиц.
  • Проверка созданной открепленной подписи выполняется с помощью специализированных программ, предназначенных для проверки электронных документов с отсоединенной подписью.

Отсоединенная

Открепленная ЦП отличается тем, что при ее проставлении сохраняются прежние размер и тип исходного документа. Появляется отдельный объект с расширением sig. Он и становится самой ЦП. В качестве примера можно взять объект типа Word.docx. После обработки рядом с ним в папке появляется Word.docx.sig. Получатель может открыть и прочитать документ без использования специального софта.

Читайте также:  Что такое JAR-файлы

Например, при создании стандартного текстового файла его открывают с помощью Word. Однако если в исходный текст вносятся изменения, то ЦП утрачивает силу.

Отсоединенная подпись считается удобным для контрагента вариантом.

Плагин для office

Надстройка «КриптоПро Office Signature» устанавливается платно. Для ознакомления с функциями предусмотрен тестовый период. После скачивания и настройки плагина офисные программы приобретают дополнительные возможности по созданию и открытию sig-файлов. Через эти же приложения можно распечатывать документы.

Подписи в формате sig

Этот тип ЭЦП проставляется в 2 вариантах: присоединенном и отсоединенном.

Поиск подключенных устройств

Любой клиентский сценарий начинается с поиска подключенных к компьютеру USB-устройств Рутокен. В контексте данной статьи акцент делается на устройство Рутокен ЭЦП.

var devices = Array();

try 
{
    devices = plugin.enumerateDevices();
}
catch (error) 
{
    console.log(error);
}

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

Рутокен Плагин определяет все подключенные к компьютеру USВ-устройства Рутокен ЭЦП, Рутокен PINPad, Рутокен WEB. Поэтому следующим шагом следует определить тип устройства.

Полезные ссылки

Данные ссылки могут быть полезны разработчикам инфосистем с поддержкой ЭЦП на базе Рутокен Плагин и openssl:

Демосистема Рутокен ПлагинWEB-сервис генерации ключей, формирования запросов, управления сертификатами, формирования шаблонов запросов на сертификаты Документация на Рутокен ПлагинДокументация по использованию утилиты openssl с российскими крипталгоритмамиПример скрипта на PHP, использующего утилиту openssl

Получение информации об устройстве

Для определения типа устройства следует использовать функцию

с параметром TOKEN_INFO_DEVICE_TYPE. Значение этой константы содержится в объекте плагина.

var type;

try
{  
  type = plugin.getDeviceInfo(deviceId, plugin.TOKEN_INFO_DEVICE_TYPE);
}
catch (error) 
{
    console.log(error);
}

switch (type) 
{
    case plugin.TOKEN_TYPE_UNKNOWN:
        message = "Неизвестное устройство";
        break;
    case plugin.TOKEN_TYPE_RUTOKEN_ECP:
        message = "Рутокен ЭЦП";
        break;
    case plugin.TOKEN_TYPE_RUTOKEN_WEB:
        message = "Рутокен Web";
        break;
    case plugin.TOKEN_TYPE_RUTOKEN_PINPAD_2:
        message = "Рутокен PINPad";
        break;
}

Также с помощью функции getDeviceInfo можно получить:

Работа с ключевыми парами гост р 34.10-2001

1. Для получения декрипторов ключевых пар, хранящихся на устройстве, требуется ввод PIN-кода. Следует понимать, что само значение закрытого ключ получено быть не может, так как ключ является неизвлекаемым.

var keys = Array();

try
{   
    plugin.login(deviceId, "12345678");
    keys = plugin.enumerateKeys(deviceId, null);
}
catch (error) 
{
    console.log(error);
}

2. Для генерации ключевой пары требуется ввод PIN-кода. При генерации ключа параметры могут быть выбраны из набора:

Пример генерации ключевой пары ГОСТ Р 34.10-2001:

var options = {};
var keyId;

try 
{
    keyId = plugin.generateKeyPair(deviceId, "A",  null, options);
}
catch (error) 
{
    console.log(error);
}

3. С помощью функции deleteKeyPair ключевая пара может быть удалена с токена.

Работа с сертификатами

1. На токене могут храниться 3 категории сертификатов:

Расшифрование данных, полученных с сервера, на клиенте

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

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

Шифрование данных на сервере для клиента:

Сертификат выдается при регистрации в системе

Последовательность вызовов в клиентском скрипте будет следующей:

Далее запрос отправляется на сервер, где на его основе выдается сертификат.Для этого на сервере должен быть установлен и правильно сконфигурирован openssl версии от 1.0 и развернут функционал УЦ.

1. Генерация улюча УЦ:

openssl genpkey -engine gost -algorithm GOST2001 -pkeyopt paramset:A -out ca.key


После этого в файле ca.key будет создан закрытый ключ

2. Создание самоподписанного сертификата УЦ:

openssl req -engine gost -x509 -new -key ca.key -out ca.crt

После ввода необходимой информации об издателе в файле ca.crt будет создан сертификат УЦ.

Сертификат уже имеется на токене, выдан внешним уц


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

Последовательность вызовов на клиенте:
Как подписать документ электронной подписью? Виды подписей и программное обеспечение | NTK Protekt

Подпись получается в base64-формате. При проверке ее на сервере с помощью openssl подпись следует обрамить заголовками, чтобы сделать из нее PEM. Выглядеть подобная подпись будет примерно так:

-----BEGIN CMS-----
MIIDUQYJKoZIhvcNAQcCoIIDQjCCAz4CAQExDDAKBgYqhQMCAgkFADCBygYJKoZI
hvcNAQcBoIG8BIG5PCFQSU5QQURGSUxFIFVURjg PFY 0JLRi9C/0L7Qu9C90LjR
gtGMINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40Y4/PCE c2VydmVyLXJhbmRv
bS1kYXRhZTI6ZGE6MmM6MDU6MGI6MzY6MjU6MzQ6YzM6NDk6Nzk6Mzk6YmI6MmY6
YzU6Mzc6ZGI6MzA6MTQ6NDQ6ODM6NjY6Njk6NmI6OWY6YTU6MDk6MzQ6YmY6YzQ6
NzY6YzmgggGeMIIBmjCCAUegAwIBAgIBATAKBgYqhQMCAgMFADBUMQswCQYDVQQG
EwJSVTEPMA0GA1UEBxMGTW9zY293MSIwIAYDVQQKFBlPT08gIkdhcmFudC1QYXJr
LVRlbGVjb20iMRAwDgYDVQQDEwdUZXN0IENBMB4XDTE0MTIyMjE2NTEyNVoXDTE1
MTIyMjE2NTEyNVowEDEOMAwGA1UEAxMFZmZmZmYwYzAcBgYqhQMCAhMwEgYHKoUD
AgIjAQYHKoUDAgIeAQNDAARADKA/O1Zw50PzMpcNkWnW39mAJcTehAhkQ2Vg7bHk
IwIdf7zPe2PxHyAr6lH stqdACK6sFYmkZ58cBjzL0WBwaNEMEIwJQYDVR0lBB4w
HAYIKwYBBQUHAwIGCCsGAQUFBwMEBgYpAQEBAQIwCwYDVR0PBAQDAgKkMAwGA1Ud
EwEB/wQCMAAwCgYGKoUDAgIDBQADQQD5TY55KbwADGKJRK bwCGZw24sdIyayIX5
dn9hrKkNrZsWdetWY3KJFylSulykS/dfJ871IT 8dXPU5A7WqG4 MYG7MIG4AgEB
MFkwVDELMAkGA1UEBhMCUlUxDzANBgNVBAcTBk1vc2NvdzEiMCAGA1UEChQZT09P
ICJHYXJhbnQtUGFyay1UZWxlY29tIjEQMA4GA1UEAxMHVGVzdCBDQQIBATAKBgYq
hQMCAgkFADAKBgYqhQMCAhMFAARAco5PumEfUYVcLMb1cnzETNOuWC8Goda8pdUL
W5ASK tztCwM7wpXgAy Y6/sLtClO9sh8dKnAaEY2Yavg3altQ==
-----END CMS-----

Проверка подписи на сервере:

Читайте также:  УКЭП для частных лиц. Мой личный опыт. | Банки.ру

Смена pin-кода


Пример смены PIN-кода на устройстве:

var options = {};

try
{   
    plugin.changePin(deviceId, "12345678", "12345671", options);
}
catch (error) 
{
    console.log(error);
}

Здесь первым параметром выступает старый PIN-код, а вторым новый PIN-код.

Совмещенная (присоединенная) эцп

Данный вид электронной подписи, при подписание которой формируется файл, в котором содержится как сама электронная подпись, так и оригинальный документ.Такую цифровую подпись можно создать как через КриптоАРМ, так и КриптоЛайн. В папке где хранится исходный документ, будет сохранен файл с таким же названием.

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

Строгая аутентификация на портале

Общая схема аутентификации, используемая в Рутокен Плагин, выглядит следующим образом:

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

Такском криптолайн. #

Бесплатная программа «КриптоЛайн» предоставляет достаточно широкий функционал. Она даёт возможность подписывать, а так же проверять или удалять подписи у файлов для ЭДО с ФСФР, ФСРАР, Росприроднадзором. Вы можете использовать программу и в других видах электронного документооборота.

Через «госуслуги»

Инструменты этого портала предназначены для оценки подлинности документа, заверенного ЦП. Сервис работает с любыми расширениями. Однако просмотреть подпись или текстовую часть не получится. Для проверки нужно переместить объект в специальное поле. Если ЭЦП неквалифицированная, появится сообщение об ошибке.

Через «росреестр»

На государственном портале предусмотрен раздел проверки конторского документооборота. Через него можно просматривать файлы с отсоединенной ЭЦП. Саму подпись инструмент не открывает, а только проверяет. Пользователь будет знать, кто является автором подписи. С сервисом проверки работают так:

  1. Нажимают на кнопку выбора, расположенную возле пункта «Электронный документ». Загружают нужный документ через проводник.
  2. Вводят капчу (символы с картинки). Нажимают клавишу «Проверить».

После обработки запроса появится значок документа со ссылкой «Показать в читаемом виде». После перехода по ней открывается новое окно. Файл можно конвертировать в формат docx и распечатать.

Сервис не позволяет открыть объект полноценно. Просматривается только текстовая часть.

Через блокнот

Это самое простое, но наиболее действенное средство открытия sig-файлов. С блокнотом работают так:

  1. Находят программу через пусковое меню. В поисковую строку вводят название, нажимают клавишу Enter.
  2. Запускают приложение. Выбирают раздел «Файл», пункт «Открыть». В строке имени выбирают все форматы.

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

Шифрование данных на клиенте для сервера

Для того, чтобы обеспечить конфиденциальность обмена данными между клиентом и сервером в плагине предусмотрено шифрование/расшифрование данных. Данные шифруются в формате CMS. Для того, чтобы зашифровать данные в формате CMS, требуется сертификат открытого ключа «адресата».

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

Для этого следует использовать функцию importCertificate, при этом в качестве параметра category следует передать CERT_CATEGORY_OTHER. Для использования в функции cmsEncrypt нужно получить тело сертификата по его дескриптору с помощью функции getCertificate.

При этом дескриптор является уникальным и неизменным и может быть сохранен в учетной записи пользователя на сервере при импорте сертификата сервера. Для того, чтобы использовалось аппаратное шифрование по ГОСТ 28147-89, требуется установить опцию useHardwareEncryption в true. В противном случае будет использована быстрая программная реализация ГОСТ 28147-89.

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

Шифрование данных на клиенте:

try
{
    var recipientCert = plugin.getCertificate(deviceId, certRecId);        
}
catch (error) 
{
    console.log(error);
}

var options = {};
options.useHardwareEncryption = true;
var cms;

try
{
    cms = plugin.cmsEncrypt(deviceId, certSenderId, recipientCert, data, options);
}
catch (error) 
{
    console.log(error);
}

Расшифрование данных на сервере, перед расшифрованием сообщение нужно обрамить PEM-заголовками “—–BEGIN PKCS7—–” и “—–END PKCS7—–“:

openssl smime -engine gost -decrypt -in message.cms -inform PEM -recip recipient.crt -inkey recipient.key

recipient.crt — сертификат того, для кого зашифровано сообщение, recipient.key — ключ того, для кого зашифровано сообщение.

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