加密算法分两类
1、分组加密算法 DES 3-DES IDEA AES BLOWFISH
2、流加密算法 RC4 ORYX SEAL
http://www.cnblogs.com/happyhippy/archive/2006/12/23/601353.html
分组加密也分四种模式 (ECB、CBC、CFB、OFB)
对于这几种模式的区别在于衡量他们在明文攻击、并行计算、误差传递等指标的表现
对流密码加密的攻击
流密码主要原理是 A XOR 密钥 = E(A)
reused key attack
如果密钥相同, E(A) XOR E(B) = (A XOC C) XOR (B XOR C) = A XOR B
E(A) E(B) 是已知 ,如果A再已知 就可以得到B,A攻击B就成立
bit flipping方式就是按照上面的公式 用B的明文 构造成B的密文 如果是cookie 就可以得到权限
WEP破解 免费蹭网的步骤:
wep采用rc4协议+crc32校验。为了防止被bit flipping,wep采用了一个24bit的初始化向量iv。这种方式可以采用暴力破解,找出两个重复的iv输入的包,并构造相同的crc32校验即可开展reused key attack。
ECB 比较简单的分组模式 ,不同分组直接的加密过程是独立的 不安全。容易被人伪造拼接出密文。当需要加密的明文多余一个分组的情况下,不要使用ECB
CBC:padding oracle
推荐下这篇笔记,比书中会更清楚点
http://www.icylife.net/yunshu/attachments/Padding-Oracle-Attack.pdf
选择难以攻破的加密算法不难,选一个不容易被破解的密码才难。
密钥放到代码、配置、数据库中都有些不同程度的泄漏风险。最好是统一管理到一个集群中 不过这其实只是收归风险而已。
随机数攻击
因为很多程序员都有用伪随机函数 以及用pid ,时间作为种子的习惯。且生成的随机数还用于生成一些敏感的数据。例如敏感的数据文件明、抽奖、密码取回连接等
那么如果算法被猜中后,攻击者就是有办法根据伪随机序列猜中服务器的行为而达到攻击目的。
linux中建议采用open(/dev/random,o_ronly)来获取随机数。
MD5在本人项目中也常用到
补一个针对MD5的攻击手段
http://hi.baidu.com/aullik5/item/a4906012f04552fc9c778afa
http://blog.csdn.net/singlerace/article/details/1360400