2.1 引言
2.1.1 序列密码与分组密码
1、序列密码:单独加密每个位,通过将密钥序列的每个位与明文的每个位相加实现;
①同步序列密码:密码序列仅取决于密钥;(无反馈)
②异步序列密码:密码序列取决于密钥和密文(前边位的密文)(有反馈);
2、分组密码:每次使用相同的密钥加密整个明文位分组。给定分组内任何明文位的加密都依赖于该分组内的其他所有明文位。
3、区别
(1)分组密码更广泛,尤其在Internet上计算机之间的通信加密中。
(2)序列密码小而快,适合计算资源有限的应用。
(3)现在,分组密码也很高效。
2.1.2 序列密码的加密与解密
将每个位xi与一个密钥序列位si相加再模2
1、模2加法的优点
(1)结果只能是0和1,可看作布尔函数;
(2)根据真值表可知,模2加法等价于异或运算(XOR);
(3)异或函数是完全均衡的,即仅观察输出值,输入位为0和1的概率都是0.5;
(4)异或函数是可逆的,即明文与密钥异或得到密文,再与密钥异或又恢复为明文。
2、密钥序列的本质
(1)序列密码的安全性完全取决于密钥序列;
(2)核心要求:对攻击者而言,密钥序列必须看上去是随机的。
2.2 随机数与牢不可破的分组密码
2.2.1 随机数生成器(RNG)
1、真随机数生成器(TRNG)
(1)特点:输出是不可复制的。TRNG基于物理过程。
2、伪随机数生成器(PRNG)
(1)特点:从一个初始种子值开始通过各种计算得到序列;
(2)一般要求:拥有良好的统计属性(输出近乎与真随机数序列相同)。
3、加密安全的伪随机数生成器(CSPRNG)
(1)特点:是PRNG的特例,是不可预测的PRNG。
2.2.2 一次一密
2.2.3 关于实际序列密码
OTP不具备实际使用意义,处理实际序列密码的方式是用伪随机数生成器替换真随机密钥序列位。