今天的我们只要接触密码学相关的信息,那一定是经常会听说各种密钥啊,之类的,但这个东西到底是怎么发展来的呢?这里我们从密码学的发展、古典密码学和现代密码学等角度搞清楚密码学到底是怎么发展的,以及为什么后面出现了密钥这种东东。
密码学的历史主要分为两大部分:古典密码学和现代密码学。其中 古典密码学依赖于算法,现代密码学依赖于密钥。在现代密码学中密码的理论算法需要公开,以便与更好的维护和找到漏洞。
密码算法本身要保密,要很安全,最开始的加密算法主要是:字母替换和顺序置换。
凯撒密码,容易被穷举攻击,属于单表替换。凯撒密码是通过排列明文和密文字母表,密文字母表示通过将明文字母表向左/右移动一个偏移量的位置。例如,当密文的偏移量是左移3时(解密时的密钥就是3):
使用时,加密者查找明文字母表中需要加密的消息中的每一个字母所在位置,并且写下密文字母表中对应的字母。需要解密的人则根据事先已知的密文字母表反过来操作,得到原来的明文。例如:
单字母替换,无法被穷举法攻击,但是可以通过英文日常出现概率,即统计学和概率论的方式去大幅度降低算力,属于单表替换。单字母替换密码加密时,将每个明文字母替换为与之唯一对应且不同的字母。它与凯撒密码之间的区别是其密码字母表的字母不是简单的移位,而是完全是混乱的,这也使得其破解难度要高于凯撒密码。 比如,它的映射关系可以为:
使用时,加密者查找明文字母表中需要加密的消息中的每一个字母所在位置,并且写下密文字母表中对应的字母。需要解密的人则根据事先已知的密文字母表反过来操作,得到原来的明文。例如:
维吉尼亚算法,引入了密钥的概念。属于多表代换密码体制。它解决了从概率分布上被破解的可能性,而破解方式是使用kasiski测试法+重合指数法,相较于前两者难度大了很多。该加密方法不需要明文和密文字母表。在使用时 加密者直接用密钥进行加密,而解密者必须要有密钥,加上一张映射表才可以,这里的映射关系比较简单,比如密钥中A表示偏移是0,B表示偏移为1,以此类推。如下所示:
这里使用ABCD为密钥,不断重复。可以看出从前往后,虽然明文都是R,但是密文可能是S、U、并不是一一映射的关系了。
@1 现代密码学设计的核心法则
Kerckhoff原则:密码系统的安全性不依赖于加密体制和算法的保密,而是依赖于密钥的安全性。那现代密码学为什么这么设计呢?因为保护一个密钥比保护一个算法更容易,安全性如果依赖于算法,那么算法一旦被攻破,就彻底不安全了;反之,安全性依赖于密钥,被攻破了我换个密钥就可以了。即更换密钥比更换密码更加容易。
@2 现代密码学的设计要求
现代密码学更倾向于密码算法设计方案是公开的,而密钥匙需要保密的。现代密码学的设计要求不同于古典密码学,会严格很多,有:
@3 无条件安全 和 安全目标
无条件安全:即使攻击者具有无限的计算资源,也无法攻破的密码体制,我们称这种密码体制是无条安全的。攻击者能拿到所有可能的明文和密文对,在这种情况下,给定攻击者一个密文,依旧无法破解对应的明文是什么,称为无条件安全。理论上讲,一次一密的密码体制是不可破译的。但在实际应用中考虑到加密算法的密钥传输代价,又是不实用的。所以实际上不存在不可破译的密码。
安全目标:无条件安全
@4 敌手模型的四种基本攻击:
@1 加密算法定义:
@2 加密算法的安全目标:
@3 加密算法的安全性 2个维度:
对称加密:发送端和接受端使用相同的密钥K,发送和接受消息时使用密钥加密后发送和接收。
对称加密的优点是:加密解密速度快;缺点是:会出现密钥分配问题(发送端密钥怎么才能安全的传输到接收端手里不被其他人获取到?直接发送密钥会被其他人窃取,只有用密钥加密后的信息才能安全传输,但是只有保证安全传输的前提下才能发送这个密钥)。密钥不容易被保管,也不便于安全管理。
常见的对称加密算法有DES、3DES、Blowfish、IDEA、AES等。。。
非对称加密:双方使用不同的密钥来加解密,并且不能通过一个密钥推算出另一个密钥。发送端和接受端使用不同的密钥K(Pubilc Key 公钥是所有人都可以访问的,Private Key 私钥是只有自己持有的)。当自己是发送端时,私钥加密,接收方公钥解密;当自己是接收端时,私钥解密,发送端公钥加密。
非对称加密优点是:不会出现密钥分配问题;缺点:加解密速度慢,且有被中间人窃听和攻击。
常见的非对称加密算法有:RSA、Diffie-Hellman、DSA等。。。
混合加密:两种方式的整合,因为 传递大量数据时 对称加密的解析速度会更快,因此对于数据的解析使用 对称加密,但对称加密的密钥使用非对称加密传递以确保其安全性。本质上就是使用 非对称加密传递密钥,使用对称加密传递数据。
混合加密优点:加解密速度快,不会出现密钥分配问题;缺点:仍有被中间人窃听和攻击。
到现在为止 中间人攻击 无论是对称加密/非对称加密/混合加密 都可以窃听和攻击,那这是为什么呢?接下来我们用一张图详细解读下中间人攻击的原理。
该图以对称加密为例来进行说明:
如果是非对称加密,因为本质上是密钥可被截获,所以依然不能幸免,流程如下所示:
该图以非对称加密为例来进行说明:
至于混合加密,因为就是使用非对称加密 传递 对称加密的密钥K,所以只要能拿到密钥K那么就能进行中间人窃听和攻击,即只要能够截获非对称加密即可,因此也不安全。
消息摘要算法主要用于生成数据的"指纹",具有不可逆性。也被称为哈希/散列算法。消息摘要算法的主要特征是加密过程不需要密钥,且加密过程不可逆。常见摘要算法有MD5和SHA-1等。
信息摘要算法主要用于 一致性验证、安全访问验证、数字签名:
关于数字签名的生成流程和验证流程,这里对其流程进行更加详细的说明: