「暗号技術入門 秘密の国のアリス」 (6) 第8章 メッセージ認証コード

暗号技術入門 第3版

暗号技術入門 第3版

第8章 メッセージ認証コード

届いたメッセージが改ざんされていないか、誰かが送信者になりすましていないかどうかをチェックすることができる。

メッセージ認証コード

メッセージの正真性を確かめ認証するためにはメッセージ認証コード(MAC)を用いる。メッセージの本文と送信者・受信者が共有する鍵からMAC値を計算する。簡単に言うと、メッセージ認証コード値はメッセージと鍵を一方向ハッシュ関数に入力したものに近い。

送信者はメッセージとともにMAC値を送り、受信者はメッセージと鍵からMAC値を計算しなおして受け取ったMAC値と一致するかチェックする。

メッセージ認証コードの利用例

  • SWIFT
  • IPSec
  • SSL/TLS

メッセージ認証コードの実現方法

メッセージ認証コードの実現には一方向ハッシュ関数を使うもの、ブロック暗号を使うもの、、さまざまな手法がある。

認証付き暗号

対称暗号とメッセージ認証コードを組み合わせることにより、機密性・正真性・認証を同時に満たす仕組み。

HMAC

一方向ハッシュ関数を用いてメッセージ認証コードを得る方法。

メッセージ認証コードに対する攻撃

メッセージとMAC値を盗聴し、何度も同じ組み合わせを受信者に送りつける攻撃を再生攻撃という。(「口座xxxに100万円振り込んで」みたいなメッセージの場合)

この再生攻撃を防ぐには、メッセージにシーケンス番号をふる、タイムスタンプを埋め込んで古いものを無視する、ノンスをメッセージに含める、などがある。

メッセージ認証コードの限界

  • 「第三者に対する証明」
    第三者にこのメッセージは確かに◯◯から来たものだと証明するには鍵を第三者に教えないといけないし、その鍵は送受信者で共有されているためどちらが書いたものかわからない

  • 「否認防止」
    送信者が「自分はそんなメッセージは送っていない」といい出した場合、それを否定することができない。