一.序列密码的基本概念
- 定义:明文,密文,密钥以位(或字符)为单位进行加解密。
- 为了安全,密钥必须有足够的长度,随机性,而且经常更换。
- 为此,用一个短的种子密钥,通过算法产生好的密钥序列。
- 模型如下
- 商农证明了“一次一密”是无条件安全的。于是,人们用序列密码模仿“一次一密”;
- 加密运算最简单,而且是对合运算。
- 安全取决于密钥序列产生算法;
- 理论和技术都十分成熟;
- 核心密码的主流密码。
序列密码的分类
1.同步序列密码(Synchronous Stream Cipher)
- 密钥序列产生算法与明文(密文)无关,所产生的密钥序列也与明文(密文)无关。
- 在通信过程中,通信的双方必须保持精确的同步,收方才能正确解密,如果失步收方将不能正确解密。例如,如果通信中丢失或者增加了一个密文字符,则收方的解密将会一直错误。如图:
- 对于失步的敏感性,使得我们能够容易检测插入,删除,重播等主动攻击。
- 另一个优点是没有错误传播,当通信中某些密文字符产生了错误(0错成1或者1错成0,不是插入和删除),只影响相应字符的解密,不影响其它字符。
- 注意:错误与失步是不同的概念。如图为错误的例子:
2.自同步序列密码(Self-Synchronous Stream Cipher)
- 密钥序列产生算法与明文(密文)相关,则所产生的密钥序列与明文(密文)相关。
- 设密钥序列产生器具有n位存储,则加密时一位密文错误将会影响后面连续n个密文错误。在此之后恢复正确。
- 解密时一位密文错误也将影响后面连续n个明文错。在此之后恢复正确。
- 加解密会造成错误传播。但是错误传播有界,在错误过去之后恢复正确。
- 自同步序列密码如图:
二.线性移位寄存器序列密码
1.线性移位寄存器(Linear Shift Registor)
- 重点:当式子中的加法运算在二进制的情况下,也就是取值为0,1,此时的加法运算就相当于异或运算。
- 注意gn必须为1,只有这样才有反馈信息进来,g0也必须为1,假如g0=0,那么S0就不起作用了,可以直接拿掉,显然是不可以的。
2.线性移位寄存器序列密码
- m序列具有良好的随机性;
- 50年代开始用作密钥序列,并用于军用。
- 60年代发现其是不安全的。
三.非线性序列密码
线性移位寄存器序列密码在已知明文攻击下是可以破译的,可破译的根本原因在于线性移位寄存器序列是线性的,这一事实促使人们向非线性领域探索。
目前研究得比较充分的方法:
- 非线性移位寄存器序列
- 对线性移位寄存器序列进行非线性组合
- 利用非线性分组码产生非线性序列
1.非线性移位寄存器序列
2.对线性移位寄存器序列进行非线性组合
- 非线性移位寄存器序列的研究比较困难。
- 但人们对于线性移位寄存器序列的研究却比较充分和深入。
- 于是人们想到,利用线性移位寄存器序列设计容易,随机性好等优点,对一个或者多个线性移位寄存器序列进行非线性组合可以获得良好的非线性序列。
- 对一个LSR进行非线性组合。
- 在这里用线性移位寄存器作为驱动源,来驱动非线性电路产生非线性序列。其中用线性移位寄存器序列来确保所产生序列的长周期和均匀性,用非线性电路来确保输出序列的非线性和其他密码性质。通常称这里的非线性电路为前馈电路,称这种输出序列为前馈序列。
- 对一个LSR进行非线性组合:
RC4序列密码
- RC4序列密码是美国RSA数据安全公司设计的一种序列密码。RSA公司将其收集在加密工具软件BSAFE中。最初并没有公布RC4的算法。人们通过对软件进行逆向分析得到了算法。
- 在这种情况下RSA公司于1997年公布了RC4密码算法。
- 密钥40位的RC4密码,通过Internet 32小时就可以攻破。
- RC4密码与基于移位寄存器的序列密码不同。
- 它是一种基于非线性数据表变换的序列密码。
- 它以一个足够大的数据表为基础,对表进行非线性变换,产生非线性的密钥序列。
- 注意:对S表初始化的过程是对S表进行随机化处理的过程,只有当这一过程完成后,才能计算产生密钥字符,才能进行加解密,否则将会是不安全的。
- RC4算法的优点是算法简单,高效,特别适合软件实现。
- RC4是目前最广的商用序列密码。