Как выглядит электронная подпись (ЭЦП, ЭП) на подписанном документе

Как выглядит электронная подпись (ЭЦП, ЭП) на подписанном документе Электронная цифровая подпись

Биометрия

Вот многие индусы не умеют писать. Тогда в дело идут усы и хвост «пальчики». «Подпись» документа 1952 года.

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

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

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

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

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

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

Глава вторая: ещё одна эп

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

По отработанному алгоритму идём в поисковую систему с запросом “тинькофф сертификат”, находим официальный сайт УЦ АО Тинькофф Банк. Тут нас встречает изобилие ссылок на корневые сертификаты, списки отозванных сертификатов и даже видеоинструкция по их установке.

Скачиваем “Цепочка корневых сертификатов УЦ АО Тинькофф Банк ГОСТ Р 34.10.2021”, на этот раз ссылка ведёт не на сторонний сервис, а на сайт банка. Формат файла P7B не очень известный, но открывается Windows без установки стороннего софта и показывает находящиеся в нём сертификаты.

Ставим оба, проверяем сертификат в полисе. Но нет, сертификат не является доверенным, т.к. система не может подтвердить поставщика сертификата. На сайте УЦ было 2 ссылки на 2 цепочки сертификатов, один для ГОСТ Р 34.10.2001, другой для ГОСТ Р 34.10.2021.

В новом файле формата P7B оказывается уже 3 файла сертификатов. Можно поставить все 3, однако стоит заметить, что сертификат “Головного удостоверяющего центра” мы поставили в первой главе из RAR архива ООО “ИТК”, они идентичны. А сертификат с не очень говорящим названием “УЦ 1 ИС ГУЦ” поставил КриптоПро CSP, т.к. галочка об установке корневых сертификатов была установлена по-умолчанию в его инсталляторе. Единственным новым является сертификат АО “Тинькофф Банк”, который мы и ставим.

После установки сертификатов из “Цепочка корневых сертификатов УЦ АО Тинькофф Банк ГОСТ Р 34.10.2001” путь в сертификате прорисовался и система радостно сообщила, что он является доверенным. Adobe Acrobat Reader DC также подтвердил, что подпись действительна.

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

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

Как выглядит усиленная электронная подпись на документах

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

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

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

Как подписать документ электронной подписью

Ваше СКЗИ добавляет в контекстное меню вашей операционной системы — Виндоус или Мак-ос — свой специальный раздел. Таким образом, можно подписать любой документ просто нажатием правой кнопки мыши. На сайте каждого СКЗИ можно найти подробную инструкцию, как подписывать документ.

Например, так работает процесс подписания с помощью программы «Крипто-АРМ»:

  1. Кликните правой кнопкой мыши по документу.
  2. Найдите пункт меню «Крипто-АРМ» и нажмите «Подписать».
  3. После этого запускается мастер создания электронной подписи, который подробно объяснит все дальнейшие шаги.
  4. В итоге рядом с документом появится новый файл документ.doc.sig — это и есть файл электронной подписи.
Запуск мастера создания электронной подписи с помощью «Крипто-АРМ» в Виндоус

В результате документ становится недоступным для изменения, а рядом с ним в папке появится файл подписи в формате документ.doc.sig.

Если у вас установлена СКЗИ и есть подпись, то подписать документ можно прямо в ворде

В «Гугл-докс» плагины для электронной подписи можно найти во вкладке «Дополнения».

Чтобы подписать документ в «Гугл-докс» с помощью плагина eSignGSA, найдите плагин в разделе «Дополнения» и установите его. Затем нажмите Start

Как получить эп сотруднику

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

Такие подписи будут выдаваться в УЦ, прошедших переаккредитацию. Также потребуется личный визит, предъявление паспорта и СНИЛС. Отличие от подписи руководителя — подпись будет без запрета на копирование или включение расширений.

Получить электронную подпись

