密码学完整性算法——密码学哈希函数

摘要

哈希函数H使用变长数据分组M作为输入,生成定长结果为h=H(M),这一结果称为哈希值或哈希码。当输入大数据集合时,输出是均匀分布且随机的,且M的任一位或几位改变,会极大影响其哈希值。

安全领域使用的哈希函数称为密码学哈希函数。密码学哈希函数具有单向性(找不到一个映射为某个哈希结果的数据对象)和抗碰撞性(找不到两个映射为相同哈希结果的数据对象),因为输入被填充到某固定长度(如1024)的整数倍,填充信息长度是一个安全度量,所以哈希算法可用于判断数据是否被篡改。总的来说,哈希函数的主要目标是保证数据的完整性。

本文主要论述密码学哈希函数的广泛应用,介绍一个简单的哈希函数和轻量级哈希函数。

关键词:密码学哈希函数,数据完整性,加密,轻量级
密码学哈希函数的广泛应用

密码学哈希函数可以说是用途最广泛的密码算法,已被广泛应用于各种安全应用和网络协议中,为了更好地理解密码学哈希函数的安全要求和含义,下面先举几个应用实例。

1.消息认证。

消息认证用于验证消息完整性,可确保收到的数据和发送时一致,即没有被插入,删除或替换。当哈希函数用于提供消息认证功能时,哈希函数值通常称为信息摘要。

发送方使用哈希函数对待发送消息计算一个哈希值,然后将待发送消息与哈希值一起发送;接收方收到后,对消息执行相同的哈希计算,并将结果与收到的哈希值进行比较。若匹配,则接收方推断消息未被篡改。

重要的一点是,必须已安全的方式传输哈希值,也就是说,必须保护哈希值,使得攻击方在更改信息时不能轻易地通过修改哈希值来欺骗接收方。此时,可以使用对称密码算法E加密待发送消息和其哈希值(若要降低加解密运营开销,可只加密哈希值)。也可以设定通信双方共享的秘密值S,将消息M与秘密值S连接再计算哈希值,并将哈希值附在消息M后发送,接收方可通过共享的秘密值S重新计算哈希值来判断消息是否被篡改。因为秘密值S本身未被发送,攻击方截获消息后无法修改,也无法生成假消息。

消息认证更常使用消息认证码(MAC)实现,也称带密钥的哈希函数。MAC函数将密钥K与数据分组H(M)作为输入,生成一个哈希值(MAC),也就是E(K,H(M)),它是一个定长输出,在不知道密钥的情况下,攻击方无法篡改关联的MAC值,因此它是安全的。

2.数字签名。

数字签名的操作类似于MAC,它是使用用户的私钥加密消息的哈希值,即拿到用户公钥即可验证该数字签名关联的消息的完整性。下图简述了哈希码提供数字签名的方式。

(a)使用公钥加密算法和用户私钥加密哈希码,只有发送方可以生成加密后的哈希码,所以这种方式还提供数字签名。

(b)使用一个对称密钥加密消息和私钥加密后的哈希值,这种方式既能提供保密性也能提供数字签名。

3.单向口令文件

操作系统储存口令的哈希值而不储存口令,通过计算用户输入的口令的哈希值,和口令文件比对。这样,即使攻击者能够访问口令文件,也不能获取真正的口令,现在大多数操作系统都使用这样的口令保护机制。

一个简单的哈希函数

所有的哈希函数都按一般原理进行操作:将输入视为一系列n位分组,一次处理输入中的一个分组,迭代直至生成一个n位哈希函数。

最简单的一种是将每个分组按位异或(XOR),表示为Ci=bi1⊕bi2⊕…⊕bim

其中⊕表示按位异或运算;1<=i<=n,i表示哈希码的第i位;m表示n位分组数量;因此bij表示第j个分组中的第i位。

这种方法对随机数据的完整性的检验非常有效,因为每个n位哈希值出现的概率是相同的。但数据为非随机时,需要进行简单改进,消除输入中出现的任何规律性,使数据“随机化”输入。一种改进方式是,处理完一个分组,就将哈希值旋转一位或循环移动一位,过程如下:

1.将n位哈希值设为0.

2.按如下方式处理每个分组:

A.当前哈希值循环左移一位

B.该分组与哈希值异或

美国国家标准局最初提出,对64位的分组执行简单异或运算,并且使用密文分组连接(CBC)加密整个消息。消息M由一系列64位分组X1,X2,…,XN组成,其哈希码h=H(M)定义为所有分组的异或,并将该哈希码作为最后一个分组

H=X(N+1)=X1⊕X2⊕…⊕X(N)

接着使用CBC加密消息和哈希码,得加密后的消息Y1,Y2,…,Y(N)

这种异或运算可以按任意顺序执行,即改变分组顺序,哈希码不变。

轻量级哈希函数

传统哈希函数可能无法在资源受限的设备上实现。轻量级哈希函数对于不需要使用抗碰撞性的哈希函数,可以使用较小的内部状态和输出长度,且使用轻量级哈希函数的大多数目标协议中,输入长度通常小得多(不超过256位)。

Photon是轻量级密码学哈希函数的一个例子,使用类似SHA-3的海绵结构,设计者认为它非常轻量级,接近于理论上的最优,因此它是许多文献中规定的哈希函数之一。

参考文献(乱写的)

Ø William Stallings《Cryptography and Network Security Principles and Practice,Eighth Edition》

Ø Jueneman,R“Electronic Document Authentication.”IEEE Network Magazine,April 1987

Ø Guo,J.;Peyrin,T.;Poschmann,A.”The PHOTON Family of Lightweight Hash Functions.”31st Annual International Cryptology Conference(CRYPTO 2011),2011