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 应满足的随机性条件,并且要求在设备上是节省的和容易实现的。