彩虹表

彩虹表()是计算机安全领域中一种用于攻击密码散列函数的预计算表,主要用于在有限的时间内破解存储的密码哈希值。

彩虹表是时空权衡(Time-Memory Trade-off)理论的典型应用。它在暴力破解(花费大量时间、少量存储)和简单的查找表(花费少量时间、巨量存储)之间取得了平衡。通过预先计算并存储特殊的“哈希链”,彩虹表能够以比暴力破解快得多的速度破解哈希,同时所需的存储空间远小于存储所有可能哈希值的全量查找表。

彩虹表技术通常用于破解长度固定且字符集固定的密码(例如纯数字或字母组合)。现代的密码安全实践通常通过加盐(Salt)和使用慢速哈希算法(如bcrypt、scrypt)来防御彩虹表攻击。

背景与原理
在计算机安全认证系统中,为了防止密码泄露,通常不会在数据库中以明文存储用户密码,而是存储密码的密码散列摘要(Hash)。当用户登录时,系统将输入的密码进行同样的哈希运算,并与数据库中的摘要进行比对。

攻击者如果获取了数据库(即获取了所有用户的哈希值),试图还原明文密码时面临两种极端选择:

暴力破解:尝试每一个可能的密码组合,计算其哈希值并比对。这不需要存储空间,但计算量极大,时间成本极高。

全量查找表:预先计算所有可能密码的哈希值并存储为(Hash, Password)对。破解时只需查询即可,速度极快,但对于现代复杂的密码规则,生成的表会大到无法存储。

时空权衡(Time-Memory Trade-off)旨在寻找上述两者的平衡点。1980年,马丁·赫尔曼提出了一种基于矩阵的算法

}}

外部链接

*

评论 (0)

  • 还没有评论,来抢沙发吧。