Электронные подписи

Про ЭЦП от технаря — азы для начинающих

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

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

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

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

Хочу рассказать следующее:

  • что такое электронная подпись;
  • какие виды электронных подписей бывают;
  • что такое ключ электронной подписи, сертификат открытого ключа, как их получают;
  • что такое электронная подпись электронного документа, в каком виде она бывает;
  • как в принципе работает усиленная электронная подпись;
  • какие программы нужны на компьютере при работе с электронными подписями, что и как они делают.
Понимаю, что многих посетителей сайта интересуют намного более насущные моменты: как получить, как использовать подписи. Есть некоторый практический опыт в этой сфере. Некоторые моменты освещу по ходу объяснения здесь, но для большинства таких ситуаций одного поста не хватит. Будем писать дальше; пожелания по конкретике можно оставлять в комментариях.
После прочтения этого поста понять практические процессы и избежать возможных проблем будет намного проще. Ну и понимание работы упрощает поиск и предупреждение возможных проблем.

Итак, поехали.

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

Электронная подпись, согласно закону 63-ФЗ, это информация в электронной форме, которая присоединена к подписываемой информации в электронной форме или иным образом с ней связана и используется для определения лица, подписывающего информацию.

Другими словами, если, к примеру, в конце письма, пришедшего вам по электронной почте, написано «С уважением, Иванов И. И.», в теории эта подпись, если смотреть только на основные понятия из закона, тоже считается электронной.

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

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

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

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

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

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

Для более серьёзных целей используют усиленные подписи — квалифицированную и неквалифицированную. В них активно используются криптографические преобразования.

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

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

Квалифицированная подпись, помимо сказанного требует, чтобы:

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

Квалифицированная (усиленная квалифицированная — это то же самое) электронная подпись — это официально высший уровень доверия.

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

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

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

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

Вкратце о криптографии

Слово «криптография» в переводе с греческого означает тайнопись. Но в современном понимании этого термина он стал практически синонимом шифрования.

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

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

В каком случае это знание может пригодиться? Например: производитель защищённых ключевых носителей Рутокен у себя на сайте продаёт их в партиях от 10 штук, а за меньшим количеством предлагает обращаться к партнёрам. И какому-нибудь холдингу или бухгалтерскому аутсорсеру может показаться соблазнительным купить сразу такую партию на одну фирму и раздать-продать их своим клиентам или конторам, чтобы они в налоговой получили на своих руководителей квалифицированные электронные подписи.

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

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

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

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

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

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

Криптографическая контрольная сумма (хэширование, digest)

Сначала в качестве вспомогательной криптографической операции, применяемой при подписании и проверке подписей, рассмотрим так называемое одностороннее шифрование, называемое также хэшированием. В ходе этой операции блок информации произвольного размера (в нашем случае это может быть какой-то файл или его определённая часть) превращается в число с фиксированным количеством разрядов (обычно двоичных, т. е. бит, но для удобства оно везде пропечатывается в шестнадцатеричной системе счисления), называемое хэш-суммой или хэшем. Математически эта работа выполняется так, что для одного и того же блока информации результат хэширования по одному и тому же алгоритму будет всегда одинаковым. По сути хэширование выдаёт контрольную сумму. Но при этом алгоритмы хэширования разрабатываются таким образом, чтобы невозможно или крайне трудно было заранее предсказать, на сколько именно то или иное изменение в исходной информации изменит результат вычисления: такие возможности могут использовать злоумышленники в своих нехороших целях. И хэш-суммы двух блоков информации с мизерным отличием в одну букву или пробел будут кардинально отличаться друг от дружки. В качестве примера на картинке ниже приведены результаты хэширования по ныне устаревшему буржуйскому алгоритму md5 для блоков из цифр: 12345, 123456 и 1234567. Невооружённым глазом видно, что суммы отличаются очень сильно, хотя различие в составе информации составляет в каждом случае всего 1 символ (байт).

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

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

