UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【暗号化方式】HMAC-SHA512

とあるAPIHMAC-SHA512 でメッセージ認証を行うサービスがあった

HMAC-SHA512がなんなのか知らなかったので調べた

HMACとは

HMACは一方向ハッシュ関数を用いてメッセージ認証コードを構成する手法(RFC2104)

HMACのHは、Hashを意味する

HMACでは、強い一方向ハッシュ関数なら何でもHMACに用いることができる

つまり、SHA512をHMACをHMAC-SHA512と呼ぶ

HMACの手順

①鍵へのパディング

鍵がSHA512のブロック長よりも短かったら、SHA512のブロック長になるまで、鍵の後に0をパディングする

もしも鍵がブロック長よりも長かったら、SHA512で鍵のハッシュ値を求め、そのハッシュ値をあらためてHMACの鍵とする

②パディングした鍵とipadのOXR

パディングした鍵と、ipadと呼ばれるビット列定数(0x363636...3636)のXORをとる

③メッセージとの結合

②のうしろにメッセージを結合する

ハッシュ値の計算

③をSHA512でハッシュ値にする

⑤パディングした鍵とopadのXOR

パディングした値とopadと呼ばれるビット列定数(0x5c5c5c...5c5c)のXORをとる

ハッシュ値との結合

⑤のうしろに、④のハッシュ値を結合する

ハッシュ値の計算

⑥をSHA512でハッシュ値を計算する

このハッシュ値が目的のMAC値になる