技术开发 频道

HASH算法不是加密算法:CSDN密码泄露

        【IT168 技术】在 CSDN 密码泄漏事件中,网友评论提到密码的明文保存和 MD5 保存问题。目前,很多站点都用 MD5 算法保存密码,但对于 HASH(哈希)算法的认识还存在很多误区,很有必要重新认识。CSDN 这次数据泄漏,同时也给了我们一些有趣的分析数据。

大家最使用的密码长度不如所料,是 8 位左右

密码最常见的是在 8 位到 14 位之间 

排在第一的竟然是 qq.com

  一、HASH 算法不是加密算法

  HASH 算法是一种消息摘要算法,不是一种加密算法,但由于其单向运算,具有一定的不可逆性,成为加密算法中的一个构成部分,完整的加密机制不能仅依赖 HASH 算法。

  二、HASH 算法的碰撞现象

  HASH 算法可以理解为将任意的信息经过提炼后,成为一个定长的字符串。世界上的信息数量为无穷大,所以定长的字符串不可能表达所有的摘要,因此存在所谓的“碰撞”,即 2 个同样的信息源摘要是一样的。2004年山东大学王晓云提出有关快速查找“碰撞对”的算法,引起安全界对于 HASH 算法的极大关注,NIST 提出到 2010 年不再使用 MD5 和 SHA-1。目前仍可使用的 HASH 算法包括:SHA-256,SHA-512,SHA-224,SHA-384。2011年 2 月 FIPS180-4草案还增加了 SHA-512/224,SHA-512/256。这些算法都是 SHA-2系列算法,SHA3-256算法也即将到来。关于碰撞必须还要说的是,有几率找到碰撞对,但并不意味着 HASH 算法整体被否定,例如将合同文本整体 HASH 并数字签名,如果找到碰撞对,很难还原成一个正常的文本,如果是一堆乱码,没有人会认可此文件,在不篡改 HASH 的前提下无法有实际意义的修改合同。

  三、HASH 的破解与社会工程学

  HASH 算法本身为单向性,很难直接破解,现有的破解都是将常用字符计算 HASH 值后反向比较。例如密码 123456,假设 MD5 值为 1ab9744e58acee3ed8f03508cbf82bf5,那么数据库中查到 MD5 值即知道了密码。通过社会工程学的应用,大量常用密码已可直接破解。

  四、合理使用 HASH 算法

  1. 废除旧算法,至少使用 SHA-256,64位操作系统 SHA-512运算速度更佳,建议选用

  2. 合理加点“SALT”,即干扰字符串。例如:SALT1=C`3/$xUM,5ltL4pze;avf9#kgmET^SALT2=1qYIs,vOSfn%UHhm5+3TX:#iety0d 计算 HASH SHA-512(SALT1+ 用户名 +SALT2+ 密码)那么社会工程学和目前的暴力运算是无法解决的

  3. 不要以为联合使用 HASH 算法会安全。例如 MD5+SHA1,或者 SHA1(MD5)嵌套,有文献证实都是无效的。

  最后希望程序员们能多看文献,跟上国际安全标准,尽可能避免安全事件的发生的影响。

1
相关文章