В файле подписи будут указаны только ФИО физлица. Чтобы доказать правомочность своих действий от имени компании, нужна электронная доверенность (она же — машиночитаемая доверенность, МЧД).

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

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

Какие сведения содержатся в сертификате ключа проверки электронной подписи


В сертификате ключа проверки электронной подписи обязательно присутствуют следующие сведения:

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

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

Квалифицированный сертификат ключа проверки электронной подписи можно получить только в удостоверяющем центре, прошедшем аккредитацию Минкомсвязи. «Инфотекс Интернет Траст» — аккредитованный удостоверяющий центр.

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

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

  • Работодатель получает трудовой договор от физического лица.
  • Контрагенты заключают сделку в электронном виде вне системы ЭДО.
  • Заказчик принимает котировочные заявки от участников тендера на почту, а не через электронную торговую площадку.
  • Банк проверяет подпись инспектора ФНС на электронной выписке из ЕГРЮЛ и т.д.
Читайте также:  Как подписать ПДФ (PDF) файл электронной подписью (ЭЦП)

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

Получить электронную подпись

Закрытый ключ используется для создания подписи, а открытый — для проверки. Подробнее о видах подписи по федеральному закону от 06.04.2021 № 63-ФЗ «Об электронной подписи» можно прочитать в отдельной статье.

По своему типу усиленная электронная подпись может быть отсоединенной и присоединенной:

  • При создании присоединенной подписи формируется один файл, который содержит и саму подпись, и документ, для которого она была создана. Проверять нужно этот единый файл.
  • Отсоединенная подпись формируется в отдельном от подписываемого документа файле с расширением.sig. В этом случае нужно проверять оба документа: файл с электронной подписью и подписанный ею файл.

Успешная проверка подписи подтверждает следующее:

Какие средства проверки подписи использовать, участники ЭДО выбирают по своему усмотрению.

Печати

Скрепление документов печатью относится к дополнительным требованиям, которым должна соответствовать простая письменная форма сделки (статья 160 Гражданского кодекса Российской Федерации). Такие дополнительные требования могут предъявляться только в определенных законом, иными правовыми актами или соглашением сторон случаях.

Именная барельефная печать байвэнь, читается сверху вниз, справа налево: Е Хао Минь Инь (дословно «Печать Е Хаоминя»)Пинтадеры из Древней Мексики и Эквадора

С неолита и по настоящее время используются керамические штампы, называемые в археологии пинтадера (исп. pintadera, от pintar — писать красками, изображать). С их помощью наносили узоры на различные поверхности, в том числе, и на человеческое тело.

Оттиск печати Войска Донского, 1704 год (слева) и стандартизированная печать (кит. 公章) организаций КНР (справа).Государственная печать Ивана Грозного, XVI век (слева) и печать сосновой смолой на велени, на метке или «хвосте» английского акта 1638 года (справа).

Проверка: как проверить эп

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

  1. Выбрать подходящий раздел — интегрированная или отсоединяемая подпись.
  2. В появившуюся форму загрузить документ для проверки.
  3. Загрузить ЭП, обычно она имеет формат .p7s или .sig;
  4. Внизу страницы появится код, который нужно вписать в соответствующее поле. После этого можно нажать кнопку «Проверить».

В результате появятся данные о документе, если в нем не выполнялись изменения.

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

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

Просмотр сертификатов через криптопро

Как найти сертификат ЭЦП на компьютере через КриптоПРО (программа-дистрибутив, который используется для работы с электронными подписями)? Для этого необходимо:

  • открыть меню «Пуск»;
  • перейти на вкладку «Все программы», далее – «КриптоПРО»;
  • кликнуть на «Сертификаты».

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

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

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

