Как подписать документы электронной подписью и можно ли это делать? Цифровая подпись простая
с чем ее есть и как не подавиться. Часть 2 / Хабр
Продолжая раскрывать тайное знание о цифровой подписи простым языком, разберем, что же нам надо для удобной и эффективной работы с ними, а также главное различие между лагерями S/MIME + X.509 и PGP.
Перед тем, как рассматривать особенности этих двух больших лагерей, стоит рассмотреть, какая информация нужна получателю для проверки подписи (а наш зашифрованный хэш уже вполне можно называть подписью), и в каком виде ее можно ему передать.
Каждую из частей информации можно передать вместе с открытым ключом, или вместе с нашей подписью, а можно и с тем и с тем, для большего удобства. Конечно, можно не разделять информацию на передаваемую с открытым ключом и передаваемую с подписью. Но тогда каждый раз отправляя подписанную информацию мы отправляем одно и то же. Как если бы к каждому отправляемому нами бумажному письму (даже короткому, в две строки), мы бы прикладывали дополнение вида «Здравствуйте! Это я, В. Пупкин, которого вы встречали на Красной площади Москвы, где мы и познакомились, потом пошли в ресторан, потом <...>». Согласитесь, слегка неудобно.
Но вернемся к нашей информации, необходимой для проверки подписи. Начнем с простого: информация, которая позволит нам узнать, кто же сделал эту подпись. Как мы уже договорились, ассиметричное шифрование позволяет однозначно связать наш открытый ключ и полученную подпись. Беда в том, что сам по себе открытый ключ – набор байт. При этом он, конечно, связан с закрытым, которым мы (то есть отправитель) владеем, но связь эта для получателя неочевидна. У него есть набор байт от В. Пупкина, от И. Петрова, от С. Сидорова… И от десятка других людей. И как ему их идентифицировать? Держать отдельный реестр для того, кому какой набор байт принадлежит? Это что же, получается уже второй реестр (помимо того, где должно быть записано, с помощью какой хэш-функции какой хэш сделан)! И опять, неудобно!
Значит, надо связать каждый открытый ключ с информацией о том, кому этот ключ принадлежит, и присылать это все одним пакетом. Тогда проблема реестра решается сама собой – пакет (а если более правильно, контейнер) с открытым ключом можно будет просто посмотреть и сразу понять его принадлежность.
Но эту информацию все так же надо связать с подписью, пришедшей получателю. Как это сделать? Надо соорудить еще один контейнер, на сей раз для передачи подписи, и в нем продублировать информацию о том, кто эту подпись создавал. Продолжая нашу аналогию с красивым замком, мы пишем на ключе «Этот ключ открывает замок В. Пупкина». А на замке тоже пишем «Замок В. Пупкина». Имея такую информацию, получатель нашей коробочки не будет каждый из имеющихся у него ключей вставлять наугад в наш замок, а возьмет наш ключ и сразу его откроет.
Теперь, по переданной информации при проверке можно найти контейнер открытого ключа, взять оттуда ключ, расшифровать хэш и…
А собственно, что «и»? Мы ведь пока так и не решили проблему, как донести до получателя информацию о том, какая хэш-функция применялась для хэша, а ведь для проверки подписи эта информация необходима! Решить ее можно достаточно просто: положить эту информацию в контейнер вместе с нашим открытым ключом. Ведь именно связка «хэширование – шифрование результата хеширования» считается процедурой создания цифровой подписи, а ее результат – подписью. А значит, достаточно логичным представляется объединение в связку алгоритма шифрования хэша и хэш-функции, с помощью которой он сформирован. И доставлять эту информацию тоже надо в связке.
Теперь, ненадолго вернемся к информации о подписывающем. Какого рода эта информация должна быть? ФИО? Нет, В. Пупкиных много. ФИО + год рождения? Так и родившихся в один день В. Пупкиных тоже предостаточно! Более того, это может быть Василий, Виктор, или даже Василиса или Виктория Пупкины. Значит, информации должно быть больше. Ее должно быть столько, чтобы совпадение всех параметров, по которым мы идентифицируем человека, было максимально невероятным.
Безусловно, такой пакет информации создать возможно. Вот только, работать с ним уже трудновато. Ведь надо наши контейнеры открытых ключей надо сортировать, хранить, использовать, в конце концов. А если для каждого использования придется указывать по полсотни параметров, то уже на втором контейнере станет понятно, что что-то надо менять. Решение этой проблемы, конечно же, было найдено.
Чтобы понять, в чем же оно заключалось, обратимся к бумажному документу, который есть у всех нас: к паспорту. В нем можно найти и ФИО, и дату рождения, и пол, и много другой информации. Но, главное, в нем можно найти серию и номер. И именно серия и номер являются той уникальной информацией, которую удобно учитывать и сортировать. Кроме того, они существенно короче всей оставшейся информации вместе взятой, и при этом все так же позволяют опознать человека.
Применяя этот же подход к контейнерам открытых ключей, мы получим, что у каждого контейнера должен быть некий номер, последовательность символов, уникальная для него. Эту последовательность символов принято называть идентификатором, а сами контейнеры – сертификатами, либо просто ключами. Вот здесь и начинаются принципиальные различия в идеологиях OpenPGP и S/MIME + X.509. Для краткого понимания их, вернемся к нашей аналогии с паспортом.
Паспорт вы можете использовать при покупках билетов, при оформлении документов, для выдачи пропуска на какую-либо территорию и даже на территории других стран! То есть, вы используете его для идентификации вашей личности в самых различных, зачастую абсолютно не связанных друг с другом, местах, с самыми различными людьми. И везде ваш паспорт принимают. Гарантом того, что вы – это вы выступает третья сторона в ваших взаимоотношениях с другими: государство. Именно оно выдало вам ваш паспорт, специально оформленный, подписанный и заверенный, и именно поэтому ваш паспорт является таким универсальным документом.
С другой стороны, в кругу друзей, или внутри компании вам достаточно представиться так: «В. Пупкин из твоей группы в институте» или же «В. Пупкин из отдела продаж». И людям, с которыми вы контактируете в этом кругу уже не нужна третья сторона, они и так помнят Пупкина из группы с которым проучились пять лет, или Пупкина из отдела продаж, с которым недавно ходили обедать, и предоставленной вами информации им вполне достаточно.
Так же можно разделить и эти два лагеря.
Сертификат X.509 – это аналог нашего паспорта. Здесь сертификаты вам выдаются суровой третьей стороной, гарантом вашей личности: Удостоверяющим Центром (УЦ). Получающий ваши подписи человек всегда может обратиться в УЦ и спросить интересующую его информацию по вот этому конкретному сертификату.
PGP же (и стандарт OpenPGP, появившийся в дальнейшем) создавался на основе так называемых сетей доверия. Такая идея подразумевает, что обмениваются подписями люди, которым третья сторона для их взаимоотношений не нужна, а нужна только защита от нехороших лиц.
Конечно, с течением времени такое разделение стало уже достаточно условным, так как на данный момент и в S/MIME+X.509 и в PGP можно использовать методы лагеря соперников. Но все же, стандарты достаточно продолжительное время развивались параллельно и развились до той степени, что взаимная совместимость между ними стала невозможной.
Более популярным стандартном, в силу своей ориентированности на участие более компетентной третьей стороны, стал стандарт S/MIME + X.509, однако и у PGP есть некоторое количество козырей за пазухой, с помощью которых он не только не погибает, но и продолжает успешно развиваться. Более подробное рассмотрение каждого из форматов, а также рекомендации, когда, где и какой из них использовать вы сможете прочитать уже в следующих статьях.
Часть 3
habr.com
О простой электронной подписи
Общие сведения
В федеральном законе № 63-ФЗ «Об электронной подписи» вводятся понятия двух видов электронных подписей, которые могут использоваться в автоматизированных информационных системах для подписи электронных документов:
- простая электронная подпись;
- квалифицированная электронная подпись.
Простая электронная подпись может быть использована для придания юридической значимости электронным документам, (т.е., равнозначными документам на бумажном носителям), обмен которыми происходит в рамках одной информационной системы. Например, в системах дистанционного банковского обслуживания (интернет-банках) вы отправляете платежное поручение на исполнение, вводя одноразовый пароль из СМС-сообщения. В этом случае, информационная система банка, удостоверяя вас по этому одноразовому коду, ставит вашу простую подпись на платежном поручении, что дает основание банку выполнить поручение на перечисление средств.
Квалифицированная электронная подпись может использоваться при обмене электронными документами между разными информационными системами. Именно квалифицированная подпись используется при сдаче отчетности в контролирующие органы (ИФНС, ПФР, ФСС) в электронном виде. Выпуск квалифицированной подписи является достаточно трудоемким процессом - здесь помимо операторов информационных систем, которые обмениваются документами, ещё задействован Удостоверяющий центр, который берет на себя функции подтверждения личности подписанта и проверки корректности поставленной на документе электронной подписи.
Где найти электронные подписи
В Небе электронные выпущенные для пользователя подписи находятся в разделе «Моя организация -> Электронные подписи»
На вкладке «Подпись для сдачи отчетности» располагаются сведения о выпущенной для организации квалифицированной подписи, которая используется для отправки отчетности в контролирующие органы. Квалифицированная подпись выпускается на организацию в единственном экземпляре
На вкладке «Простые подписи» располагаются простые подписи для работы с внутренними документами, которые выпущены на организацию. Простых подписей может быть несколько, по количеству пользователей, работающих с этой организацией.
Как работают простые подписи
Рассмотрим процесс выпуска квалифицированной электронной подписи для сдачи отчетов.
Законодатель установил, что для этого вы должны: присоединиться к регламенту удостоверяющего центра, выдать доверенность Небу, заполнить заявление на выпуск подписи и предоставить цветные сканы (фотографии) некоторых "бумажных" документов.
Для того, чтобы Небо могло принять у вас эти документы без вашего личного визита в наш офис, как раз и используется простая электронная подпись. С её помощью вы удаленно подписываете указанные выше внутренние документы, и эти документы становятся юридически значимыми (равноценными подписанными вами бумажным документам).
Как создать простую подпись
Для создания простой электронной подписи для текущей организации перейдите на вкладку «Простые подписи» и нажмите кнопку «Создать ключ». Перед созданием простой подписи убедитесь, что в Небе корректно заполнены реквизиты организации (полное и короткое наименования, юридический адрес и ОГРН).
На экране появится форма, где вы указываете:
- ФИО и должность владельца простой подписи;
- Доверенность, по которой владелец ключа. Например, "№ 123 от 31.12.2014 (действительна до 31.12.2017)". Поле необязательное, его нужно заполнять только в случае, если владелец ключа не может действовать от имени организации без доверенности;
- Пароль к простой подписи. Его надо будет вводить каждый раз, когда вы будете подписывать внутренние документы. Запомните этот пароль!
- Номер телефона и код его подтверждения. Каждый раз при подписи внутренних документов, помимо ввода пароля подписи мы будем отправлять вам одноразовые коды на указанный номер телефона.
Также, перед созданием подписи ознакомьтесь с «Правила использования простой электронной подписи» и «Правила определения лица, подписывающего документ».
Для удобства, мы вставили кнопки создания простых подписей напрямую в процессы выпуска квалифицированной подписи. Самый первый шаг здесь - это как раз создание простой подписи для подписи всех внутренних документов.
Как изменить простую подпись
Технология простых электронных подписей в Небе не подразумевает возможности внесения изменения. Если вы забыли пароль или хотите изменить какие-то другие параметры в ранее созданной записи, то вам нужно отозвать существующую простую подпись и создать новую.
Как подписать документы электронной подписью и можно ли это делать?
В наш век компьютерных технологий для заверения документов стала применяться, так называемая электронная цифровая подпись или сокращенно ЭЦП. Однако в этом вопросе у многих нет четкого понимания того, зачем это нужно, ведь большинство привыкло работать по старинке, подписывая документы вручную. О том, как подписать документы электронной подписью, далее и пойдет речь.
Что такое электронная цифровая подпись или ЭЦП?
ЭЦП представляет собой некий объект в электронном виде, по которому сразу же можно определить лицо, его сформировавшее, установить авторство, проверить аутентичность документа и т. д.
Естественно, визуально ЭЦП может выглядеть как обычная подпись в виде графического объекта, вставленного в документ. На самом деле здесь работают алгоритмы асимметричного шифрования и криптографии. Сама же ЭЦП использует закрытый ключ и сертификат ключа, что и позволяет определить доверенное лицо и принадлежность подписи именно ему, целостность документа и подтверждение факта его подписания.
Почему следует подписывать документы ЭЦП
Многие несколько недоумевают по поводу того, нужно ли и можно ли подписывать документы электронной подписью. На такой вопрос можно дать только утвердительный ответ. Для упрощенного понимания рассмотрим один пример.
Предположим, компания в лице генерального директора должна оформить двусторонний контракт. Понятно, что визировать его придется в любом случае, поскольку без этого он не будет иметь юридической силы. Но пересылка готового договора, скажем, по факсу оказывается невозможной. При отправке по электронной почте графический формат отсканированного документа не приветствуется, ведь подпись можно подделать. Таким образом, приходится отправлять тот же самый файл Word, а вот такой документ и должен быть подписан. Но как подписать документ «Ворд» электронной подписью? В общем-то, в этом нет ничего особо сложного. Далее будет рассмотрено несколько простых методов создания ЭЦП. А пока остановимся на правовых вопросах.
Нужно ли подписывать документы с электронной подписью вручную?
Многие офисные работники и руководители считают, что визировать документы, в которых имеется ЭЦП, дополнительно (вручную) нужно (так сказать, на всякий случай). Явное заблуждение. Это совершенно необязательно.
Дело в том, что при создании цифровой подписи и сертификата оформляется специальный договор с удостоверяющим центром и заверяется нотариусом, а на стадии формирования сертификата выдается закрытый ключ. С юридической точки зрения, это и есть подтверждение владельца ЭЦП. Таким образом, вывод напрашивается сам собой: вторичное визирование не нужно.
Алгоритм работы с ЭЦП
Выясним, как подписать документ электронной цифровой подписью, и посмотрим на то, как все это работает.
В основу таких процессов положено создание криптограммы, которая хэширует заверяемый файл, определяя данные владельца, авторство и целостность данных. Созданный хэш на следующем этапе шифруется при помощи закрытого ключа, после чего происходит формирование либо целого документа с ЭЦП, либо отдельного файла подписи, привязанного к документу.
Получатель для расшифровки, аутентификации (подлинности) и проверки целостности документа использует открытый ключ. Конечно же, в общих чертах большинство алгоритмов очень похожи между собой. Разница может проявиться только в зависимости от типа используемого программного обеспечения.
Как подписать документ Word электронной подписью средствами редактора?
Многие пользователи даже не догадываются о том, что ЭЦП можно совершенно просто создать даже в офисном редакторе Word. Как подписать «вордовский» документ электронной подписью? Проще простого. Действия в разных версиях редактора несколько различаются, но в целом суть одна и та же. Рассмотрим создание подписи на примере Word 2007.
Итак, как подписать документы электронной подписью, используя только Word? Для этого после установки курсора в место, где предполагается поставить подпись, используется меню вставки, в котором выбирается пункт текста. Затем следует найти пункт строки подписи и в выпадающем списке установить строку подписи MS Office.
В диалоговом окне настройки нужно указать данные лица, подписывающего документ, затем выбрать скан оригинальной подписи, после чего ввести собственное имя в поле рядом со значком «x». После этого будет отображена печатная версия подписи.
На планшете с рукописным вводом подпись можно поставить собственноручно. Если требуется подписать документ от имени нескольких лиц, нужно будет настроить поля подписей для каждого лица.
Можно поступить и проще, выбрав в меню кнопки «Офиса» строку «Подготовить», далее указать добавление подписи, затем использовать цель подписания документа, после этого сделать выбор подписи, и, наконец, - пункт «Подписать». Подписание будет подтверждено появившимся красным значком на панели и надписью, гласящей, что документ содержит ЭЦП.
Самые популярные инструменты для создания ЭЦП
Теперь посмотрим, каково может быть решение проблемы того, как подписать документ квалифицированной электронной подписью. Для этого желательно использовать стороннее программное обеспечение.
Из русскоязычного ПО самыми популярными и наиболее распространенными являются следующие программные пакеты:
- «КриптоАРМ»;
- «Крипто ПРО»;
- «КриптоТри».
Первая программа выглядит самой простой, поэтому далее будет рассмотрено, как подписать документы электронной подписью, именно с ее помощью.
Создание ЭЦП на примере приложения «КриптоАРМ»
Для создания цифровой подписи при помощи этого приложения есть два метода: использование контекстного меню и выполнение действий через главный интерфейс программы. Для более простого понимания процесса остановимся на первом варианте, тем более что второй практически идентичен, только основное действие вызывается непосредственно из программы. Предположим, необходимо установить цифровую подпись на документ Word.
Сначала в «Проводнике» необходимо выбрать интересующий нас документ и в меню ПКМ выбрать строку «Подписать». После этого появится окно «Мастера», который поможет выполнить все дальнейшие действия. Нажимаем кнопку продолжения и проверяем, тот ли файл выбран. При необходимости можно добавить еще несколько объектов, чтобы осуществить их одновременное подписание.
Снова нажимаем кнопку «Далее» и в следующем окне выбираем метод кодировки. В принципе, можно ничего не менять и оставить настройки, предложенные по умолчанию. На следующем этапе можно ввести дополнительные данные (штамп времени, визу и т. д.). Попутно можно установить флажок в поле сохранения подписи в виде отдельного объекта (при последующей проверке подписи в документе потребуются оба файла). Если галочку не ставить, файл подписи будет объединен с документом.
После продолжения потребуется выбрать сертификат, который был выдан соответствующим удостоверяющим центром (он может находиться на внешнем носителе eToken или прописан в системном реестре). После этого остальные параметры можно не менять. По окончании всех действий останется только нажать кнопку «Готово».
Примечание: если для подписи выбрался отдельный файл, как правило, он будет располагаться в той же директории, что и исходный подписываемый документ, и иметь расширение SIG.
Особенности подписи документов PDF, HTML и XML
Наконец, несколько слов о других форматах. В принципе, для PDF-документов действия будут теми же, однако в силу специфики других программ от компании Adobe целесообразно отделять файл подписи от основного документа.
Возможна ситуация, когда получатель документа сначала захочет ознакомиться с его содержимым, используя для этого тот же Acrobat (Reader), а только потом станет проверять подпись. Кстати, некоторые приложения от Adobe тоже позволяют подписывать файлы собственными штатными средствами.
Если встраивать подпись в документы формата HTML при работе с тонкими клиентами, в браузере потребуется нажать «Подписать и отправить», после чего будет активирован скрипт разработчика, формирующий строковую переменную с данными по верификации документа, которая будет введена в специальное hidden-поле, подписана и передана на сервер POST-методом. Затем последует проверка документа и подписи, после чего на сервере сформируется таблица с полями самого подписанного документа и его ЭЦП.
Файлы XML можно подписать как обычные документы, использовать средство «Офиса» InfoPath или создать специальный атрибут тэга в самом документе.
Краткие итоги
Вот кратко и все о том, как подписать документы электронной подписью. Конечно, здесь были приведены далеко не все методы, которые позволяют произвести такие операции, и рассмотрены не все программы для создания ЭЦП. Однако даже по такому краткому описанию уже можно понять, для чего нужна электронная подпись, и как в основе своей работают все необходимые алгоритмы.
Если посмотреть не некоторые типы программного обеспечения, в частности, офисные программы или наиболее популярные продукты от Adobe, можно использовать и их собственные средства. Однако в плане упрощения работы, по крайней мере, начинающему пользователю лучше использовать сторонние утилиты в виде примера с «КриптоАРМ». Само собой разумеется, что не следует забывать и о юридической стороне вопроса. Некоторые компании создают электронные подписи и сертификаты самостоятельно, но в конечном итоге они не то чтобы оказываются недействительными, но вот юридической силы не имеют.
fb.ru