薛 明 ,许迎秋 ,张 妍 ,邱伟星
(1.南京邮电大学 计算机学院,江苏 南京 210003;2.南京邮电大学 计算机学院,江苏 南京 210046)
散列函数和序列密码在实际生活中有很多应用,为了使其性能得到更好的实现,将二者通过一定的算法联系起来。本文利用散列函数MD5通过密码反馈模式产生序列密码的密钥,使生成的密钥序列具有尽可能高的不可预测性。序列密码则通过简单的异或运算生成。为确定这样的运算过后得到的序列能达到随机性要求,对产生的序列进行了频率测试及游程测试。
序列密码的安全强度主要依赖密钥序列的随机性,因此,如何设计一个好的密钥序列产生器,使其产生随机的密钥序列是序列密码体制的关键所在。
密钥序列产生器的主要要求:[10]
(1)种子密钥K长度足够大,一般应在128位以上;
(2)密钥序列ki具有极大周期;
(3)ki具有均匀的n元分布,即在一个周期环上,某特定形式的n长比特串与其求反比特串,两者出现的频率大抵相当(如均匀的游程分布);
(4)利用统计方法由ki提取关于KG结构或K的信息在计算上不可行;
(5)混乱性:即ki的每一比特均与K的大多数比特有关;
(6)扩散性:即K任一比特的改变要引起ki在全貌上的变化;
(7)密钥序列ki不可预测,密文及相应的明文的部分信息,不能确定整个ki.
MD5算法的输入是最大长度小于264bit的消息,输出为128bit的消息摘要。输入消息以512bit的分组为单位处理。MD5通过直接构造复杂的非线性关系实现单向性。
MD5的主要性质:[6]
(1)对“任意”给定的消息x,计算H(x)比较容易,用硬件和软件均可实现;……