HMAC 【Hash-based Message Authentication Code】
概要
HMAC(Hash-based Message Authentication Code)とは、二者間でメッセージを送受信する際に、送信者の認証と本文の改竄検知が可能なメッセージ認証コード(MAC)の一つ。本文と共有鍵を元にハッシュ関数によって算出される。送信者はメッセージ本文と暗号鍵からMAC値を算出して本文と共に送信する。受信者はあらかじめ共有しておいた暗号鍵と受信した本文から同じようにMAC値を算出する。これが受信メッセージに添付された符号に等しければ、送信者は暗号鍵を知っている本人であり、かつ、伝送途上で改竄されていないことを確認できる。
具体的には、まず何らかのハッシュ関数を用いて、暗号鍵と定数 “3636…36”(16進数)の排他的論理和(XOR)にメッセージ本文を連結したものからハッシュ値を算出する。これを、暗号鍵と定数 “5C5C…5C”(16進数)のXORに連結し、再度ハッシュ値を算出する。これがMAC値となる。
ハッシュ関数には反復型の暗号学的ハッシュ関数ならば任意のものを利用できる。MD5を用いたものを「HMAC-MD5」、SHA-1を用いたものを「HMAC-SHA1」、SHA-2のSHA-256を用いたものを「HMAC-SHA256」というように呼ぶ。。
(2020.6.2更新)