HMACのソースを表示
←
HMAC
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
[[File:SHAhmac.svg|リンク=https://en.wikipedia.org/wiki/File:SHAhmac.svg|サムネイル|HMAC-SHA1の生成]] '''HMAC''' ('''H'''ash-based '''M'''essage '''A'''uthentication '''C'''ode または keyed-'''H'''ash '''M'''essage '''A'''uthentication '''C'''ode) とは、[[メッセージ認証符号]] (MAC; Message Authentication Code) の一つであり、[[秘密鍵]]とメッセージ(データ)と[[ハッシュ関数]]をもとに計算される。 1997年2月、IBMのKrawczykらにより提唱され、{{IETF RFC|2104}}<nowiki/>として公開されている。また、FIPS PUB 198にも採用されている。 == 概要 == MACは認証及び改竄検出技術の核となるアルゴリズムである。HMACアルゴリズムは、MAC値(タグ)の算出に[[暗号学的ハッシュ関数]]を用いる。ハッシュ関数としては、[[SHA-2]]や[[SHA-3]]など任意の繰返し型ハッシュ関数を適用可能であり、ハッシュ関数Xを用いるHMACは、HMAC-Xと呼ばれる。例えば、SHA256を用いた場合にはHMAC-SHA256となる。 HMACのMAC値(タグ)の長さは、利用されるハッシュ関数の出力長と等しい。例えばHMAC-SHA256であればタグは256ビットである。 他のMACと同様に、HMACは暗号化機能は持たない。タグはメッセージ(あるいは暗号化したメッセージでもよい)と共に送信される。秘密鍵を共有している受信者は、受け取ったメッセージと秘密鍵からHMACアルゴリズムを用いてMAC値を再計算し、送られてきたタグと等しいかどうかをチェックすることで、受け取ったメッセージが同じ鍵を共有している者から送られてきたことを確認できる。 == 定義 == HMACは次のように定義される: : <math>\mathit{HMAC}_K(m) = h \left( (K \oplus opad) \;||\; h((K \oplus ipad) \;||\; m) \right).</math> ここで、 <math>h</math> は繰返し型ハッシュ関数、<math>K</math> は秘密鍵、<math>m</math> は認証対象のメッセージ、<math>ipad</math> と <math>opad</math> は定数パディング(具体的には[[16進数]]で <math>ipad= \textrm{0x363636...3636}, opad=\textrm{0x5c5c5c...5c5c}</math>)、"<math>||</math>"はビット列の連結、"<math>\oplus</math>"は[[排他的論理和]]を表す。繰り返し型ハッシュ関数は、任意長の入力を固定長のブロックに分割してから、ブロック毎に[[圧縮関数]]で処理することでハッシュ値を求める。例えば、SHA-256では1ブロックは512ビットである。HMACでは、<math>(K \oplus opad)</math> と <math>(K \oplus ipad)</math> がちょうど1ブロックとなるように、秘密鍵と定数パディングの長さが調整される。もし秘密鍵 <math>K</math> が1ブロックより短い場合は、 <math>K</math> を先頭に寄せて末尾に0x00を必要なだけ追加してブロック長にする。また、定数パディングはちょうど1ブロックになるように0x5cあるいは0x36を繰り返す。例えば、ハッシュ関数のブロック長が 512ビット(64オクテット<ref>{{IETF RFC|2104}}<nowiki/>では、octetでなく、byteと書いてある。</ref>)ならば、ipad と opad は、それぞれ64オクテットの 0x36 や 0x5c の連続である。 == 脚注 == <references /> == 参考文献 == * Mihir Bellare, Ran Canetti and Hugo Krawczyk, "Keying Hash Functions for Message Authentication", CRYPTO'96, pp1–15, 1996. == 外部リンク == * {{IETF RFC|2104}} ** [https://www.nic.ad.jp/ja/tech/ipa/RFC2104JA.html HMAC: メッセージ認証のための鍵付ハッシング (HMAC: Keyed-Hashing for Message Authentication)] — [[情報処理推進機構|IPA]]による日本語訳 {{DEFAULTSORT:えいちまつく}} {{cryptography navbox|hash}} [[Category:暗号]] [[Category:誤り検出訂正]] [[Category:メッセージ認証コード]] [[Category:RFC|2104]]
このページで使用されているテンプレート:
テンプレート:Cryptography navbox
(
ソースを閲覧
)
テンプレート:IETF RFC
(
ソースを閲覧
)
HMAC
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報