パソコンとネットワーク|on Note

パソコン・ネットワーク・データ通信に関する記事

on Note

メッセージ認証コード(MAC

メッセージ認証コードMAC)は、デジタル署名と同様、送られるメッセージに対して「認証」と「改ざんの検出」を実現する仕組みである。

受け取ったメッセージが、本当に本来の送信者のものであるかを確認する。また、たとえ暗号文であっても、途中で内容を改ざんされていたのでは、復号した内容も別のものになってしまう。期待した通信相手からのメッセージであることを確認する「認証」、通信経路でメッセージの内容を改ざんされていないかの「改ざんの検出」に使われる技術が「メッセージ認証コード」。

デジタル署名は、公開鍵を用いることで誰でも作成・検証できるが、メッセージ認証コードでは、データ送り主とデータ受信者の間で決めておいた共通鍵を共有することになる。

メッセージ認証コードはデジタル署名よりも処理速度が速い。

メッセージ認証コードが必要なケースを見てみる

Aさんが、Bさんから商品を購入する為に、商品番号を表す「abc」という注文メッセージを送るとする。

Aさんは、メッセージの暗号化に使用する鍵を、安全な方法(公開鍵暗号方式など)でBさんに渡す。そして、共有した鍵を用いてメッセージを暗号化しBさんに送信。

Bさんは受け取ったメッセージを復号し、商品番号「abc」を取得。Aさんに、注文通りの商品を無事発送することができた。

悪意ある第三者が改ざんした場合

AさんがBさんに送信したメッセージを、悪意ある第三者が通信の途中で改ざんしたとする。

Bさんは、メッセージを受け取るものの、改ざんの事実に気付くことができない。復号したメッセージは、改ざんされて「xyz」に変わっていた。

Bさんは、「xyz」が正しい注文だと思い、Aさんに誤った商品を発送してしまう。

メッセージ認証コードによる改ざんの検出

Aさんは、暗号文を送信する前に鍵を作成し、この鍵を安全な方法でBさんに送る

続いてAさんは、暗号文とこの鍵を使ってある値を作る。例えばここで「8g16」という値を得たとする。これが「メッセージ認証コード(MAC)」である。

AさんはBさんに、作成したMAC「8g16」と暗号文を送る

Bさんは、受け取った暗号文が改ざんされたデータではないか確認する必要がある。

BさんはAさん同様、暗号文と、先に受け取っておいた鍵を使ってMACを作成。Aさんから受け取ったMACと同じ「8g16」が生成され、両者が作成したMACが一致することが確認できた

あとは、暗号文用の鍵を用いて復号すれば、Aさんが注文した商品番号「abc」というメッセージを得ることができる。

通信途中で暗号文を改ざんされたら

AさんがBさんに送信しようとした暗号文とMACの内、暗号文の方を悪意ある第三者に改ざんされたら。

Bさんが、届いた暗号文(改ざん後の暗号文)からMACを算出すると「c96d」ができた。Aさんから受け取ったMACと一致しないことが分かる。

このことから、暗号文かMACのどちらか、あるいは両方が改ざんされている可能性に気付くことができる。

Bさんは、この暗号文とMACは破棄し、Aさんに再度送信を要求すれば良い。

暗号化は、おくまでも数値の計算処理にすぎない。ということは、改ざんされた暗号文であっても復号(の計算)はできる。

元のメッセージが長い文章であれば、改ざんされていると、復号した時の文章が意味をなさないものになっている。このことから改ざんの事実に気付く可能性はある。

しかし、元のメッセージが、商品番号など直接理解できないデータだと、改ざんの有無に気付くのは難しい。

このようなデータを扱う場合は、暗号では改ざんに気付かない為、メッセージ認証コードが必要になる。

たとえ、暗号文だけでなくMACも改ざんされたとしても、改ざんでしようされた鍵が、データ受信者が所有する鍵と別のものである以上、改ざんされたMACと同一のものが生成されることはない。

メッセージ認証コードでは送信者の特定ができない

メッセージ認証コードの仕組みでは、AさんとBさんのどちらも、暗号化とMAC生成ができる。これでは、メッセージを作成したのがAさんなのかBさんなのかを特定できない。

メッセージを作成した側に悪意があった場合、「これは自分が作ったものではない」「これは相手のねつ造だ」と事後否認できる。また、自分でメッセージを作成しておいて、「これは相手から送られてきたものだ」と述べることもできる。

誰がメッセージの送信者なのか特定が不可能であることからの、こういった不正を防ぐ手段に「デジタル署名」がある。

まとめ:「メッセージ認証」の流れ

  1. データ送り主は、送る予定のデータの暗号化と、この暗号文を基にした認証用のデータを作成する。この認証用のデータがメッセージ認証コード(MAC)。

    この時、データの暗号化とMACの作成に用いる鍵は同一のもの。尚、ここで用いた鍵は、安全な方法で先にデータ受信者に送っておく。

  2. データ送り主は、暗号文と一緒にMACも送信。
  3. データ受信者は暗号文とMACを受け取る。ここで、先に受け取っておいた鍵を用い、データ受信者側でもMACを作成する。

    この作成したMACが、データ送り主から受け取ったMACと同じものなら、暗号文は改ざんされていないことになる。なぜなら、暗号文が改ざんされ別のものになっていたのなら、この暗号文を基にしたMACもまた、別のものが生成されるはずである。

    これがデータ受信者側での、改ざんの検知作業である。そしてこの作業に必要となるのがメッセージ認証コード(MAC)である。

メニュー