随机数的应用范围还是比较广泛的,比如在从统计总体中抽取有代随机数代表性的样本的时候,或者在将实验动物分配到不同的试验组的过程中,或者在进行蒙特卡罗模拟法计算的时候,我们都需要用到随机数。那么我们今天就来探讨一下随机数在加密技术中的应用。

随机数在加密技术中的应用

随机数在加密技术中的应用

一、密钥的产生

1、序列密码的产生

序列加密算法是加密技术中的一种常见技术,在序列加密算法中,利用欲加密明文的位序列Pl,P2,…,Pi与密钥发生器输出的一组随机位序列Kl,K2,…,Ki经过异或运算得到密文Ci= Pi+Ki,解密时利用密文序列与该随机位序列进行异或运算得到明文Pi= Ci+Ki。由于Kl,K2,…,Ki是随机序列,所以相同的明文位序列可以有不同的密文,该方法不存在数据扩展和错误传播,实时性好,加密解密容易实现。

该加密算法的安全性很大程度取决于随机数序列是否够乱,周期是否够长。在序列密码的产生中,通常利用LFSR或线性同余发生器、非线性随机数发生器来产生序列密码。由于序列加密算法的原理要求随机数序列还必须是确定的,因为只有这样解密时才容易使得密钥重现,所以密码序列Ki还有一个密钥K。密钥序列发生器包括内部状态、下一状态函数、输出函数三部分。密钥序列发生器内部原理为,输出函数处理内部状态、下一状态函数、输出函数三部分。密钥序列发生器内部原理为,输出函数处理内部状态产生出密钥序列Ki,下一状态函数处理内部状态产生新的内部状态。密钥序列发生器的输出是该密钥的函数,如果具有相同的序列密码密钥K和内部状态则会产生出相同的密码序列。

2、主机密码系统中密钥的产生

主机密码系统中通常采用主密钥、二级密钥和初级密钥三种不同等级密钥。主密钥是一个加密系统中的最高级别的密钥,用于对主机系统中的二级密钥和初级密钥提供保护,因此对主密钥产生的要求非常高,要求具有很高的随机,独立性、不可预测性,一般的伪随机数发生器产生的随机数已不能满足它的需要,我们通常利用真随机数发生器,如利用物理热噪声或提取事件过程随机性,来产生主密钥,更能够符合理论上的随机性,更能满足系统对主密钥的要求。

二级密钥用于加密保护初级密钥,生存周期一般较长,要接受主密钥的保护。由于主密钥已经具有很高的安全性,所以二级密钥的产生常借助于已有的主密钥和一个强的密码算法。通常利用真随机数发生器产生主密钥RNl,RN2,再由主机产生随机数RN3,利用RNl,RN2,RN3和某强的加密算法E对序数i进行多层加密产生出二级密钥KNi,KNi= E(RN3,E(RNl,E(RN2,E(RNl,i)))))因为RNl,RN2,RN3是主密钥均有很高的随机性,并且有对序数进行了四次强的算法加密,所以要想利用i推出KNi非常困难。

初级密钥是用于加解密具体数据的密钥,生存周期一般较短,初级通信密钥和会话密钥通常采用一次一密的方式。必须接受更高级别的密钥保护。通常直接把随机数看作经过高级密钥加密的初级密钥。

二、密钥分配

1、公开密钥分配系统

在网络环境中,为了对文件保密,需要某些密码对文件加密,通常这种密码由可信任的第三方来分配,但是第三方并不绝对可信,所以在传输一些高密级的数据时接收双方需要在没有第三方的协助下进行加密传输,可以通过公开密钥分配算法来实现。如果I欲与J通信,选取一个具有交换性单向函数F,属于F值域的元素g被双方接受。I任选一秘密的Xi,利用单向函数F求出FXi(g),将其送给J,J选取一秘密的Xj,利用F求出Fxj(g)送给I。这样双方就能够获得一组共同的密钥或秘密,并且在使用中双方都无法对其共享密钥事先进行控制,这样就能达到很好的保密传输效果。

该算法中为了达到不被第三者破解,取决于单向函数F的单向性和X是否随机,通常会选取一些经过证明具有很好的单向性的函数,对于双方在选定X时,利用伪随机数发生器产生一伪随机数串作为每次交换的密钥,就能够达到保证算法安全性的要求,有效的防止对密钥进行的穷举式攻击和降低根据密文推测是否同发送同一明文的可能性。

2、签名和鉴别

在网络环境上实现数字通信可以通过在传送信息上加上发送方自己的数字签名来防止可能存在的相互欺骗或抵赖。美国国家标准技术研究所公布的一种数字签名算法,DSA加密算法其思想为,某个发送用户A选择一私密的X,并利用某算法和X产生出一个公密Y,根据公开密钥分量(p,q,g),X,报文m的散列码H(m)和一额外整数K,利用签名算法求出签名信息r和s,将其与报文一起发送给接收方,对方根据Y,q,g,H(m),计算出一量v,将其与r进行比较,如果相符则表示签名有效,肯定是A所发送,具有不可抵赖性。

该算法中r值不依赖于报文m,接收者根据收到的报文、签名、公开密钥、公开密钥分量就能恢复出r,必然能实现有效的数字签名。该算法的安全性取决于计算离散对数的难度和X取值的随机性。为了加强安全性,给每一个报文一个唯一的密数K,利用伪随机数发生器产生X和K即可满足安全性的需要。

小知识之随机数:

随机数一般分为伪随机数和真随机数。利用数学算法产生的随机数属于伪随机数。利用物理方法选取自然随机性产生的随机数可以看作真随机数。