SV.WEAK.KEYS.EC

暗号化アルゴリズムでの不十分なキーの長さ

Klocwork は、EC 暗号化アルゴリズムが不十分なサイズのキーで使用されるときに、SV.WEAK.KEYS.EC 欠陥を報告します。

脆弱性とリスク

キーのサイズが小さいと、アルゴリズムの破損につながる可能性があり、それにより、機密データの漏洩を引き起こす可能性があります。アルゴリズムは、ブルートフォース攻撃を行うために使用される、強力なコンピューティング技術に対して堅牢である必要があります。

軽減と防止

256 ビット未満のキーで、EC アルゴリズムを実装することは避けてください。

脆弱コード例

コピー
import java.security.KeyPairGenerator;
import java.security.spec.ECGenParameterSpec;
 
class KeyGenECTest {
  public static void main(String[] args) {
    KeyPairGenerator generatorEC = KeyPairGenerator.getInstance("EC");
    ECGenParameterSpec specEC = new ECGenParameterSpec("secp112r1");   // SV.WEAK.KEYS.EC (!)
  }
}

Klocwork は、6 行目で「暗号化アルゴリズムは 256 ビット未満のキーを使用しています」という、SV.WEAK.KEYS.EC 欠陥を報告します。EC アルゴリズムには、256 ビット以上のキーが必要です。

修正コード例

コピー
import java.security.KeyPairGenerator;
import java.security.spec.ECGenParameterSpec;
 
class KeyGenECTest {
  public static void main(String[] args) {
    KeyPairGenerator generatorEC = KeyPairGenerator.getInstance("EC");
    ECGenParameterSpec specEC = new ECGenParameterSpec("secp256r1");  // no SV.WEAK.KEYS.EC
  }
}

EC アルゴリズムは 256 ビットのキーを使用するため、Klocwork は欠陥を報告しなくなります。

セキュリティトレーニング

Secure Code Warrior が提供しているアプリケーションセキュリティトレーニング教材。