Возвращаемся к теме усиленных электронных подписей. Как происходит подписание и проверка подписи?

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

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

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

Как выглядит документ (файл) с электронной подписью

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

Второй вариант — электронная подпись, встроенная в электронный документ. Для его реализации необходимо, чтобы формат этого документа поддерживал встраивание электронной подписи внутрь файла. А в качестве информационного блока для подписания передаётся соответственно не весь файл, а его часть, содержащая подписываемую информацию. Дальше эта часть остаётся в исходном неизменном виде, а электронная подпись записывается в специально отведённое для этого место внутри файла, откуда проверяющая программа может её извлечь и проверить так, как было описано выше. Встроенная подпись поддерживается, например, форматами файлов PDF, Microsoft Office (хотя никто не мешает использовать с ними и откреплённую). Есть вариант с встраиванием электронной подписи в xml-файлы (так называемый стандарт XMLDSig), если утверждённый формат конкретного файла подразумевает его использование. Но, например, в электронном документообороте с ФНС и ПФР в основном используются откреплённые подписи. Тем не менее, например, выписки из ЕГРЮЛ в формате pdf скачиваются с встроенными электронными подписями. И, если открыть такой pdf на компьютере с сертифицированным российским криптопровайдером (о них поговорим позже) в программе Adobe Acrobat Reader DC, то через некоторое время мы увидим такую вот картинку:

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

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

Сертификат открытого ключа усиленной электронной подписи

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

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

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

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

Доверие. Инфраструктура открытых ключей. Удостоверяющие центры

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

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

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

Выпуск (издание) сертификата усиленной электронной подписи

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

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

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

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

Отзыв сертификата

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

Так какие же есть дополнительные проверки легитимности документа, подписанного электронной подписью?

Исходя из сказанного, вариантов возможна масса в зависимости от конкретной задачи. Можно и нужно проверить, действовал ли сам сертификат на момент подписания документа и не попал ли он до подписания в список отозванных сертификатов удостоверяющего центра. Можно (и, опять же, нужно) проверить сертификаты по цепочке доверия, чтобы убедиться, действительно ли выдавший сертификат удостоверяющий центр был аккредитован и имел ли он на момент выдачи сертификата право его издавать. Если документ подписан руководителем юрлица, можно, например, взять из сертификата ИНН организации, найти по нему сведения ЕГРЮЛ на момент подписания документа и проверить, имело ли право физлицо, указанное в сертификате, в тот момент действовать от имени юрлица без доверенности, или же собственники юрлица лишили его полномочий. Если в будущем подписант идёт в отказ и говорит, что не давал удостоверяющему центру разрешения на выпуск электронной подписи, то можно запросить в удостоверяющем центре бумажную распечатку сертификата или заявление на выпуск с личной подписью лица, которую его получило, для назначения соответствующей экспертизы. Но это уже, скорее, вопрос правоохранительных органов и других более компетентных в этих делах лиц.

Программное устройство

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

Откуда взялось это деление? И программные, и аппаратные средства усиленной электронной подписи так или иначе реализуют криптографические операции и таким образом являются шифровальными средствами. К разработке и разработчикам шифровальных средств в силу большой ответственности как логически, так и нормативно предъявляются особые требования, которых больше нигде разработчик не встретит. И разработчиков, соответствующих таким требованиям и непосредственно занимающихся реализацией криптографии, очень мало. А прикладных задач по работе с электронными подписями и шифрованием (и соответственно прикладных разработчиков) намного больше. В силу этого разработчикам прикладных программ настоятельно не рекомендуется лезть в криптографию самим. Вместо этого им предлагается брать от профильных разработчиков готовые программные модули и использовать их для выполнения криптографических операций. Такие модули называются криптопровайдерами. В рамках операционных систем реализованы и публично доступны стандарты взаимодействия прикладных программ и криптопровайдеров, определяющие конкретику — что и откуда вызывать. В частности, для Windows часто используется спецификация Microsoft CryptoAPI 2.0. И, если прикладной программе нужно поработать с криптографией, она согласно этой спецификации обращается к криптопровайдеру, который ей выполнит запрошенные операции.

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

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

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

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

