メッセージ認証コードについて
投稿日: 更新日:
メッセージ認証コードとは
英語のMessage Authentication Codeの頭文字を取ってMACと呼ばれます。
送られてきたメッセージの改ざん、なりすましを検出する技術です。言い換えると、「完全性」と「認証」を確保します。
任意長のメッセージと鍵から固定長の値を出力します。出力された値をMAC値と呼びます。
固定長の値を出力するという性質はハッシュ関数と似ていますが、メッセージ認証コードは鍵が必要であるという部分が異なります。
利用手順
- 送信者と受信者で作成に必要な鍵を共有します。
- 送信者はメッセージと鍵を使ってをMAC値を計算します。
- 送信者は計算したMAC値とメッセージをセットにして送信します。
- 受信者は送信者と同じ方法で受信したメッセージのMAC値を計算します。
- 値が一致すれば認証成功、そうでなければ失敗です。
なぜ改ざん、なりすましを検出できるのか
送信されたメッセージを攻撃者が書き換えた場合、MAC値が一致しないため改ざんを検出できます。
メッセージとMAC値両方書き換えたら良いのでは?
それは不可能です。攻撃者はMAC値の計算に必要な鍵を知らないからです。鍵を知らなければ正しいMAC値は計算できません。よって、バレずに改ざんするのは不可能です。
実現方法
メッセージ認証コードの計算にはいくつか方法があります。今回は2パターン紹介します。
ハッシュ関数を用いる
SHAなどのハッシュ関数を用いる方法にHMACがあります。具体的なことは↓この記事にかきました。
https://www.ochappa.net/posts/hmac-b
ブロック暗号を用いる
ブロック暗号のCBCモードでメッセージ全体を暗号化し、最後のブロックを認証コードとする方法です。1つのブロックは固定長でありまた、CBCモードであることから最後のブロックの生成にはメッセージ全体の影響を受けるのでメッセージ認証コードとして利用できます。
まとめ
今回はメッセージ認証コードについて学びました。「改ざん」、「なりすまし」を検出する原理が分かってもらえたら嬉しいです。
参考文献
結城浩(2015)暗号技術入門 第3版