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

Стрибог, gostsum, HMAC и контроль целостности

Канонический источник: Стандартные свойства Стрибога и HMAC описаны в Стрибог-256, Стрибог-512 и HMAC-Стрибог. Здесь сохранены команды OpenSSL, не повторяется нормативная теория.

Хэширование вычисляет отпечаток файла. ГОСТ Р 34.11-2012 («Стрибог») даёт выход длиной 256 или 512 бит. Хэш сам по себе не подтверждает личность отправителя: для аутентификации используют цифровую подпись или MAC с секретным ключом.

1. Стрибог-256 и Стрибог-512

printf 'NiceOS GOST\n' > message.txt
openssl dgst -md_gost12_256 message.txt
openssl dgst -md_gost12_512 message.txt

Разные алгоритмы дают разные отпечатки. Повторное вычисление на неизменном файле возвращает тот же результат.

2. Хэширование потока

printf 'данные' | openssl dgst -md_gost12_256
cat message.txt | openssl dgst -md_gost12_512

Обращайте внимание на перевод строки: printf 'данные' и printf 'данные\n' передают разные байты.

3. Утилиты НАЙС.ОС

command -v gostsum gost12sum
printf 'file content\n' > sample.txt
gost12sum sample.txt
gost12sum --help

Для выбора режима вычисления и формата контрольной суммы используйте справку именно установленной версии gost12sum. Вывод разных реализаций может различаться порядком байтов и оформлением; для обмена контрольными суммами фиксируйте эталонный формат.

4. HMAC на основе Стрибог

Симметричный MAC требует общего секретного ключа. Сформируем демонстрационный ключ безопасной случайной последовательностью:

umask 077
openssl rand -hex 32 > hmac-key.hex
KEYHEX=$(cat hmac-key.hex)
openssl dgst -md_gost12_256 -mac HMAC \
  -macopt hexkey:"$KEYHEX" message.txt
unset KEYHEX

Здесь ключ временно оказывается в аргументах процесса; упражнение подходит для закрытого стенда. Для промышленной обработки секретов применяйте API с безопасной передачей ключевого материала, аппаратные средства или специализированный ключевой сервис.

5. Проверить неизменность контрольной суммы

openssl dgst -md_gost12_256 message.txt > digest-before.txt
printf 'x' >> message.txt
openssl dgst -md_gost12_256 message.txt > digest-after.txt
cmp digest-before.txt digest-after.txt || echo 'Хэш изменился'

При выполнении этих команд не подменяйте цифровую подпись простой контрольной суммой в сценариях, требующих подтверждения отправителя.

6. MAC и OMAC: различия

HMAC строится на хэш-функции. OMAC/CMAC — механизм имитовставки, основанный на блочном шифре. В реализации ГОСТ применяются разные варианты MAC для исторического ГОСТ 28147-89 и современных шифров. Указывайте не только слово MAC, но и алгоритм, длину ключа, режим и формат выхода.

7. Применение для контроля поставок

  1. Издатель подписывает файл закрытым ключом ГОСТ 34.10.
  2. Пользователь получает файл, сертификат/открытый ключ и подпись.
  3. Пользователь проверяет доверие к ключу и выполняет openssl dgst -verify.
  4. Независимая контрольная сумма помогает диагностировать ошибки скачивания, но не заменяет подпись.

Подробнее: подпись, алгоритмы, управление ключами.