Стрибог, 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 'данные' и 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. Применение для контроля поставок¶
- Издатель подписывает файл закрытым ключом ГОСТ 34.10.
- Пользователь получает файл, сертификат/открытый ключ и подпись.
- Пользователь проверяет доверие к ключу и выполняет
openssl dgst -verify. - Независимая контрольная сумма помогает диагностировать ошибки скачивания, но не заменяет подпись.
Подробнее: подпись, алгоритмы, управление ключами.