承接上一篇文章。
文章目录
1.对称密码(Symmetric Ciphers)
首先我们给出密码(cipher)的定义:
1.1.密码(Cipher)
定义:密码包括了三个集合
,以及在三个集合上的两个“有效的”算法
,其中:
:表示密钥的集合(即密钥能取到的值);
:表示明文的集合;
:表示密文的集合;
:加密函数,表示密钥集合和明文集合到密文集合的映射:
;
:解密函数,表示密钥集合和密文集合到明文集合的映射:
。
Mark:
- 密码定义了五个元素,包括了三个集合和两个函数,密码学由此展开。
- “有效的”:在实践中,可以理解为能在规定的时间(如1分钟)内得到结果;在理论中,可以理解为多项式时间复杂度。
- 一般来说, 是随机的; 是确定性的。
1.2.对称密码
对称密码是在密码(五个元素)的基础上定义的,多了一个条件:
即,对明文
加密后,可以重新恢复到明文
(二战以前的加密都是这样的)。
2.一次一密(One Time Pad,OTP)
一次一密,即每个明文
都重新生成一个密钥
。
一个简单的例子(也是对称密码的例子):
加密函数:
,(
表示异或)
解密函数:
现在我们来验证一次一密是对称密码:
,有
即,上述的例子是对称密码。
3.完全保密(Perfect Secrecy)
想要让加密尽可能地不被破解,那么一个很基础的想法是知道了密文 ,推断不出明文 的任何信息。
3.1.定义
香农Shannon在1949年提出的完全保密(perfect secrecy)也是基于这个思想:
定义:如果对于一个密码有
,满足
且
,满足
其中
是从
均匀抽样得到(即,
),
则这个密码是完全保密。
mark:
- 均匀抽样:表示每个元素都以 的概率抽取;
- 表示明文 的长度;
- 任意两个明文 在同一个密钥 加密下输出任意一个密文 的概率相同,即已知密文 不能区分出明文是 还是 ,即从密文 中学习不到任何明文的知识,即仅仅已经密文的攻击是无效的(当然还有其他攻击是有效的)!
一次一密(One Time Pad)中密文的长度是等于明文的,很难用于实际,但是它的思想非常重要!
3.2.一个不幸的消息
香农Shannon证明了如下定理:
定理:完全保密
Mark:如果一个密码是完全保密的,那么密文的长度必须要大于等于明文的!这导致了完全保密无法在实际中使用。假设Alice和Bob要通信,在通信之前他们要共享密钥 ,才能”安全“地传输信息 ,注意他们也必须要“安全”地共享密钥 。既然已经能“安全”地共享密钥 了,因为密钥 的长度是大于等于明文的,所以他们完全可以通过“安全”共享密钥的方式“安全”地传输明文 ,那么 就没什么价值了。
3.3.一个完全保密的例子
第一篇博客提到的定理是一个很好的完全保密的例子。