Как работает встроенная ГОСТ-криптография¶
Встроенная криптография не является отдельной программой или демоном. Алгоритмы компонуются вместе с ядром, а для обращения к ним используются обычные системные интерфейсы.
Системные программы 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.