目录
一、流密码的定义
明文消息按字符或比特逐个加密,又称序列密码。
二、流密码的设计思想
流密码的原型就是一次一密密码。一次一密密码作为一种无条件安全的密码而且加解密算法很高,但是其必须保证密钥和明文长度一样,导致了密钥共享困难,因此不太实用。故流密码也就应运而生。
流密码的设计思想相当于在密钥加密明文这个过程进行解耦,与一次一密密码加密过程相比是将密钥不直接参与明文的加密,而是通过一个密钥k产生一个密钥流z=z1z2z3...,之后利用一定规则使用该密钥流对明文进行加密。标准的加密过程叙述如下:
- 利用密钥k产生一个密钥流z=z0z1z2....,并使用如下规则对明文串x=x0x1x2...加密为密文y:
y=y0y1y2...=Ez0(x0)Ez1(x1)Ez2(x2)....
因此对于流密码,非常重要的一点在于对密钥流生成器的设计。
三、密钥流生成器
其中密钥流由密钥流发生器f产生,i时刻的滚动密钥zi由i时刻的记忆元件(存储器)的状态σi和密钥k共同决定。
需要注意的是,由于输入的明文可能会影响记忆元件(存储器)的状态σi,因此σi可能依赖于密钥k,初始状态σ0,x0,x1,x2,…,xi-1等参数。
四、同步流密码
前面说过某一时刻输入的明文可能会影响记忆元件的状态,因此可将流密码进一步分成同步和自同步两种。其中同步流密码的σi独立于明文字符,自同步流密码的σi与明文字符有关,因此较难从理论上对自同步流密码进行分析。主要对同步流密码进行分析。
正因为同步流密码输入的明文不会影响记忆元件的状态,因此产生的密文也不依赖此前的明文字符。因此可以对此部分进行解耦。将流密码的加密器分成密钥流产生器和加密变换器两个部分。
对于该模型左右两部分为加密和解密过程,两方通过一个共享密钥k就可以进行加解密操作。起初通过密钥k通过密钥生成器产生一个密钥流,之后根据一定规则Ezi(xi)进行加密,产生yi。同时解秘操作也是如此。