WIKI

11.3 AES/DES弱加密风险检测

(1)描述

AESECB加密模式容易遭到字典攻击,安全性不够。

(2)影响范围

所有

(3)风险等级

低危

(4)检测方法

检测类型:静态分析

Step1:检测以下函数:

ü  getInstance(String transformation)

ü  getInstance(String transformation, String provider)

ü  getInstance(String transformation, Provider provider)

 

Step2:检测上述函数第一个参数值是否是以下情况:

ü  "AES"Android提供的AES加密算法API默认使用ECB模式

ü  "DES"DES默认是56位加密密钥,已经不安全

ü  "AES/ECB/xxx"

ü  "DES/ECB/xxx"

ü  "DESede/ECB/xxx"

 

风险代码样例:

...
SecretKeySpec key = new SecretKeySpec(keyBytes, "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding", "BC");
cipher.init(Cipher.ENCRYPT_MODE, key);
...

(5)修复建议

避免使用ECB模式,建议使用CBC

(6)参考资料

http://blog.csdn.net/u013107656/article/details/51997957

https://developer.android.com/reference/javax/crypto/Cipher.html

http://drops.wooyun.org/tips/15870

https://developer.android.com/training/articles/keystore.html

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

http://www.freebuf.com/articles/terminal/99868.html