HMAC
出典: フリー百科事典『ウィキペディア(Wikipedia)』
HMAC (Hash-based Message Authentication Code) とは、メッセージ認証符号 (MAC; Message Authentication Code) の一つであり、秘密鍵とメッセージ(データ)とハッシュ関数をもとに計算される。
1997年2月、IBMのKrawczyk達により提唱され、RFC 2104として公開されている。 また、FIPS PUB 198にも採用されている。
概要
MACは認証及び改竄検出技術の核となるアルゴリズムである。 MAC値の算出時にHMACアルゴリズムの中で用いられるハッシュアルゴリズムは、MD5やSHA-1など任意の繰返し型ハッシュ関数が適用可能であり、それぞれHMAC-MD5、HMAC-SHA1などと呼ばれる。
HMACは次のように定義される:
- <math>HMAC_K(m) = h((K \oplus opad) \;||\; h((K \oplus ipad) \;||\; m)),</math>
ここで、"h" は繰返し型ハッシュ関数、"K" は秘密鍵で、もしハッシュ関数 "h" のブロック長より短い場合は "K" を先頭に寄せて末尾に0x00でパディングを行う。"m" は認証対象メッセージである。"||" は連結、"<math>\oplus</math>"は排他的論理和を表す。2つの定数 "ipad" と "opad" は、各々ハッシュ関数 "h" のブロック長と同じ長さの埋め草で、"ipad" = 0x363636...3636 と "opad" = 0x5c5c5c...5c5c と定義する。つまり、ハッシュ関数 "h" のブロック長が 512ビット(64オクテット[1])の場合ならば、埋め草の "ipad" と "opad" は、それぞれ64オクテットの 0x36 や 0x5c の連続である。
HMACにより算出された値はMAC値と呼ばれる。
脚注
- ↑ RFC 2104では、octetでなく、byteと書いてある。
参考文献
- Mihir Bellare, Ran Canetti and Hugo Krawczyk, "Keying Hash Functions for Message Authentication", CRYPTO'96, pp1–15, 1996.