適応型選択暗号文攻撃( CCA2と略記)は、攻撃者がまず適応的に選択された複数の暗号文を復号化のために送信し、次にチャレンジ暗号文に関するオラクルを参照することなく、その結果を使用してターゲット暗号文を識別する、対話型の選択暗号文攻撃です。適応型攻撃では、攻撃者はターゲットが明らかになった後に適応クエリを要求できます(ただし、ターゲットクエリは許可されません)。これは、適応クエリの第 2 段階が許可されない無差別(非適応型)選択暗号文攻撃(CCA1)を拡張したものです。Charles Rackoffと Dan Simon は CCA2 を定義し、 Moni NaorとMoti Yungによる非適応型 CCA1 の定義とシステム(公開鍵システムの選択暗号文攻撃耐性に関する最初の研究)に基づいて構築されたシステムを提案しました。
特定の実際的な状況において、この攻撃の目的は、暗号化されたメッセージ、あるいは復号鍵そのものに関する情報を徐々に明らかにすることです。公開鍵暗号方式の場合、適応選択暗号文は、一般的に暗号文の可塑性、つまり、特定の方法で暗号文を変更することでメッセージの復号に予測可能な影響を与えることができるという特性を持つ場合にのみ適用可能です。
適応選択暗号文攻撃は、理論上の懸念事項ではあったものの、実際に顕在化することはなかったと考えられていたが、1998年にダニエル・ブライヒェンバッハー(当時ベル研究所所属)が、当時数千のウェブサーバーで使用されていたセキュアソケットレイヤー(SSL)プロトコルのバージョンを含む、 RSA暗号化とPKCS#1 v1.5エンコーディング関数を組み合わせたシステムに対する実用的な攻撃を実証した。 [ 1 ]
百万メッセージ攻撃としても知られるブライヒェンバッハー攻撃は、PKCS #1 v1.5 パディング関数の欠陥を利用して、RSA 暗号化されたメッセージの内容を徐々に明らかにします。このパディング関数では、パディングされた平文は従うべき固定フォーマットを持っています。復号装置 (SSL 対応の Web サーバーなど) が何らかの方法でパディングが有効かどうかを明らかにすると、秘密鍵に関する情報を明らかにする「オラクル」としても機能します。鍵全体を見つけるには、数百万のテスト暗号文をターゲットに送信する必要があります。[ 2 ]実際には、これは SSL セッションキーが妥当な時間、おそらく 1 日以内またはそれ以下で漏洩する可能性があることを意味します。
若干の変更はあったものの、この脆弱性は2018年には「Return Of Bleichenbacher's Oracle Threat」(ROBOT) [ 3 ]という新しい名前で多くのサーバーで悪用可能であり、 2023年にはMarvin Attack [ 4 ]として再び悪用可能となった。
適応選択暗号文攻撃を防ぐには、暗号文の可塑性を制限する暗号化または符号化方式とシステムのセキュリティ証明を使用する必要があります。CCA セキュア システムの理論的および基礎レベルの開発の後、ランダム オラクル モデルで多くのシステムが提案されました。RSA 暗号化の最も一般的な標準は、最適非対称暗号化パディング(OAEP) です。PKCS#1 の初期バージョンで使用されていたパディングなどの即席の方式とは異なり、OAEP はランダム オラクルモデルで安全であることが証明されています。[ 5 ] OAEP は、1998 年に公開されたバージョン 2.0 以降、推奨される符号化方式として PKCS#1 に組み込まれ、古い方式は引き続きサポートされていますが、新しいアプリケーションには推奨されていません。[ 6 ]しかし、セキュリティの黄金律は、ランダム オラクルの理想化に頼らずにシステムが安全であることを示すことです。[ 7 ]
複雑性理論に基づく暗号理論では、適応型選択暗号文攻撃に対するセキュリティは、一般的に暗号文不可弁別性(IND-CCA2)を用いてモデル化される。