Усиленную электронную подпись можно использовать не только для подписания электронных документов, но и для аутентификации на сайтах. С очень большой долей упрощения процесс аутентификации выглядит так. Когда пользователь заходит на сайт, сервер сайта отдаёт пользователю (точнее, интернет-браузеру на компьютере или другом устройстве) блок данных. Задача браузера — подписать этот блок данных закрытым ключом владельца сертификата (разумеется, с использованием криптопровайдера, который также должен иметься на устройстве) и отправить полученную электронную подпись обратно. На стороне сайта программа проверяет подпись и сертификат, как я здесь описывал (некоторые проверки могут быть исключены), и, если всё хорошо, то считает, что аутентификация пройдена, зашёл именно пользователь такой-то, можно с ним работать. Эта аутентификация реализуется в рамках универсальных протоколов безопасного сетевого соединения SSL и TLS. И криптопровайдер для такой аутентификации с использованием усиленной электронной подписи должен иметь поддержку работы с этими протоколами в операционной системе. Если, например, взять бесплатный российский криптопровайдер VipNet CSP от Инфотекса, то у него при выборочной установке в списке компонентов программы я видел компонент «Поддержка протокола SSL/TLS». И неопытные компьютерщики иногда его не устанавливали, что приводило к невозможности подключиться к тому же личному кабинету налогоплательщика с аутентификацией по электронной подписи.

Часто необходимо также, чтобы российские криптоалгоритмы поддерживались самой программой, в которой открывается сайт — то есть браузером. Здесь можно использовать, например, Яндекс-браузер или chromium-gost. За подробностями, что можно использовать, лучше обратиться к соответствующим страницам сайта, с которым предполагается работать.

Помимо этого, на подобных порталах нередко возникает необходимость обеспечить автоматическое (но, естественно, с одобрения пользователя) подписание электронных документов, сформированных на сайте. Встроенных функций для взаимодействия с криптопровайдерами, чтобы делать такие вещи, браузеры не содержат. Поэтому для этого используются браузерные дополнения или расширения (plug-ins или плагины), которые тоже необходимо установить на устройство, с которого предполагается работа на сайте. Таких плагинов существует довольно много от разных производителей; они имеют разные механизмы реализации и использования. В основном на государственных сайтах используются бесплатные плагины. Например, в Личном кабинете налогоплательщика используется КриптоПРО ЭЦП Browser plug-in, который можно скачать на сайте производителя. Портал Росстата использует уже другой плагин (если честно, не помню уже, какой, но на портале можно посмотреть). Конкретику, опять же, нужно смотреть в документации к конкретным сайтам.

Итоги и выводы

Закупка защищенных ключевых носителей оптом под свои юрлица или клиентов — плохая идея, если нет соответствующей лицензии ФСБ.

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

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

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

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

Заключение

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

Комментарии

19
  • Евгений Тимин

    Виктор, статья отличная, но лонгриды никто не дочитывает до конца уже лет 20. Может быть, разобьем эту статью на 5-6 более коротких?

    • Elly0077

      Всё, что хотел бы знать обычный пользователь и что ему было бы полезно знать, написано в абзаце Итоги и выводы 😀

    • Виктор Любезный

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

  • Fresh-rf.ru

    Ды вы милейший кому-то дипломную работу написали. По ЭЦП.

    • Виктор Любезный

      Хотите сказать, что у вас дипломная работа была аналогичного объёма и структуры, и руководитель допустил её до защиты? Ну-ну...

      • Ksuha13

        Ну, как минимум курсовую... для заочников 😂

        • Виктор Любезный

          Ну... даже в техникуме на очной, если мне склероз не изменяет, с нас требовали курсовую минимум на 20 страниц. Этот материал немного (буквально чуть-чуть) не дотянул. 😊