本文主要介绍对称加密算法(symmetric encryption algorithm)和非对称加密算法(asymmetric cryptographic algorithm)的相关知识。
1 对称加密算法
1.1 概述
对称加密算法是应用较早的加密算法,技术成熟。
在对称加密算法中,数据发送方利用加密密钥、通过指定的加密算法将明文(原始数据)加密为密文,然后发送出去。数据接收方在收到密文后,需要使用加密时使用的密钥、以及加密算法的逆算法对该密文进行解密,才能对应的明文。
在对称加密算法中,消息发送方和接收方都使用同一个密钥对数据进行加密和解密,所以,使用对称加密算法时,解密方需要事先知道消息的加密密钥。
1.2 示例及隐患
对称加密的一方(比如小红)用密钥“K”给文本“M”加密,另一方(比如小明)用同一个密钥“K”解密。
在此过程中,加解密的模型如下:
小红:C = E(M, K)
小明:M = D(C, K)
根据对称加密原理,通信一方(如小明)必须要事先知道密钥“K”,才能够对通信另一方(如小红)发送过来的消息进行解密,双方的加解密过程,如下图所示:
不过,上图中存在这样一个问题:当一方(如小红)生成了密钥“K”、并把“K”分享给另一方(小明)的过程中,有可能被人窃听到了密钥“K”,那么此时这个窃听者就可以假扮双方中的任何一方与另一方进行通信,这就叫中间人攻击mim(Man-in-the-middle_attack)。中间人攻击过程如下图所示:
2 非对称加密算法
2.1 概述
非对称加密算法需要两个密钥(密钥对),即公钥(public key)和私钥(private key)。公钥和私钥是成对出现的,如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种加密算法叫作非对称加密算法。
非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥,并将其中的一把作为公钥向乙方公开,得到该公钥的乙方使用该密钥(公钥)对机密信息进行加密后发送给甲方;甲方接收到加密信息后,用自己保存的另一把专用密钥(私钥)对加密信息进行解密。
说明:非对称加密算法的一般应用场景是“公钥加密、私钥解密”。
2.2 示例及隐患
现有用于非对称加密的密钥对:K1和K2。小红用其中一个密钥加密文本,小明可以用另一个密钥解密文本。比如,小红用K1加密,小明用K2解密。
上述加解密过程的模型如下:
小红:C = E(M, K1)
小明:M = D(C, K2)
根据上述模型,双方中的一方(比如小红)可以生成K1和K2,然后把其中一个密钥(比如K1)私藏,称为私钥;另一个密钥(比如K2)公开,称为公钥。当另一方(比如小明)得到小红公开的公钥之后,双方就可以通信了。双方的加解密过程,如下图所示:
不过,上图中依然存在一个问题:中间人mim还是可能截获小红公开的公钥K2,然后自己弄一对密钥(K1, K2),接着欺骗小明说K2是小红的公钥,这样中间人mim每次都可以用截获的K2解密小红发给小明的文本(然后窃取甚至篡改文本),再用自己制造的K1对文本进行加密后发给小明,小明收到消息后,用中间人mim制造的K2解密文本。此过程如下图所示:
为了避免上述问题,帮助小明确定得到的公钥确实是小红公开的公钥K2(而不是中间人mim伪造的K2),数字签名(digital signature)技术应运而生。
关于数字签名技术的相关知识,请点击此处。