1.Hash 函数将任意长的报文 M映射为定长的 hash 码 h, 其形为:h=H(M) 。
2.hash函数特点:单向性,指由 Hash 码不能得出相应的报文;抗弱碰撞性,保证不能找到与给定报文具有相同 Hash 值的另一报文,可以通过对 Hash 函数值加密来防止伪造;抗强碰撞性,涉及 Hash 函数抗生日攻击这类攻击的能力强弱问题。
3.安全 Hash 算法(SHA)是由美国标准与技术研究所(NIST)设计并于 1993 年公布(FIPS PUB 180), 1995 年又公布了 FIPS PUB 180-1 ,通常称之为 SHA-1 。其输入为长度小于 264位的报文,输出为 160 位的报文摘要,该算法对输入按 512 位进行分组,并以分组为单位进行处理。
4.SM3 算法是国家密码管理局于2010年的安全密码杂凑算法。SM3 算法采用了典型的 Merk1e-Damgård 迭代结构,简称为 M-D 结构,算法填充方式为消息末尾添加消崽长度,即 M | I || O(z) || L(M) , 其中 M 是消息, L(M)是消息的长度的 64 比特二进制表示, (Z) 是使得填充后消息长度为512长度倍数的最小填充"零" 的长度,这种填充方式的 M-D 结构被称为加强型 Merk1e-Damgård 结构;压缩函数包含消息扩展和压缩主函数两个部分,压缩主函数采用了非对称 Feistel 结构。
5.完整性指数据正确无误、完整不缺,使数据免受未授权的毁坏,就是确保数据的完整性。报文内容认证使接收方能够确认报文内容的真实性和完整性,这可通过验证认证码 (Authentication Code) 的正确性来实现。
【练习题】
(1)下面( )不是Hash函数的等价提法
A、压缩信息函数
B、哈希函数
C、单向散列函数
D、杂凑函数
(2)下面( )不是Hash函数具有的特性
A、单向性
B、可逆性
C、压缩性
D、抗碰撞性
(3)线代密码学中很多应用包含散列运算,而应用中不包含散列运算的是( )
A、消息机密性
B、消息完整性
C、消息认证码
D、数字签名
(4)分组加密算法(如AES)与散列函数算法(如SHA)的实现过程最大不同是( )
A、分组
B、迭代
C、非线性
D、可逆
(5)下面( )不是Hash函数的主要应用
A、文件校验
B、数字签名
C、数据加密
D、认证协议
【参考答案】
(1—5)A B A D C