dackdive's blog

新米webエンジニアによる技術ブログ。JavaScript(React), Salesforce, Python など

HMACについて調べてみた

過去の記事Basic認証とDigest認証、MD5って何?って話をまとめたんですが
その延長でHMACという認証方式(?)について学ぶ機会があったのでメモ。

HMACとは

Hash-Based Message Authentication Codeの略で、
メッセージ認証符号(MAC; Message Authentication Code)の1つ。
メッセージ認証符号はメッセージ認証コードとも呼ばれている。

メッセージを送受信する際に相手が成りすましでないかとか、途中で改竄されていないかどうかを調べることができる。

そのために、送受信者の間で「秘密鍵」と呼ばれる第三者が知らないデータを使用する。

使うもの

  1. 秘密鍵(または共通鍵とも呼ばれていたり)
  2. メッセージ(データ)
  3. ハッシュ関数

メッセージ本体と秘密鍵を一定の規則に従って組み合わせハッシュ関数に与え、ハッシュ値を計算する。
生成したハッシュ値MACと呼ぶ。

なぜ、HMACか?(Digest認証との違い)

きちんと理解してないんですが、
MD5だと任意のハッシュ値から別のハッシュ値を算出することができるらしい。
このあたりリファレンス読んで勉強したい。

リファレンス

HMAC - Wikipedia

生兵法は怪我の元 (ハッシュ関数と HMAC) - まちゅダイアリー(2006-05-07)

Kazuho@Cybozu Labs: Hash ≠ MAC