RSA アルゴリズムのブラインディングが見つかりません
復号化または署名検証で使用されるコンテキストがタイミング攻撃に対してブラインディングされていない
説明
この欠陥は、復号化または署名検証に RSA コンテキスト オブジェクトを使用する前に、そのオブジェクトのブラインディングを有効にしなかった場合に発生します。
たとえば、次の復号化のステップの前に、コンテキスト オブジェクト rsa でブラインディングを有効にしていません。
ret = RSA_public_decrypt(in_len, in, out, rsa, RSA_PKCS1_PADDING)
リスク
ブラインディングなしでは、暗号化操作の完了にかかる時間とキー値が相関関係をもちます。攻撃者は、完了までの時間を計測することで RSA キーに関する情報を収集できます。ブラインディングによってこの相関関係を排除し、タイミング攻撃から復号化または検証操作を保護します。
修正方法
RSA 復号化または署名検証を実行する前に、ブラインディングを有効にします。
ret = RSA_blinding_on(rsa, NULL);
例
結果情報
| グループ: 暗号化 |
| 言語: C | C++ |
| 既定値: オフ |
コマンド ライン構文: CRYPTO_RSA_NO_BLINDING |
| 影響度: Medium |
バージョン履歴
R2018a で導入