承接上一篇文章。
文章目录
1.对称密码(Symmetric Ciphers)
首先我们给出密码(cipher)的定义:
1.1.密码(Cipher)
定义:密码包括了三个集合 ( K , M , C ) (\mathcal{K},\mathcal{M},\mathcal{C}) (K,M,C),以及在三个集合上的两个“有效的”算法 ( E , D ) (E,D) (E,D),其中:
K \mathcal{K} K:表示密钥的集合(即密钥能取到的值);
M \mathcal{M} M:表示明文的集合;
C \mathcal{C} C:表示密文的集合;
E E E:加密函数,表示密钥集合和明文集合到密文集合的映射: E : K × M → C E:\mathcal{K}\times\mathcal{M}\rightarrow\mathcal{C} E:K×M→C;
D D D:解密函数,表示密钥集合和密文集合到明文集合的映射: D : K × C → M D:\mathcal{K}\times\mathcal{C}\rightarrow\mathcal{M} D:K×C→M。
Mark:
- 密码定义了五个元素,包括了三个集合和两个函数,密码学由此展开。
- “有效的”:在实践中,可以理解为能在规定的时间(如1分钟)内得到结果;在理论中,可以理解为多项式时间复杂度。
- 一般来说, E E E是随机的; D D D是确定性的。
1.2.对称密码
对称密码是在密码(五个元素)的基础上定义的,多了一个条件:
s . t . ∀ m ∈ M , k ∈ K : D ( k , E ( k , m ) ) = m , s.t.\ \forall m\in\mathcal{M},k\in\mathcal{K}:D(k,E(k,m))=m, s.t. ∀m∈M,k∈K