Каким ключом из пары ключей ставится электронная подпись

Обновлено: 04.07.2024

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

Что такое электронная подпись

Электронная подпись — это технология, которая помогает подтвердить подлинность электронного документа: договора, справки, выписки или чего-то ещё.

Если упрощённо, работает так:

👉 Есть некий документ, подписанный ЭП

👉 С помощью специальной программы можно проверить подлинность этой подписи и документа

✅ Если программа говорит, что всё окей, то мы можем быть уверены: документ подписал именно тот, кто в нём указан; и с момента подписания в документе ничего не изменилось.

❌ Или программа может сказать, что подпись не совпала. Это значит, что либо документ подписал другой человек, либо после подписания кто-то изменил этот документ (например, дописал ноль в стоимость контракта). Так мы поймём, что этому документу нельзя доверять.

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

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

Основа ЭП — асимметричное шифрование

Как работает: сертификаты

Электронная подпись состоит из двух принципиальных частей:

  1. Сертификат для удостоверения подписывающего.
  2. Криптографическая часть для проверки подлинности документа.

Грубо говоря, ЭП должна гарантировать, что документ подписали именно вы и что вы подписали именно этот документ.

В сертификате хранятся данные о владельце подписи:

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

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

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

Как работает: алгоритмы шифрования

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

Проблема в том, что ЭП основана на алгоритмах асимметричного шифрования, а их много: разложение на простые множители, дискретное логарифмирование, эллиптические кривые и множество других. Ключ из одного алгоритма не подойдёт для использования в другом, поэтому в России договорились использовать стандарт шифрования ГОСТ Р 34.10-2012, основанный на эллиптических кривых. Все государственные органы работают только с таким алгоритмом и не принимают другие ЭП.

Это значит, что нам нужен специальный софт, в котором уже есть этот алгоритм. Чаще всего используют КриптоПРО, реже — ViPNet CSP. С помощью этих программ можно подписать документы и проверить сертификаты на подлинность.

Принцип работы электронной подписи

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

Разберём по шагам:

  1. В удостоверяющем центре вы получаете сертификат и ключ электронной подписи. Это закрытый ключ, который передавать никому нельзя. Открытый же ключ хранится в самом сертификате, который прикладывается к каждому документу и доступен всем.
  2. Берёте нужный документ и получаете его криптографический хеш. Хеш — это небольшая строка, которая представляет собой «цифровой отпечаток» файла. У каждого файла с уникальным набором битов будет уникальный хеш, причём он всегда одинаковой длины. Подробнее о хешах мы писали, когда разбирали скандал с паролями Фейсбука.
  3. Шифруете этот хеш своим закрытым ключом. Полученный результат шифрования добавляете к исходному документу.
  4. Туда же добавляете сертификат, чтобы все могли проверить и убедиться, что документ подписали вы.

А что если подменят сам сертификат?

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

Открытый и закрытый ключ ЭЦП: основные различия

Асимметричное шифрование данных предусматривает применение закрытого и открытого ключей одновременно. Сама технология реализована на базе связки компонентов ЭЦП. Ключи связаны за счёт математического соотношения. Подобная технология обеспечивает безопасность шифрования данных

Сущность технологии ЭЦП

Асимметричное шифрование данных предусматривает применение закрытого и открытого ключей одновременно. Сама технология реализована на базе связки компонентов ЭЦП. Ключи связаны за счёт математического соотношения. Подобная технология обеспечивает безопасность шифрования данных. Даже в случае перехвата информации её становится практически невозможно расшифровать. Электронная подпись исключает возможность перенаправления на сторонний веб-ресурс.

Что такое открытый ключ

Открытый ключ ЭЦП доступен для всех пользователей информационной системы. По своей сути это цифровой код. Сертификат открытого ключа ЭЦП используется для идентификации владельца и удостоверения факта отсутствия изменений в документе после подписания. В состав сертификата входят данные:

Уникальный номер

уникальный номер, присваиваемый в ходе регистрации;

Личные сведения о держателе

личные сведения о держателе, включая реквизиты эмитента — удостоверяющего центра и Ф. И. О. владельца


Срок действия сертификата

срок действия выданного сертификата

Проверка открытого ключа ЭЦП

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

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

Открытая часть ключа ЭЦП: как сделать

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

Понятие закрытого ключа

Для дешифровки хранящихся в ЭЦП данных понадобится вторая составляющая в виде закрытого компонента сертификата.

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


