流密码简介

流密码

单钥密码分为流密码和分组密码。

  • 流密码的概念: 利用秘钥k产生一个密钥流z=z0z1…,c=c0c1c2…=Ez0(m0)Ez1(m1)…。密钥流由密钥流发生器f产生:zi=f(k, oi),oi是加密器中记忆元件在时刻i的状态。分组密码与流密码的区别就在于有无记忆。oi可能依赖于k, o0, m0, m1…mi-1等。
  • 同步流密码: 根据状态oi是否依赖于输入的明文字符,流密码可以分为oi独立于明文字符的同步流密码,和另外的自同步流密码。
  • 有限状态自动机: 有限状态自动机是一个数学模型,可分为以下3部分:
  1. 有限状态集S={si|i=1, 2, ...,l}
  2. 有限输入字符集A1 = {A1j|j = 1,2...m}和有限输出字符集A2 = {A2k|k = 1,2...n}
  3. 转移函数A2k = f1(si, A1j), Sh = f2(si, A1j)即在状态为si,输入为A1j时输出为A2k,而状态转移为sh。
  • 密钥流产生器:

同步流密码的关键是密钥流产生器。一般可以看成一个参数为k的有限状态机。

流密码简介_第1张图片

f1为非线性,f2(驱动系统)为线性,现在流行的是驱动部分为一个或多个线性反馈移位寄存器。

线性反馈移位寄存器

流密码简介_第2张图片

如果移位寄存器的反馈函数f是线性函数,则称之为线性反馈寄存器LFSR,f可以写为

f(a1,a2,...,an) = cn*a1+cn-1*a2 + ... + c1*an,其中+为模2加法。

m序列: 周期达到最大值2^n - 1的序列称为m序列。

移位寄存器的一元多项式

设n级线性移位寄存器的输出序列{ai}满足递推关系

a(n+k) = c1*a(n+k-1) + c2*a(n+k-2) + ... +cn*ak ,这种递推关系可以用一个一元高次多项式p(x) = 1 + c1x + ... + c(n-1)x^(n-1) + cn*x^n 表示,称为LFSR的特征多项式。

  • 给定序列{ai},幂级数

A ( x ) = ∑ i = 1 ∞ a i x i − 1 A(x) = \sum_{i=1}^{\infty}{a_ix^{i-1}} A(x)=i=1aixi1

为该序列的生成函数。

  • p(x) | q(x)的充要条件是

G ( p ( x ) ) ⊂ G ( q ( x ) ) G(p(x))\subset G(q(x)) G(p(x))G(q(x))

  • 设p(x)是GF(2)上的多项式,使p(x)|(x^p - 1)的最小p是p(x)的周期或者阶。

  • 若序列{ai}的特征多项式p(X)定义在GF(2)上,p是p(X)的周期,则{ai}的周期r,满足r|p。

  • 仅能被非0常数或自身的常数倍除尽,但不能被其它多项式除尽的多项式称为既约多项式或不可约多项式。

  • 设p(x)是n次不可约多项式,周期为m,序列{ai}属于G(p(x)),则{ai}的周期为m。

  • n级LFSR产生的序列有最大周期2^n - 1的必要条件是其特征多项式为不可约。

  • 若n次不可约多项式p(x)的阶为2^n - 1,则称p(x)是n次本原多项式。

  • 设{ai}属于G(p(x)),{ai}为m序列的充要条件是p(x)为本原多项式。

m序列的伪随机性

Golomb对伪随机周期序列提出应满足下列3个公设:

  1. 在一个周期内,0和1的个数相差至多1
  2. 在序列的一个周期内,长为1的游程占游程总数的1/2,长为2 的游程占游程总数的1/(2^2)…
  3. 异自相关函数是一个常数。

m序列密码的破译

流密码简介_第3张图片

流密码简介_第4张图片

[外链图片转存中…(img-2SOGHQQz-1639280356919)]

你可能感兴趣的:(密码学,密码学)