💡 このステップを言葉で解説
アリスが送信した本物のメッセージと署名を、インターネットの途中で攻撃者「マリス」が書き換える実験ができます。どのような場合に検証が失敗(NG)するかを動かしてみましょう!
送信者: アリス (Alice)
アリスからボブへ:100万円送金します。
受信者: ボブ (Bob)
(未受信)
難解な暗号ロジックを、キャラクターのセリフとアニメーションで優しく解説
アリスが送信した本物のメッセージと署名を、インターネットの途中で攻撃者「マリス」が書き換える実験ができます。どのような場合に検証が失敗(NG)するかを動かしてみましょう!
アリスからボブへ:100万円送金します。
(未受信)
デジタル署名は、暗号化と復号に異なる鍵を使う「公開鍵暗号」の仕組みを応用しています。
通常の「秘匿通信」では、相手の公開鍵で暗号化し、相手の秘密鍵で復号しますが、
デジタル署名ではこの関係を反転させ、自分の秘密鍵で暗号化(署名)し、みんなに公開されている公開鍵で復号(検証)します。
長文のドキュメントを公開鍵暗号で丸ごと暗号化すると、計算コスト(CPUや処理時間)が非常に高くなります。そこでハッシュ関数が登場します。
ハッシュ関数は、どんな長さのデータからも固定長(例:SHA-256なら256ビット)の固有値(ハッシュ値)を出力する一方向性の関数です。このハッシュ値はデータが1文字でも異なると全く別の値になるため、「電子の指紋」として代用されます。
ここで一つの疑問が生まれます。「ボブが持っている『アリスの公開鍵』は、本当にアリスのものなのか?」
もしマリスが「私はアリスです」と偽り、自分の公開鍵をボブに送りつけていたら、ボブはマリスが改ざんしたデータを受け入れ、信じ込んでしまいます(これを中間者攻撃と呼びます)。
これを防ぐために、信頼できる第三者機関である認証局 (CA: Certificate Authority)が存在します。
CAは、アリスの身元を確認した上で、「この公開鍵は確かにアリスのものです」とCA自らの秘密鍵でデジタル署名をした「デジタル証明書」を発行します。
ブラウザやオペレーティングシステムには、あらかじめCAの公開鍵が内蔵されているため、ボブはアリスのデジタル証明書を検証し、正真正銘アリスの公開鍵であることを証明できます。Webサイトで見る「鍵マーク (HTTPS)」は、まさにこの技術が応用されています。