HMAC

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

HMAC (Hash-based Message Authentication Code) とは、メッセージ認証符号 (MAC; Message Authentication Code) の一つであり、秘密鍵とメッセージ(データ)とハッシュ関数をもとに計算される。

1997年2月、IBMのKrawczyk達により提唱され、RFC 2104として公開されている。 また、FIPS PUB 198にも採用されている。

概要[編集]

MACは認証及び改竄検出技術の核となるアルゴリズムである。 MAC値の算出時にHMACアルゴリズムの中で用いられるハッシュアルゴリズムは、MD5SHA-1など任意の繰返し型ハッシュ関数が適用可能であり、それぞれHMAC-MD5、HMAC-SHA1などと呼ばれる。

HMACは次のように定義される:

HMAC_K(m) = h((K \oplus opad) \;||\; h((K \oplus ipad) \;||\; m)),

ここで、"h" は繰返し型ハッシュ関数、"K" は秘密鍵で、もしハッシュ関数 "h" のブロック長より短い場合は "K" を先頭に寄せて末尾に0x00でパディングを行う。"m" は認証対象メッセージである。"||" は連結、"\oplus"は排他的論理和を表す。2つの定数 "ipad" と "opad" は、各々ハッシュ関数 "h" のブロック長と同じ長さの埋め草で、"ipad" = 0x363636...3636 と "opad" = 0x5c5c5c...5c5c と定義する。つまり、ハッシュ関数 "h" のブロック長が 512ビット(64オクテット[1])の場合ならば、埋め草の "ipad" と "opad" は、それぞれ64オクテットの 0x36 や 0x5c の連続である。

HMACにより算出された値はMAC値と呼ばれる。

脚注[編集]

  1. ^ RFC 2104では、octetでなく、byteと書いてある。

参考文献[編集]

  • Mihir Bellare, Ran Canetti and Hugo Krawczyk, "Keying Hash Functions for Message Authentication", CRYPTO'96, pp1–15, 1996.