Решение №2. подбор пин-кода и права администратора

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

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

  1. Перейти в панель управления токеном. Например, если используется носитель «Рутокен», то нужно перейти в Пуск — Панель управления — Панель управления «Рутокен» — вкладка «Администрирование».
  2. Ввести пин-код администратора. Стандартное значение устанавливает производитель: для «Рутокена» — 87654321, для Jacarta SE — 00000000 для PKI-части и 1234567890 для ГОСТ части. Если стандартное значение администратора не подошло, значит его сменили, и нужно вспоминать установленную комбинацию. На это есть десять попыток, потом токен окончательно заблокируется.
  3. Разблокировать пин-код токена. Для этого на вкладке «Администрирование» нажать «Разблокировать».

Также, если пин-код администратора известен, то можно сбросить попытки ввода другим способом — через КриптоПро CSP:

  1. Открыть КриптоПро CSP, перейти на вкладку «Оборудование» и нажать кнопку «Настроить типы носителей».
  2. Выбрать свой токен. Открыть его свойства и перейти в раздел «Информация».
  3. Разблокировать пин-код.

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

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

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

Удостоверяющие центры

Создает (выпускает) сертификаты специальный административный центр,
называемый удостоверяющим центром (УЦ) или центром сертификации (ЦС).

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

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

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

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

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

Взаимодействие пользователя с удостоверяющим центром происходит следующим образом:

  1. Пользователь создает ключевую пару (открытый и закрытый ключи).
  2. Пользователь отправляет в удостоверяющий центр запрос на
    сертификат, в который включает открытый ключ и всю необходимую
    информацию о себе и о ключах. Набор необходимых сведений определяется
    регламентом удостоверяющего центра, но всегда необходимо
    указывать имя владельца, назначение ключей, дату создания.
  3. Удостоверяющий центр получает запрос и проверяет его подлинность и
    корректность. Как именно это делается, определяется регламентом
    удостоверяющего центра.
  4. Если результат проверки запроса положительный, удостоверяющий
    центр создает сертификат на открытый ключ, подписывает его, заносит в
    свою базу данных и отправляет пользователю.
  5. Пользователь получает сертификат и устанавливает его у себя в
    системе.

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

Файлы сертификатов в проводнике

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

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

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

Ещё следует учесть, что для просмотра файлов сертификатов пользователь должен обладать правами администратора. Если же он вошел в систему как «Гость», то к системным папкам на диске С (или другом, где установлена сама система) он не сможет получить доступ.

Сам файл сертификата имеет расширение .cer или .csr (в зависимости от кодировки), занимает буквально несколько килобайт памяти. Точно такие же файлы используются в дистрибутивах Linux, в MacOS – это уже стандартизированный формат электронных подписей.

Часть 1. самоподписанный сертификат


Для начала рассмотрим вариант самоподписанного сертификата корневого уровня.

Читайте также:  Если компания меняет название или юридический адрес, или руководителя, нужно ли менять после этого ЭЦП?

Для упрощения задачи сгенерируем сертификат, который будет содержать только необходимые параметры:

Сделать это можно с помощью библиотеки Bouncy Castle, следующим образом:

private void button1_Click(object sender, EventArgs e)
        {            

            var KeyGenerate = new RsaKeyPairGenerator();

            KeyGenerate.Init(new KeyGenerationParameters(new SecureRandom(new CryptoApiRandomGenerator()), 1024));

            AsymmetricCipherKeyPair kp = KeyGenerate.GenerateKeyPair();

            var gen = new X509V3CertificateGenerator();

            var certName = new X509Name("CN=CA");
            var serialNo = new BigInteger("1",10);            

            gen.SetSerialNumber(serialNo);
            gen.SetSubjectDN(certName);            
            gen.SetIssuerDN(certName);
            gen.SetNotAfter(DateTime.Now.AddYears(100));
            gen.SetNotBefore(DateTime.Now);
            gen.SetSignatureAlgorithm("SHA1WITHRSA");            
            gen.SetPublicKey(kp.Public);     
            var myCert = gen.Generate(kp.Private);
            byte[] result = DotNetUtilities.ToX509Certificate(myCert).Export(X509ContentType.Cert);

            FileStream fs = new FileStream("D:\test1.crt", FileMode.CreateNew);
            fs.Write(result, 0, result.Length);
            fs.Flush();
            fs.Close();
        }

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

