Что вообще происходит?

Дорогой друг! Могу предположить один из двух вариантов.

  1. Ты получил документ от контрагента, скажем договор.pdf, но вместе с ним тебе пришли два странных файла: договор.pdf.sig и сертификат ФИО.asc.
  2. Тебе предложили работать с электронной подписью, но ты вообще не знаешь с чего начать.

Тогда этот сайт для тебя!

А о чём вообще сайт? Это сервис какой-то? Нет! Это по сути просто статья об электронной подписи! Здесь я рассказываю о том, как можно бесплатно и законно пользоваться электронной подписью. А также показываю чем коммерческие варианты отличаются от бесплатных (подсказка - смотри раздел “Чем неквалифицированная подпись отличается от квалифицированной?”).

Для начала разберемся, что такое электронная подпись (ЭП)

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

Но логика подсказывает, что в мире существует масса способов удостоверить то, что подписант согласен с тем, что написано в подписанном им документе. Например, поставить печать из сургуча, запечатав конверт с документом фамильным перстнем. Или например, подписант может отправить на твой e-mail фразу “я согласен со всем, что написано в прикреплённом к электронному письму документе”. И какие-то из вариантов являются законными и будут признаны 3-ей стороной (например, судом, налоговой, т.п.). В частности второй пример с e-mail будет совершенно законным, если оба контрагента, а также любые другие заинтересованные лица, не имеют возможности по своему усмотрению внести изменение в текст e-mailа. При этом ставить подпись ручкой на бумаге не требуется. Мы ж уже в 21-ом веке живём! Единственное: в договоре нужно вставить фразу, что такой способ подписания признаётся обеими сторонами. Такой вид подписи, и многие похожие (например, отправка договора через мессенджер и фраза подписанта “я согласен с содержимым”, с невозможностью изменения\удаления этого сообщения) называется Простой Электронно-цифровой Подписью (ПЭП).

Запомни, если документы были подписаны ЭП, официальные организации, такие как налоговая и др. (назовём их для краткости “официалы”) не имеют права запрашивать у вас бумажный вариант, если была предоставленная законная ЭП, которую эти официалы способны удостоверить.

Какие вообще подписи бывают?

Закон рассматривает два вида: простая (ПЭП), описанная ранее, и УЭП - Усиленная Электронная Подпись. Усиленная отличается от простой тем, что для её удостоверения не требуется какого-то программного обеспечения (e-mail, мессенджер и т.п.), а достаточно знаний математики.

Но для того, чтобы проверка УЭП не была утомительной работой с калькулятором, используют уже готовые специализированные “калькуляторы УЭП”, которые называются программами подписания и проверки подписей. Чем концептуально такие “калькуляторы УЭП” лучше e-mail, мессенджеров и других программ, с помощью которых можно реализовать ПЭП я расскажу тебе в разделах “Как устроена УЭП?” и “Почему стоит использовать УЭП вместо ПЭП?”. А пока просто прими как данность, что УЭП надёжнее и удобнее ПЭП. Чтобы использовать УЭП на практике, понимать как она работает не требуется. Хотя советую всё же изучить эти разделы позднее, всё сразу встанет на свои места.

Как удостоверить усиленную подпись?

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

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

Сертификат подписанта - это некий уникальный файл, который может генерировать только подписант. Технология устроена так, что два разных человека на практике не смогут сгенерировать два одинаковых сертификата. Каждый новый сертификат будет уникальным. Можно сказать это некий username подписанта.

Сначала тебе нужно подготовить программу проверки подписи. Для этого тебе нужно нажать в ней кнопку “Импортировать сертификат” и загрузить туда сертификат подписанта.

А далее для проверки подписи нажать кнопку “Проверить подпись”, указав на .sig файл. Программе для проверки нужен будет сам документ. Если файл с подписью называется, например договор.pdf.sig, то программа проверки подписи будет искать файл без .sig в конце имени файла, то есть договор.pdf. И если такого файла в этой папке не оказалось, программа попросит его предоставить. И если документ был успешно предоставлен, программа напишет тебе, верна ли подпись. Другими словами, верно ли, что подписант это именно тот человек, который выпустил указанный в подписи сертификат, переданный тебе ранее. Программа скажет что подпись не верна, если документ был изменен после создания подписи или кто-то попытался его подделать.

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

Например, как проверяется подпись в программе Kleopatra под управление MS Windows или Linux:

  1. запустить Клеопатру;
  2. импортировать сертификат;
  3. нажать Decrypt/Verify;
  4. выбрать файл .sig;
  5. если программа попросит предоставить документ (если в текущей папке он отсутствует), нужно его предоставить;
  6. далее выскочит зеленая плашка, что подпись верна.

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

Как самому подписать документ?

