首先解释几个名词概念:
对称加密算法:发送方对要加密的内容A使用密钥KEY_A和某种加密算法(AES、DES)进行加密,得到加密后的内容B。接收方得到密文B后,使用相同的密钥KEY_A和对应的相同解密算法对密文B进行解密,得到解密后的内容A。即加密解密使用相同的算法和key,是对称的。加密算法的缺点在于密钥是固定字节,存在被破解的可能性。另外需要双方都确保密钥KEY不被泄露。
非对称加密算法:同对称加密一样,发送方对要加密的内容A使用密钥KEY_A和某种加密算法(RSA、DSA)进行加密,得到加密后的内容B,不同的是,接收方得到密文B后,需要使用密钥KEY_B进行解密,由KEY_A加密的内容只能通过KEY_B进行解密,而由KEY_B加密的内容同样只能由KEY_A进行解密,KEY_A和KEY-B称为公钥和私钥对。为了确保传输内容的安全性,接受方生成一对密钥对,并将公钥暴露出去,自己保存私钥。这样信息发送方在得到公钥后就可以将自己希望发送给接收方的数据使用公钥进行加密,在传输过程中即使传输的内容被截获,由于没有解密的私钥,截获者也无法对数据进行解密,获取到数据内容。相比对称加密,非对称加密私钥被破解的可能性很小,同时只需要持有私钥的一方保证私钥不泄露即可确保传输数据的加密性。
消息摘要算法:对要加密的内容A计算出其唯一的摘要内容B(固定长度),任何对加密内容A的修改都会导致其摘要内容B发生变化,因此可以通过验证B的不变性来保证内容A在传输过程中未被修改过。
签名:签名即是指发送方对要发送的数据使用某个消息摘要算法(MD5、SHA1,同样需要key),提取出摘要,将摘要作为签名一同发送,接收方在接收到数据后使用相同的算法和key重新计算摘要,如果和签名一致,即代表数据未被修改。
数字证书:数字证书是为了保证“用户使用的公钥和加、解密算法的确是服务器提供的”问题,因为公钥/私钥对任何人都可以生成,因此用户在得到一个公钥时需要通过一定的方法确保其就是自己要连接的服务所发布的公钥,否则就存在将自己的数据传送给伪造的服务器的可能。因此就存在一些大家公认的可靠的担保机构(CA机构),其担保流程如下:
1)CA机构拥有自己的公钥/私钥对
2)需要担保的服务将自己的公钥和其他信息传给机构,机构在确认身份后(现实中确认)使用自己的私钥对这些信息进行加密。并包装成数字证书的形式。数字证书带有发行机构信息。
3)用户在得到被担保服务的数字证书后,查看是哪个担保机构发行的,如果是被大家信任的担保机构,则使用该担保机构的公钥对数字证书的内容进行解密,即可得到被担保服务的公钥和其他加密信息。(因为使用担保机构私钥加密的内容只能通过其对应的公钥进行解密,因此只要担保机构的私钥不泄露,并且担保机构没有不加验证的发布数字证书,则可以保证被担保服务的公钥可以安全的发不到用户手中)。
4)接下来用户即可私用被担保服务的公钥和服务方进行数据传输。
网友评论