30 82 01 8F 30 81 F9 A0  03 02 01 02 02 01 01 30
0D 06 09 2A 86 48 86 F7  0D 01 01 05 05 00 30 0D
31 0B 30 09 06 03 55 04  03 0C 02 43 41 30 20 17
0D 31 33 30 39 31 35 31  35 33 35 30 32 5A 18 0F
32 31 31 33 30 39 32 32  31 35 33 35 30 32 5A 30
0D 31 0B 30 09 06 03 55  04 03 0C 02 43 41 30 81
9F 30 0D 06 09 2A 86 48  86 F7 0D 01 01 01 05 00
03 81 8D 00 30 81 89 02  81 81 00 8D 80 B5 8E 80
8E 94 D1 04 03 6A 45 1A  54 5E 7E EE 6D 0C CB 0B
82 03 F1 7D C9 6F ED 52  02 B2 08 C3 48 D1 24 70
C3 50 C2 1C 40 BC B5 9D  F8 E8 A8 41 16 7B 0B 34
1F 27 8D 32 2D 38 BA 18  A5 31 A9 E3 15 20 3D E4
0A DC D8 CD 42 B0 E3 66  53 85 21 7C 90 13 E9 F9
C9 26 5A F3 FF 8C A8 92  25 CD 23 08 69 F4 A2 F8
7B BF CD 45 E8 19 33 F1  AA E0 2B 92 31 22 34 60
27 2E D7 56 04 8B 1B 59  64 77 5F 02 03 01 00 01
30 0D 06 09 2A 86 48 86  F7 0D 01 01 05 05 00 03
81 81 00 0A 1C ED 77 F4  79 D5 EC 73 51 32 25 09
61 F7 00 C4 64 74 29 86  5B 67 F2 3D A9 39 34 6B
3C A9 92 B8 BF 07 13 0B  A0 9B DF 41 E2 8A F6 D3
17 53 E1 BA 7F C0 D0 BC  10 B7 9B 63 4F 06 D0 7B
AC C6 FB CE 95 F7 8A 72  AA 10 EA B0 D1 6D 74 69
5E 20 68 5D 1A 66 28 C5  59 33 43 DB EE DA 00 80
99 5E DD 17 AC 43 36 1E  D0 5B 06 0F 8C 6C 82 D3
BB 3E 2B A5 F1 94 FB 53  7B B0 54 22 6F F6 4C 18
1B 72 1C


Тот же самый сертификат, но уже открытый с помощью стандартных средств windows:

Имя сертификата	CA
Издатель	CA
Версия сертификата	3
Серийный номер	0x1
Недействителен до...	15.09.2021 15:35:00 GMT
Недействителен после...	22.09.2113 15:35:00 GMT
Цифровая подпись (SHA-1)	F9 AD 58 B5 50 3D F6 36 5E B8 89 D4 DC C8 5F CC 25 4B 93 A2
Цифровая подпись (SHA-256)	42 02 24 20 4E 8F 3A 3E 31 38 88 E5 C5 E7 C3 03 14 3A A6 52 EA 78 B9 77 42 5B 99 EB 4B BA 23 82
Открытый ключ(1024 битный)		Алгоритм открытого ключа	rsaEncryption
Модуль	
00: 8D 80 B5 8E 80 8E 94 D1 04 03 6A 45 1A 54 5E 7E
10: EE 6D 0C CB 0B 82 03 F1 7D C9 6F ED 52 02 B2 08
20: C3 48 D1 24 70 C3 50 C2 1C 40 BC B5 9D F8 E8 A8
30: 41 16 7B 0B 34 1F 27 8D 32 2D 38 BA 18 A5 31 A9
40: E3 15 20 3D E4 0A DC D8 CD 42 B0 E3 66 53 85 21
50: 7C 90 13 E9 F9 C9 26 5A F3 FF 8C A8 92 25 CD 23
60: 08 69 F4 A2 F8 7B BF CD 45 E8 19 33 F1 AA E0 2B
70: 92 31 22 34 60 27 2E D7 56 04 8B 1B 59 64 77 5F
Экспонента	01 00 01                                       

