Open SSL の -hmac フラグの説明

Open SSL の -hmac フラグの説明

Binance で解凍しようとしていた Unix 用の次のコマンドを見つけました。こちらをご覧ください:binance-exchange のドキュメント

(セクション: POST /api/v1/order の SIGNED エンドポイントの例)

openssl dgst -sha256 -hmac

私が理解しているのは、ダイジェストを生成するための openssl コマンドの呼び出しであり、ダイジェストは標準仕様で合意されている sha256 形式になるということです。私が理解できないのはフラグです-hmac。フラグとは何ですか。数学的なレベルでは何をしますか。

問題解決のための私の試み:

と で Google 検索をしてみましたopenssl -hmacが、openssl dgst -hmac上位 10 件の結果は役に立ちませんでした。そのため、より経験豊富なユーザーに尋ねたほうがよいと思います。

アップデート:

このフラグはこれらのドキュメントでは言及されていません:参考:そして、私はそれが暗号化の目的を持っていないかもしれないと信じ始めています。ただし、現時点では確信はありません。

この質問で言及されている旗に似たものを見つけました:https://stackoverflow.com/questions/7285059/hmac-sha1-in-bash

答え1

HMACは鍵付きハッシュとも呼ばれます。したがって、署名生成時に使用したのと同じ鍵を持っている場合にのみ、検証中に同じハッシュを生成できます。MACの結果は、認証タグ

HMACは、内部的に使用されるハッシュ(この場合はSHA-256)への2回の呼び出しを使用する特別な構造であり、他のものは使用しません。暗号プリミティブしたがって、それは特定のモードハッシュ自体の。そのため、dgst

コードにキーデータが欠けていますが、これはもちろんキー付きハッシュを作成するために必要です。これは の後に提示する必要があります-hmac。残念ながら、opensslキーのバイナリ形式が必要です。詳細については、OpenSSLメーリングリストでのこの古い会話

編集#1:もう少し深く掘り下げて、キーを16進数で指定したい場合は、次のような行を使用できます。

echo -n "Hello world!" | openssl dgst -sha256 -mac hmac -macopt hexkey:01020304

関数の出力はハッシュの2回目の実行の出力なので、ハッシュ/HMAC結果のサイズだけを見ると単なるSHA-256と区別がつきません。もちろん中身はデータ(またはキーとデータを連結したもの)をハッシュしただけの場合とは全く異なります。


編集#2:ただし、キーを指定していないため、実際にはHMACはスキップされ、SHA-256が使用されます。これはバグとして報告されています。ここ

答え2

iOS (または Mac OS) をお使いの方、いじくり回すのに疲れた方のために、私が書いたものです。

https://apps.apple.com/it/app/hmac-sha256generator/id6448465719?l=en

関連情報