现代密码学——学习笔记2(流密码)

流密码的基本概念

流密码的基本思想是利用密钥k产生一个密钥流z=z0z1…,并使用如下规则对明文串x=x0x1x2…加密:y=y0y1y2…=Ez0(x0)Ez1(x1)Ez2(x3)…。
分组密码和流密码的区别在于有无记忆性。分组密码无记忆性,流密码有记忆性。

同步流密码

根据加密器中记忆元件的存储状态sigmai是否依赖于输入的明文字符,流密码可进一步分成同步和自同步两种。sigmai独立于明文字符的叫做同步流密码,否则叫做自同步流密码。
一次一密密码是加法流密码的原型。在实际中,希望设计出一个滚动密钥生成器,是的密钥k经其扩展成的密钥流序列z具有如下性质:极大的周期性、良好的统计特性、抗线性分析、抗统计分析。

有限状态自动机

有限状态自动机是具有离散输入和输出(输入集和输出集均有限)的一种数学模型,由三部分组成:有限状态集、有限输入字符和有限输出字符、转移函数。

密钥流产生器

同步流密码的关键是密钥流产生器。一般可将其看成一个参数为k的有限状态自动机,由一个输出符号集Z、一个状态集、两个函数f1和f2以及一个初始状态sigma0组成。一般采用线性的f1和非线性的f2,将这类生成器分成驱动部分和非线性组合部分。驱动部分控制生成器的状态转移,并为非线性组合部分提供统计性能良好的序列。非线性组合部分要利用这些序列组合出满足要求的密钥流序列。
目前最流行和实用的密钥流生成器的驱动部分是一个或多个线性反馈移位寄存器。

线性反馈移位寄存器

  • n级线性反馈移位寄存器最多有2^n个不同的状态
  • n级线性反馈移位寄存器的状态周期小于等于2^n-1
  • 输出序列也小于等于2^n-1
  • 只要选择合适的反馈函数便可使序列的周期达到最大值2^n-1,周期达到最大值的序列称为m序列

m序列的伪随机性

如果密钥流是周期的,要完全做到随机性是困难的。严格地说,这样的序列不可能做到随机,只能要求截获比周期短的一段时不会泄露更多信息,这样的序列称为伪随机序列
Golomb对伪随机周期序列提出了应满足的3个随机性公设:

  • 在序列的一个周期内,0与1的个数相差至多为1
  • 在序列的一个周期内,长为1的游程占游程总数的1/2,长为2的游程占游程总数的1/2^2,……。
    长为i的游程占游程总数的1/2^i,且在等长的游程中0的游程个数和1的游程个数相等。
    异自相关函数是一个常数。
    从密码系统的角度看,一个伪随机序列还应满足下面的条件:
  • {ai}的周期相当大
  • {ai}的确定在计算上是容易的
  • 由密文及相应的明文的部分信息,不能确定整个{ai}

非线性序列

4种由多个LFSR驱动的非线性序列生成器

  • Geffe序列生成器:周期实现了极大化,且0与1之间的分布大体上是平衡的
  • JK触发器
  • Please生成器
  • 钟控序列生成器
    性能良好的序列密码的基本设计原则是“密钥流生成器的不可预测性”,可分解为以下基本原则:
  • 长周期
  • 高线性复杂度
  • 统计性能良好
  • 足够的“混乱”
  • 足够的“扩散”
  • 抵抗不同形式的攻击
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值