Смарт карта


Токен


USB-носитель


Дискета

Похищение либо потеря устройства хранения данных могут быть сразу обнаружены пользователем — можно успеть своевременно отозвать сертификат. Самым безопасным вариантом из всех представленных считается смарт-карта. Её использование предполагает двухфакторную аутентификацию — введение PIN-кода. Скопировать информацию со смарт-карты представляется довольно сложной задачей. Однако токены более универсальны в связи с возможностью их использования на любом устройстве, оснащённом USB-портом.

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

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

Зачем нужны открытый и закрытый ключ ЭЦП

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

Как вытащить открытый ключ сертификата ЭЦП

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

Для удобства, подготовили для вас материалы о ЭЦП, из которых вы узнаете:


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

Открытый ключ ЭЦП

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

Закрытый ключ ЭЦП

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

В ключевой паре открытая и закрытая части привязаны друг к другу.

Как найти и выгрузить ключи на компьютер?

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

Через свойства браузера:

В ОС Windows необходимо открыть: «Пуск» — «Панель управления» — «Свойства браузера».

В появившемся окне выбрать вкладку «Содержание», а далее — «Сертификаты».

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

Появится окно «Мастер экспорта сертификатов», где нужно выбрать «Не экспортировать закрытый ключ», если это не требуется.

Выбрать формат файла «Файлы в DER-кодировке X.509 (.CER)».

Выбрать место хранения ключа и сохранить.

Через КриптоПро CSP:

В ОС Windows надо перейти в «Пуск» — «Панель управления» — «КриптоПро CSP».

В открывшемся окне следует выбрать вкладку «Сервис» и нажать «Просмотреть сертификаты в контейнере».

Через кнопку «Обзор» нужно выбрать контейнер.

В окне «Сертификат для просмотра» следует нажать кнопку «Свойства» и на вкладке «Состав» нажать «Копировать в файл».

Далее порядок действий в окне «Мастер экспорта сертификатов» аналогичный: выбрать, нужно ли сохранять закрытый ключ, установить формат и определить место хранения.

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

Выгрузка закрытого ключа через свойства браузера выполняется по тому же алгоритму, что и в случае с открытым. Только в окне «Мастер экспорта сертификатов» нужно выбрать «Экспортировать закрытый ключ». А порядок действий при выгрузке из КриптоПро CSP следующий:

В ОС Windows нажать «Пуск» перейти на «Панель управления» и выбрать «КриптоПро CSP».

Далее — вкладка «Сервис» и кнопка «Скопировать контейнер».

Через кнопку «Обзор» нужно выбрать контейнер и подтвердить (потребуется ввести PIN-код).

Затем нужно ввести название копии закрытого ключа и нажать «Готово».

Далее нужно выбрать, куда будет записан ключ, установить пароль для обеспечения дополнительной защиты и подтвердить действия.

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

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

Оговорюсь сразу — я почти дилетант в вопросах, связанных с электронной цифровой подписью (ЭЦП). Недавно, движимый естественным любопытством, я решил немного разобраться в этом и нашел в Интернете 100500 статей на тему получения сертификатов ЭЦП в различных удостоверяющих центрах, а также многочисленные инструкции по использованию различных готовых приложений для подписания документов. Кое-где при этом вскользь упоминалось, что неквалифицированную подпись можно изготовить самостоятельно, если воспользоваться услугами «опытного программиста».

Мне тоже захотелось стать хоть немного «опытным» и разобраться в этой кухне изнутри. Для интереса я научился генерировать PGP-ключи, подписывать документы неквалифицированной подписью и проверять ее достоверность. Понимая, что никакой Америки не открыто, я, тем не менее, предлагаю этот краткий туториал для таких же, как и я, дилетантов в вопросах работы с ЭЦП. Я постарался особо не углубляться в теорию и в детали, а написать именно небольшое и краткое введение в вопрос. Тем, кто уже работает с ЭЦП, это вряд ли будет интересно, а вот новичкам, для первого знакомства — в самый раз.

Что такое электронная подпись

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

Электронная цифровая подпись (ЭЦП) — это совокупность средств, позволяющих однозначно удостовериться в том, что автором документа (или исполнителем какого-то действия) является именно то лицо, которое называет себя автором. В этом смысле ЭЦП полностью аналогична традиционной подписи: если в обычном «бумажном» документе указано, что его автор Иванов, а внизу стоит подпись Петрова, вы справедливо можете усомниться в авторстве Иванова.

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

