detached подпись что это такое
Электронная подпись: отсоединенная, присоединенная и внутри документа
Электронная подпись может быть по-разному связана с подписанным документом. В статье рассмотрим три варианта, их отличия и особенности использования.
Присоединенная электронная подпись
При создании присоединенной подписи создается новый файл, в который помещается подписываемый документ и подпись к нему. Этот процесс можно сравнить с запечатанным конвертом с документом внутри. с подписанными данными. Этот файл можно копировать, пересылать по почте и т.п.
Нужно учесть, что без специальных криптографических программ невозможно прочитать содержимое подписанного файла. Точно так же, как нельзя извлечь содержимое конверта, не вскрыв его.
Если вы получаете такой документ вне информационных систем, в которых уже есть механизмы проверки, нужно использовать программу, которая умеет проверять подпись и «извлекать» подписанный файл, чтобы его можно было прочитать. В программу нужно будет загрузить единый файл, который содержит и документ, и подпись.
Отсоединенная электронная подпись
При этом сам подписываемый файл достается доступным для чтения без криптографических программ. Они нужны, только чтобы проверить действительность подписи. Чтобы проверить подпись, нужно загрузить в программу и подписанный файл, и файл с электронной подписью.
Электронная подпись внутри данных
Электронную подпись внутри документа можно создать только в определенном приложении, например Microsoft Word или Acrobat Reader. В этом случае подпись генерируется как метаданные и только по желанию владельца можно создать на документе поле с подписью.
Очень сложно проверить подлинность подписи вне приложения, в котором она была создана.
Если вам необходимо самостоятельно создать электронную подпись, уточните требования системы, которой вы подписываете документ. Например, чтобы отправить документы в Росреестр или Арбитраж, требует подписывать документы отсоединенной подписью в формате.sig.
Встраивание электронной подписи в системы с WEB-интерфейсом с помощью браузерного плагина и openssl
Несколько лет назад нашей компанией был выпущен продукт Рутокен Плагин, который предназначен для встраивания электронной подписи в системы с web-интерфейсом. Основываясь на полученном опыте интеграции продукта в реальные проекты мне хочется отметить, что нередко разработчики для реализации серверной части предпочитают использовать поддерживающий российские криптоалгоритмы openssl.
В данной статье будет расписана типичная схема подобной интеграции, основанная на следующих сценариях использования плагина:
Данные сценарии предполагают клиент-серверное взаимодействие, написание клиентских скриптов на JavaScript и соответствующих им серверных вызовов openssl.
Подробности под катом.
Общие операции
Операции с устройством
Поиск подключенных устройств
Любой клиентский сценарий начинается с поиска подключенных к компьютеру USB-устройств Рутокен. В контексте данной статьи акцент делается на устройство Рутокен ЭЦП.
При этом возвращается список идентификаторов подключенных устройств. Идентификатор представляет собой число, связанное с номером слота, к которому подключено устройство. При повторном перечислении это число может отличаться для одного и того же устройства.
Рутокен Плагин определяет все подключенные к компьютеру USВ-устройства Рутокен ЭЦП, Рутокен PINPad, Рутокен WEB. Поэтому следующим шагом следует определить тип устройства.
Получение информации об устройстве
Для определения типа устройства следует использовать функцию getDeviceInfo с параметром TOKEN_INFO_DEVICE_TYPE. Значение этой константы содержится в объекте плагина.
Смена PIN-кода
Пример смены PIN-кода на устройстве:
Здесь первым параметром выступает старый PIN-код, а вторым новый PIN-код.
Работа с сертификатами
1. На токене могут храниться 3 категории сертификатов:
2. Для чтения сертификатов, хранящихся на устройстве, не требуется авторизация на устройство.
Пример чтения пользовательских сертификатов с устройства:
3. Сертификат можно экспортировать в PEM-формате:
Получится примерно такая строка:
4. Сертификат можно распарсить вызовом функции parseCertificate и получить из него DN Subject, DN Issuer, расширения, значение открытого ключа, подпись, серийный номер, срок действия и т.п.
5. Сертификат можно записать на устройство.
Пример записи сертификата на устройство как пользовательского:
6. Вызовом функции deleteCertificate можно удалить сертификат с токена.
Работа с ключевыми парами ГОСТ Р 34.10-2001
1. Для получения декрипторов ключевых пар, хранящихся на устройстве, требуется ввод PIN-кода. Следует понимать, что само значение закрытого ключ получено быть не может, так как ключ является неизвлекаемым.
Пример генерации ключевой пары ГОСТ Р 34.10-2001:
3. С помощью функции deleteKeyPair ключевая пара может быть удалена с токена.
Конфигурирование openssl
Openssl поддерживает российские криптоалгоритмы, начиная с версии 1.0. Для того, чтобы их использовать, в openssl требуется подгружать engine gost. В большинстве дистрибутивов openssl эта библиотека присутствует. Чтобы engine подгружалась, можно прописать ее в конфигурационном файле openssl:
Если конфигурационный файл openssl не расположен в стандартном месте, то путь к нему можно задать через переменную окружения OPENSSL_CONF.
Другим вариантом подгрузки engine gost является ее передача в параметрах командной строки утилиты openssl.
Если engine gost не расположена в стандартном месте, то через переменную окружения OPENSSL_ENGINES можно задать путь к директории, в которой openssl будет ее искать.
Для получения информации о том, успешен ли был вызов утилиты openssl или нет, с возможностью уточнения ошибки, требуется парсить stdout и stderror. В конце статьи приведена ссылка на PHP-скрипт, который использует данную утилиту.
Теперь перейдем к реализации законченных пользовательских сценариев.
Регистрация на портале
Сертификат выдается при регистрации в системе
Последовательность вызовов в клиентском скрипте будет следующей:
Далее запрос отправляется на сервер, где на его основе выдается сертификат.
Для этого на сервере должен быть установлен и правильно сконфигурирован openssl версии от 1.0 и развернут функционал УЦ.
1. Генерация улюча УЦ:
После этого в файле ca.key будет создан закрытый ключ
2. Создание самоподписанного сертификата УЦ:
После ввода необходимой информации об издателе в файле ca.crt будет создан сертификат УЦ.
Полученный от клиента запрос сохраняем в файл user.csr и выдаем на его основе сертификат (без модификации данных из запроса):
После этого в файле user.crt создается сертификат пользователя в PEM формате. Его следует отправить на клиент.
Дальнейшая последовательность вызовов на клиенте:
Сертификат уже имеется на токене, выдан внешним УЦ
Ключевая пара при этом должна быть создана в формате, совместимом с библиотекой rtPKCS11ECP для Рутокен ЭЦП.
Последовательность вызовов на клиенте:
Подпись получается в base64-формате. При проверке ее на сервере с помощью openssl подпись следует обрамить заголовками, чтобы сделать из нее PEM. Выглядеть подобная подпись будет примерно так:
Проверка подписи на сервере:
Здесь sign.cms — файл, в котором находится подпись, ca.crt — файл с корневыми сертификатами, до одного из которых должна выстроиться цепочка, data.file — файл, в который будет сохранены подписанные данные, user.crt — файл, в который будет сохранен пользовательский сертификат. Именно из data.file нужно извлечь данные отсоединить последние 32 символа и сравнить salt.
Если на сервере нужно получить информацию из сертификата, то парсить его можно так:
Показать содержимое сертификата в текстовом представлении:
Показать серийный номер сертификата:
Показать DN субъекта (subject):
Показать DN издателя:
Показать почтовый адрес субъекта:
Показать время начала действия сертификата:
Показать время окончания действия сертификата:
Строгая аутентификация на портале
Электронная подпись данных и/или файлов в формате CMS
Проверка подписи на сервере описана выше.
Шифрование/расшифрование данных и/или файлов в формате CMS
Шифрование данных на клиенте для сервера
Для того, чтобы обеспечить конфиденциальность обмена данными между клиентом и сервером в плагине предусмотрено шифрование/расшифрование данных. Данные шифруются в формате CMS. Для того, чтобы зашифровать данные в формате CMS, требуется сертификат открытого ключа «адресата». При этом расшифровать такое сообщение сможет только владелец закрытого ключа. При шифровании данных для сервера рекомендуется хранить сертификат сервера на Рутокен ЭЦП. Этот сертификат может быть записан на устройство при регистрации пользователя на портале. Для этого следует использовать функцию importCertificate, при этом в качестве параметра category следует передать CERT_CATEGORY_OTHER. Для использования в функции cmsEncrypt нужно получить тело сертификата по его дескриптору с помощью функции getCertificate. При этом дескриптор является уникальным и неизменным и может быть сохранен в учетной записи пользователя на сервере при импорте сертификата сервера. Для того, чтобы использовалось аппаратное шифрование по ГОСТ 28147-89, требуется установить опцию useHardwareEncryption в true. В противном случае будет использована быстрая программная реализация ГОСТ 28147-89.
Последовательность вызовов приведена на картинке:
Шифрование данных на клиенте:
Расшифрование данных на сервере, перед расшифрованием сообщение нужно обрамить PEM-заголовками «——BEGIN PKCS7——» и «——END PKCS7——«:
recipient.crt — сертификат того, для кого зашифровано сообщение, recipient.key — ключ того, для кого зашифровано сообщение.
Расшифрование данных, полученных с сервера, на клиенте
Для расшифрования данных, полученных с сервера, предназначена функция cmsDecrypt. Так как сервер шифрует для клиента, используя его сертификат, то в качестве keyId должен быть передан дескриптор закрытого ключа клиента, соответствующий открытому ключу в сертификате. Этот дескриптор является уникальным и неизменным и потому может быть сохранен в учетной записи пользователя на сервере. Кроме того, дескриптор ключа пользователя может быть получен явным образом, путем вызова функции getKeyByCertificate.
Шифрование данных на сервере для клиента:
Расшифрование данных на клиенте:
Полезные ссылки
Данные ссылки могут быть полезны разработчикам инфосистем с поддержкой ЭЦП на базе Рутокен Плагин и openssl:
Форматы электронной подписи
Статья посвящена обзору стандартов СMS (Cryptographic Message Syntax) для подписанных сообщений.
Для чего нужен CMS
Чтобы не путаться в терминологии, далее исходные данные, которые мы хотим передать защищенным способом, будут называться данными, а получившееся защищенное сообщение CMS – просто сообщением.
Стандарт CMS (PKCS #7 и RFC 5652): теория
Чуть истории
Подпись в CMS-формате (signed data type)
Подписанное Алисой сообщение в формате CMS будет иметь следующий вид (серым отмечены необязательные атрибуты):
CMS предлагает два интересных атрибута, расширяющих возможности обычной подписи: время подписи (Signing Time) и контрасигнатуру (Countersignature). Первый атрибут определяет предполагаемое время осуществления подписи, а второй предназначен для подписи другой подписи (подписывается хеш от значения подписи). Атрибут Countersignature представляет собой структуру Signer Info с отсутствующим в Signed Attributes атрибутом Content Type и обязательно присутствующим атрибутом Message Digest. Атрибут Countersignature может иметь свой собственный атрибут Countersignature.
Если Боб решит подписать только данные, переданные Алисой, и заодно подписать подпись Алисы, то сообщение будет иметь такой вид:
Галопом по Европам оставшимся типам
СMS предлагает еще несколько интересных типов сообщений, не охватываемых темой этой статьи. Поэтому буквально по паре слов об оставшихся типах для общей картины.
Упакованные данные (enveloped data) представляют собой зашифрованные данные вместе с зашифрованными для одного или более получателей ключами, которыми эти данные были зашифрованы. Комбинация зашифрованного сообщения с одним зашифрованным ключом шифрования для одного получателя называется цифровым конвертом. Данный тип используется в качестве конверта с (подписанными) данными для одного или нескольких получателей.
Хешированные данные (данные вместе со своим хешем) используются для проверки целостности сообщения и часто являются содержимым упакованных данных.
Зашифрованные данные часто используются для шифрования данных для локального хранилища, иногда с выработанным из пароля ключом шифрования.
Данные из аутентифицированного источника (данные с проверкой подлинности) включают в себя данные вместе с их MAC-кодом и зашифрованными ключами аутентификации для одного или нескольких получателей. Используются для защиты целостности сообщений для неограниченного количества получателей.
В следующей статье мы подробно остановимся на сообщениях типа enveloped data с использованием российских криптоалгоритмов.
CMS в реальной жизни
Как реализовать на практике?
Наша компания поддержала CMS c российской криптографией в продукте Рутокен Плагин. Рутокен Плагин предназначен для использования в браузерах, все криптографические операции производятся аппаратно, «на борту» USB-токена.
Detached подпись что это такое
Это комбинация цифровых данных, с помощью которых можно идентифицировать личность. Простой пример — логин и пароль, которые вводим на сайтах для авторизации, или смс-код, который присылают на телефон для входа в личный кабинет. Это электронная подпись для повседневной жизни.
Как получить
Простую электронную подпись (ПЭП) можно создать с помощью программного обеспечения, например:
Для оформления простого электронного сертификата (подписи) нужно создать документ, открыть меню «Файл», выбрать пункт «Защита документа», а потом выбрать «Добавить цифровую подпись». Если подпись создаётся впервые, программа выдаст запрос на получение программного обеспечения от партнеров. В этом случае поможет русскоязычная версия приложения «Карма», которое установит подпись в операционную систему.
После завершения всех действий нужно сохранить файл.
Приложение КриптоПро CSP
Этот метод сложнее, зато с помощью этого ПО можно создать усиленные ключи.
Ещё один способ — получить заверенную простую электронную подпись в удостоверяющем центре, где сертификат запишут на USB-токен. Этот вариант подойдёт тем, кто создаёт документы в текстовых программах: с помощью сертификата получится защитить документ от плагиата и подтвердить авторство.
Где можно применять
Недостатки
Простая электронная подпись не имеет юридической силы. Её нельзя использовать для подачи документов в государственные инстанции, а также для участия в торгах по 44-ФЗ и 223-ФЗ.
Чтобы при помощи ПЭП можно было подписывать обычные документы (например, договоры с контрагентами), нужно составить соглашение о простой электронной подписи. Такое соглашение должно содержать пункты об обязанности соблюдать конфиденциальность сведений и правила определения подписавшего лица — подлинности подписи. И подписывать его придётся всем сторонам, участвующим в электронном взаимодействии. Иначе все документы, подписанные ПЭП, закон признает недействительными.
Неквалифицированная электронная подпись
Неквалифицированная электронная подпись (НЭП) — чаще всего это ключ, хранящийся на USB-носителе. Иногда НЭП может создать программа, в которой работаете (только она и опознает эту подпись). Функционал такой подписи тоже частично ограничен, но, по сравнению с ПЭП, она обладает рядом преимуществ.
Как получить
Юридические лица и ИП могут оформить неквалифицированную подпись в удостоверяющих центрах или даже сделать её самостоятельно при помощи опытного программиста.
Где можно применять
Для аккредитации и участия в торгах на электронных площадках с помощью неквалифицированной подписи поставщик может создавать заявки и осуществлять сделки при наличии дополнительного соглашения между сторонами. Однако НЭП позволяет совершать не все типы операций.
Недостатки
НЭП подходит скорее физлицам. Юридическим лицам и ИП неквалифицированная электронная подпись подойдёт только при внушительном объёме внутреннего или внешнего документооборота, в других ситуациях её функционала может быть недостаточно.
Квалифицированная электронная подпись
Наиболее совершенный вид электронной подписи — усиленная квалифицированная подпись (КЭП). Это ключ, сформированный с помощью сертифицированных криптографических средств, который записывается на USB-носитель.
Ключ электронной подписи указан в сертификате, который выдаёт удостоверяющий центр, аккредитованный в Минкомсвязи.
КЭП состоит из двух частей:
КЭП способна обеспечить надёжную защиту информации от посторонних лиц, а степень конфиденциальности данных владелец устанавливает сам. Данные будут защищены даже когда срок действия ключа истечёт.
Как получить
Для подачи заявления в аккредитованный удостоверяющий центр придётся собрать пакет уставных документов организации и документов, удостоверяющих личность владельца.
Для работы с квалифицированной подписью потребуются:
Где можно применять
Если коротко — везде.
Недостатки
У КЭП существует один недостаток: нужно ежегодно оплачивать сертификат электронной подписи.
Электронная подпись (ЭЦП): для чего нужна и как ее получить физическим и юридическим лицам
Электронные документы постепенно вытесняют бумажные, и без электронной подписи, позволяющей подтвердить подлинность документа, в современном мире не обойтись. Электронная подпись стала обязательным инструментом для ведения бизнеса. Для физических лиц — это удобный способ взаимодействия с госорганами, работодателями и вузами.
В этой статье мы поговорим о видах цифровых подписей, способах их получения и областях применения.
Что такое электронная подпись
Электронная подпись (ЭП), иногда называемая также электронно-цифровой подписью (ЭЦП), представляет собой информацию в электронной форме, присоединяемую к подписываемому с ее помощью электронному документу. Она позволяет идентифицировать лицо, подписавшее электронный документ, подтвердить авторство этого документа и придать подписанному файлу юридическую силу.
ЭЦП различаются степенью защиты и могут использоваться физическими или юридическими лицами для разных целей:
Виды ЭЦП
Существует два вида электронной подписи: простая ЭЦП и усиленная, которая может быть как квалифицированной, так и неквалифицированной.
Простая ЭЦП
К простой электронной подписи (ПЭП) можно отнести сочетание логина и пароля, которые пользователь вводит при входе в личный кабинет различных онлайн-сервисов, коды доступа, получаемые по SMS, а также коды на скретч-картах. ПЭП создается самой информационной системой, в которой используется такая электронная подпись, и подтверждает, что ее создал определенный человек.
Простую ЭП часто применяют при совершении банковских операций, для идентификации пользователя в разнообразных информационных системах, при получении услуг на портале «Госуслуги», также ПЭП можно заверить документы, но только внутри корпоративного электронного документооборота (ЭДО). Для придания подписанному ПЭП документу юридической значимости между подписантами должны быть заключены соответствующие соглашения, регламентирующие правила применения и признания ЭП.
Простая электронная подпись не может быть использована для подписания электронных документов, содержащих государственную тайну. Недостатком простой ЭП является низкая степень защиты. Она позволит определить автора документа, но не защитит файл от подделки.
Усиленная неквалифицированная ЭЦП
Усиленная неквалифицированная электронная подпись (НЭП) позволяет не только идентифицировать личность владельца документа, но и определить, были ли внесены в данный файл какие-либо изменения после того, как он был подписан. Такая ЭЦП создается при помощи специальных программ криптошифрования с применением закрытого ключа ЭП. Степень защиты такой подписи считается средней.
НЭП представляет собой два уникальных набора символов, идущих в определенной последовательности и связанных между собой. Одна из этих последовательностей является электронным ключом, а другая используется в качестве ключа проверки ЭЦП. Чтобы сформировать такую связку, применяют специальное программное обеспечение — СКЗИ (аббревиатура расшифровывается как «средства криптографической защиты информации»).
Сама по себе усиленная неквалифицированная электронная подпись не является полным аналогом собственноручной подписи, однако при подписании соглашения с конкретной организацией о признании ее таковой, может придавать документу юридическую значимость, но только в ЭДО с этой компанией и для внутреннего и внешнего электронного документооборота.
Усиленная квалифицированная ЭЦП
Усиленная квалифицированная электронная подпись (КЭП) обладает самой высокой степенью защиты, и любой подписанный такой подписью электронный документ считается аналогом бумажного документа, который подписан собственноручно. Этот вид ЭП позволяет точно сказать, кто именно подписал документ и не изменялся ли после этого данный файл.
Этот вид ЭЦП не требует подписания дополнительных соглашений — усиленная квалифицированная электронная подпись придает документам юридическую силу автоматически. КЭП позволяет организовать сдачу отчетности в любые контролирующие органы власти, принимать участие в электронных торгах, вести ЭДО как внутри организации, так и с ее внешними контрагентами и госструктурами.
Как получить электронную подпись
Рассмотрим, какие шаги необходимо предпринять для получения электронной подписи физическим и юридическим лицам.
Получение ЭП физическим лицом
Физлицам проще всего обратиться для получения электронной подписи в МФЦ. Все, что для этого нужно, — это записаться на прием и предоставить ряд документов:
Простую ЭП частные лица могут получить бесплатно, тогда как за усиленную электронную подпись придется заплатить.
Также можно оформить сертификат в специальном удостоверяющем центре. Стоимость сертификата зависит от тарифного плана. Заявку на получение сертификата можно оставить онлайн, а уже после посетить центр. Для этого нужно:
Получение ЭП юрлицами или ИП
Юридические лица также получают квалифицированные сертификаты ЭЦП в удостоверяющем центре либо в МФЦ. Перечень аккредитованных удостоверяющих центров можно посмотреть на сайте Минкомсвязи России. Поскольку получить ЭП удаленно нельзя, следует выбрать центр, имеющий филиал в вашем городе.
Вам понадобятся следующие документы:
После проверки документов специалистами удостоверяющего центра в течение 4-10 рабочих дней сертификат будет изготовлен. Чтобы получить его быстрее, можно оплатить срочный тариф.
Срок, на который выдается сертификат ЭП, обычно составляет один год. Если срок электронной подписи еще не истек, ее можно продлить с помощью действующего сертификата. Если срок действия предыдущего сертификата истек, то придется заново подавать заявление и предоставлять полный пакет документов. Однако подписанные документы считаются действительными и после окончания срока действия сертификата ключа проверки ЭЦП.
Владельцу электронной подписи выдается специализированный цифровой носитель — USB-токен, который выглядит как обычный флеш-накопитель, и сертификат в бумажном и электронном варианте. Для работы с электронной подписью потребуется установить на компьютер специальные программные средства.
Как подписать документ электронной подписью
Процесс подписания документа ЭЦП различается в зависимости от программы, в которой он создавался либо редактировался. При этом на ваш компьютер предварительно должны быть установлены специальные, выданные в организации, которая регистрировала ЭЦП, сертификаты. Рассмотрим, как происходит подписание в приложении Microsoft Word:
Как проверить подлинность подписи
Во многих информационных системах имеется встроенная функция проверки электронной подписи. Но проверить ЭЦП можно и самостоятельно с помощью специальных приложений и веб-сервисов. Проверки подлежат НЭП и КЭП — электронные подписи, которые базируются на инфраструктуре закрытых и открытых ключей. При помощи закрытого ключа происходит создание подписи, а открытый ключ как раз позволяет проверить ее подлинность.
Существуют две разновидности усиленных ЭП:
Проще всего провести проверку ЭП через онлайн-сервисы. Для этого нужно просто перейти по ссылке, загрузить документ и подождать результата проверки. Таким образом проверить электронную цифровую подпись можно в специальном разделе на портале государственных услуг:
По завершении проверки сервис покажет сведения о владельце сертификата, удостоверяющем центре, в котором он был получен, и о сроке действия ЭЦП. Если будут найдены несоответствия либо обнаружена версия сертификата с истекшим сроком действия, система выдаст соответствующее предупреждение.
Кроме того, имеются и другие сервисы для проверки электронных подписей, например, бесплатный сервис «Контур.Крипто» и отдельные программы, такие как «КриптоАРМ». Также существуют плагины для программ Microsoft Word и Excel, которые позволяют провести проверку прямо в интерфейсе самих приложений, а также плагины для продуктов Adobe для проверки документов PDF.
Соблюдайте меры предосторожности
Необходимо помнить о том, что любая ЭЦП открывает доступ к личной информации о ее владельце и дает возможность совершать важные действия, поэтому нельзя допускать попадания электронной подписи в чужие руки. ЭЦП, хранящаяся на флешке-токене, должна быть надежно защищена от кражи. Добровольно передавать электронно-цифровую подпись третьим лицам запрещается, об этом сказано в Федеральном законе № 63 «Об электронной подписи».
Если электронная подпись была утеряна или украдена, необходимо как можно скорее написать заявление на отзыв подписи в удостоверяющий центр. Так вы избежите ситуации, когда вашей подписью могут воспользоваться злоумышленники для незаконных операций, совершенных от вашего имени. После чего нужно будет написать заявление на выпуск нового сертификата.