Подпись		Алгоритм подписи	sha1WithRSAEncryption
Подпись	
00: 0A 1C ED 77 F4 79 D5 EC 73 51 32 25 09 61 F7 00
10: C4 64 74 29 86 5B 67 F2 3D A9 39 34 6B 3C A9 92
20: B8 BF 07 13 0B A0 9B DF 41 E2 8A F6 D3 17 53 E1
30: BA 7F C0 D0 BC 10 B7 9B 63 4F 06 D0 7B AC C6 FB
40: CE 95 F7 8A 72 AA 10 EA B0 D1 6D 74 69 5E 20 68
50: 5D 1A 66 28 C5 59 33 43 DB EE DA 00 80 99 5E DD
60: 17 AC 43 36 1E D0 5B 06 0F 8C 6C 82 D3 BB 3E 2B
70: A5 F1 94 FB 53 7B B0 54 22 6F F6 4C 18 1B 72 1C

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

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

ASN.1 — стандарт записи, описывающий структуры данных для представления, кодирования, передачи и декодирования данных. Wikipedia

С помощью языка ASN.1 можно описывать сложные структуры, состоящие из данных различных типов. Типичный пример ASN.1-файла выглядит как-то так:

Однако ASN.1 разрабатывался в те светлые времена, когда «640 КБ должно было хватать каждому» и тратить место на такую громоздкую запись не было никакой возможности. Поэтому, в целях экономии места, а также более удобной обработки хранимой в ASN.1-форме информации, был разработан специальный метод кодирования — DER.

DER-кодировка описывается следующим правилом. Первым записывается байт, характеризующий тип данных, затем последовательность байтов хранящих сведения о длине данных и затем уже записываются сами данные.

К примеру, для кодировки целого числа INTEGER 65537 используется следующая форма: 0203 01 00 01.Здесь первый байт 02, определяет тип INTEGER (полную таблицу типов вы можете найти например тут), второй байт 03 показывает длину блока. А следующие за этим байты 01 00 01, являются шестнадцатеричной записью нашего числа 65537.

В нашем случае, для описание простейшего самоподписаного сертификата, достаточно 9 типов данных. Приведем таблицу кодирования для этих типов:

Зная как кодируется каждый из этих типов, мы можем попытаться распарсить наш *.crt файл.

3082 01 8F3081 F9A0030201 02 0201 01 30
0D0609 2A 86 48 86 F7 0D 01 01 05 0500300D
310B30090603 55 04 03 0C02 43 41 302017
0D 31 33 30 39 31 35 31 35 33 35 30 32 5A 180F
32 31 31 33 30 39 32 32 31 35 33 35 30 32 5A 30
0D310B30090603 55 04 03 0C02 43 41 3081
9F 300D0609 2A 86 48 86 F7 0D 01 01 01 0500
0381 8D 00 3081 890281 81 00 8D 80 B5 8E 80
8E 94 D1 04 03 6A 45 1A 54 5E 7E EE 6D 0C CB 0B
82 03 F1 7D C9 6F ED 52 02 B2 08 C3 48 D1 24 70
C3 50 C2 1C 40 BC B5 9D F8 E8 A8 41 16 7B 0B 34
1F 27 8D 32 2D 38 BA 18 A5 31 A9 E3 15 20 3D E4
0A DC D8 CD 42 B0 E3 66 53 85 21 7C 90 13 E9 F9
C9 26 5A F3 FF 8C A8 92 25 CD 23 08 69 F4 A2 F8
7B BF CD 45 E8 19 33 F1 AA E0 2B 92 31 22 34 60
27 2E D7 56 04 8B 1B 59 64 77 5F 0203 01 00 01
300D0609 2A 86 48 86 F7 0D 01 01 05 050003
81 81 00 0A 1C ED 77 F4 79 D5 EC 73 51 32 25 09
61 F7 00 C4 64 74 29 86 5B 67 F2 3D A9 39 34 6B
3C A9 92 B8 BF 07 13 0B A0 9B DF 41 E2 8A F6 D3
17 53 E1 BA 7F C0 D0 BC 10 B7 9B 63 4F 06 D0 7B
AC C6 FB CE 95 F7 8A 72 AA 10 EA B0 D1 6D 74 69
5E 20 68 5D 1A 66 28 C5 59 33 43 DB EE DA 00 80
99 5E DD 17 AC 43 36 1E D0 5B 06 0F 8C 6C 82 D3
BB 3E 2B A5 F1 94 FB 53 7B B0 54 22 6F F6 4C 18
1B 72 1C

