Bleichenbacher Attack on RSA Encryption
RSA暗号に対するBleichenbacher攻撃
説明
Bleichenbacher攻撃は、RSA暗号化スキームを標的とし、特にRSA PKCS #1 v1.5パディング方式を悪用する高度な暗号学的攻撃です。この攻撃は、復号化プロセス中に使用されるパディングの有効性に関するフィードバックを提供するシステムの脆弱性を悪用します。
機能の仕組み:
この攻撃はパディングオラクル(padding oracle)を利用し、RSA暗号化されたメッセージのパディングが正しいかどうかを明らかにします。細工した暗号文をオラクルに送信し、その応答を分析することで、攻撃者は秘密鍵にアクセスすることなく平文メッセージを復元できます。このプロセスには通常、以下の手順が含まれます。
- Crafting Ciphertext: 攻撃者は標的の暗号文に基づき、一連の変更された暗号文を生成します。
- Querying the Oracle: 変更された各暗号文はアプリケーションに送信され、アプリケーションは復号化が有効かどうか(つまり、パディングが正しいかどうか)を返します。
- Inferring Plaintext: 攻撃者は暗号文を体系的に変更し、オラクルの応答を観察することで、元の平文を推測できます。
Bleichenbacher攻撃に対処しない場合のリスク:
- Confidentiality Compromise: 攻撃者が機密情報を復号化し、個人情報や財務情報などの機密データが露洩する可能性があります。
- Data Integrity Issues: 攻撃者が暗号文を改ざんすることで、データへの不正な変更が行われる可能性があります。
- Regulatory Compliance Violations: この攻撃に対する保護を怠ると、GDPRやHIPAAなどのデータ保護規制の違反を招く可能性があります。
シナリオ例:
支払い情報などの機密性の高いユーザーデータを、RSA PKCS #1 v1.5パディングを使用して暗号化しているEコマースWebサイトを想像してください。攻撃者がそのサイトと通信し、Bleichenbacher攻撃を仕掛けることができた場合、この機密データを正常に復号化し、金銭詐欺やなりすましにつながる恐れがあります。
推奨事項
Bleichenbacher攻撃に関連するリスクを効果的に緩和するため、組織は以下の推奨事項を採用する必要があります。
-
Migrate to Stronger Padding Schemes: Bleichenbacher攻撃によって浮き彫りになった主な脆弱性は、RSA鍵の転送メカニズム、特にPKCS#1 v1.5パディングスキームとの組み合わせにあります。組織は、RSA暗号化から、Diffie-Hellmanや楕円曲線(Elliptic Curve)鍵交換などのより安全な代替手段に移行するか、少なくともそのような攻撃に対してより強力なRSA-OAEP(Optimal Asymmetric Encryption Padding)を実装する必要があります。
-
Upgrade to TLS 1.3: TLS 1.3プロトコルには、この攻撃のオラクルとして機能する可能性のあるエラーメッセージの排除など、大幅な改善が含まれています。また、より優れたパディングスキームなど、追加の暗号学的対策も組み込まれています。NISTは、2024年までに米国政府のシステムがTLS 1.3をサポートすることを義務付けており、これは民間部門が従うべき強力な推奨事項でもあります。
-
Regularly Patch and Audit Systems: Bleichenbacher型の攻撃を緩和する上で重要な問題は、パッチが利用可能になった後も多くのシステムが脆弱なまま放置されていることです。多くの企業が時間内にシステムを安全にすることができないため、OpenSSLのようなライブラリに対するタイムリーなパッチ適用を確実に行うことが不可欠です。脆弱性スキャンやパッチ管理ツールは、定期的なセキュリティ監査の一部として組み込む必要があります。
リンク
標準
- SOC2_CONTROLS:
- CC_3_4
- CC_6_7
- CC_7_1
- OWASP_MASVS_L1:
- MSTG_CRYPTO_4
- OWASP_MASVS_L2:
- MSTG_CRYPTO_4
- OWASP_MASVS_v2_1:
- MASVS_CRYPTO_1
- MASVS_CRYPTO_2
- CCPA:
- CCPA_1798_150
- GDPR:
- ART_25
- ART_32
- PCI_STANDARDS:
- REQ_2_2
- REQ_3_7
- REQ_6_2
- REQ_6_3
- REQ_6_4
- REQ_11_3