现代密码学(四)序列密码

介绍序列密码(流密码)。

流密码

流密码的简单结构如下。

image-20201228165456897

对于流密码来说,需要生成一个作为密钥流的“随机”比特序列。

流密码的安全性取决于密钥的安全等级。

image-20201228165551857

流密码可以分为两种

  • 同步流密码
    • 密钥流的产生与明文消息相互独立
  • 自同步流密码
    • 密钥流的产生与之间产生的若干密文有关

线性反馈移位寄存器 LFSR

LFSR可以产生同步密钥流。 ai(t+1)=ai+1(t), i=1,2,,n1an(t+1)=cna1(t)cn1a2(t)c1an(t) 联结多项式为 cnxn+cn1xn1++c1x+1

image-20201228170207505

例如对于联接多项式x3+x2+1,对应的反馈函数为 a3=a1a2 对于LFSR来说,一个n级LFSR序列的周期最大为2n1

如果产生了最大周期,则称为m序列,LFSR的状态转移图只有两个圈。

伪随机序列

Golomb随机性假设

  • 在每一周期内,0和1的个数近似相等。
  • 在每一周期内,长度为i的游程占游程总数的12i
  • 定义自相关函数C(τ)=i=1n(1)ai+ai+τ
    • 那么C(τ)={n,τ0modnc,others$

m序列的伪随机性

线性复杂度

能够输出该序列的最短LFSR的级数。

一个好的流密码,应该具有大周期、大的线性复杂度,同时满足Golomb随机性假设。

基于LFSR的伪随机序列生成器

滤波生成器

image-20201228171735794

组合生成器

image-20201228171742568

钟控生成器

image-20201228171755691