Читайте также:  Как распечатать электронную цифровую подпись росреестра - Юрист Михайлов

Преобразуя байты-идентификаторы типов и убирая байты описывающие длину блоков получим следующую структуру:

SEQUENCE(3 elem)
	SEQUENCE(7 elem)
		[0](1 elem)
			INTEGER 2
		INTEGER 1
		SEQUENCE(2 elem)
			OBJECT IDENTIFIER 1.2.840.113549.1.1.5
			NULL
		SEQUENCE(1 elem)
			SET(1 elem)
				SEQUENCE(2 elem)
					OBJECT IDENTIFIER 2.5.4.3
					UTF8String CA
		SEQUENCE(2 elem)
			UTCTime 13-09-15 15:35:02 UTC
			GeneralizedTime 2113-09-22 15:35:02 UTC
		SEQUENCE(1 elem)
			SET(1 elem)
				SEQUENCE(2 elem)
					OBJECT IDENTIFIER 2.5.4.3
					UTF8String CA
		SEQUENCE(2 elem)
			SEQUENCE(2 elem)
				OBJECT IDENTIFIER 1.2.840.113549.1.1.1
				NULL
			BIT STRING(1 elem)
				SEQUENCE(2 elem)
					INTEGER 00: 8D 80 B5 8E 80 8E 94 D1 04 03 6A 45 1A 54 5E 7E
						        EE 6D 0C CB 0B 82 03 F1 7D C9 6F ED 52 02 B2 08
						        C3 48 D1 24 70 C3 50 C2 1C 40 BC B5 9D F8 E8 A8
						        41 16 7B 0B 34 1F 27 8D 32 2D 38 BA 18 A5 31 A9
						        E3 15 20 3D E4 0A DC D8 CD 42 B0 E3 66 53 85 21
						        7C 90 13 E9 F9 C9 26 5A F3 FF 8C A8 92 25 CD 23
						        08 69 F4 A2 F8 7B BF CD 45 E8 19 33 F1 AA E0 2B
						        92 31 22 34 60 27 2E D7 56 04 8B 1B 59 64 77 5F
					INTEGER 65537
		SEQUENCE(2 elem)
			OBJECT IDENTIFIER 1.2.840.113549.1.1.5
			NULL
	BIT STRING 00: 0A 1C ED 77 F4 79 D5 EC 73 51 32 25 09 61 F7 00
		           C4 64 74 29 86 5B 67 F2 3D A9 39 34 6B 3C A9 92
		           B8 BF 07 13 0B A0 9B DF 41 E2 8A F6 D3 17 53 E1
		           BA 7F C0 D0 BC 10 B7 9B 63 4F 06 D0 7B AC C6 FB
		           CE 95 F7 8A 72 AA 10 EA B0 D1 6D 74 69 5E 20 68
		           5D 1A 66 28 C5 59 33 43 DB EE DA 00 80 99 5E DD
		           17 AC 43 36 1E D0 5B 06 0F 8C 6C 82 D3 BB 3E 2B
		           A5 F1 94 FB 53 7B B0 54 22 6F F6 4C 18 1B 72 1C

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

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

	SEQUENCE(7 elem)
		[0](1 elem)
			INTEGER 2
		INTEGER 1
		SEQUENCE(2 elem)
			OBJECT IDENTIFIER 1.2.840.113549.1.1.5
			NULL
		SEQUENCE(1 elem)
			SET(1 elem)
				SEQUENCE(2 elem)
					OBJECT IDENTIFIER 2.5.4.3
					UTF8String CA
		SEQUENCE(2 elem)
			UTCTime 13-09-15 15:35:02 UTC
			GeneralizedTime 2113-09-22 15:35:02 UTC
		SEQUENCE(1 elem)
			SET(1 elem)
				SEQUENCE(2 elem)
					OBJECT IDENTIFIER 2.5.4.3
					UTF8String CA
		SEQUENCE(2 elem)
			SEQUENCE(2 elem)
				OBJECT IDENTIFIER 1.2.840.113549.1.1.1
				NULL
			BIT STRING(1 elem)
				SEQUENCE(2 elem)
					INTEGER 00: 8D 80 B5 8E 80 8E 94 D1 04 03 6A 45 1A 54 5E 7E
						        EE 6D 0C CB 0B 82 03 F1 7D C9 6F ED 52 02 B2 08
						        C3 48 D1 24 70 C3 50 C2 1C 40 BC B5 9D F8 E8 A8
						        41 16 7B 0B 34 1F 27 8D 32 2D 38 BA 18 A5 31 A9
						        E3 15 20 3D E4 0A DC D8 CD 42 B0 E3 66 53 85 21
						        7C 90 13 E9 F9 C9 26 5A F3 FF 8C A8 92 25 CD 23
						        08 69 F4 A2 F8 7B BF CD 45 E8 19 33 F1 AA E0 2B
						        92 31 22 34 60 27 2E D7 56 04 8B 1B 59 64 77 5F
					INTEGER 65537