Мне однажды встречался такой способ удостоверения подлинности электронных документов в одной организации: перед рассылкой документа изготавливался его хэш и подписывался в базу хэшей (обычный текстовый файл, лежащий на сервере). Далее любой желающий удостовериться в подлинности электронного документа заходил на официальный сайт этой организации (в официальности которого ни у кого сомнений не возникало) и с помощью специального сервиса проверял, содержится ли хэш проверяемого документа в базе. Замечательно при этом, что сам документ даже не нужно было загружать на сервер: хэш можно вычислить на клиентской стороне в браузере, а на сервер послать только маленький fetch- или ajax-запрос с этим хэшем. Безусловно, этот немудрёный способ можно с полным основанием назвать простой ЭЦП: подписью в данном случае является именно хэш документа, размещенный в базе организации.

Поговорим теперь об усиленной электронной подписи. Она предполагает использование стандартных криптографических алгоритмов; впрочем, таких алгоритмов существует достаточно много, так что и здесь единого стандарта нет. Тем не менее де-факто усиленная ЭЦП обычно основана на асимметричном шифровании (абсолютно гениальном, на мой взгляд, изобретении Ральфа Меркла), идея которого чрезвычайно проста: для шифрования и расшифровывания используются два разных ключа. Эти два ключа всегда генерируются парой; один называется открытым ключом (public key), а второй — секретным ключом (private key). При этом, имея один из двух ключей, второй ключ воспроизвести за разумное время невозможно.

Представим себе, что Аня хочет послать Боре (почему в литературе по криптографии обычно фигурируют Алиса и Боб? пусть будут Аня и Боря) секретную посылочку, закрытую на висячий замочек, и при этом на почте работают злые люди, которые хотят эту посылочку вскрыть. Других каналов связи, кроме почты, у Ани и Бори нет, так что ключ от замочка Аня передать Боре никак не может. Если она пошлет ключ по почте, то злые люди его, конечно, перехватят и вскроют посылочку.

Ситуация кардинально меняется, если изобретен замок с двумя ключами: один только для закрывания, а второй — только для открывания. Боря генерирует себе пару таких ключей (открытый и секретный) и открытый ключ шлет по почте Ане. Работники почты, конечно, потирая руки, делают себе копию этого ключа, но не тут-то было! Аня закрывает замок на посылке открытым ключом Бори и смело идет на почту. Работники почты вскрыть посылку открытым ключом не могут (он использовался для закрывания), а Боря спокойно открывает ее своим секретным ключом, который он бережно хранил у себя и никуда не пересылал.

Вернемся к усиленной электронной подписи. Предположим, некий Иван Иванович Иванов захотел подписать документ с помощью ЭЦП. Он генерирует себе два ключа: открытый и секретный. После этого изготавливает (стандартным способом) хэш документа и шифрует его с использованием своего секретного ключа. Можно, конечно, было зашифровать и весь документ, но полученный в результате такого шифрования файл может оказаться очень большим, поэтому шифруется именно небольшой по размеру хэш.

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

Что же теперь отправляет Иван Иванович получателям? А отправляет он три файла: сам документ, его электронную подпись и открытый ключ. Получатель документа:

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

Всё, казалось бы, хорошо, но есть одно большое «но». Предположим, что некий злодей по фамилии Плохиш решил прикинуться Ивановым и рассылать документы от его имени. Ничто не мешает Плохишу сгенерировать два ключа, изготовить с помощью секретного ключа электронную подпись документа и послать это всё получателю, назвавшись Ивановым. Именно поэтому описанная выше ЭЦП называется усиленной неквалифицированной: невозможно достоверно установить, кому принадлежит открытый ключ. Его с одинаковым успехом мог сгенерировать как Иванов, так и Плохиш.

Из этой коллизии существует два выхода. Первый, самый простой, заключается в том, что Иванов может разместить свой открытый ключ на своем персональном сайте (или на официальном сайте организации, где он работает). Если подлинность сайта не вызывает сомнений (а это отдельная проблема), то и принадлежность открытого ключа Иванову сомнений не вызовет. Более того, на сайте можно даже разметить не сам ключ, а его отпечаток (fingerprint), то есть, попросту говоря, хэш открытого ключа. Любой, кто сомневается в авторстве Иванова, может сверить отпечаток ключа, полученного от Иванова, с тем отпечатком, что опубликован на его персональном сайте. В конце концов, отпечаток можно просто продиктовать по телефону (обычно это 40 шестнадцатеричных цифр).

