メッセージ認証コードについて

投稿日: 更新日:

メッセージ認証コードとは

英語のMessage Authentication Codeの頭文字を取ってMACと呼ばれます。
送られてきたメッセージの改ざん、なりすましを検出する技術です。言い換えると、「完全性」と「認証」を確保します。
任意長のメッセージと鍵から固定長の値を出力します。出力された値をMAC値と呼びます。

固定長の値を出力するという性質はハッシュ関数と似ていますが、メッセージ認証コードは鍵が必要であるという部分が異なります。

利用手順

  1. 送信者と受信者で作成に必要な鍵を共有します。
  2. 送信者はメッセージと鍵を使ってをMAC値を計算します。
  3. 送信者は計算したMAC値とメッセージをセットにして送信します。
  4. 受信者は送信者と同じ方法で受信したメッセージのMAC値を計算します。
  5. 値が一致すれば認証成功、そうでなければ失敗です。

利用手順

なぜ改ざん、なりすましを検出できるのか

送信されたメッセージを攻撃者が書き換えた場合、MAC値が一致しないため改ざんを検出できます。

メッセージとMAC値両方書き換えたら良いのでは?

それは不可能です。攻撃者はMAC値の計算に必要な鍵を知らないからです。鍵を知らなければ正しいMAC値は計算できません。よって、バレずに改ざんするのは不可能です。

実現方法

メッセージ認証コードの計算にはいくつか方法があります。今回は2パターン紹介します。

ハッシュ関数を用いる

SHAなどのハッシュ関数を用いる方法にHMACがあります。具体的なことは↓この記事にかきました。

https://www.ochappa.net/posts/hmac-b

ブロック暗号を用いる

ブロック暗号のCBCモードでメッセージ全体を暗号化し、最後のブロックを認証コードとする方法です。1つのブロックは固定長でありまた、CBCモードであることから最後のブロックの生成にはメッセージ全体の影響を受けるのでメッセージ認証コードとして利用できます。

まとめ

今回はメッセージ認証コードについて学びました。「改ざん」、「なりすまし」を検出する原理が分かってもらえたら嬉しいです。

参考文献

結城浩(2015)暗号技術入門 第3版

書いた人

profile_image

お茶の葉

物理とプログラミングが好きな人