CodeQL 文档

不使用 OAEP 的 RSA 算法

ID: java/rsa-without-oaep
Kind: path-problem
Security severity: 7.5
Severity: warning
Precision: high
Tags:
   - security
   - external/cwe/cwe-780
Query suites:
   - java-code-scanning.qls
   - java-security-extended.qls
   - java-security-and-quality.qls

单击查看 CodeQL 仓库中的查询

加密算法通常使用填充方案来使明文更不可预测。OAEP(最佳非对称加密填充)方案应与 RSA 加密一起使用。使用过时的填充方案(如 PKCS1)或根本不使用填充方案会削弱加密,使其容易受到填充预言机攻击。

建议

在使用 RSA 加密时使用 OAEP 方案。

示例

在以下示例中,BAD 案例显示没有使用填充,而 GOOD 案例显示使用 OAEP 方案。

// BAD: No padding scheme is used
Cipher rsa = Cipher.getInstance("RSA/ECB/NoPadding");
...

//GOOD: OAEP padding is used
Cipher rsa = Cipher.getInstance("RSA/ECB/OAEPWithSHA-1AndMGF1Padding");
...

参考

  • ©GitHub, Inc.
  • 条款
  • 隐私