わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

送りつける事例

 セキュリティでも,メッセージを送りつけると善意の他者が答えを求めてくれるような攻撃があったなと思いながら,『暗号技術入門 秘密の国のアリス』を読み直しました.

 第3版ではp.246に載っていました.

ボブさん、こんにちは。
私は暗号技術の研究をしているマロリーと申します。
私はいま、デジタル署名の実験をしているのですが、
添付データに、あなたの署名を付けて返信してもらえませんか。
添付データはランダムなデータですので、問題は発生しません。
ご協力を感謝します。
                        マロリー

 実際にはマロリーは悪意をもって,ボブに署名を依頼します(共通テスト不正で,試験時間中に問題用紙を送って解かせることに対応します).ここで「添付データ」は,アリスという,ボブともマロリーとも異なる者が,ボブのRSA公開鍵で暗号化したメッセージとします.
 暗号文を復号するためには適切な鍵,ここではボブのRSA秘密鍵(プライベート鍵)が必要ですが,もちろんマロリーは持っていません.
 ですが,RSAでは,次の3つの性質があります.

  • 暗号化して復号すると,元のメッセージになる.
  • 署名して検証すると,元のメッセージになる.
  • 暗号化と検証,復号と署名が,それぞれ同じ操作である.

 そこで,上記のマロリーからボブへの問い合わせにおいて,署名してほしいという対象を,ボブの公開鍵による暗号文とします.そうすると,署名=復号ということで,マロリーの依頼に忠実に従ってボブが署名を行い結果を返したならば,マロリーは,元のメッセージ,すなわちアリスが暗号化を行う前の平文を,獲得できるというのです.
 次のページには,「署名 = 添付データ^D mod N = 暗号文^D mod N = メッセージ」という言葉を含んだ式(原文では「^D」は上付きの「D」)と,「大胆な方法ですね。」で終わる段落があります*1
 ここまでの話が成立するのは,「署名」「添付データ」「暗号文」「メッセージ」が,それぞれ整数値であるから,と言うこともできます.実用上は,添付データは,1個の整数値ではなく,フォーマットに基づくデータとなっています(例えばPKCS #1*2).
 とはいえ,やり取りするメッセージについて,ルール(フォーマット)に従って分割・結合したり,パディング(詰め物)をしたりすることで,あらゆる脅威に対処できるわけでもありません.以下のPDFファイルは,本記事作成中に見かけたもので,2002年の文書であるとともに,主に想定されている攻撃方法は,デジタル署名の偽造なのですが,1970~90年代を中心とした,RSAの状況の一端をうかがい知ることができます.


 (追記)以前の版にも,「ボブさん、こんにちは。」から始まる依頼文を含む,攻撃方法が書かれています.初版となる『暗号技術入門―秘密の国のアリス』はp.232で,『新版 暗号技術入門―秘密の国のアリス』も同じページです(ざっと見たところ,pp.232-233は初版・新版で同じ記載内容でした).

*1:大胆さとしては,第3版ではp.116のクイズに書かれた「どうして鍵配布センターは、「ボブの鍵」をアリスの鍵で暗号化してアリスに渡さなかったのでしょうか。」も,すごいなあと思っています.このクイズでは,対称暗号(共通鍵暗号)を想定しています.もし鍵配布センターが,「ボブの鍵」をアリスの鍵で暗号化してアリスに渡したら,アリスは「ボブの鍵」を獲得して,暗号化・復号がやりたい放題になります.

*2:本記事公開時には「PKCS #7」でしたが,変更しました.「Public-Key Cryprography Standards (PKCS) #1」の表記が,第3版のp.248にあります.前のページの下部には,「潜在的偽造」の概念と,その対処法としてRSA-PSSが紹介されています.