質問: FREAK攻撃で鍵をダウングレードさせる部分がいまいちわかりません。 ダウングレードさせるのは公開鍵のようですが、 **Q1.** 公開鍵には認証局等の署名が必要なので、あらかじめ脆弱な公開鍵を用意しているサーバー限定の攻撃なのか? と思いましたが、「華麗なる因数分解:FREAK攻撃の仕組み」によると、 **A1.** サーバーが一時的に脆弱な公開鍵を作成する機能への攻撃 のようで。しかし、ここでまた疑問なのが、 **Q2.** 一時的な公開鍵をクライアントはどうやって認証するのか? ということです。 上記の「華麗なる因数分解:FREAK攻撃の仕組み」を見ると、サーバーはサーバーの(脆弱でない)公開鍵で署名して送るようなことが書いてあるのですが、それだけではオレオレ証明書なのでクライアントは受け入れないと思うのです。 **A2(推測).** サーバーは脆弱でない公開鍵と脆弱な公開鍵の両方を送って、クライアントは2段階で検証する のでしょうか? そうすると、さらに **Q3.** 輸出規制で脆弱でない鍵を扱えないようにされていたのに、どうやって脆弱でない公開鍵を使って脆弱な鍵を検証するのか? という疑問が出てきます。 **A3(推測).** 規制されていたのは暗号用の鍵で、署名用の鍵は規制されていなかった のでしょうか?
回答: だいたいあってると思います。一言でまとめると規制は暗号としての使用のみで署名では問題なかった、です。 A1. FREAK攻撃はSSL**プロトコル**の脆弱性と不適格なクライアント実装を使用します。認証局に署名されているのは強い鍵だけで、輸出規制にかかったクライアントにより弱い鍵が要求された場合は一時的に作った弱い鍵を提供(FREAK攻撃では中間者に弱い鍵を要求する様書き換えられる)。 A2. 弱い鍵は認証局に署名されている強い秘密鍵で署名されます。この署名は強い公開鍵で確認できます。 A3. 輸出規制は高ビットRSAの**暗号**としての使用のみで署名は含まれないので、暗号用であれば規制に引っかかるサイズのビットの鍵で署名しても確認はできました(ソースはリンク先の § 2(d) Cryptographic Algorithms)。 なぜ規制が暗号への利用のみなのかですが、書かれたものが見つからなかったのでここからは自分の考えなので、理由は間違っているかもしれません。 RSAでは公開鍵と秘密鍵は数学的には足し算と引き算のように逆の処理になります。なので鍵のペアを作成した時、鍵のどちらを公開鍵にしても良く、鍵をどの順で適応しても2つとも使えば出力は入力と同じです。 1つのペアで暗号と署名ができるのはこれを応用しています。 * 暗号化するときは公開鍵で暗号化し、秘密鍵で解読します(読めるのは秘密鍵を持った人のみ)。 * 署名するときは秘密鍵を使い、確認には公開鍵を使います(署名できるのは秘密鍵を持った人のみ)。 ここで、署名の処理を暗号の処理と比べると、署名の確認は暗号の解読にあたることになります。この時解読に使われているのは公開されているデータなので規制対象になる理由はありません(RSAのアルゴリズムは論文で公開されているので、プログラムが書ける人であれば高ビットを使うソフトは書けた)。