什么是加密冲突?

日期: 2009-11-30 作者:Michael Cobb翻译:Sean 来源:TechTarget中国 英文

问:什么是加密算法的“冲突”?攻击可能制造加密冲突吗?   答:为了解答您的问题,我要向您逐步展示加密学的各个方面。   加密算法的其中一种类型叫哈希函数法。哈希函数将任意长度的信息为输入,然后输入出一个短的、固定长度的结果,被称为哈希值(hash)、摘要(digest)或校验(checksum)。哈希函数在加密学中有许多用途,因为原输入中的任何突变或更改都将改变算出的哈希值。

这意味着哈希函数能够被应用到许多形式的验证中去,比如说数字签名和消息认证码。哈希函数还可以验证文件的完整性,因为即使对文档、信息或任何类型的数据最轻微的更改都将改变哈希值。   哈希函数跟加密函数并不一样,加密是一个双向……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

问:什么是加密算法的“冲突”?攻击可能制造加密冲突吗?

  答:为了解答您的问题,我要向您逐步展示加密学的各个方面。

  加密算法的其中一种类型叫哈希函数法。哈希函数将任意长度的信息为输入,然后输入出一个短的、固定长度的结果,被称为哈希值(hash)、摘要(digest)或校验(checksum)。哈希函数在加密学中有许多用途,因为原输入中的任何突变或更改都将改变算出的哈希值。这意味着哈希函数能够被应用到许多形式的验证中去,比如说数字签名和消息认证码。哈希函数还可以验证文件的完整性,因为即使对文档、信息或任何类型的数据最轻微的更改都将改变哈希值。

  哈希函数跟加密函数并不一样,加密是一个双向操作,它将明文形式的的数据转化为密码和暗文(back)。然而,对于哈希函数,如果你愿意,它会将一串数据流汇编成一小段摘要(digest)和概要的形式,这是一个严格的单向操作。由于哈希函数的单向性质,密码的哈希值往往就作为密码本身被存储。由于没有办法找到是哪一个密码产生的哈希值,因此这些值对攻击者来说是没有用的。

  但是,这又存在着一个不可避免的问题。如果我们产生一个短的、固定长度的哈希值(例如128位)来代表任何长度的数据(长的或短的数据),这意味着可能输入值的数量要远远超过特定的哈希值的数量。因此,多个输入数据流能够产生相同的哈希值。当这种情况发生时,它就被称为(加密)冲突。如果很难找出两个输入有相同的哈希输出,那么哈希函数就被认为是抗冲突(collision-resistant)的。但抗冲突(collision-resistant)并不意味着不存在冲突,它仅仅是指冲突出现的几率很低而已。

  一次成功的、针对哈希函数的加密冲突攻击(encryption collision attack)能够破坏所有种类的数字系统的安全性。例如,许多软件出版商会为他们的下载软件提供MD5(Message-Digest algorithm 5)哈希值。但是,如果攻击者恶意地修改了源代码,同时又设法保持相同的哈希值,那么任何下载了被篡改过的版本的用户都不会知道其实自己使用的不是正版软件。

  而针对你提出的第二个问题,我要说的是攻击的确试图找到加密冲突。2005年3月,两位研究人员利用不同的公共密钥但用相同的MD5哈希值创造出两个X.509数字证书。从此,一种可以在一分钟之内找到MD5碰撞冲突的算法面世了。

  幸运的是,MD5的被证明是非抗冲突的(non-collision resistant),在大多数应用中它正在被哈希函数家族的SHA-2取代。

翻译

Sean
Sean

相关推荐