一、简述
1. 流密码的基本思想
利用密钥k产生一个密钥流
z
=
z
0
z
1
z
2
…
z=z_0z_1z_2…
z=z0z1z2…,并使用如下规则对明文串
x
=
x
0
x
1
x
2
…
x=x_0x_1x_2…
x=x0x1x2…加密:
y
=
y
0
y
1
y
2
…
=
E
z
0
(
x
0
)
E
z
1
(
x
1
)
E
z
2
(
x
2
)
…
y=y_0y_1y_2…=Ez_0(x_0)Ez_1(x_1) Ez_2(x_2)…
y=y0y1y2…=Ez0(x0)Ez1(x1)Ez2(x2)…,即明文消息按字符或比特逐位加密。
2.密钥流
1)由密钥流发生器 f 产生:
z
i
=
f
(
k
,
σ
i
)
z_i=f(k,σ_i)
zi=f(k,σi);
2)其中
σ
i
σ_i
σi是加密器中的记忆元件在时刻
i
i
i 的状态;
3)
f
f
f 是由
k
,
σ
i
k, σ_i
k,σi 产生的函数;
4)内部记忆元件由一组移位寄存器构成;
3. 流密码分类
1) 自同步流密码:内部记忆元件的状态
σ
i
σ_i
σi依赖于明文字符
2) 同步流密码:不依赖于此前的明文字符。可将同步流密码的加密器分成密钥流产生器和加密变换器两个部分。
4.流密码常用体制
二元加法流密码是目前最为常用的流密码体制,其加密变换可表示为
y
i
=
z
i
⨁
x
i
y_i=z_i \bigoplus x_i
yi=zi⨁xi
5.流密码得需求
设计一个滚动密钥生成器,使得密钥经其扩展成的密钥流序列具有如下性质:
● 极大的周期
● 良好的统计特性
● 抗线性分析
二、有限状态自动机
有限状态自动机的模型
有限状态自动机是具有离散输入和输出(输入集和输出集均有限)的一种数学模型,由以下3部分组成:
●有限状态集
S
=
{
s
i
∣
i
=
1
,
2
,
…
,
l
}
S=\{ s_i| i=1,2,…,l \}
S={si∣i=1,2,…,l}。
●有限输入字符集
A
1
=
{
A
(
1
)
j
∣
j
=
1
,
2
,
…
,
m
}
A_1=\{ A^{(1)} j| j=1,2,…,m\}
A1={A(1)j∣j=1,2,…,m}和有限输出字符集
A
2
=
{
A
(
2
)
k
∣
k
=
1
,
2
,
…
,
n
}
A_2=\{A^{(2)}k |k=1,2,…,n\}
A2={A(2)k∣k=1,2,…,n}。
●转移函数
A
k
(
2
)
=
f
1
(
s
i
,
A
j
(
1
)
)
,
s
h
=
f
2
(
s
i
,
A
j
(
1
)
)
A^{(2)}_k=f_1(s_i, A^{(1)}_j ),s_h=f_2(s_i, A^{(1)}_j)
Ak(2)=f1(si,Aj(1)),sh=f2(si,Aj(1))
即 在 状 态 为 s i , 输 入 为 A j ( 1 ) 时 , 输 出 为 A k ( 2 ) , 而 状 态 转 移 为 s h 即在状态为s_i,输入为A^{(1)}_j时,输出为A^{(2)}_k,而状态转移为s_h 即在状态为si,输入为Aj(1)时,输出为Ak(2),而状态转移为sh
三、密钥流产生器
密钥流产生器的实质参数为k的有限状态自动机。密钥流生成器可分成驱动部分和非线性组合部分。目前最为流行和实用的密钥流产生器,其驱动部分是一个或多个线性反馈移位寄存器。
● 一个输出符号集
Z
Z
Z、一个状态集
∑
∑
∑、两个函数
φ
φ
φ 和
ψ
ψ
ψ 以及一个初始状态σ0组成;
● 状态转移函数:
φ
:
σ
i
→
σ
i
+
1
φ:σ_i→σ_i+1
φ:σi→σi+1,将当前状态
σ
i
σ_i
σi变为一个新状态
σ
i
+
1
σ_{i+1}
σi+1;
● 输出函数:
ψ
:
σ
i
→
z
i
ψ:σ_i→z_i
ψ:σi→zi,当前状态σi变为输出符号集中的一个元素
z
i
z_i
zi。
流程如图所示:
密钥流生成器设计的关键:找出适当的状态转移函数 φ φ φ 和输出函数 ψ ψ ψ ,使得输出序列 z z z 满足密钥流序列 z z z 应满足的随机性条件,并且要求在设备上是节省的和容易实现的。