メッセージ認証コード(MAC)とは?
データの発行元の認証と、データの完全性について保証するためのデータです。(要は、メッセージが改竄されていないことを保証する技術です。)
どちらもあらかじめ共有した秘密鍵を使ってMACを生成します。その後、送信者がデータとMACを合わせて送信して、受信者がデータと秘密鍵を元に、MACを計算して受信したMACと一致するかチェックします。
MACの種類
HMAC(Hash-Based-mac)
ハッシュ関数に基づくMACです。SHA-2等のハッシュ関数を使います。
CMAC
共通鍵暗号の一つのブロック暗号に基づくMACです。AES等のブロック暗号を使います。
注意点
もちろん、MAC値をハッカーなどによって盗聴されてしまったら不正操作をされてしまう可能性があります。なので実際のアプリ開発などでは情報の機密性の度合いにもよりますが、MAC+アルファの対策が必要になってきます。(シーケンス番号も付与するなど)
電子署名とは?
そもそも署名とは?
本人が直筆で自分の名前を書いたもの。
署名のメリット
署名者を示したり、署名の対象について同意や補償を示したりできます。
筆跡は人によって異なるので筆跡鑑定を行えば署名した本人が契約したかの証拠能力は極めて高いです。デジタル署名もこの効用とほぼ同じです。
「電子署名」とは?
ファイルの作成者が、自分の作成したファイルに添付するデータのことで、該当ファイルの正当性(改ざんされていないということ)を証明してくれます。デジタル署名とも呼んだりします。
SSL/TLSにおける電子署名
SSL/TLSの場合は、サーバー証明書や、クライアント証明書が電子署名に該当します。
どうやって電子署名が正しいか証明するのか?
電子データは、現実の署名のように本人確認をするのは難しいです。なぜならパソコン上でコピーしたら簡単に同じものを複製できてしまうためです。そのために使うのが「公開鍵暗号方式」です。
公開鍵暗号方式を使う。
- 署名対象データのハッシュ値を署名者の秘密鍵で暗号化する。(これが電子署名)
- 検証者は、公開鍵を使って対象データのハッシュ値が一致することを確認し、電子署名が正しいものだと確認する。
「MAC」と「デジタル署名」との違い
デジタル署名でもデータの正当性を確認する目的で使われていましたよね。では何が違うのでしょうか。
デジタル署名は「公開鍵暗号方式」を使ってチェック用データを作成しましたが、MACは共通鍵暗号方式やハッシュ関数を使ってチェック用データを作成します。
やっていることはほぼ同じですが、やり方が少し違います。
この記事へのコメントはありません。