概念:序列密码又称流密码,明文流与密钥流按顺序逐比特异或,产生密文流,属于对合运算。原理如图 1所示:
![](https://img-blog.csdnimg.cn/a0e8e548f1fd4952b047d70b276f49c2.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAaGV6ZTA5,size_20,color_FFFFFF,t_70,g_se,x_16)
周期:序列存在一定的循环周期,如果周期足够长,就有很高的保密性,类似于“一次一密”的加密方式,通常在1050数量级。
伪随机数生成器(PRNG):真正的随机数是随机产生的,而在计算机中大多是依赖于随机算法模拟产生,并不是真正的不可预测,所以是伪随机数。
序列密码的关键是要保持通信双方的精确同步。
1.线性反馈移位寄存器
一个n级的反馈移位寄存器由n个二元存储器和一个反馈函数F(S0, S1, …,Sn-2, Sn-1,)组成。如图 2所示,移位寄存器进行左移,然后反馈函数F的结果赋值给Sn-1.
![](https://img-blog.csdnimg.cn/7572706d39d44e2f902ff0fc20a83c6a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAaGV6ZTA5,size_20,color_FFFFFF,t_70,g_se,x_16)
线性反馈函数F(S0, S1, …,Sn-2, Sn-1,)可以表示为:
![](https://img-blog.csdnimg.cn/0086bd024b764eea9d688e2c1eebcbe1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAaGV6ZTA5,size_20,color_FFFFFF,t_70,g_se,x_16)
如图 3所示,线性反馈移位寄存器有如下特点:
- 反馈函数是线性函数。
- N级的线性反馈移位寄存器最多可以有2n个不同状态。
- N级的线性反馈移位寄存器状态周期≤2n-1。
- N级的线性反馈移位寄存器输出序列周期≤2n-1。
2.RC4
RC4算法是Ron Rivest专为RSA设计的序列密码,算法简单、速度快、易实现、应用广泛,其算法分为二步:
第一步:密钥调度算法(KSA)
For i=0 to 255
S[i] = i
For I =0 to 255
R[i] = K[i mod keylenth]
For I=0 to 255{
J = (j+S[i]+R[i]) mod 256
Swap(S[i],S[j])
}
第二步:伪随机子密码生成算法(PRGA)
i,j = 0
while(1){
i=(i+1) mod 256
j=(j+S[i]) mod 256
swap(S[i],S[j])
t=(s[i]+s[j]) mod 256
k=S[t]
}
3.ZUC
祖冲之算法(ZUC)是由我国自主设计的加密和完整性算法,已被3GPP推荐为无线通信LTE的第三套加密标准的核心算法。
ZUC是一个同步流产生算法,由比特重组、非线性函数F、线性反馈移位寄存器(LFSR)组成。该算法输出序列的随机性好,周期足够大,能够抵抗已知的序列密码分析方法和弱密分析。