对称加密---流密码(序列密码)

简介

序列密码又称为流密码,是一类重要的对称密码体制,它一次只对明文消息的单个字符进行加解密变换,具有算法实现简单、速度快、错误传播少等特点。

最近在看对称密码相关的一些基础知识,下面我只写一下我的总结,有关每个算法的具体细节,请自行百度或谷歌。

因为流密码中主要是通过密钥与明文进行异或得出密文,但是一次一密又是极难实现的,况且明文长度太长还想找到与明文长度一样长的随机且不重复的密钥是特别困难的,所以对主要的扩充就显得及其重要,由此流密码的重心就在于产生比较好的密钥序列。

历史

首先我想从代替密码说起,已知最早的代替密码就是凯撒密码。主要就是通过取字母表中该字母之后第三个字母来代替该字母,我们可以用公式来表示:
C = ( p + 3 ) m o d 26 C = (p+3)mod26
因为测试密钥只有25个所以当我们已知是这种类型的加密算法时可以对其进行穷举攻击。

然后在凯撒密码的基础上又有人提出了单表代替密码,主要是针对密钥空间进行增大,之前是只有a->d,但是现在的话将26个英文字母重新排列,那么就有26!钟对应方式,仍然存在攻击方式,根据语言的一些规律进行攻击,比如说字母使用的相对频率对比英文字母的使用频率分布进行比较。
有两种方法可以减少代替密码里的明文结构对密文的影响:

  • 对明文多个字母一起加密
  • 采用多表代替密码

单表代替密码here

多字母代替密码playfair密码,它是由密钥词构成一个5*5的字母矩阵,先填充密钥再按26个英文字母表的顺序填充剩余的字母,在我看的这个例子里面它将I/J放到了一个方框中,加密方式是一次加密两个字母,具体规则自行百度。但是它仍然保留了明文语言的大部分特征。

下面开始说多表代替密码vigenere维吉尼亚密码,其中的每一个代替表是对明文字母表移位0~25位以后得到多个代替单表,具体细节请移步:

你可以找到更多关于的信息here

Vernam密码,改成用二进制数据进行计算,比如按位进行异或运算。

改进:一次一密,使用随机且不重复的密钥来加密实际困难比较大,产生大规模这种密钥,密文太长密钥分配比较困难。

这样我们就发现需要对明文做一定的处理使得其失去语言特征。

分类

  • 同步序列密码
    密钥序列的产生独立于明文消息和密文消息,分组密码的OFB(output Feedback block)就是同步序列密码的一个例子。同样存在加解密端如果出现不同步,如果传送过程中密文位被插入或删除,使得接收方和发送方之间产生了失步,则解密失败。
  • 自同步序列密码
    若密钥序列的产生是密钥以及固定大小的遗忘密文位的函数,也就是说密钥序列的产生受明文以及密文的影响,分组密码的CFB(cipher feedback block)模式就是一种。密钥序列的生成是由主密钥和密文。解密时是与密文相关的,因此密文位被删除或插入时有可能造成同步丢失。

今天我看了一些流密码的密钥序列产生器的相关内容,在这里简单写一下:

密钥序列产生器

它主要由两部分组成:

  • 驱动部分
  • 组合部分

其中驱动部分产生控制生成器的状态序列,并控制生成器的周期和统计特性。组合部分对驱动部分的各个输出序列进行非线性组合,控制和提高产生器输出序列的统计特性、线性复杂度和不可预测性等,从而保证输出密钥序列的安全强度。

驱动器一般利用线性反馈移位寄存器(LFSR,Linear Feedback Shift Register),特别是利用最长周期或m序列产生器实现。非线性反馈移位寄存器也可作为驱动器。

线性反馈移位寄存器

由两部分组成:

  • 移位寄存器
  • 反馈函数

先介绍几个概念:

  • 由寄存器的某些位异或计算最左端位的值的过程称为反馈函数。
  • 周期是指输出序列从开始到重复时的长度。
  • 计算反馈函数的位叫作:抽头。

反馈移位寄存器

n个触发器和若干个异或门组成, g n g_n 是反馈系数,只能取0或1,取为0时表明不存在该反馈之路,取为1时表明存在该反馈之路;这里的反馈系数决定了产生随机数的算法的不同。反馈函数表示成: y = a 0 x 0 + a 1 x 1 + a 2 x 2 + . . . y = a_0*x^0+a_1*x^1+a_2*x^2+... ,该反馈序列是线性的所以叫作线性反馈移位寄存器,如果反馈函数是非线性函数,则叫作非线性反馈移位寄存器。
应该选取哪些位来进行异或才能保证最长周期为 2 n 1 2^n-1 ,最长周期为 2 n 1 2^n-1 而不是 2 n 2^n 因为全0的状态将无止境的输出0序列。这是一个很重要的问题。选取的“某些位”构成的序列叫做抽头序列,理论表明,要使LFSR得到最长的周期,这个抽头序列构成的多项式加1必须是一个本原多项式。此时的输出序列称为 m m 序列。比如: F ( x ) = x 4 + x + 1 F(x) = x^4+x+1
下面以n=3,g0=1,g1=1,g2=0,g3=1为例,说明LFSR的特性,具有该参数的LFSR结构如下图:
2
假设一开始的时候输入的内容为 111 111 ,则经过一个一轮计算后变为: 101 101
同理继续变换,我们给出循环图:

111
101
001
010
100
011
110

这就是一个循环周期的长度: 2 3 1 = 7 2^3-1=7 贴合理论。

猜你喜欢

转载自blog.csdn.net/qq_35324057/article/details/106859413