Т.о. если перед вами будет стоять задача проверить ЭЦП x.509 сертификата, то для этого сперва необходимо извлечь TBS-сертификат.

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

Электронная цифровая подпись

В 1976 году Уитфилдом Диффи и Мартином Хеллманом было впервые предложено понятие «электронная цифровая подпись», хотя они всего лишь предполагали, что схемы ЭЦП могут существовать («New Directions in Cryptography»)

В 1977 году Рональд Ривест, Ади Шамир и Леонард Адлеман разработали криптографический алгоритм RSA, который без дополнительных модификаций можно использовать для создания примитивных цифровых подписей (

После RSA были разработаны другие ЭЦП, такие, как алгоритмы цифровой подписи Рабина (GHR, Secure Hash-and-Sign Signatures Without the Random Oracle), Меркле.

В 1984 году Шафи Гольдвассер, Сильвио Микали и Рональд Ривест первыми строго определили требования безопасности к алгоритмам цифровой подписи. Ими были описаны модели атак на алгоритмы ЭЦП, а также предложена схема GMR (доказуемо-стойкую), отвечающая описанным требованиям (

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

Существует ряд причин, по которым действие сертификата бывает необходимо
прекратить до окончания его срока действия.

Такими причинами, в частности, могут быть:

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

В таких ситуациях удостоверяющий центр отзывает соответствующий
сертификат.

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

Удостоверяющий центр отзывает соответствующий сертификат, т.е. заносит
его в так называемый список отзыва сертификатов (CRL — Certificate
Revocation List). Все сертификаты, числящиеся в списке отзыва
сертификатов, недействительны. Список отзыва сертификатов доводится до сведения всех пользователей в соответствии с регламентом удостоверяющего центра.

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

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

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

Оцените статью
ЭЦП Эксперт
Добавить комментарий