描述
使用无效的或有风险的加密算法会产生不必要的风险,导致敏感信息暴露。
DES案例
问题
- 对称加密算法问题
- Q1:如使用了过时的加密算法(如RC4/DES/3DES)
- Q2:设置了不安全的加密模式(ECB)
- Q3:不正确地处理初始向量(IV)
分析
Q1
DES:数据加密标准是IBM提出的,第一个基于Lucifer算法的加密技术。作为第一个加密标准,自然会带有些许瑕疵漏洞使其不是特别的安全。
3DES:三重DES是DES的加强版,提供了DES的三重安全性。他和DES使用同样的算法,只是做了三次加密来提升安全级别。
AES:高级加密标准是由美国国家标准技术研究院(NIST)提出的,旨在取代DES加密技术。
Blowfish:由Bruce Schneier发明的一种在世界范围被广泛使用的加密方式。Blowfish使用16到448位不同长度的密钥对数据进行16次加密。
性能对比:
算法 | 位数 | 备注 | 性能 | 资源 |
---|---|---|---|---|
RC4 | 40 | 有风险 | - | - |
DES | 56 | 有风险 | 22.5MB/s | 中 |
3DES | 112/168 | 中等 | 21.3MB/s | 高 |
AES | 128/192/256 | 符合要求 | 51.2MB/s | 低 |
Blowfish | 256-448 | 符合要求 | 64MB/s | 低 |
Q2
ECB不需要初始向量(IV),因此在于输入和输出存在非常明显的关联,攻击者可以从输出轻松地猜出输入数据。
Q3
为了方便,大多数开发者使用一个固定的初始向量(IV)用于加解密,这样使得相同的输入会产生相同的输出。根据历史经验,攻击者可以截获输出,然后猜出输入的含义,当再次捕捉到相同的输出后,即可破解出输入。
处理
采用AES(128/192/256位)加密算法 [Java代码参考]
采用Blowfish加密算法[Java代码参考]
网友评论