标题 | SHA—1真的不能用了吗? |
范文 | 张志军 2017年2月24日,谷歌与阿姆斯特丹CWI研究所的研究人员宣布,他们成功实现了c散列算法的碰撞。这标志着用SHA-1(简称安全哈希算法)来做电子文本签名已不再可靠,因为面对一个电子文本和它的SHA-1签名,科学家们可以生成一个完全不同的文本并确保它有完全相同的SHA-1签名。 安全哈希算法是对信息做一种不可逆的转换,它有下列属性:不论输入信息量的大小,特定的哈希算法的输出总是固定的长度;输入信息的微小变化会带来哈希值的很大变化;哈希值的计算必须包括输入信息的每一个比特,否则上面一条将无法满足。 安全哈希算法的强度在于从哈希值反推原来的输入信息有多大的难度。如果黑客能在几天内用现有的计算和存储能力做到,该算法显然不能用。安全哈希算法被普遍应用到用户的口令保护,一般被称为单向加密。其优越性在于攻击者不能根据口令的哈希值而反推出口令本身。攻擊者可以不断地试不同口令的哈希值直到与要破译的口令的哈希值相同。这种攻击需要耗费的时间太多。于是黑客们发明了彩虹列表攻击法。应对这种攻击的方法有增加口令的长度、给哈希值加“盐”,即在哈希值生成过程中加入一个随机生成的数值作为哈希算法的另一个输入。这样,同一个口令因“盐”值的不同,哈希值也不同,攻击者就无法用一个彩虹列表来根据哈希值去反查原来的口令是什么。 安全哈希算法也是文本数字签名或者电子签名技术的一个重要组成部分。数字签名实际上包括两项主要的工作,签名和检验,前者创建一个数字签名,后者验证签名的有效性。这个应用首先要计算文本的哈希值,然后用服务商所提供的或者是用户自己的密匙对哈希值用非对称加密算法来加密,其结果就是这个文本的签名。 这里如果用的是用户自己的密匙,我们称它为数字签名,其不可否认性被全世界的法律体系所公认。如果是用服务商所提供的密匙,则称作电子签名,必须辅以较强的用户认证过程以及服务商对密匙的有效保护,才能被接受。加了签名的文本还需要加上包含了相应公匙的数字证书,这样才能让收到带签名文本的人把签名解密,然后把结果与原文本的哈希值比较,如果数值相同就表示验证成功,表明文本是真实的,并且在签名之后没有过任何改动。 区块链技术也大量使用哈希值。区块链技术的设计者直接选择了比SHA-1更强的SHA-256。SHA-256的哈希值有256个比特,哈希值的可能性用十进制表示相对应64后面加75个0。 SHA-1的使用建议如下:对于提供数字签名业务的服务商,应立即用SHA-256或者更强的哈希算法来替代SHA-1;数字证书的提供者都不应该再使用SHA-1;企业若在文档签名等应用程序中使用SHA-1,需要尽快升级,新的应用程序都应该杜绝使用SHA-1。到SHA-1完全不能使用应该还有几年的时间。虽未迫在眉睫,为安全起见,企业内部的应用程序应该在两年内把所有的SHA-1都替换掉。 |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。