PKI的演进过程
上图是在过去人们如何传输数据,如何改善传输问题的一系列过程,刚接触PKI的人就很迷茫了,什么是密钥啊,什么又是对称密钥加密啊,数字信封又是什么玩意。下面会着重介绍下这些在网络传输中十分重要的基础知识。
加密
加密是通过网络传输信息的基础。通俗地讲,加密就是利用数学方法将明文(需要被隐蔽的数据)转换为密文(不可读的数据)从而达到保护数据的目的。
对古典密码学有了解的朋友可以知道,比如凯撒密码(将字母进行偏移处理,比如偏移量为3时,A变成D,B变成E)、培根密码(将字母转换为指定的字符串),这些都是加密。目的就是让可读的数据变成不可读的数据,同时在知道加密规则的情况下能够还原成可读数据。
对称密钥加密
对称密钥,对称二字意思很明确,那就是两方持有的东西是一样的。密钥呢,从字面意思上看,就是密文的钥匙,仔细观看上图,整个过程就是将数据用一个密钥锁起来,然后对方再用相同的一把钥匙给解开。优点是算法简单,效率高,因此需要的系统资源比较小,比较适合加密大量的数据。但是呢,缺点也很明显,扩展性差,还有怎么样将密钥安全的传递给对方也是个问题。
目前比较常用的对称密钥加密算法,主要包含DES(Data Encryption Standard)、 3DES(Triple Data Encryption Standard)、AES(Advance Encrypt Standard)算法。
非对称密钥加密(公钥加密)
非对称密钥加密首先要介绍下非对称算法:非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。同样的私钥加密,用对应的公钥才可以解密。从名字上来看,公钥代表公开给别人看的钥匙,私钥是自己私有的。因此有了下面的应用场景:
- 公钥加密,私钥解密。——用于加解密(加密的需求是对方能看到,其他人看不到,因此用对方的公钥进行加密)
- 私钥签名,公钥验签。——用于签名(签名是指确信是我签出的,因此使用私钥,下面会介绍数字签名是什么)
非对称加密解决了密钥泄露和但是非对称也是存在问题的,第一是算法非常复杂,加密时间通常比较长,加密后的数据也较长。第二,因为公钥是对外公开的,接收方不能确定数据来源。
数字信封
数字信封是指发送方采用接收方的公钥来加密对称密钥后所得的数据。采用数字信封时,接收方需要使用自己的私钥才能打开数字信封得到对称密钥。
见名知意,相当于一个只有对方能打开的信封,信封里面才是要给对方的数据。这里是将对称和非对称的优点结合起来,解决了对称密钥的发布和公钥加密速度慢等问题,提高了安全性、扩展性和效率等。
但是,数字信封技术还有个问题,如果攻击者拦截甲的信息,用自己的对称密钥加密 伪造的信息,并用乙的公钥加密自己的对称密钥,然后发送给乙。乙收到加密信息 后,解密得到的明文,而且乙始终认为是甲发送的信息。此时,需要一种方法确保接 收方收到的信息就是指定的发送方发送的。
数字签名
数字签名是指发送方用自己的私钥对数字指纹进行加密后所得的数据。采用数字签名 时,接收方需要使用发送方的公钥才能解开数字签名得到数字指纹。
数字指纹又称为信息摘要,它是指发送方通过HASH算法对明文信息计算后得出的数据。采用数字指纹时,发送方会将数字指纹和明文一起发送给接收方,接收方用同样 的HASH算法对明文计算生成的数据指纹,与收到的数字指纹进行匹配,如果一致,便 可确定明文信息没有被篡改。
这次的流程更加复杂了,签名,顾名思义就是我让你知道这是我。在此前提下,引入了摘要算法(比如常见的MD5,可以理解为数据的特征值提取出来),摘要算法的作用是生成明文的特征信息,然后使用自己的私钥进行加密,明文部分和正常的非对称加密一致,直接使用公钥进行加密即可。对方接受到数据后,先用自己的私钥解密密文部分,然后再进行摘要,最后再将对方的签名部分使用对方的公钥进行解密,最后比对。
从加解密过程中,可以看出,数字签名技术不但证明了信息未被篡改,还证明了发送 方的身份。数字签名和数字信封技术也可以组合使用。
但是,数字签名技术还有个问题,如果攻击者更改乙的公钥,甲获得的是攻击者的公钥,攻击者拦截乙发送给甲的信息,用自己的私钥对伪造的信息进行数字签名,然后 与使用甲的公钥的加密伪造的信息一起发送给甲。甲收到加密信息后,解密得到的明文,并验证明文没有被篡改,则甲始终认为是乙发送的信息。此时,需要一种方法确保一个特定的公钥属于一个特定的拥有者。这就是后面要介绍的数字证书,也是PKI的核心。
欢迎各位沟通交流~