密码学基础知识(五)序列密码

序列密码,也就是流密码,是对称密码。跟前面分组密码的区别就在于其加密变换的对象比分组的块小,一般是Bit。前面说过的vernam密码就是一种序列密码。

序列密码的特点有哪些呢?

     明文:被加密的是叫明文字。是明文序列的一项。

     密钥:由主密钥(初始密钥)产生一个密钥序列,长度和明文字bit长度相同。相应的别叫做密钥字。

     密文:经加密函数,明文字与密钥产生了密文字。

     加密:与现态(当前状态)有关。照分组密码的OFB和CFB理解。

     序列密码体制关键就在于这个产生密钥序列的方法,也就是密钥序列产生器应具有良好的随机性,让密钥序列不可预测。不过一般都是伪随机。分组密码的关键是加解密算法让明文密文关联尽可能复杂。

     序列密码分为同步序列密码和自(异)同步序列密码。啥区别呢,就是前者密钥序列独立于明文序列和密文序列。后者并不独立。

同步序列密码特点:消息的发送者和接受者必须同步,即相同的密钥。

自同步序列密码特点:明文统计扩散。

好了,说完这些啰嗦的东西,咱们就说说这关键的密钥序列产生器:

         密钥流产生器。一般看做一个有限状态自动机,这个机又是啥呢?可以这样理解,它有三部分,分别是有限状态集,有限输入字符集和有限输出字符集,状态转移函数。就是在状态Si,输入为Ai时,状态装换为Sh并输出Ah。放在咱们序列密码中,就是把密钥流当做输入,当状态一变,就输出。

         好了,那问题来了,这状态序列怎么确定呢?还有你说输出就输出,咋输出的呢?

         我们将控制状态序列的部分叫驱动器,一般利用线性反馈移位寄存器。一般要求最长周期或m序列产生器实现。这样就能为非线性组合部分提供统计性能好的序列了。

         我们将进行非线性组合产生输出序列的部分叫非线性组合部分。要求F输入是二元序列输出也得是,这是最基本要求。对于可定的序列,F应使输出序列周期足够大。

         那就谈谈线性反馈移位寄存器(LFSR)。

一个n阶反馈寄存器,由n个二元寄存器和一个反馈函数组成。这n个寄存器的内容所形成的向量即为此时状态。所以其有2n个状态。T时刻LFSR状态为st=(at,at+1,…at+n-1),t+1时刻:st+1=(at+1,at+2,…,at+n),两者一比,发现两点不同:

1.    at输出了。就这样,状态改变就输出一个,成了输出序列。S0是及寄存器的初始状态。

2.    多了个at+n,其求法:at+n=f(at,at+1,…at+n-1)。f就是反馈函数。当f的运算为模2加法时,称为线性移位反馈寄存器(LFSR)。

LFSR特点:

初始状态非0,新状态就非0;初始为0 ,状态恒为0。

选择合适的f反馈函数可以使周期达到2n-1,即m序列。(2n长明密文就可攻破,毕竟伪随机)

驱动部分就说这么多,下面说说几种非线性序列生成器,一般都是几个LFSR组合起来:

gaffe:3个LFSR,LFSR1,3是输入,LFSR2是输出。

J-K触发器:2个LFSR, Pless产生器是其加强版。

Pless产生器:8个LFSR,4个J-K,一个循环计数器。

钟控序列产生器:2个LFSR,一个控制另一个的时钟脉冲。

门限产生器:可变数量n个LFSR。要求:大奇数,所有LFSR长度互素,反馈多项式都是本原的,这样就最大周期了。

总结一下:序列密码进行bit加密,有明文字,密钥字,密文字,关键在于密钥产生器,其分两部分,驱动(状态转移函数,输出函数,状态集和输出集)和非线性组合。驱动一般是LFSR,LFSR是反馈函数f运算为模2加法。最后介绍了集中产生器,都是LFSR组合的,想法设法达成最大周期。


典型的序列密码算法:RC4,A5和SNOW2.0,最后一个不细说。

首先RC4:被广泛应用

     基于非线性数据表变换的序列密码。有一个足够大的数据表提供进行非线性变换,产生非线性输出序列,它也叫S盒,S盒大小为2n,通常n=8。RC4每个输出都是S盒中的随机元素。

好了,那么问题又来了,S盒内是咋排列的?又是怎么随机选出来的?

     主角登场:KSA密钥调度算法和PRGA伪随机生成算法,分别解决上述两个问题。

KSA:

S初始化:把0~255线性填入。

T初始化:临时向量T,将主密钥K值付给T,假如K长度小于L,那就将K重复赋值给L,直到L都被赋值了。

用T对S置换:按照T[i]对S进行位置置换,就把元素换个位置。

结束了KSA就是PRFA了

PRGA:从S中随机取出,并修改S方便下次选取

     就是一个算法

所以我们发现其实S盒里就是0-255,只不过是位置一直在变。

RC4至少128位密钥才安全。

 

A5算法:GSM

     介绍下A5/1,典型的基于LFSR的序列密码算法,3个LFSR,阶数分别为19,22,23,均为本原多项式。64位密钥。

     已经明文就可破解A5/1,原因:算法设计太简单,没有足够的混淆和扩散。

 

 

SNOW2.0:

     基于LFSR和有限状态机的序列密码算法。1个LFSR+1个有限状态转换机(2个32位寄存器)。主密钥K:128位或256位,初始向量:128位。


就这些吧,算法谷歌度娘多得是,有功夫我再写个上来。懒得写啊。

  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值