Я пытаюсь взять HMAC AES файла с помощью openssl
программа командной строки на Linux. Я смотрел на страницы справочника, но не могу вполне выяснить, как успешно делают HMAC. Я могу зашифровать файл с помощью enc
команда с openssl
однако я, может казаться, не создаю HMAC. Шифрование похоже на следующее:
openssl enc -aes-256-cbc -in plaintext -out ciphertext
Любой совет или учебные руководства были бы замечательны
Вы можете спросить о CBC-MAC . Для этого, я думаю, вы просто зашифруете свое сообщение или файл с IV равным 0, а затем возьмете последний блок (16 байтов для AES256-cbc). Я нашел сообщение в блоге , в котором описывается, как это сделать с помощью OpenSSL:
openssl enc -e -aes-256-cbc -K 0123456789ABCDEF -iv 0000000000000000 < file | tail -c 16 | od -A n
-K
- это место, где вы указываете свой ключ, который, как сказано на странице вики, должен отличаться от того, который вы используете для зашифруйте файл, если вы его вообще шифруете. -iv
, очевидно, предоставляет нулевой IV, который является ключом для CBC-MAC. tail -c 16
предназначен для получения последнего блока AES256-cbc длиной 16 байтов. od
- это преобразование в шестнадцатеричный формат, что, по словам этого веб-сайта, является обычным явлением. В противном случае вместо od -A n
вы можете использовать base64
, если это более применимо, или полностью отключить его, чтобы иметь только необработанные байты. Вы не можете использовать AES HMAC для файла, потому что AES256-cbc - это блочный шифр, а не алгоритм хеширования. AES256-cbc предназначен для шифрования и дешифрования файла. HMAC предназначен для проверки целостности файла и требует хэш-алгоритма в его основе, такого как SHA-1 или MD5.
Вы пытаетесь подписать, подтвердить файл или зашифровать его? Чтобы подписать, ознакомьтесь с командой OpenSSL dgst и используйте простые HMAC, такие как MD5 или SHA-1, или сделайте все возможное и поставьте цифровую подпись с помощью DSS / DSA.
Кроме того, я считаю, что использование блочного шифра в качестве MAC называется EMAC , но OpenSSL не поддерживает EMAC, насколько мне известно. EMAC просто берет последний блок зашифрованного файла и шифрует его для создания MAC.