Теперь ты захотел подписывать документы, то есть теперь ты подписант. Для начала тебе нужно создать свой сертификат. Для этого заходишь в программу и нажимаешь кнопку “Создать пару ключей”. Это действие создаст тебе пару из приватного и публичного ключа. Приватный ключ - это твой секрет. Никто не должен получить до него доступ. Ключи хранятся в защищённом хранилище программы по созданию ЭП, но я рекомендую сделать тебе резервную копию твоего приватного ключа, сохранив его, например, на флэшку с сенсором отпечатка пальцев, чтоб никто кроме тебя не смог воспользоваться им. Не храни приватный ключ в облаке в незашифрованном виде. Нажав на пару ключей ты можешь “Экспортировать сертификат”. Он будет содержать твоё имя или какие-то другие твои данные, которые ты ввёл при создании пары, а также твой публичный ключ. Сертификат можешь отдавать кому угодно, можешь разместить его у себя на сайте или в футере письма, чтобы все могли иметь до него доступ. Или просто сопровождать его при первой отправке подписи.

Затем нажимаешь кнопку “Подписать”, выбираешь документ, который хочешь подписать. Например, если документ называется договор.pdf, то программа создаст рядом (в той же папке) файл договор.pdf.sig.

Как лучше хранить файлы?

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

И не забывайте делать резервные копии.

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

В каком формате хранить документы?

Подойдёт любой неизменяемый спонтанно формат. Подписывать изменяемые файлы бессмысленно, так как подпись сразу же станет недействительной. Другими словами подпись будет невозможно удостоверить. Это как раз и есть основная суть ЭП - не дать никому возможности изменить документ. Надо подписывать статические неизменяемые файлы!

Примеры:

Особенности программ проверки подписей и подписания

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

Также обращай внимание, что некоторые программы могут встраивать подпись прямо в документ. Зачастую это не так удобно, как отдельный sig файл, потому что стандартные просмотрщики документов уже не смогут показывать, что написано в документе, подписанным неквалифицированной подписью. Его придётся дополнительно извлечь. Поэтому моя тебе рекомендация - при подписании документов обрати внимание, что подпись будет “откреплённой”.

А вот если у тебя квалифицированная подпись, то можно встраивать её в сам документ. Это стало возможным благодаря тому, что самый популярный просмотрщик в мире: Acrobat Reader поддерживает работу с квалифицированными подписями. Это очень удобно, так как это приложение стоит в большинстве банков и у официалов и им не нужно дополнительно устанавливать какое-то специальное ПО для проверки твоей неквалифицированной подписи. Но далее я всё равно буду продолжать рассказывать про неквалифицированную подпись.

Что если злоумышленник захочет подделать подпись?

Предположим, что некто (злоумышленник) выпустит свою подпись под твоим именем. Когда любой человек создаёт себе сертификат он самостоятельно указывает свои персональные данные (ФИО, email и т.д.). Никто не мешает злоумышленнику указать твое ФИО. И затем подписать важный документ твоим именем.

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

Чем неквалифицированная подпись отличается от квалифицированной?

Существует специальная процедура, она называется “удостоверения сертификата”:

К сожалению, недостаточно вам двоим обменяться сертификатами. Согласно закону, 3-и лица, например банки, официалы также желают или требуют возможности удостоверить подпись, и как следствие просят удостоверить сам сертификат. То есть каким-то образом доказать, что он был выпущен именно подписантом. Существуют специальные платные сервисы (они называются удостоверяющие центры, сокращённо УЦ, например Контур Диадок или СБИС), которые берут эту процедуру деньги. УЦ по другому называются квалификантами, а подписи, которые они выдают называют квалифицированными. Однако можно получить квалифицированную подпись бесплатно. Её стала выдавать российская налоговая всем желающим. Правда вам всё равно придётся тратить деньги на одобренный налоговой цифровой носитель, а также использовать специальное платное ПО для работы с такой подписью, чтобы подписать документы, например, в Acrobat Reader.

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

Тебе придётся самому удостовериться, что сертификат, который ты получил от подписанта, был выпущен именно им. Специально, чтобы упростить эту процедуру, на основе сертификата подписант делет легко читаемый человеком хэш (называется отпечаток, по английски fingerprint), и этот хэш можно подписант тем или иным способом удостоверяет. Например собственноручной подписью, написав что-то типа Отпечаток публичного ключа OpenPGP 4D9A CE4F 2ED3 8F81 3A30 B340 F004 AF4F 43A1 F729. Данная электронная подпись является аналогом собственноручной подписи {полное ФИО подписанта} и передав эту бумагу тебе. Хорошо, что эту процедуру достаточно сделать один раз для конкретного сертификата.

Данную бумагу, подписанную собственноручной подписью, можно передать уже и 3-им лицам и они смогут удостоверить собственноручную подпись, что называется по старинке. Собственноручная - значит на бумаге своей рукой написана физически!

