5

opensslLinux でコマンド ライン プログラムを使用して、ファイルの AES HMAC を取得しようとしています。man ページを見てきましたが、HMAC の作成方法がよくわかりません。encコマンドを使用してファイルを暗号化できopensslますが、HMAC を作成できないようです。暗号化は次のようになります。

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

アドバイスやチュートリアルは素晴らしいでしょう

4

2 に答える 2

9

CBC-MACについて尋ねているかもしれません。そのためには、メッセージまたはファイルを IV 0 で暗号化し、最後のブロック (AES256-cbc の場合は 16 バイト) を取るだけだと思います。 OpenSSL でこれを行う方法を説明するブログ投稿を見つけました。

openssl enc -e -aes-256-cbc -K 0123456789ABCDEF -iv 0000000000000000 < file | tail -c 16 | od -A n
  • -Kキーを提供する場所です。wikiページでは、ファイルを暗号化する場合、ファイルの暗号化に使用しているものとは異なるはずです。
  • -iv明らかに、CBC-MAC の鍵となるすべてゼロの IV を提供します。
  • これtail -c 16は、16 バイト長の最後の AES256-cbc ブロックを取得することです。
  • odそれを16進数に変換することです。これは、そのWebサイトが一般的であると言っています。それ以外の場合は、それがより適切な場合に実行するか、完全にオフにして生のバイトだけにすることがod -A nできます。base64

AES256-cbc はハッシュ アルゴリズムではなくブロック暗号であるため、ファイルの AES HMAC を取得することはできません。AES256-cbc は、ファイルを暗号化および復号化するためのものです。HMAC はファイルの整合性を検証するためのもので、SHA-1 や MD5 などのハッシュ アルゴリズムがコアに必要です。

ファイルの署名または検証、または暗号化を試みていますか? 署名するには、 OpenSSL dgstコマンドを確認して、MD5 や SHA-1 などの単純な HMAC を使用するか、DSS/DSA を使用してデジタル署名を実行します。

また、MAC としてブロック暗号を使用することはEMACと呼ばれると思いますが、OpenSSL は私の知る限り EMAC を行いません。EMAC は、暗号化されたファイルの最後のブロックを取得し、それを暗号化して MAC を作成します。

于 2010-04-09T22:47:08.570 に答える