openssl hmac использующий aes-256-cbc

Я пытаюсь взять HMAC AES файла с помощью openssl программа командной строки на Linux. Я смотрел на страницы справочника, но не могу вполне выяснить, как успешно делают HMAC. Я могу зашифровать файл с помощью enc команда с openssl однако я, может казаться, не создаю HMAC. Шифрование похоже на следующее:

openssl enc -aes-256-cbc -in plaintext -out ciphertext

Любой совет или учебные руководства были бы замечательны

5
задан Ryan 9 April 2010 в 22:06
поделиться

1 ответ

Вы можете спросить о 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.

9
ответ дан 13 December 2019 в 19:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: