目录
1.1 密码学和现代密码学
1.2 私钥加密
1.2.1 私钥加密的两个广泛应用
1.2.2 加密的语法
1.2.3 柯克霍夫原则
1.1 密码学和现代密码学
经典密码学(20世纪80年代以前)和现代密码学之间的另一个非常重要的区别与它的采用有关。历史上,密码学的主要消费者是军事组织和政府。今天,密码学无处不在
1.2 私钥加密
1.2.1 私钥加密的两个广泛应用
私钥加密的第一个广泛应用: 双方共享一个密钥,用于安全通信
私钥加密的第二个广泛应用涉及到同一方随着时间的推移与自己进行通信。例如,考虑磁盘加密,其中用户加密一些明文并将得到的密文存储在他的硬盘驱动器上;同一用户将在稍后的时间点返回来解密密文并恢复原始数据。这这里的硬盘驱动器充当攻击者的通信通道
1.2.2 加密的语法
在形式上,私钥加密方案是通过指定消息空间M(花体)以及三种算法来定义的:
- 生成密钥的过程(Gen): generating keys
- 加密的过程(Enc):encrypting
- 解密的过程(Dec):decrypting
消息空间M定义了一组“合法”消息,即该方案支持的消息
该方案的算法具有以下功能:
- 密钥生成算法Gen是一种概率算法,它输出根据某种分布选择密钥k。
- 加密算法Enc将密钥k和消息m作为输入,并输出密文c。我们用Encᴋ(m)表示使用密钥k对明文m的加密
- 解密算法Dec将密钥k和密文c作为输入,并输出明文m。我们用Decᴋ(c)表示使用密钥k对密文c的解密
加密方案必须满足以下正确性要求:对于Gen输出的每个密钥k和每个消息m ∈M,必须满足
Decᴋ(Encᴋ(m)) = m
换句话说:加密一条消息,然后用同样的密钥解密得到的密文就产生了原始消息
密钥生成算法输出的所有可能密钥的集合称为密钥空间,用K(花体)表示
1.2.3 柯克霍夫原则
The cipher method must not be required to be secret, and it must be able to fall into the hands of the enemy without inconvenience.
密码方法一定不能要求是保密的,即使整个加密流程全部落入敌人手中也不会造成任何威胁。即只要攻击者不知道正在使用的密钥,即使窃听者知道加密方案的所有细节,该加密方案也是安全的
换句话说,
安全性不应依赖于关于加密方案的秘密性,而是要完全依赖于密钥的保密性。
支持柯克霍夫原则的主要论点有三个
- 保持短密钥的秘密比保持(更复杂的)加密方案的秘密容易得多。当加密被广泛使用时尤其如此。例如,考虑在某个组织中所有雇员之间的通信使用加密的情况。除非每一对参与者使用他们自己的、唯一的方案,否则如果一些人使用相同的加密方案,那么有一些参与者会知道其他参与者正在使用的方案。此外,关于该方案的信息可能会被其中一名员工泄露(比如,在被解雇之后),或者被攻击者使用逆向工程获得。简而言之,假设加密方案会保密是不现实的。
- 万一诚实的各方共享的秘密泄露,他们更换密钥比更换加密方案要容易得多。相比于设计新的加密方案,生成新的随机秘密的代价是微不足道的
- 在广泛部署某个加密方案之前,鼓励公众审查该方案以检查可能的弱点,这对于确保加密方案的安全性是件好事。另外,希望将加密方案标准化,以便(1)确保不同用户之间的兼容性(2)公众将使用经过公众审查的加密方案