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

Как работает встроенная ГОСТ-криптография

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

         Системные программы         Python / AF_ALG
             cryptsetup                 socket(AF_ALG)
                 |                           |
         device-mapper / dm-crypt             |
                 +-------------+-------------+
                               |
                      Linux Kernel Crypto API
                               |
         +---------------------+--------------------+
         |                     |                    |
   Блочные шифры          Хэш-функции         Шаблоны режимов
   Кузнечик, Магма        Стрибог, ГОСТ94     CBC/XTS/HMAC/CMAC
         +---------------------+--------------------+
                               |
                       Данные приложений

Почему ГОСТ встраивается в ядро

Встроенный «Кузнечик» доступен при инициализации ядра, ещё до запуска initramfs. Это особенно важно для защиты корневого раздела: в initramfs помещают средства открытия LUKS2 и необходимые драйверы хранения, а не копию самого криптоалгоритма.

Блочный алгоритм и режим

kuznyechik — 128-битный блочный шифр с 256-битным ключом. Для диска он используется через xts(kuznyechik), то есть шаблон XTS с двумя ключами. Для сообщений могут применяться cbc(kuznyechik), ctr(kuznyechik), cmac(kuznyechik). Это разные операции и разные свойства безопасности. Например XTS не аутентифицирует сектора, а CBC не защищает сообщение от подмены без отдельного MAC.

Шаблоны ядра способны создавать составной алгоритм при первом обращении; поэтому отсутствие xts(kuznyechik) в первоначальном /proc/crypto ещё не показывает его недоступность. Проверить запрос конкретного режима можно через AF_ALG.

Связь с OpenSSL

ГОСТ Provider OpenSSL — самостоятельная криптографическая реализация в пользовательском пространстве. Встроенный Kernel Crypto API не переключает TLS на ГОСТ и не меняет сертификаты веб-сервера. Но совместимые приложения могут напрямую вызывать алгоритмы ядра. Руководства по X.509 и TLS находятся в разделе OpenSSL.

Обновление

Бинарная реализация меняется вместе с образом ядра. До перезагрузки uname -r по-прежнему показывает старую загрузку. Сверяйте /boot/config-$(uname -r), /proc/crypto и версионированный файл /boot/KERNEL_GOST_README-$(uname -r).txt.