论文部分内容阅读
密码Hash函数可以将任意长度的消息压缩为固定长度的消息摘要,其输出值称为Hash值。Hash函数应该具有碰撞稳固性、原像稳固性和第二原像稳固性这些基本的性质。Hash函数在现代密码学中起着重要的作用,可用于保证数据完整性和实体认证,同时也是多种密码体制和协议的安全保障,例如数字签名、消息认证码等。密码Hash函数分为不带密钥的Hash函数和带密钥的Hash函数,即消息认证码。大多数Hash函数都是通过Merkle-Damgard (MD)迭代结构对压缩函数进行迭代实现的。本文分析了MD结构Hash函数的通用的碰撞攻击和改进方案,设计改进了MD结构Hash函数的定义域扩展方式和消息填充方式。设计改进了并行消息认证码PMAC的工作模式,并对其性能进行了安全性分析。改进了OCB认证加密模式,利用Hash函数的压缩性提出了一种带有相关数据的认证加密方案。本文的主要内容及成果如下:(1)对Hash函数在设计和安全性分析方面的发展现状进行了跟踪。描述了Hash函数在密码学中的安全性要求、分析方法和应用。对不带密钥的Hash函数,从基于分组密码、基于模运算和专用Hash函数三个方面介绍了构造的Hash函数及存在的安全性分析。对消息认证码,从基于Hash函数、基于分组密码和基于泛Hash函数三个方面介绍MAC的设计结构。(2)讨论了目前对专用Hash函数的碰撞攻击,包括对MD5、SHA-0、DHA-256等Hash函数的攻击。讨论了消息预处理对MD5抵抗碰撞攻击的影响,提出了一种改进步函数的设计方法。对SHA-0,通过对其存在的碰撞攻击的分析,指出其消息扩展存在的问题。对DHA-256,纠正了一个9步的局部碰撞模式。(3) Merkle-Damgard (MD)结构是目前设计Hash函数主要采用的结构。本文讨论了对Merkle-Damgard结构Hash函数的通用的攻击方法,以及近期出现的针对这些攻击进行改进的各种结构。针对MD结构存在消息扩展攻击,Coron等将MD结构进行改进,提出4种方案,使得构造的Hash函数是伪随机预言性继承的(PRO-Pr)。但Mihir Bellare等证明这些PRO-Pr结构即使压缩函数是碰撞稳固的,得到的Hash函数却不是碰撞稳固的,针对这一缺点,提出一种前缀编码的定义域扩展方式的Hash函数。将前缀编码和长度加强这一填充方法用于MD结构可以使得到的Hash函数是伪随机预言性继承的,伪随机函数继承的和碰撞稳固性继承的。(4) Hash函数能够将任意长度的消息压缩成固定长度的摘要,这首先需要对消息进行填充,使得填充后的长度是压缩函数输入中消息长度的整数倍。通过对迭代Hash函数填充规则的分析,提出了一种有效的后缀编码填充规则,保留了Yasuda的填充规则中输入到压缩函数h的每一个消息分组至少包含μ比特消息这一特点,修改了最后填充固定σ比特消息长度的二进制表示这一方法,改进的填充方法在处理短消息时,使得后面的填充长度更小,能最大限度降低调用压缩函数的次数。(5) PMAC是一种可并行、不需要一个随机数的消息认证码。基于Lee Changhoon等人对PMAC工作模式提出的随机消息伪造攻击,找到这些工作模式被攻击的弱点。针对模式的弱点,提出了一种对PMAC改进的消息认证码MPMAC,改进了PMAC最后一个消息块的处理方式,避免了利用分组密码在同一个密钥下相同输入有相同输出这一特点进行的随机消息伪造攻击。并且根据最后一块消息是否需要填充分情况进行处理,避免了一些MAC模式中当明文长度是分组长度整数倍时需要多调用一次分组密码的缺点。在假设所用的分组密码是伪随机置换的条件下,使用Game-Playing技术给出了区分消息认证码和随机函数的优势,证明了改进的MPMAC的安全性。(6)OCB是一种有效的认证加密方案,但是OCB模式在单密钥下处理大容量数据时容易产生碰撞,从而能以概率1进行伪造。其伪造成功的主要原因在于,攻击者改变了密文和相应的明文,但明文的异或运算结果不变,即校验和不变。为此利用算法中平衡因子的随机性和明文分组的位置索引引进随机成分的方法,修改了认证码的生成方法,提高了OCB模式在碰撞发生时认证功能的安全性。将Hash函数用到认证加密方案中处理需要认证但是不需要加密的相关数据,结合改进的OCB工作模式提出了一种带有相关数据的认证加密(AEAD)方案。这个方案利用了Hash函数压缩性和抗碰撞性,得到了一个压缩了相关数据的新的现时并将其用于认证加密方案中。新的AEAD方案仅需要一个密钥,同时提供了认证性和保密性。