SV.WEAK.KEYS.RSA
暗号化アルゴリズムでの不十分なキーの長さ
Klocwork は、RSA 暗号化アルゴリズムが不十分なサイズのキーで使用されるときに、SV.WEAK.KEYS.RSA 欠陥を報告します。
脆弱性とリスク
キーのサイズが小さいと、アルゴリズムの破損につながる可能性があり、それにより、機密データの漏洩を引き起こす可能性があります。アルゴリズムは、ブルートフォース攻撃を行うために使用される、強力なコンピューティング技術に対して堅牢である必要があります。
軽減と防止
2048 ビット未満のキーで、RSA アルゴリズムを実装することは避けてください。
脆弱コード例
コピー
import java.security.KeyPairGenerator;
class KeyGenRSATest {
public static void main(String[] args) {
KeyPairGenerator generatorRSA = KeyPairGenerator.getInstance("RSA");
generatorRSA.initialize(1024); // SV.WEAK.KEYS.RSA (!)
}
}
Klocwork は、6 行目で「暗号化アルゴリズムは 2048 ビット未満のキーを使用しています」という、SV.WEAK.KEYS.RSA 欠陥を報告します。RSA アルゴリズムには、2048 ビット以上のキーが必要です。
修正コード例
コピー
import java.security.KeyPairGenerator;
class KeyGenRSATest {
public static void main(String[] args) {
KeyPairGenerator generatorRSA = KeyPairGenerator.getInstance("RSA");
generatorRSA.initialize(2048); // no SV.WEAK.KEYS.RSA
}
}
RSA アルゴリズムは 2048 ビットのキーを使用するため、Klocwork は欠陥を報告しなくなります。
外部参考資料
セキュリティトレーニング
Secure Code Warrior が提供しているアプリケーションセキュリティトレーニング教材。