Что делать, если подписант на дистанции и передать удостоверяющую бумагу у него нет возможности?

Другая идея, состоит в том, что подписант направляет тебе платеж на 10 руб. (любая сумма) в котором указывает Отпечаток публ. ключа OpenPGP 4D9A CE4F 2ED3 8F81 3A30 B340 F004 AF4F 43A1 F729. Данная ЭП является аналогом собственноручной подписи {полное ФИО подписанта}. Без НДС Т.к. его платежка подписанта подписана ЭП, которую ему выдал банк, а эта банковская ЭП заверена подписантом собственноручно при заполнении бланка банка при открытии счета (поэтому и нужна встреча с представителем банка при открытии счета), то цепочка удостоверения сходится и такая платёжка будет являться подписанным заявлением подписанта, в котором он указывает, что фингерпринт, и как следствие сам сертификат принадлежит ему.

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

Имеется ли у 3-х лиц соответствующий софт?

Несмотря на то, что софт существует уже три десятка лет, надёжен и проверен временем, не все 3-и лица имеют его, так как неквалифицированная подпись используется редко.

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

Хотя, на практике распечатка сертификата и платежки с отпечатком обычно является достаточным средством в подавляющем большинстве случаев.

Как устроена УЭП?

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

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

Почему стоит использовать УЭП вместо ПЭП?

Усиленная подпись это просто математика. Учёные математики доказали, что если числа достаточно большие, то усилий на их подбор, чтобы подделать подпись уйдет больше, чем вырабатывается электричества во всём мире, делая таким образом подделку такой подписи либо невозможной, либо просто нерациональной. Кроме того, 3-и лица, например официалы или банки, имея на руках файл с документом, публичный ключ и подпись могут использовать для проверки подписи тот софт, которому они доверяют. Никто не считает подписи на калькуляторе - это очень долго. Проще воспользоваться программой. И на первый ряд выходит тот факт, нет ли в этой программе каких-либо тайных закладок или вирусов. Банки и различные инспекции обязаны использовать максимально безопасный софт. А если софт написан на основе общеизвестных формул и проверен специалистами, то его считают безопасным и могут использовать.

Простая электронная подпись хоть и кажется на первый взгляд простой, очень сложна в проверке. Невозможно просто скачать email и показать скачанный email 3-ей стороне для проверки, так как в локальный файл ты можешь внести любые изменения. Тебе никто не поверит. Email ты не можешь переслать 3-ей стороне, потому что во время пересылки ты также можешь поменять его содержимое. Придётся давать третьей стороне логин\пароль от твоего почтового ящика, чтобы она убедилась в достоверности подписи. А представь, что пароль от почты ты потерял без возможности восстановления. Ведь резервной копии никто не поверит! То ли дело математика, её обмануть на практике невозможно!

Потерял\скомпрометировал свой приватный ключ УЭП?

Если он был удалён, просто создай новый сертификат.

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

К сожалению, не всегда возможно связаться с контрагентом. Если такой риск есть, то стоит приобрести квалифицированную подпись, и впоследствии, при возникновении инцидента воспользоваться услугами квалификанта (УЦ), чтобы отозвать свой сертификат.

Возможно Госуслуги смогут помочь в этом случае с неквалифицированной подписью. Пожалуйста напиши нам, если что-то знаешь об этом.

Сколько это стоит?

Бесплатно. “Как так?” скажешь ты! Дело в том, что УЭП - это лишь математика. А многие люди, в том числе Филипп Циммерман, хотели, чтобы люди могли свободно шифровать свои данные, подписывать без необходимости платить кому-то деньги. Они хотели сделать так, чтобы это было просто. Это стало возможным благодаря стандарту open source, где авторы не требуют денег за свой труд. А наградой им является признание. Уже более 30 лет PGP успешно используется по всему миру, а Филипп вошёл в мировую историю, даже не предполагая об этом, а просто желая помочь людям. В своё время правительства пытались дискредитировать стандарт OpenPGP и отчасти им это удалось, потому что до сих пор не так много людей им активно пользуются. И это всё несмотря на то, что и в промышленности и в армии США эти криптоалгоритмы являются основными. Федеральный закон РФ “об электронной подписи” также признаёт эти алгоритмы, делая их использование законным в России.

Какие программы использовать

Наиболее популярными бесплатными являются

Как можно нас отблагодарить?

Поставь звёздочку в проекте https://github.com/e-podpis/www/ пожалуйста!

В тексте много пунктуационных, грамматических и стилистических ошибок и если ты хорошо знаешь русский язык, пожалуйста, исправь их, создав Pull request из https://github.com/e-podpis/www/

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

Как можно с нами связаться

Мы есть в телеграм! Пиши нам на @EPodpisBot

Будем рады обратной связи!


Copyright (c) www.e-podpis.org 2022

Используя информацию на сайте вы соглашаетесь с лицензионным соглашением