一、密码体制的定义
1. 密码体制的语义定义
2. 密码体制的分类
若
k
e
=
k
d
k_e=k_d
ke=kd,则加密算法称为单钥加密体制(对称加密体制或私钥加密体制)
若
k
e
≠
k
d
k_e≠k_d
ke=kd,则加密算法称为双钥加密体制(非对称加密体制或公钥加密体制)
3.单钥体制的分类
流密码(Stream Cipher):数据逐比特加密,即数据流与密钥流逐比特进行异或(XOR)运算。
分组密码(Block Cipher):对数据分组进行处理。
二、古典密码
古典密码学主要有两大基本方法:
- 置换密码:明文字母保持不变,但顺序被打乱。
- 置换就是简单的换位,每次置换都可以用一个置换矩阵来表示,且都有一个与之对应的逆置换矩阵。
- 代换密码:明文字母被替换,但顺序保持不变。
- 【单表代换】:一个明文字母对应的密文字母是确定的。
- 【多表代换】:一个明文字母可以表示为多个密文字母。eg:维吉尼亚密码。
- 【弗纳姆密码】:将每消息比特和相应的密钥比特进行比特异或运算
- 弗纳姆密码(Vernam Cipher)是由吉尔伯特·费纳姆在1917年为电报通信设计的一种密码,之后经过约瑟夫·马宾的改进,称为一次一密密码(one-time pad)
- 费纳姆密码的基本原理是:将明文与密钥进行模2加法运算。如果密钥串只使用一次,那么费纳姆密码就是一次一密密码。
- 费纳姆密码也可以看成为序列密码(流密码)的雏形。
三、流密码的基本概念
1.流密码原理
明文
m
=
m
1
,
m
2
.
…
…
.
m
l
m=m_1,m_2.…….m_l
m=m1,m2.…….ml
伪随机序列
k
=
k
1
,
k
2
…
…
k
l
k=k_1,k_2……k_l
k=k1,k2……kl
密文
c
i
=
E
k
i
(
m
i
)
c_i=E_{k_i}(m_i)
ci=Eki(mi)
解密过程与加密过程相同且互逆
流密码的安全性完全依赖于伪随机数的强度(关键在于密钥流生成器)
2.流密码的描述——有限状态自动机
若密钥流是一个完全随机的非周期序列,则我们可以用它来实现一次一密体制。
但实用中的流密码大多采用有限存储单元和确定性算法可用有限状态自动机(Finite State Automation) 来描述。因此,由有限状态机产生的序列是伪随机序列。
3.流密码分类
(1)同步流密码
若
σ
i
\sigma_i
σi与明文消息无关,则密钥流将独立于明文,称此类流密码为同步流密码(Synchronous Stream Cipher)。
- 对于明文而言,这类加密变换是无记忆的,但它是时变的。
- 缺点:对失步敏感,只有保持两端精确同步才能正常工作。
- 优点:没有差错传播
(2)自同步流密码
若
σ
i
\sigma_i
σi,依赖于
(
k
I
,
σ
i
−
1
,
m
i
)
(k_I,\sigma_{i-1},m_i)
(kI,σi−1,mi),则密钥流与明文
m
=
m
1
,
m
2
.
…
…
.
m
l
m=m_1,m_2.…….m_l
m=m1,m2.…….ml有关,称这类流密码为自同步流密码(Self-Synchronous Stream Cipher)。
- 缺点:传输过程中一位出错,影响后n位密钥的正确性
- 优点:收端只要连续正确地收到n位密文,则在相同密钥人,作用下就会产生相同的密钥序列,因而它具有自同步能力。