Чем libksba НАЙС.ОС отличается от обычной сборки Linux¶
Зачем вообще нужна эта библиотека¶
Когда администратор получает .cer, .crt, .p7s или .p7m, внутри находится не «просто набор зашифрованных байтов». Это документ со структурой: кто выдал сертификат, кому он принадлежит, каким алгоритмом создана подпись, какие параметры шифрования использованы, где лежат данные, где — подпись, каким открытым ключом её проверять. Криптографическая библиотека может уметь вычислять «Стрибог» и проверять ГОСТ-подпись, но без правильного разбора этих структур она не знает, какие данные ей передать.
libksba отвечает за понимание формата, а не за секретный ключ и не за само шифрование. Она используется в инфраструктуре GnuPG для сертификатов X.509 и CMS. В стандартной сборке библиотека обрабатывает многочисленные общепринятые форматы, однако для российских алгоритмов важны дополнительные идентификаторы и особые правила кодирования. Адаптация НАЙС.ОС устраняет часть этих различий.
Сводное сравнение¶
| Возможность | Чистая upstream libksba | libksba с расширением НАЙС.ОС |
|---|---|---|
| Базовые X.509 и CMS | Да | Сохранены |
| Обычные сертификаты RSA/ECDSA | Да | Сохранены |
| ГОСТ 2001 в X.509 | Не реализован этим расширением upstream в рассматриваемых местах | Добавлены ГОСТ-OID и обработка SPKI |
| ГОСТ 2012/256 и 2012/512 | Нет соответствующей обработки из патча | Добавлены идентификаторы и форматы открытого ключа |
| Наборы параметров CryptoPro и ТК26 | Не обеспечиваются данным набором расширений | Предусмотрено распознавание и сопоставление распространённых наборов |
| Представление ГОСТ-подписи | Отсутствуют специальные правила из патча | Поддерживается формат фиксированной длины s || r |
| Подписи с OID открытого ключа в CMS | Не обеспечивается этим специальным дополнением | Предусмотрена совместимость с таким способом записи |
Вариант параметров подписи NULL |
Требует специального разбора | Учтён в разборе форматов, встречающихся в CMS |
| ГОСТ 28147-89 в CMS | Без новых специальных структур из патча | Разбор/запись параметров шифрования, IV и набора замен |
| Перенос ключа ГОСТ в CMS | Нет добавленного кодека r4 | Добавлены определённые варианты транспортного контейнера |
| Настоящая криптографическая операция | Выполняется другими компонентами | По-прежнему выполняется другими компонентами |
| Доверие к российским УЦ | Зависит от системной политики | По-прежнему зависит от политики доверия |
| Поддержка любого сертификата/контейнера КриптоПро | Не гарантируется | Также не гарантируется: важны формат и весь программный стек |
Формулировка «чистая upstream» принципиальна: сравниваются исходники указанной версии с конкретным патчем. Это не утверждение об отсутствии ГОСТ в каждом зарубежном или российском дистрибутиве Linux.
Какие отличия реально заметны обычному пользователю¶
1. Больше ГОСТ-сертификатов понимаются правильно¶
Сертификат с ГОСТ-ключом может иметь правильный владелец/издатель/срок действия, но нестандартный для привычного западного ПО алгоритм открытого ключа. С адаптацией НАЙС.ОС прикладная программа получает правильно описанный ключ, а не бессмысленную последовательность байтов. Это основа для его импорта, отображения, выбора и проверки подписи.
2. Учитывается порядок байтов российского ключа¶
У ГОСТ Р 34.10-2012 открытый ключ в сертификате представлен парой координат эллиптической кривой, записанных по правилам ГОСТ. В иных криптобиблиотеках те же координаты могут ожидаться в другом представлении. Преобразование выполняется автоматически на уровне библиотеки. Администратору не нужно переставлять байты сертификата вручную или «конвертировать ГОСТ в ECDSA» — такой конверсии в действительности нет.
3. Учитывается формат российской подписи¶
Подпись ГОСТ 2012/256 имеет 64 байта; 2012/512 — 128 байт. В X.509 они представлены двумя значениями в определённом порядке. Для проверки библиотеки требуется извлечь их корректно. Адаптация НАЙС.ОС учитывает порядок s || r, отличающийся от формата ECDSA, где распространена DER-последовательность двух целых чисел.
4. Поддерживаются определённые особенности документов КриптоПро¶
Встречаются CMS-файлы, в которых идентификатор алгоритма подписи указан в виде OID алгоритма открытого ключа, а алгоритм хэширования записан отдельно. Также встречаются параметры подписи NULL вместо отсутствующего значения. Патч распознаёт такие варианты формата, повышая вероятность успешного разбора реального документа.
Это совместимость форматов, а не свидетельство официальной сертификации, взаимозаменяемости с КриптоПро CSP или успешного обмена со всеми его продуктами.
5. Появляется обработка дополнительных полей CMS-конвертов¶
Зашифрованное CMS-сообщение содержит как зашифрованное содержимое, так и информацию о том, как получателю восстановить ключ содержимого. Адаптация дополняет libksba правилами для ГОСТ 28147-89, распознаёт IV, набор замен, данные переноса ключа, одноразовый публичный ключ и UKM в предусмотренных форматах. Это позволяет передать сведения дальше компоненту, выполняющему реальное расшифрование.
Почему это важно для корпоративной среды¶
- Обмен юридическими и организационными документами: можно диагностировать, почему один подписанный файл открывается, а другой нет.
- Архив документов: старые сертификаты ГОСТ 2001 и современные ГОСТ 2012 требуют разных режимов совместимости; библиотека содержит механизмы для обоих семейств.
- Почта S/MIME: приложения на базе GPGSM могут использовать единый механизм CMS, если поддержан весь криптографический маршрут.
- Системы документооборота: меньше нестандартных внешних преобразований сертификатов и подписи.
- Инфраструктура организации: у администратора появляется понятный состав системных компонентов и точки поиска ошибки.
Чего это расширение не добавляет¶
Оно не включает автоматически ГОСТ-TLS в Nginx, Firefox или системный TLS-стек; не делает ГОСТ-VPN; не создаёт доверие ко всем российским УЦ; не устанавливает CryptoPro CSP; не предоставляет закрытые ключи; не является PKCS#11-драйвером токена; не даёт лицензий или сертификатов ФСБ; не внедряет новые алгоритмы в ядро; не превращает обычный gpg (OpenPGP) в gpgsm (CMS).
Также нет основания говорить о всеобщей поддержке ГОСТ 34.10-94: этот старый конечнопольный алгоритм не тождественен ГОСТ 2001/2012 и рассматриваемое расширение ориентировано прежде всего на эллиптические ГОСТ-ключи.
Что именно поддерживает расширение НАЙС.ОС¶
В патче добавлены форматы для ключей ГОСТ 2001, ГОСТ 2012/256 и ГОСТ 2012/512; несколько наборов CryptoPro/ТК26; форматы подписей; CMS key transport и параметры содержимого ГОСТ 28147-89. Он не обещает универсальный декодер любых алгоритмов, любого EnvelopedData или любого vendor-specific профиля. Нераспознанный OID кривой иногда передаётся далее как числовая строка; это не означает, что вычислительная библиотека знает такую кривую.
См. ГОСТ-сертификаты, CMS-подписи, зашифрованные сообщения и матрицу совместимости.