Android静态安全检测 -> AES/DES弱加密
2016-07-22 19:52
806 查看
AES/DES弱加密 - Cipher.getInstance方法
一、API
1. 继承关系
【1】java.lang.Object
【2】java.crypto.Cipher
2. 主要方法
【1】getInstance(String transformation)
【2】getInstance(String transformation, String provider)
【3】getInstance(String transformation, Provider provider)
【4】其他方法
https://developer.android.com/reference/javax/crypto/Cipher.html
3. 示例
【1】调用AES/DES加密算法的语句
【2】CBC是工作模式
ECB(电子密码本模式:Electronic codebook)
CBC(密码分组链接模式:Cipher-block chaining)
CFB(密文反馈模式:Cipher feedback)
OFB(输出反馈模式:Output feedback)
参考链接
http://blog.poxiao.me/p/advanced-encryption-standard-and-block-cipher-mode/
http://m.blog.csdn.net/article/details?id=51066799
【3】PKCS5Padding是填充模式
【4】zerolv是初始化向量
【5】工作模式、填充模式、初始化向量这三种因素一个都不能少,否则如果你不指定的话,那么程序就要调用默认实现
【6】参考链接
http://blog.csdn.net/bingdianlanxin/article/details/46461797
二、触发条件
1. 调用Cipher类的getInstance方法
【1】对应到smali语句中的特征
invoke-static {v1}, Ljavax/crypto/Cipher;->
getInstance(Ljava/lang/String;)Ljavax/crypto/Cipher;
2. 寄存器赋值的判断
【1】const-string v1, "AES"
Android提供的AES加密算法API默认使用ECB模式
【2】const-string v1, "DES"
DES默认是56位加密密钥,已经不安全
【3】const-string v1, "AES/ECB/
【4】const-string v1, "DES/ECB/
【5】const-string v1, "DESede/ECB/
DESede(三重DES加密)
http://pandazheng0.lofter.com/post/1ccbccd7_57d23e8
三、漏洞原理
【1】使用AES/DES/DESede加密算法时,如果使用ECB模式,容易受到攻击风险,造成信息泄露
【2】更多内容
http://www.droidsec.cn/android应用安全开发之浅谈加密算法的坑/
四、修复建议
【1】使用AES/DES/DESede加密算法时,应显示指定使用CBC或CFB加密模式
相关文章推荐
- C#对称加密(AES加密)每次生成的结果都不同的实现思路和代码实例
- c#通过DES加密算法加密大文件的方法
- 详解nodejs与javascript中的aes加密
- javascript实现des解密加密全过程
- php中AES加密解密的例子小结
- Node.js DES加密的简单实现
- C#代码实现对AES加密解密
- C#实现的AES加密解密完整实例
- C++中四种加密算法之AES源代码
- PHP的AES加密算法完整实例
- JS实现的3des+base64加密解密算法完整示例
- Android AES加密工具类分享
- C语言使用openSSL库DES模块实现加密功能详解
- C++实现DES加密算法实例解析
- PHP、Java des加密解密实例
- PHP使用DES进行加密与解密的方法详解
- PHP和.net中des加解密的实现方法
- php写的AES加密解密类分享
- PHP简单实现DES加密解密的方法
- PHP中加密解密函数与DES加密解密实例