Перейти к содержанию

libksba: ГОСТ в сертификатах и электронных документах

libksba — системный компонент НАЙС.ОС для распознавания сертификатов X.509 и криптографических сообщений CMS. В криптографической инфраструктуре он отвечает за правильное представление открытых ключей и подписей в документах, выпущенных с применением алгоритмов ГОСТ. Благодаря этому программные компоненты могут работать с сертификатами разных российских удостоверяющих центров, обмениваться подписанными документами и проверять криптографические атрибуты единым способом.

Почему этот уровень необходим

В сертификате хранятся не только ФИО и срок действия. Там содержатся идентификатор алгоритма, параметры эллиптической кривой, публичная часть ключа и подпись удостоверяющего центра. Все эти данные упакованы в строго определённом двоичном формате ASN.1/DER. ГОСТ отличается от обычного ECDSA как описанием параметров, так и порядком байтов в ключе и записи подписи. Нельзя подменять ГОСТ-ключ обычным EC-ключом, даже если длина похожа.

libksba выступает переводчиком криптографических форматов: читает структуру сертификата, определяет алгоритмы и выдаёт нормализованное представление ключа и подписи. Сами вычисления — математическая проверка подписи и операции с эллиптическими кривыми — выполняет libgcrypt. Пользователю не требуется разбираться в этих внутренних форматах, чтобы понимать, зачем две библиотеки используются совместно.

Компонент Назначение в НАЙС.ОС
libksba Сертификаты X.509, структуры CMS, алгоритмы, параметры и представление подписей
libgcrypt Математические криптографические операции с ключами и подписями
GnuPG / gpgsm Пользовательская работа с сертификатами и защищёнными сообщениями X.509/CMS
OpenSSL Отдельный комплект для ключей, сертификатов, TLS и криптографических приложений
GnuTLS Отдельная библиотека транспортной защиты TLS, в том числе с ГОСТ

Таким образом, поддержка ГОСТ в НАЙС.ОС реализуется на нескольких взаимодополняющих уровнях, а libksba обеспечивает совместимость именно на уровне структур электронных сертификатов и подписанных документов.

Какие ключи и подписи распознаются

  • ГОСТ Р 34.10-2001 — исторический стандарт подписи на эллиптических кривых, применявшийся с хэшированием ГОСТ Р 34.11-94.
  • ГОСТ Р 34.10-2012 с ключом 256 бит — современная схема подписи, обычно применяемая со Стрибог-256.
  • ГОСТ Р 34.10-2012 с ключом 512 бит — схема с увеличенной длиной ключа, применяемая со Стрибог-512.
  • Наборы параметров CryptoPro и ТК26 — различные зарегистрированные наборы эллиптических кривых, выбираемые по OID.

Внутренняя обработка учитывает разницу между открытым ключом, подписью и криптографическим набором параметров. Одинаковое слово «ГОСТ» не означает, что любые два сертификата автоматически совместимы: стороны должны понимать одни и те же форматы и параметры.

Где это используется

Проверка подписи УЦ. При открытии сертификата программа узнаёт алгоритм подписи и извлекает открытый ключ выдавшего сертификат УЦ. Затем криптографический модуль проверяет подпись сертификата.

Обмен сертификатами с организациями. Программное обеспечение получает DER/PEM-сертификат, извлекает зарегистрированные алгоритмы ГОСТ и передаёт их в механизм проверки. Внешнему приложению не нужно угадывать тип кривой по длине ключа.

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

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

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

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

Следующие страницы

Связанные практические руководства: OpenSSL — сертификаты и PKI, PKCS#12 и PFX, совместимость с КриптоПро.