HMAC

出典: フリー百科事典『ウィキペディア(Wikipedia)』

HMAC(Keyed-Hashing for Message Authentication code)とは、MAC(Message Authentication Code)の一つで、ハッシュ関数を使って秘密鍵と組み合わせて計算するMACである。

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" は秘密鍵で、ハッシュ関数のブロックサイズより短い場合は0でパディングを行う。"m" は認証対象メッセージである。"||" は連結、"\oplus"は排他的論理和を表す。2つの定数 "ipad" と "opad" は、各々ブロック長サイズで、"ipad" = 0x363636...3636 と "opad" = 0x5c5c5c...5c5c と定義する。つまり、ハッシュ関数のブロック長が 512bit(64octet)の場合ならば、"ipad" と "opad" は、それぞれ64個の 0x36 や 0x5c の連続である。

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

[編集] 参考文献

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