美国国家标准与技术研究(NIST)所在今年8月公布了安全哈希算法3(Secure Hash Algorithm-3,SHA-3),并称其为保护电子信息完整性的下一代安全工具。
那么,它会是吗?
探讨对SHA-3的需求
加密哈希函数广为用于安全的许多方面,比如数字签名、数据完整性检查,不过与其他加密算法的作用是有区别的。它们把电子文件、消息或数据块生成简短的数字指纹,这称为消息摘要或哈希值。散列法通过哈希函数中的运算实现,使用非常多的密钥和块,能够有效地改变每个块的密钥,可抵抗密钥相关的攻击。
加密使用的通用运算往往有不同的设计目的。例如,对称密钥分组运算AES可以用于生成哈希值,不过其密钥和块的大小使其重要却低效。
安全加密哈希函数的关键属性包括:
· 输出长度小于输入长度
· 对于任何输入都快速和高效的计算
· 任何输入改变都会影响大量的输出位
· 单向值:输入不由输出决定
· 强抗冲突性:两个不同的输入不能产生相同的输出
2012年,NIST宣布Keccak是加密哈希算法竞赛之冠,其选择了一种下一代密码安全哈希算法,该竞赛于2007开始,共收到了64个提交。彼时极为流行的AES算法被选用于类似的过程,以确保对每个提交进行彻底且透明的分析。新标准SHA-3(Permutation-Based哈希和Extendable-Output函数)可从NIST网站上下载,与2014年5月公布征求意见的试行版本没有明显区别。
NIST表示虽然SHA-2仍旧是安全的,适合大众使用的,但有了SHA-3作补充,可满足更多多样性需求。MD5和SHA-1曾广泛使用哈希算法,不过现在已辉煌不再,为SHA-2所取代。例如,微软在2005宣布禁止开发人员使用DES、MD4、MD5,某些情况下会禁用任何SHA-1加密算法。尽管并没有关于SHA-2攻击的报道,然与SHA-1类似,总有SHA-3的用武之地,它与SHA-2设计非常不同。如果SHA-2一经攻击,行业还可以有可更换的方案。
SHA-3带来了什么
SHA-3系列由四个加密哈希函数(SHA3-224、SHA3-256、SHA3-384以及SHA3-512),两个可扩展输出函数(SHAKE128和SHAKE256)组成。
可扩展输出函数不同于哈希函数,因为其可以扩展至任意需要的长度,这对于全域散列、随机散列、流加密以及生成消息身份验证代码是非常理想的。在硬件部署中,Keccak明显快于其他参与者,一些SHA-3函数可以不需要更多额外的电路部署在芯片上。
为SHA-3做准备
实际上,广泛采用SHA-3可能还需要五年时间。大多数企业正在从SHA-1过渡至SHA-2。
使用SSL连接的遗留系统,包括软件和硬件(如游戏机、手机和嵌入式设备),这些依靠硬编码的证书都需要迁移到SHA-2证书上去。如果软件不支持SHA-2加密,也要对软件进行更新升级。
寻求将SHA-3添加至其硬件或软件产品兼容功能的早期采用者们可以使用Synopsys的DesignWare SHA-3 Look Aside Core或PMSF IT Consulting's SHA3库。Keccak代码包的最新版本符合SHA-3标准,可大量独立实施。
最后,为了与最新的SHA部署和加密最佳实践保持同步,也需遵循NIST等标准机构发布的公告和建议。