Второй выход, стандартный, состоит в том, что открытый ключ Иванова тоже должен быть подписан электронной подписью — того, кому все доверяют. И здесь мы приходим к понятию усиленной квалифицированной электронной подписи. Смысл ее очень прост: Иванов идет в специальный аккредитованный удостоверяющий центр, который подписывает открытый ключ Иванова своей электронной подписью (присоединив предварительно к ключу Иванова его персональные данные). То, что получилось, называется сертификатом открытого ключа Иванова.

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

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

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

Генерирование открытого и секретного ключей

Итак, вы решили самостоятельно изготовить усиленную неквалифицированную электронную подпись и научиться подписывать ею свои документы. Начать необходимо, конечно, с генерирования пары ключей, открытого (public key) и секретного (private key).

Существует множество стандартов и алгоритмов асимметричного шифрования. Одной из библиотек, реализующих эти алгоритмы, является PGP (Pretty Good Privacy). Она была выпущена в 1991 году под проприетарной лицензией, поэтому имеются полностью совместимые с ней свободные библиотеки (например, OpenPGP). Одной из таких свободных библиотек является выпущенная в 1999 году GNU Privacy Guard (GnuPG, или GPG). Утилита GPG традиционно входит в состав почти всех дистрибутивов Линукса; для работы из-под Windows необходимо установить, например, gpg4win. Ниже будет описана работа из-под Линукса.

Сначала сгенерируем собственно ключи, подав (из-под обычного юзера, не из-под root'а) команду

В процессе генерирования вам будет предложено ответить на ряд вопросов:

  • тип ключей можно оставить «RSA и RSA (по умолчанию)»;
  • длину ключа можно оставить по умолчанию, но вполне достаточно и 2048 бит;
  • в качестве срока действия ключа для личного использования можно выбрать «не ограничен»;
  • в качестве идентификатора пользователя можно указать свои фамилию, имя и отчество, например, Иван Иванович Иванов ; адрес электронной почты можно не указывать;
  • в качестве примечания можно указать город, либо иную дополнительную информацию.

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

Сгенерированные ключи (во всяком случае, открытый, но можно также и секретный, на тот случай, если ваш компьютер внезапно сломается) необходимо экспортировать в текстовый формат:

Понятно, что private.key вы должны хранить в секрете, а вот public.key вы можете открыто публиковать и рассылать всем желающим.

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

Нет ничего проще, чем создать отсоединенную ЭЦП в текстовом (ASCII) формате:

Файл с подписью будет создан в той же папке, где находится подписываемый файл и будет иметь расширение asc . Если, например, вы подписали файл privet.doc , то файл подписи будет иметь имя privet.doc.asc . Можно, следуя традиции, переименовать его в privet.sig , хотя это непринципиально.

Если вам не хочется каждый раз заходить в терминал и вводить руками имя подписываемого файла с полным путем, можно написать простейшую графическую утилиту для подписания документов, например, такую:

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

Вряд ли, конечно, вам самому придется проверять достоверность собственной электронной подписи, но если вдруг (на всякий случай) вам захочется это сделать, то нет ничего проще:

В реальности гораздо полезнее опубликовать где-нибудь в открытом доступе (например, на вашем персональном сайте или на сайте вашей организации):

  • открытый ключ public.key для того, чтобы все желающие могли проверить (верифицировать) вашу подпись с использованием, например, той же GPG;
  • веб-интерфейс для проверки вашей подписи всеми желающими, не являющимися специалистами.

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

К счастью для нас, имеется свободная библиотека OpenPGP.js; скачиваем самый маленький по размеру (на момент написания данного туториала — 506 КБ) файл dist/lightweight/openpgp.min.js и пишем несложную html-страничку (для упрощения восприятия я удалил все описания стилей и очевидные meta-тэги):

Понятно, что файл с открытым ключом public.key и файл библиотеки openpgp.min.js должны лежать в той же папке, что и эта страничка.

Вся работа по верификации подписей будет производиться подключенным скриптом validate.js :

Вот, собственно, и всё. Теперь вы можете в соответствии с пунктом 5.23 ГОСТ 7.0.97–2016 разместить на документе (в том месте, где должна стоять собственноручная подпись) вот такую красивую картинку:

Читайте также: