Сертификат ЭП: для чего?
Сертификат электронной подписи: как открытый ключ получает владельца
Сертификат электронной подписи: как открытый ключ получает владельца
Ключ есть. А чей он?
В предыдущей статье мы дошли до важного результата, если все вычисления сошлись, программа может подтвердить:
Эта подпись соответствует этому документу и этому открытому ключу.
Но математика не знает фамилий. Она не умеет посмотреть паспорт, проверить ИНН организации или спросить: «Простите, а вы точно директор?»
Для криптографического алгоритма открытый ключ — просто набор чисел и из него нельзя понять, кому они принадлежат:
Ивану Иванову;
ООО «Ромашка»;
государственному органу;
серверу;
роботу-пылесосу, который решил заняться электронным документооборотом.
Чтобы связать открытый ключ с конкретным владельцем, используется сертификат ключа проверки электронной подписи.
Если открытый ключ — это средство проверки, то сертификат — его электронное удостоверение.
Сертификат — это не ключ и не подпись
Начнём с трёх понятий, которые часто смешивают.
Закрытый ключ
Секрет владельца, он используется для создания электронной подписи. Его нельзя публиковать или передавать посторонним.
Открытый ключ
Математически связан с закрытым, и используется для проверки подписи. Он не является секретом.
Сертификат
Электронный документ, который связывает открытый ключ с владельцем и содержит дополнительные сведения:
Кому принадлежит ключ,
Какой именно это ключ,
Кто подтвердил сведения,
Когда сертификат действует,
Для чего ключ разрешено использовать.
Сертификат не подписывает документы вместо владельца. Он не содержит закрытый ключ. И он не является самой электронной подписью документа. Упрощённо можно так описать роли:
Закрытый ключ — создаёт подпись
Открытый ключ — проверяет подпись
Сертификат — объясняет, чей это открытый ключ и почему этой связи можно доверять.
У каждого своя работа. Криптографический профсоюз распределил обязанности заранее.
Электронный паспорт — хорошая аналогия, но не идеальная
Сертификат часто сравнивают с паспортом.
Аналогия полезна:
Паспорт | Сертификат |
Содержит сведения о человеке | Содержит сведения о владельце |
Имеет номер | Имеет серийный или уникальный номер |
Выдан уполномоченным органом | Создан и подписан удостоверяющим центром |
Имеет срок действия | Имеет даты начала и окончания действия |
Помогает подтвердить личность | Помогает связать открытый ключ с владельцем |
Но есть различие: паспорт обычно предъявляет сам человек, а сертификат участвует в автоматической криптографической проверке.
Программа может:
прочитать открытый ключ;
определить владельца;
проверить подпись удостоверяющего центра;
проверить срок действия;
построить цепочку доверия;
проверить, не прекращено ли действие сертификата.
То есть сертификат — не просто красивая карточка с ФИО. Это структурированный электронный документ, рассчитанный на машинную проверку.
Что находится внутри сертификата
Большинство сертификатов открытых ключей строится на формате X.509. Внутри можно встретить следующие поля.
Версия
Например:
X.509 version 3
Третья версия поддерживает расширения, через которые задаются ограничения, назначения ключа и другие правила.
Серийный номер
Удостоверяющий центр присваивает сертификату уникальный номер в своей области выдачи. Он помогает однозначно ссылаться на сертификат. Например, когда нужно проверить статус:
Кто выдал сертификат? Какой у него серийный номер?
Одного ФИО недостаточно. У одного человека могут быть разные сертификаты. А у двух людей — одинаковые имя и фамилия.
Издатель
Поле:
Issuer
показывает, кто выпустил сертификат. Обычно это удостоверяющий центр. Например:
Издатель: Удостоверяющий центр «Главный Удостоверяющий Центр России»
Именно издатель подтверждает связь между владельцем и открытым ключом своей электронной подписью.
Владелец
Поле:
Subject
описывает лицо или объект, с которым связан открытый ключ.
Это может быть:
физическое лицо;
юридическое лицо;
информационная система;
сервер;
устройство;
удостоверяющий центр.
В российских сертификатах электронной подписи могут присутствовать сведения, позволяющие идентифицировать владельца в соответствии с требованиями законодательства и профиля сертификата.
Срок действия
Обычно задаются две даты:
Not Before Not After
То есть, сертификат считается действующим только в установленном интервале. Условный пример:
Начало действия: 01.09.2026 00:00 Окончание действия: 31.08.2027 23:59
Но окончание срока не означает, что все документы, подписанные раньше, автоматически превратились в тыкву. К этому мы вернёмся в статье о метках времени и долговременной проверке.
Открытый ключ
Одна из главных частей сертификата. Внутри находятся:
идентификатор алгоритма;
параметры;
открытый ключ владельца.
Для электронной подписи по ГОСТ это данные, необходимые для проверки подписи с использованием соответствующего алгоритма и набора параметров.
Алгоритм подписи сертификата
Сертификат сам тоже подписан. Поэтому внутри указывается алгоритм, которым издатель сформировал свою подпись. Получается интересная конструкция:
Сертификат владельца ↓ Подписан удостоверяющим центром ↓ Проверяется открытым ключом УЦ
А где взять сертификат УЦ? Вот здесь начинает расти цепочка доверия. Но не будем забегать вперёд. Корневой дуб ждёт следующую статью.
Расширения: мелкий шрифт, который умеет останавливать проверку
В сертификатах X.509 версии 3 есть расширения. Они уточняют:
для чего можно использовать ключ;
является ли владелец удостоверяющим центром;
где искать сведения об отзыве;
как строить цепочку;
какие политики применяются;
какие ограничения нужно учитывать.
Некоторые расширения могут быть помечены как критические.
Это означает:
Если программа не понимает это расширение, она не должна молча сделать вид, что всё хорошо.
Проверка должна учитывать его значение или завершиться ошибкой.
Криптография не любит галочку:
Я не читал условия, но согласен
Назначение ключа
Расширение Key Usage может указывать допустимые операции. Например:
цифровая подпись;
подписание сертификатов;
подписание списков отзыва;
другие криптографические назначения.
Открытый ключ математически остаётся открытым ключом. Но сертификат может ограничивать контекст его применения.
Является ли сертификат сертификатом УЦ
Расширение Basic Constraints помогает определить, может ли сертификат использоваться для выпуска других сертификатов. У обычного пользовательского сертификата ответ обычно «Нет», у сертификата удостоверяющего центра «Да». Это важно, иначе любой владелец обычного сертификата мог бы объявить себя новым удостоверяющим центром и начать выпускать сертификаты кому угодно.
Получилась бы не инфраструктура доверия, а кружок самовыдачи грамот.
Где проверять отзыв
Сертификат может содержать адреса:
списков отозванных сертификатов — CRL;
сервиса проверки статуса — OCSP.
Эти данные помогают узнать, не было ли действие сертификата прекращено раньше срока.
Подпись удостоверяющего центра: печать поверх всех полей
Самое важное в сертификате — не только его содержание, но и подпись издателя.
Упрощённо сертификат можно представить так:
Данные сертификата: Владелец Открытый ключ Срок действия Назначение Серийный номер Другие поля ↓ Электронная подпись удостоверяющего центра
Удостоверяющий центр подписывает не одну фамилию и не один открытый ключ.
Подписывается структура с основными полями сертификата.
Эту часть часто называют:
TBSCertificate
или:
To Be Signed Certificate
То есть:
часть сертификата, предназначенная для подписания.
Если после выпуска изменить:
имя владельца;
открытый ключ;
срок действия;
назначение;
серийный номер,
подпись удостоверяющего центра перестанет соответствовать данным.
Сертификат нельзя аккуратно открыть в редакторе, заменить фамилию и сохранить.
Технически байты изменить можно.
Но проверка скажет:
Подпись издателя не сходится.
Как появляется сертификат
Упрощённый процесс выглядит так.
Шаг 1. Создаётся ключевая пара
Случайность ↓ Закрытый ключ ↓ Открытый ключ
Закрытый ключ должен остаться под контролем владельца.
Шаг 2. Формируется запрос
В запрос включаются:
открытый ключ;
сведения о будущем владельце;
параметры алгоритмов;
дополнительные данные.
Часто используется запрос на сертификат. В разных системах формат и процесс могут отличаться.
Шаг 3. Подтверждается владение закрытым ключом
Удостоверяющему центру важно убедиться, что заявитель действительно контролирует закрытый ключ, соответствующий открытому.
Иначе можно было бы принести чужой открытый ключ и попросить:
Запишите, пожалуйста, что он мой.
Один из способов подтверждения — подписать запрос соответствующим закрытым ключом.
Удостоверяющий центр проверяет подпись открытым ключом из запроса.
Это называют подтверждением владения закрытым ключом.
Шаг 4. Проверяются сведения
Процедура зависит от вида сертификата и применимых правил.
Могут проверяться:
личность физического лица;
данные организации;
полномочия;
идентификаторы;
документы;
сведения из государственных систем.
В квалифицированной инфраструктуре требования определяются законодательством и правилами работы уполномоченных удостоверяющих центров.
Шаг 5. Удостоверяющий центр создаёт сертификат
В сертификат включаются:
Сведения о владельце
Открытый ключ
Срок действия
Алгоритмы
Назначения
Другие обязательные поля
Шаг 6. УЦ подписывает сертификат
Данные сертификата + Закрытый ключ УЦ ↓ Подпись сертификата
Теперь любой проверяющий, который доверяет ключу УЦ, может проверить, что данные сертификата не изменены и действительно подтверждены этим издателем.
А удостоверяющий центр точно знает, чей ключ?
Сертификат не возникает из одной математики. Он объединяет два мира.
Криптографический мир
Есть закрытый ключ Есть связанный открытый ключ Связь можно проверить математически
Организационный мир
Есть человек или организация Их сведения проверены установленным способом Открытый ключ связан с этим владельцем
Удостоверяющий центр выступает мостом:
Проверенная личность ↕ Сертификат ↕ Открытый ключ
Именно поэтому доверие к сертификату зависит не только от стойкости алгоритма.
Важны:
порядок идентификации;
правила выдачи;
защита ключей УЦ;
ведение реестров;
публикация статусов;
аудит и регулирование.
Красиво подписать ошибочные сведения всё ещё означает красиво подписать ошибочные сведения.
Криптография гарантирует целостность утверждения.
Но качество самого утверждения зависит от того, как его проверили до выпуска.
Что такое квалифицированный сертификат
В российской системе электронной подписи существует понятие квалифицированного сертификата ключа проверки электронной подписи. Он используется в инфраструктуре усиленной квалифицированной электронной подписи и создаётся в соответствии с требованиями законодательства. Квалифицированный сертификат содержит установленный набор сведений.
Среди них:
уникальный номер;
даты начала и окончания действия;
сведения, позволяющие идентифицировать владельца;
ключ проверки электронной подписи;
сведения об используемых средствах и алгоритмах;
данные об издателе;
ограничения и иные предусмотренные сведения.
Конкретный состав зависит от требований законодательства и применимого профиля. Квалифицированный сертификат создаётся средствами уполномоченного удостоверяющего центра и подписывается электронной подписью издателя. Важно:
Слово «квалифицированный» относится не к тому, насколько уверенно владелец нажимает кнопку «Подписать».
Это юридическая и технологическая категория с установленными требованиями.
Сертификат можно копировать?
Да. Сертификат содержит открытый ключ. Он предназначен для распространения и проверки.
Его можно:
приложить к подписи;
передать контрагенту;
опубликовать;
импортировать в систему проверки.
Копирование сертификата не даёт возможности подписывать документы. Для создания подписи нужен закрытый ключ. Упрощённо:
Скопировали сертификат Получили: открытый ключ сведения о владельце данные издателя Не получили: закрытый ключ
Но публиковать сертификаты всё равно нужно осознанно.
В них могут содержаться идентифицирующие сведения.
То, что данные не являются секретным ключом, не означает, что у них нет требований к обработке и распространению.
А где закрытый ключ?
Не в сертификате.
Это настолько важный факт, что повторим:
Сертификат электронной подписи не содержит закрытый ключ.
Он содержит открытый ключ.
Закрытый ключ хранится отдельно:
Токен Ключевой контейнер Аппаратный модуль Облачная инфраструктура
Если пользователь экспортировал сертификат в файл:
certificate.cer
он не сделал резервную копию закрытого ключа.
Такой файл обычно позволяет проверить подпись, но не создать новую.
И наоборот: ключевой контейнер может содержать закрытый ключ и требовать особой защиты.
Не стоит путать:
.cer .p7b .pfx контейнер закрытого ключа
по одному расширению без понимания содержимого. Некоторые форматы могут хранить только сертификаты. Другие — сертификат вместе с закрытым ключом, обычно под защитой пароля. Файлы бывают разные. Расширение — это подсказка, а не нотариус.
Почему сертификат имеет срок действия
Закрытый ключ не покрывается плесенью в полночь даты окончания. Срок сертификата нужен по другим причинам. За ограниченный период:
проще управлять актуальностью сведений;
можно регулярно заменять ключи;
уменьшается время использования одного закрытого ключа;
обновляются алгоритмы и требования;
пересматриваются полномочия и данные владельца.
Сертификат говорит:
Удостоверяющий центр подтверждает эту связь в течение установленного периода
После окончания срока новые операции с таким сертификатом обычно не должны рассматриваться так же, как операции в период его действия. Но старые подписи требуют отдельного анализа. Важно знать:
когда была создана подпись;
действовал ли сертификат в тот момент;
не был ли он отозван;
можно ли доверять времени;
сохранены ли данные для проверки.
Поэтому срок сертификата — не таймер самоуничтожения документов.
Просрочен и отозван — не одно и то же
Истёк срок
Наступила дата окончания:
Not After
Сертификат больше не находится в своём обычном периоде действия. Это ожидаемое событие.
Сертификат отозван или его действие прекращено
Возникло основание досрочно перестать считать сертификат действующим. Например:
закрытый ключ скомпрометирован;
изменились сведения;
владелец запросил прекращение;
возникло другое предусмотренное основание.
Это уже внеплановое событие. Сравним:
Истёк срок: Плановое окончание периода Отзыв или прекращение: Досрочное изменение статуса
Для проверки старой подписи важно учитывать не только текущий статус, но и момент подписания и правила конкретной инфраструктуры.
Можно ли самому выпустить сертификат
Технически — да. Можно создать ключевую пару и подписать собственный сертификат собственным же закрытым ключом. Получится самоподписанный сертификат.
Владелец: Я Издатель: Тоже я Подпись: Моя
Криптографически такой сертификат может быть совершенно корректным. Но он не создаёт доверие автоматически. Он говорит:
Я подтверждаю, что я — это я.
Для домашней лаборатории, внутренней системы или заранее согласованного доверия этого может быть достаточно. Для внешнего контрагента — не обязательно.
Проверяющая сторона должна заранее решить, доверяет ли она этому сертификату как якорю. Самоподписанный не означает поддельный. Но и автоматически доверенным он не становится.
Что проверяет программа в сертификате
Полная проверка зависит от политики и системы, но обычно учитываются:
Подпись издателя: действительно ли сертификат подписан заявленным УЦ?
Срок действия: попадает ли проверяемый момент в допустимый интервал?
Назначение ключа: разрешено ли использовать сертификат для нужной операции?
Ограничения: понятны ли критические расширения? Соблюдены ли правила?
Статус: не был ли сертификат отозван?
Цепочка доверия: Можно ли дойти от сертификата владельца до доверенного корневого сертификата?
Сам сертификат — только одна ступень. Доверие появляется не потому, что файл заканчивается на .cer. Нужно проверить всю конструкцию.
Частые заблуждения
«Есть сертификат — значит подпись верна»
Нет. Сначала нужно проверить саму подпись документа. Сертификат может быть корректным, а документ — изменённым.
«Подпись верна — значит сертификат действителен»
Не обязательно. Математическая подпись может соответствовать открытому ключу, но сертификат может быть:
просрочен;
отозван;
недоверен;
неподходящим по назначению.
«Сертификат содержит закрытый ключ»
Нет. Обычный сертификат содержит открытый ключ.
«Если сертификат скопировали, подпись украли»
Нет. Для создания подписи нужен закрытый ключ.
«Любой самоподписанный сертификат поддельный»
Нет. Он может быть математически корректным. Вопрос в том, доверяет ли ему проверяющая сторона.
«Сертификат доказывает, кто сидел за компьютером»
Не напрямую. Он связывает открытый ключ с владельцем в рамках правил выдачи. Фактическое использование закрытого ключа зависит от его хранения, контроля доступа и действий пользователя.
Главное
Открытый ключ сам по себе не содержит имени владельца. Он позволяет проверить математическую связь:
Документ + Подпись + Открытый ключ
Сертификат добавляет контекст:
Этот открытый ключ связан с этим владельцем Связь подтверждена этим издателем Сертификат действует в этом интервале Ключ предназначен для этих операций
Сертификат подписан удостоверяющим центром. Но теперь возникает новый вопрос:
Почему мы должны доверять самому удостоверяющему центру?
Если сертификат владельца проверяется ключом УЦ, сертификат УЦ тоже нужно откуда-то получить и проверить. Так появляется цепочка:
Сертификат владельца ↓ Промежуточный УЦ ↓ Корневой УЦ ↓ Доверенный якорь
В следующей статье: «Как работает PKI: удостоверяющие центры и цепочка доверия».