APP下载

SHA—1真的不能用了吗?

2017-06-05张志军

软件和集成电路 2017年5期
关键词:哈希数字签名口令

张志军

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都替换掉。

猜你喜欢

哈希数字签名口令
哈希值处理 功能全面更易用
Windows哈希值处理不犯难
交通运输行业数字签名系统的设计与实现分析
文件哈希值处理一条龙
高矮胖瘦
口 令
关于电子商务中安全数字签名的研究
好玩的“反口令”游戏
基于XML的数字签名在电子病历的应用方法
巧用哈希数值传递文件