HMACアルゴリズムは、メッセージの整合性のキーベースの認証方式で 、そのセキュリティは、上の暗号化アルゴリズムのハッシュに基づいて構築されています。パケットのハッシュ演算が固定長の認証コードを形成することは、通信相手が鍵合意アルゴリズムを共有が必要です。認証コードをチェックすることで、メッセージの正当性を判断するために、当事者を伝えます。 HMACアルゴリズムは、暗号化、デジタル署名、メッセージの検証のために使用することができます 。(; HMACと非常にランダム塩ハッシュアルゴリズムのように感じる私は、HMACの暗号化は不可逆的、DES / AESとは異なり、この可逆暗号化と暗号化されている実際の状況で行うに感じます)
述べ:HMACキーはメッセージダイジェストを生成するための出力と、キー入力に、ハッシュメッセージ認証コード(ハッシュベースメッセージ認証コード)を関連HMAC計算ハッシュアルゴリズムを使用して、メッセージれます。
HMACアルゴリズムは、定義されました
それは、データによって確認された場合にHMACアルゴリズムは、データが変更された「チェック」、「チェックサム」アルゴリズムの実行です。送信データの前に、HMACアルゴリズムのブロックと双方が送信されるように、追加のデータ・ブロックの「要約」と呼ばれるものを生成するために、「ハッシュ化された」公開鍵を合意しました。データをさらにチェックを生成するために、HMACアルゴリズムを使用して、その宛先と要約に達すると、2つの数が一致する場合、そのデータは、任意の改竄が行われていない場合。それ以外の場合は、データが転送または保管中にいくつかの不純な動機の手と足で作られていることを意味します。
下記式で表されるHMACアルゴリズム定義:
HMAC(K、M)= H((K'⊕opad)|H((K'⊕ipad)|M))
ステップHMAC暗号化アルゴリズム
(1)0に追加されたか、鍵K Hは、鍵K後の文字列Bのワード長で処理して作成します Kは、120バイトのワード長である場合、B = 64のバイトが使用される、単語の長さが20 Kバイト、B = 64バイトである場合には0x00 44(例えば、次いでKは、0バイトの後に追加されます64バイトの文字列K後に生成されたH効果)
(2)前工程とiPadストリングワード長B XOR演算で生成されました。
(3)データは、第2の充填文字列の結果をストリーミングします。
(4)Hと第3のステップで生成されたデータストリーム。
(5)工程Bとワード長OPAD列XOR演算で生成されました。
(6)次に、第四のステップの結果は、第五のステップの結果に充填されます。
(7)Hと第6のステップでデータ・ストリームを生成し、出力最終結果。
図ではその例を示します。
HMACアルゴリズムの擬似コードの実装
function hmac (key, message) {
if
(length(key) > blocksize) {
key = hash(key)
// keys longer than blocksize are shortened
}
if
(length(key) < blocksize) {
// keys shorter than blocksize are zero-padded (where ∥ is concatenation)
key = key ∥ [
0x00
* (blocksize - length(key))]
// Where * is repetition.
}
o_pad = [
0x5c
* blocksize]
// Where blocksize is that of the underlying hash function
i_pad = [
0x36
* blocksize]
o_key_pad = o_pad ⊕ key
// Where ⊕ is exclusive or (XOR)
i_key_pad = i_pad ⊕ key
return
hash(o_key_pad ∥ hash(i_key_pad ∥ message))
// Where ∥ is concatenation
}
|
代表的なアプリケーションHMACアルゴリズム
典型的なアプリケーションHMACアルゴリズムは、「チャレンジ/レスポンス」(チャレンジ/レスポンス)の認証に使用され、以下のように、認証プロセスは次のとおり
(1)クライアントは、認証サーバに要求を送信します。
(2)サーバは乱数を生成し、クライアントへのネットワーク(これは挑戦である)を介して送信要求します。
(3)クライアントがサーバ(応答)への認証の証拠として、計算結果を得るために、独自のキー及びHMAC-SHA1と乱数を受信します。
(4)同時に、サーバは、サーバのデータベースに格納された乱数とクライアントキーを使用するクライアント・サーバの同一の演算結果が応答結果を返し、クライアントが考慮される場合には、HMAC-SHA1の計算であります正当なユーザー。
セキュリティHMACアルゴリズム
HMACアルゴリズムは、キーを紹介し、その安全性は、もはやハッシュアルゴリズムの使用に完全に依存していない、主に以下のセキュリティ保証があります。
(1)キーを使用して、第三者が知ることができない、双方が事前に合意したということです。それは上記の説明から分かるように、アプリケーション・プロセスは、第三者として違法情報のみ乱数としてHMAC「応答」と「チャレンジ」の結果として得ることができ、これらの二つのキーデータから見つけ出すことができなかった情報を傍受します。彼らは鍵を知らないので、あなたは偽の一貫した応答することはできません。
(2)アプリケーションHMACアルゴリズムでは、第三者が(あなたが知っていれば、構造を入力しないでください、あなたはサーバーへの出力を指示することができます)事前に出力を知ることはできません。
(3)それは一般的な暗号化「瞬間」の性質を持っていることを重要な違いがHMACアルゴリズムは、その認証は一度のみ有効ですが、暗号化アルゴリズムが壊れているの後、以前の暗号化の結果を復号化することができます。