《现代密码学》学习笔记——第二章 流密码

一、OTP与伪随机数发生器

1.OTP

  具体关于一次性密码本OTP的介绍:点击这里
  完善保密→随机密钥长度大于等于明文长度
  解决方法→有限的密钥生成长的密钥序列
  流密码的核心→伪随机数发生器(PRG)

2.自同步流密码

  优点:有限错误传播,即使接收端和发送端不同步,只要接收端能连续地接受到n个正确的密文符号,就能重新建立同步;缺点:评估自同步流密码的安全性困难得多。

3.同步流密码

  在同步流密码中,密(明)文符号是独立的,一个错误传输只会影响一个符号,不影响后面的符号。缺点:一旦接收端和发送端的种子密钥和内部状态不同步,解密就会失败,两者必须立即借助外界手段重新建立同步。

二、流密码的基本概念

  流密码的基本思想是利用密钥k产生一个密钥流z = z0z1···,并使用如下规则对明文串x = x0 x1x2···加密:y = y0 y1y2··· = Ez0( x0) Ez1( x1) Ez2( x2) ···。不同于分组密码,流密码是对明文按字符逐位进行加密的,此外在流密码中,我们还会用到一个记忆元件来记录密码的操作状态。根据加密器中记忆元件的存储状态σi 是否依赖于输入的明文字符, 流密码可进一步分成同步流密码和自同步流密码两种。σi独立于明文字符的叫做同步流密码,否则叫做自同步流密码。同步流密码体制模型如下图所示。

1.密钥流产生器

  同步流密码的关键是密钥流产生器。一般可将其看成一个参数为 k 的有限状态自动 机, 由一个输出符号集 Z、一个状态集∑、两个函数φ和ψ以及一个初始状态σ0组成,如下图所示。状态转移函数 φ:σi →σi +1 , 将当前状态σi变为一个新状态σi + 1 ,输出函数ψ:σi → zi , 当前状态σi变为输出符号集中的一个元素 zi

2.线性反馈移位寄存器

  移位寄存器(PRG)是指有n个寄存器(称为n-级移位寄存器)R1,R2,…,Rn从右到左排列,每个寄存器中能存放1位二进制数,所有寄存器中的数可以统一向右(或向左)移动1位,称为进动1拍,即R1的值(b1)右移1位后输出,然后R2的值(b2)送R1, R3的值(b3)送R2,…最后,Rn的值(bn)送Rn-1。反馈移位寄存器的工作原理:移位寄存器中所有位的值右移1位,最右边的一个寄存器移出的值是输出位,最左边一个寄存器的值由反馈函数的输出值填充,此过程称为进动1拍,反馈函数f是n 个变元(b1,b2,…,bn)的布尔函数。线性反馈移位寄存器LFSR的反馈函数为线性函数密钥流 ,{ki}的周期一定要大。移位寄存器根据需要不断地进动m拍,便有m位的输出,形成输出序列a1,a2,…,am。移位寄存器是流密码产生密钥流的一个主要组成部分。GF(2 )上一个 n 级反馈移位 寄存器由 n 个二元存储器与一个反馈函数 f ( a1 , a2 ,…, an )组成。如果移位寄存器的反馈函数 f ( a1 , a2 , …, an ) 是 a1 , a2 , …, an 的线性函数, 则称之为 线性反馈移位寄存器 LFSR,如下图所示。

3.线性反馈移位寄存器的性质

(1)总是假定c1,c2,···,cn中至少有一个不为0,否则f(a1,a2,···,an)恒等于0。总是假定cn=1。
(2)输出序列的性质:完全由其反馈函数决定。
(3)n级线性反馈移位寄存器的状态数:最多有2n(每级反馈最多有两个状态)。
(4)n级线性反馈移位寄存器的状态周期:≤2n-1。
(5)输出序列的周期=状态周期,≤2n-1。
  选择合适的反馈函数可使序列的周期达到最大值2n-1,周期达到最大值的序列称为m序列。

三、m序列

1.线性反馈移位寄存器的一元多项式表示

  设n级线性移位寄存器的输出序列满足递推关系
    an+k=c1an+k-1⊕ c2an+k-2⊕ …⊕ cnak
  用延迟算子D(Dak=ak-1)作为未定元,给出的反馈多项式为:
    P(D) = 1+c1D +…+cn-1Dn-1+cnDn
  这种递推关系可以用一个一元高次多项式
    P(x) = 1+c1x +…+cn-1xn-1+cnxn
  表示,则称这个多项式为线性移位寄存器的特征多项式。
  根据初始状态的不同,由递推关系式生成的非恒零的序列有2n-1个,记这2n-1个非零序列的全体为G(p(x))。

2.二元序列的伪随机性

(1)二元序列的定义
  GF(2)上的一个无限序列a = (a1,a2,···,an,··)称为一个二元序列,其中ai ∈ GF(2)。
(2)Golomb伪随机公设
  ①在序列的一个周期内,0与1的个数相差至多为1;
  ②在序列的一个周期内,长为i的游程占总游程数的1/2i(i=1,2,···),且在等长的游程中0的有成个数和1的游程个数相等。也就是说0与1在序列中每一位置上出现的概率相同。
  ③异相自相关函数是一个常数。通过序列与其平移后的序列作比较,不能得到任何信息。
(3)伪随机序列除了要满足伪随机公设之外还应满足的条件
  ①周期p要足够大,大于1050;
  ②序列{ai}i≥1易于高速生成;
  ③当{ai}i≥1的任何部分暴露时,要分析整个序列,提取产生它的电路结构信息,在计算上都是不可行的,称此为不可预测性。

二、非线性序列

1.研究背景

  为了提高密钥流序列的线性复杂度,密钥生成器重中必须使用非线性函数. 为了便于分析,Ruppe将密钥流生成器分成两部分:驱动部分和非线性组合部分。

2.滤波生成器

  滤波生成器又叫前馈生成器,一般由LFSR和滤波前馈)函数两部分组成. LFSR可以是一个,也可以是几个,它们输出的序列共同作为滤波函数的输入。滤波函数要求具有很好的非线性性质,以增强生成器的抗攻击能力。

3.钟控生成器

  钟控生成器是由一个或几个FSR输出序列,控制一个FSR 的时钟。最简单的钟控生成器是用一个LFSR控制另一个LFSR的时钟脉冲,如图所示。当LFSR1输出1时,时钟脉冲通过与门使LFSR2进行一次移位,从而生成下一位;当LFSR1输出0时,时钟脉冲无法通过与门使LFSR2移位(走),从而LFSR2重复输出前一位(停)。

三、软件算法

Salsa20
  Salsa20分为Salsa20k0,k1(n)或Salsa20k (n)
  输入:k:32-byte或者16-byte序列
      n:16-byte序列
  输出:64-byte序列

四、PRG安全与流密码安全应用

攻击资源攻击结果
惟密文恢复密钥
已知明密文恢复目标明文
选择明文获得明文信息
选择密文
自适应选择密文
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值