密码概况
- 流密码是一种重要的密码体制
- 明文按字符或比特逐位加密。
- 也称为序列密码。
- 主要是硬件实现。
- 常见密码
ZUC
、A5
、SNOW
、RC4
等
基本思想
- 利用密钥
k
产生密钥流,并对明文串加密。
y = y 0 y 1 y 2 . . . = E z 0 E z 1 E z 2 . . . y=y_0y_1y_2...=E_{z_0}E_{z_1}E_{z_2}... y=y0y1y2...=Ez0Ez1Ez2... - 密钥流发生器
z i = f ( k , σ i ) , σ i 是 在 i 时 刻 的 状 态 z_i=f(k,\sigma^i), \sigma_i是在i时刻的状态 zi=f(k,σi),σi是在i时刻的状态
算法需求
- 极大的周期
- 良好的统计特性
- 抗线性分析
伪随机性
- 二元序列
a = ( a 1 , a 2 , . . . , a n , . . . ) a=(a_1,a_2,...,a_n,...) a=(a1,a2,...,an,...) - 周期
a k = a k + l p ( a ) = M i n i m u m p o s i t i v e i n t e g e r l a_k=a_{k+l}\\ p(a)=Minimum\ positive\ integer\ l ak=ak+lp(a)=Minimum positive integer l - 游程
- 一连串两两相临的项分别称为
1
游程和0
游程。
- 一连串两两相临的项分别称为
- 自相关函数
R ( τ ) = ( 1 / T ) ∑ k = 1 T ( − 1 ) a k ( − 1 ) a k + τ 0 ≤ τ ≤ T − 1 W h e n τ = 0 , R ( τ ) = 1 W h e n τ ≠ 0 , R ( τ ) i s o u t o f p h a s e a u t o c o r r e l a t i o n f u n c t i o n R(\tau)=(1/T)\sum^T_{k=1}(-1)^{a_k}(-1)^{a_{k+\tau}}\\ 0\leq \tau \leq T-1\\ When\ \tau=0,R(\tau)=1\\ When\ \tau \neq 0,R(\tau)\ is\ out\ of\ phase\ autocorrelation\ function R(τ)=(1/T)k=1∑T(−1)ak(−1)ak+τ0≤τ≤T−1When τ=0,R(τ)=1When τ=0,R(τ) is out of phase autocorrelation function Golomb
伪随机性公设- 一个周期内,
0
与1
的个数相差最多为1
。- 此时
0
与1
出现的概率基本相同。
- 此时
- 一个周期内,长为
i
的游程占游程总数的1/2^i
,且等长的游程中0
游程的个数和1
游程的个数相等。- 此时
0
与1
在每个位置上出现的概率相同。
- 此时
- 异相自相关函数是一个常数。
- 通过对比序列与其平移后的序列,不能得出其他信息。
- 一个周期内,
- 额外条件
- 周期足够大(
10^50
以上) - 序列易高速生成
- 序列部分暴露时,要分析整个序列在计算上不可行
- 周期足够大(
第三条被称为不可预测性,决定了密码的强度,是流密码理论的核心。
线性反馈移位寄存器LFSR
概述
a n + 1 = f ( a 1 , a 2 , . . . , a n ) = c 1 a n ⊕ c 2 a n − 1 ⊕ . . . ⊕ c n a 1 a n + t = c 1 a n + t − 1 ⊕ c 2 a n + t − 2 ⊕ . . . ⊕ c n a t a_{n+1}=f(a_1,a_2,...,a_n)=c_1a_n\oplus c_2a_{n-1}\oplus ...\oplus c_na_1\\ a_{n+t}=c_1a_{n+t-1}\oplus c_2a_{n+t-2}\oplus ...\oplus c_na_t an+1=f(a1,a2,...,an)=c1an⊕c2an−1⊕...⊕cna1an+t=c1an+t−1⊕c2an+t−2⊕...⊕cnat
- 实现简单、速度快、有成熟理论,是构造密钥流生成器的最重要的部件之一。
性质
- 假定
ci
中至少有一个不为0
,cn
=1
。 - 输出序列
- 性质完全由其反馈函数
f
决定。 - 周期等于状态周期,最大为
2^n -1
。
- 性质完全由其反馈函数
n
级LFSR
- 状态数最多有
2^n
。 - 状态周期最大为
2^n -1
。
- 状态数最多有
周期达到
2^n -1
时,序列称为m
序列。
一元多项式
- 延迟算子
D
D a k = a k − 1 Da_k=a_{k-1} Dak=ak−1 - 反馈多项式
a n + k = c 1 a n + k − 1 ⊕ c 2 a n + k − 2 ⊕ . . . ⊕ c n a t 0 = a n + k ⊕ c 1 a n + k − 1 ⊕ c 2 a n + k − 2 ⊕ . . . ⊕ c n a t M u l t i p l y b o t h s i d e s b y D n + k , g e t p ( D ) = 1 + c 1 D + . . . + c n − 1 D n − 1 + c n D n T h e h i g h e r o r d e r p o l y n o m i a l s o f o n e e l e m e n t a r e o b t a i n e d b y r e c u r s i o n r e l a t i o n : p ( x ) = 1 + c 1 x + . . . + c n − 1 x n − 1 + c n x n a_{n+k}=c_1a_{n+k-1}\oplus c_2a_{n+k-2}\oplus ...\oplus c_na_t\\ 0=a_{n+k}\oplus c_1a_{n+k-1}\oplus c_2a_{n+k-2}\oplus ...\oplus c_na_t\\ Multiply\ both\ sides\ by\ D^{n+k},get\\ p(D)=1+c_1D+...+c_{n-1}D^{n-1}+c_nD^n\\ The\ higher\ order\ polynomials\ of\ one\ element\ are\ obtained\ by\ recursion\ relation:\\ p(x)=1+c_1x+...+c_{n-1}x^{n-1}+c_nx^n an+k=c1an+k−1⊕c2an+k−2⊕...⊕cnat0=an+k⊕c1an+k−1⊕c2an+k−2⊕...⊕cnatMultiply both sides by Dn+k,getp(D)=1+c1D+...+cn−1Dn−1+cnDnThe higher order polynomials of one element are obtained by recursion relation:p(x)=1+c1x+...+cn−1xn−1+cnxn p(x)
即为LFSR
的特征多项式。
m-序列
产生条件
- 若
n
次不可约多项式p(x)
的阶为2^n -1
,则称其为n
次本原多项式。- 多项式阶
k
的定义:
p ( x ) ∣ ( x k − 1 ) p(x)|(x^k-1) p(x)∣(xk−1)
- 多项式阶
{ai}
为m
序列的充要条件是p(x)
为本原多项式。- 证明
- 证明
随机性
- 满足
Golomb
的三个随机性公设。0
、1
出现次数分别为2^(n-1) -1
和2^(n-1)
。- 总游程数为
2^(n-1)
,长为i
的游程有2^(n-1-i)
个,且0
、1
游程各半,n-1
长的0
游程一个,n
长的1
游程一个。
一个周期的大小等于一个周期的比特位数。
{ai}
的自相关函数
R ( τ ) = { 1 , τ = 0 − 1 2 n − 1 , 0 < τ ≤ 2 n − 2 R(\tau)=\left\{ \begin{aligned} 1,\tau=0 \\ -\frac{1}{2^n-1},0<\tau \leq 2^n-2 \end{aligned} \right. R(τ)=⎩⎨⎧1,τ=0−2n−11,0<τ≤2n−2
安全性
- 已知一段序列(长度最小为
n
)和反馈多项式,可以依次求出其后的序列。 - 但是否能通过序列推断反馈多项式呢?
- 知道
{ai}
的连续2n
位,可以通过解方程求出。 - 使用
Berlekamp-Massey
算法可以得到线性反馈移位寄存器综合解。
- 知道
求解时,有
n
个未知数,故需要n
个方程。
- 密钥流生成器的基本原则
- 周期长
- 高线性复杂度
- 统计性能良好
- 足够“混乱”
- 足够“扩散”
- 抵抗不同形式的攻击