【真面目版】メッセージ認証符号(MAC)とは?初心者向けに仕組みを解説

目次

はじめに:ネットの世界は「信用」が難しい

空子/情報セキュリティマネジメント担当

私たちは毎日、スマホやパソコンを使ってメッセージを送ったり、ネットバンキングでお金を振り込んだりしています。でも、ふと考えてみてください。届いたメッセージが「本当にその人が送ったもの」だと、どうやって確認していますか?また、途中で誰かに内容を書き換えられていないと、どうして言い切れるのでしょうか? 

実は、こうした「本物かどうか」「改ざんされていないか」を確かめるために、裏側ではさまざまなセキュリティ技術が働いています。その中のひとつが、今回紹介するメッセージ認証符号(MAC:Message Authentication Code)です。


メッセージ認証符号を「手紙」で例えてみよう

空子/情報セキュリティマネジメント担当

メッセージ認証符号を理解するために、まず身近な「手紙」に置き換えて考えてみましょう。

あなたが友人に大事な手紙を送るとします。でも、郵便配達の途中で誰かが封筒を開けて中身を書き換えてしまったら困りますよね。そこで、あなたと友人だけが知っている「合言葉」を使って、手紙の最後に特別な暗号を書き添えることにします。

友人は手紙を受け取ったら、同じ合言葉を使って暗号を自分でも計算します。手紙に書いてある暗号と自分が計算した暗号が一致すれば、「この手紙は確かにあなたが書いたもので、途中で改ざんされていない」と確認できるわけです。

この「合言葉を使って作る特別な暗号」こそが、メッセージ認証符号(MAC)の正体です。


もう少し技術的に見てみよう

空子/情報セキュリティマネジメント担当

メッセージ認証符号の仕組みをもう少し正確に説明すると、次のようになります。

まず、通信する二者(たとえばAさんとBさん)が、あらかじめ同じ「秘密鍵(ひみつかぎ)」を共有します。これは先ほどの例でいう「合言葉」にあたるものです。

Aさんがメッセージを送るとき、メッセージの内容と秘密鍵を特別な計算式(アルゴリズム)に入れて、短い固定長のデータを生成します。この短いデータがMAC値です。Aさんはメッセージ本文と一緒に、このMAC値もBさんに送ります。

Bさんは受け取ったメッセージと、自分が持っている同じ秘密鍵を使って、同じ計算を行います。自分で計算したMAC値と、Aさんから送られてきたMAC値を比較して、一致すれば「メッセージは正しい送信者から届き、途中で改ざんされていない」と判断できます。


MACが守ってくれる2つのこと

空子/情報セキュリティマネジメント担当

メッセージ認証符号が保証してくれるのは、主に次の2つです。

1つ目は「完全性(かんぜんせい)」です。 これは、メッセージが途中で書き換えられていないことを意味します。もし誰かがメッセージの内容を1文字でも変更すると、MAC値が変わってしまうため、受信側で「何かおかしい」とすぐに気づくことができます。

2つ目は「認証(にんしょう)」です。 秘密鍵を知っている人だけが正しいMAC値を作れるので、MAC値が一致するということは、確かに秘密鍵を持っている正規の送信者がメッセージを作ったことの証明になります。

ただし、注意点があります。MACはメッセージの内容そのものを隠す(暗号化する)わけではありません。あくまで「本物かどうか」「改ざんされていないか」を確認する技術です。内容を秘密にしたい場合は、別途暗号化の技術を組み合わせる必要があります。


代表的なMACの種類

空子/情報セキュリティマネジメント担当

メッセージ認証符号にはいくつかの種類があります。代表的なものを紹介しましょう。

HMAC(エイチマック) は、最も広く使われているMACのひとつです。「ハッシュ関数」と呼ばれる計算方法と秘密鍵を組み合わせてMAC値を生成します。ハッシュ関数とは、どんな長さのデータを入れても、決まった長さの短いデータ(ハッシュ値)を出力する関数のことです。HMACはWebサイトの通信(HTTPS)やAPIの認証など、非常に幅広い場面で使われています。

CMAC(シーマック) は、AESなどの「ブロック暗号」と呼ばれる暗号技術をベースにしたMACです。ハッシュ関数の代わりに暗号アルゴリズムを使うのが特徴で、すでに暗号化の仕組みが整っている環境では効率よく導入できます。


私たちの生活のどこで使われている?

空子/情報セキュリティマネジメント担当

メッセージ認証符号は、実は私たちの日常生活のあらゆる場面で活躍しています。

たとえば、ネットバンキングで振込を行うとき。送信する振込データにMAC値が付けられることで、金額や振込先が途中で書き換えられていないことが保証されます。もしこの仕組みがなければ、悪意のある第三者が振込先をこっそり変更できてしまうかもしれません。

また、Webサイトにログインした後のセッション管理にもMACが使われています。ログイン後にサーバーから発行される「トークン」や「クッキー」と呼ばれるデータにMAC値を含めることで、他人がそのデータを偽造してなりすますことを防いでいます。

さらに、スマートフォンのアプリがサーバーと通信するとき、メッセージアプリで送受信するとき、IoT機器がクラウドにデータを送るときなど、ありとあらゆるデジタル通信の裏側でMACは静かに働いています。


まとめ

メッセージ認証符号(MAC)は、デジタル社会を支える縁の下の力持ちです。私たちが安心してネットバンキングを使い、メッセージをやり取りし、オンラインで買い物ができるのは、この目に見えない技術が「本物かどうか」「改ざんされていないか」を常にチェックしてくれているからです。

空子/情報セキュリティマネジメント担当

普段意識することはほとんどありませんが、MACという仕組みがあることを知っておくだけで、デジタル社会のセキュリティに対する理解がぐっと深まるはずです。次にスマホで振込をしたり、Webサイトにログインしたりするとき、「裏側でMACが守ってくれているんだな」と思い出してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

ITTIのアバター ITTI 運営長

ITTI運営長
調べものと学ぶことが止められなくなり、現在は以下の4ブログを運営中:
・DXブログ(今ここ!)
・CODEブログ
・INFRAブログ
・XRブログ

保有資格:ITパスポート
目標資格:情報処理安全確保支援士(学ぶこと多すぎて道のりは遠いですが、毎日コツコツ進めています…泣)

ブログでは、実務経験と最新技術を掛け合わせて、読者の「わかりにくい」を「わかる!」に変える記事を発信中!
最終目標は、これらの知識を活かして「ドラえもんのような万能AI」を開発すること(AIを副運営長任命が待ち遠しい!)。
DX・CODE・INFRA・XRに興味ある方、気軽にX(@llEqmDGOYZ4258)でDMください。一緒に学びましょう!

公務員のキャラがDXを解説!?パロディのブログ『ITTI DX』、発信中!

ITTI DXは企業の安心と持続をサポートするDXを特化したブログ

コメント

コメントする

CAPTCHA


目次