WIKI

11.5 RSA中不使用Padding风险检测

(1)描述

使用RSA公钥时通常会绑定一个padding,原因是为了防止一些依赖于no padding时对RSA算法的攻击。

(2)风险等级

低危

(3)影响范围

所有

(4)检测方法

检测类型:静态分析

风险代码如下:

...Cipher rsa = null;
try {
  rsa = javax.crypto.Cipher.getInstance("RSA/NONE/NoPadding");
}catch (java.security.NoSuchAlgorithmException e) {}
catch (javax.crypto.NoSuchPaddingException e) {}
SecretKeySpec key = new SecretKeySpec(rawKeyData, "RSA");
Cipher cipher = Cipher.getInstance("RSA/NONE/NoPadding");
cipher.init(Cipher.DECRYPT_MODE, key);
...

用正则表达式"RSA/(\w){3}/NoPadding"匹配字符串常量

(5)修复建议

建议使用Padding模式。

(7)参考资料

http://wolfeye.baidu.com/blog/weak-encryption/