Tips

不正な情報操作を防止!メッセージ認証とは

メッセージ(MAC)認証とはデータが改ざんされていないか確認する仕組みです。
※MAC=Message Authentication Code

メッセージ認証って何ぞ?が知りたい方はこれが答えなので
悲しいですが、以下読み飛ばしていただいても構いません。(. _. )笑

メッセージ認証を説明する前に、「認証と「認可の違いを把握しておきましょう。
みなさんは「認証」と「認可」なにが違うかご存じでしょうか。
私は今まで恥ずかしながら深く考えたことありませんでした。
この違い大切なので、頭のキャパ空いてるぜ!って方は是非覚えておくと良いかなと思います。

認証と認可の違い

認証は「その人が誰なのか確認すること」。認可は認証したうえで、「アクセスする権限があるのか判断すること」です。 例として、推しのライブに行ったケースを考えてみましょう。

・身分証明書を提示し、本人確認をすることが=認証
・ライブのチケットを所持していることが=認可 に値します。

以上が「認証」と「認可」の違いです。
では、改めて「メッセージ認証」について書いていきます。

メッセージ認証

1. MAC認証

<<流れ>>
①送信者が、送信する情報(メッセージ)をハッシュ値(MAC)に変換
②メッセージとMAC、両方を相手へ送信
③受信者は受け取ったメッセージをハッシュ値に変換
④受け取ったMACと③で自ら変換したMACを比較
∟差異がなければ:改ざんされていないことがわかる
∟差異が発生していれば:通信内のどこかで改ざんが行われたことがわかる

しかし、上記の方法では仮に差異がなかったとしても、悪意を持った第三者が途中でメッセージを書き換えた可能性があり、受信者はその改ざんを見抜くことができません。


これに対応できるのが、HMAC認証です。

2. HMAC認証

MAC認証と異なる点は、事前に受信者と送信者が双方で共通鍵を保有しておく点です。
※この共通鍵は秘密情報ゆえ漏洩してはならず、事前共有の方法にも注意が必要となります。

<<流れ>>
①送信者がハッシュ値に変換する際に、メッセージだけでなく共通鍵も合わせてハッシュ化
(ここでのハッシュ値=HMAC)

②メッセージとHMACを送信 ※共通鍵は送らない
③受信者は受け取ったメッセージと共通鍵を用いてハッシュ値に変換
④受け取ったHMACと③で自ら変換したHMACを比較

万が一途中でメッセージの書き換えが行われたとしても、第三者は共通鍵を持っていないため
正しいハッシュ値に変換することはできません。
よって書き換えられたハッシュ値と受信者が出したハッシュ値には差異が生じるわけです。
逆に差異がないとわかれば、送信者が本物であるという証明になります。
なぜかというと、共通鍵を持っていなければ同じようにハッシュ化できないからです。

以上がメッセージ認証の仕組みです。

メッセージ認証って素晴らしいじゃん?と思うかもしれませんが、欠点もあるので紹介しておきます。

おまけ(メッセージ認証の欠点)

・共通鍵の受け渡しが安全に行われない場合、上記の流れが破綻してしまう
・否認防止性がない
 Bさんが「Aさんから送信された情報です」と第三者へ情報を渡すケースを考えてみましょう。
AさんとBさんは共通鍵を持っており、当然BさんでもAさんと同じメッセージを作成できます。
つまり、仮にAさんが情報を送付したことを否定すると、Bさんが、作成した情報を偽って
第三者へ渡している可能性を考えられてしまうわけです。
このAさんが否定できてしまう状態を、否認防止性がないと言います。

 

 

Madoka
平日は頭を動かし、休日は身体を動かす、Snow Manが好きな自由人。ダンスとバク転を特訓中。