加密哈希函数(CHF) 郝伟 2020/08/31 [TOC]
1. 简介
加密哈希函数(Cryptographic Hash Function)是将任意长度的消息变成固定长度的短消息,它类似于一个自变量是消息的函数,也就是Hash函数。Hash函数是一种数学算法,可将任意大小的数据(通常称为“消息”)映射到固定大小的位数组(“哈希值”,“哈希”或“消息摘要”) 。它是一种单向函数,也就是说,实际上是不可行的。理想情况下,查找产生给定哈希值的消息的唯一方法是尝试对可能的输入进行暴力搜索,以查看它们是否产生匹配项,或使用匹配哈希表的Rainbow表。加密哈希函数是现代加密技术的基本工具。
2. 主要特性
理想的加密哈希函数具有以下主要属性:
- 它是确定性的,意味着相同的消息始终导致相同的哈希
- 快速计算任何给定消息的哈希值
- 生成产生给定哈希值的消息是不可行的(即逆转生成给定哈希值的过程)
- 找到具有相同哈希值的两个不同消息是不可行的
- 对邮件进行很小的更改就应该广泛更改哈希值,以使新的哈希值看起来与旧的哈希值不相关(雪崩效果)[3]
加密哈希函数具有许多信息安全应用程序,尤其是在数字签名,消息身份验证代码(MAC)和其他形式的身份验证中。它们还可以用作普通的哈希函数,为哈希表中的数据建立索引,进行指纹识别,检测重复数据或唯一标识文件,以及用作校验和以检测意外数据损坏。确实,在信息安全性上下文中,加密哈希值有时也称为(数字)指纹,校验和,或仅称为哈希值,即使所有这些术语代表具有更不同的属性和用途的更通用的功能。
3. 主要CHF算法
3.1. MD5
MD5由Ronald Rivest于1991年设计,以取代较早的哈希函数MD4,并在1992年指定为RFC1321。与MD5的冲突可以在几秒钟内计算出来,这使得该算法不适用于大多数需要加密哈希的用例。 MD5产生128位(16字节)的摘要。
3.2. SHA-1
HA-1是美国政府Capstone项目的一部分。该算法的原始规范-现在通常称为SHA-0-由美国政府标准机构NIST(美国国家标准技术研究院)于1993年发布,标题为“安全哈希标准,FIPS PUB 180”。它在发布后不久就被美国国家安全局(NSA)撤消,并由1995年在FIPS PUB 180-1和通常称为SHA-1的修订版中取代。可以使用破碎攻击来产生与完整SHA-1算法的冲突,并且应将哈希函数视为已损坏。 SHA-1产生160位(20字节)的哈希摘要。即使与其他标准哈希算法(例如SHA-0,SHA-2和SHA-3)冲突,文档也可能将SHA-1称为“ SHA”。
3.3. RIPEMD-160
RIPEMD(RACE完整性基元评估消息摘要)是由比利时鲁汶大学的COSIC研究小组的Hans Dobbertin,Antoon Bosselaers和Bart Preneel在比利时鲁汶开发的一系列密码哈希函数,于1996年首次发布。基于MD4中使用的设计原理,并且在性能上与更流行的SHA-1类似。 RIPEMD-160尚未损坏。顾名思义,RIPEMD-160产生160位(20字节)的哈希摘要。
3.4. SHA-2
SHA-2(安全哈希算法2)是由美国国家安全局(NSA)设计的一组加密哈希函数,于2001年首次发布。它们是使用Merkle-Damgård结构通过单向压缩函数构建的本身使用Davies-Meyer结构(来自(分类)的专用分组密码)构建。 SHA-2基本上由两种哈希算法组成:SHA-256和SHA-512。 SHA-224是SHA-256的变体,具有不同的起始值和截断的输出。 SHA-384和鲜为人知的SHA-512 / 224和SHA-512 / 256都是SHA-512的变体。在诸如AMD64之类的64位计算机上,SHA-512比SHA-256更安全,并且通常比SHA-256快。输出大小(以位为单位)由扩展名“ SHA”指定,因此SHA-224的输出大小为224位(28字节),SHA-256产生32字节,SHA-384产生48字节,最后SHA -512产生64个字节。
3.5. SHA-3
NIST于2015年8月5日发布了SHA-3(安全哈希算法3)。SHA-3是更广泛的加密原始语族Keccak的子集。 Keccak算法是Guido Bertoni,Joan Daemen,Michael Peeters和Gilles Van Assche的工作。 Keccak基于海绵构造,也可以用于构造其他密码原语,例如流密码。 SHA-3提供与SHA-2相同的输出大小:224、256、384和512位。也可以使用SHAKE-128和SHAKE-256功能获得可配置的输出大小。在此,对名称的-128和-256扩展意味着功能的安全强度,而不是按位表示的输出大小。
3.6. BLAKE2
2012年12月21日发布了BLAKE的改进版本,称为BLAKE2。它是由Jean-Philippe Aumasson,Samuel Neves,Zooko Wilcox-O'Hearn和Christian Winnerlein创建的,目的是取代广泛使用但损坏的MD5和SHA -1算法。在64位x64和ARM体系结构上运行时,BLAKE2b的速度比SHA-3,SHA-2,SHA-1和MD5快。尽管BLAKE和BLAKE2尚未像SHA-3一样被标准化,但是BLAKE2已在包括Argon2密码哈希在内的许多协议中使用,以实现其在现代CPU上的高效率。由于BLAKE是SHA-3的候选者,因此BLAKE和BLAKE2都提供与SHA-3相同的输出大小-包括可配置的输出大小。