一、对称加密与非对称加密
-
区别
- 对称加密:传输速度快,但是秘钥需要消息交换的双方共享,一旦被窃取,就容易被破解。
- 非对称加密:私钥是严格保密的,公钥可以任意分发,只有持有私钥才可以对密文解密,但是传输速度比较慢。
-
加密解密
- 流程:明文(plain text)->加密【encrypt】,使用秘钥(key) -> 密文(cipher text) -> 解密【decrypt】,使用秘钥(key)->明文(plain text) 。
- 加密和解密用的秘钥是同一个的加密方式是对称加密,不一样的是非对称加密,微信支付用的对称加密算法采用的是加密分组模式:AED_AES_256_GCM。
-
总结
微信支付中是对称加密和非对称加密相结合的,可以使用非对称加密的方式先传输对称加密所需要的密钥,后期的信息交换过程采用对称加密方式。
二、身份认证
-
结论:私钥加密,公钥解密作用是身份认证。
-
认证流程
张三拥有一把私钥和公钥,将公钥分发给自己的朋友——李四和王五。 李四可以给张三发送一封信件,李四把自己的信件使用张三分发的公钥来进行加密生成密文,传输给张三。 张三使用自己的私钥来进行解密,查看信件内容。 反过来,当张三想给李四发一封信件的时候,可以用自己的私钥来对信件加密,李四还有王五都可以用自己的公钥来对信件进行解密,当解密成功的时候,李四和王五就知道发信的人是张三,这就是身份认证的原理。
三、保证信件不被篡改(信息完整性)
-
采用摘要算法
- 常用算法:MD5、SHA1、SHA2
- 概念:只有算法,没有秘钥,只能加密,不能解密(不可逆)
-
加入秘钥,确保信息传输的私密性
-
示例
1.张三给李四发送信件,对信件内容使用摘要算法生成摘要。 2.使用私钥对摘要进行加密,生成的内容叫做签名 3.将签名附在信件的下方,一并发送给李四 4.李四收到信件后,使用自己的公钥对签名进行解密 5.解密完毕后,拿到信件的摘要,李四使用相同的摘要算法将信件内容生成摘要 6.将验签后的摘要和自己生成的摘要来进行比对,当两个摘要内容一致的时候,说明信件内容是未被篡改过的,这个过程叫做验签
-
-
整体流程示例
1.张三给李四发送信件,对信件内容使用摘要算法生成摘要,将摘要附在信件的下方。 2.李四收到信件后,采用同样的摘要算法将信件内容生成摘要,然后将这份摘要与附在信件下方的摘要进行对比,当内容一致的时候说明,信件内容没有经过篡改。 3.【但是这个流程有一个致命问题,那就是当信件内容被黑客截获,黑客将信件内容全部替换,根据新信件内容生成新的摘要,这样李四在收到信件后再采取上述流程来验证信件未被篡改过的话就是没意义的了】
四、数字证书
-
公钥信任问题
1.张三要给李四发送信件 2.张三将公钥分发给李四,并告知李四,这是王五的公钥 3.张三用自己的私钥生成签名,将信件发送给李四 3.李四用张三给的公钥(自以为是王五的公钥)验签 4.验签成功,李四会以为这信件是王五发来的,但其实是张三这个Dog发来的
-
数字证书信息
1.公钥名称:李四的公钥 2.所有者:李四(人名、公司、域名) 3.颁发者:CA(证书认证机构) 4.有效期:证书的使用期限 5.签名哈希算法:指定摘要算法,用来计算证书的摘要 6.指纹:证书的摘要,保证证书的完整性 7.签名算法:用于生成签名,确保证书是由CA签发 8.序列号:证书的唯一标识
-
CA向客户颁发证书的流程
1.CA用证书信息中指定的HASH算法生成摘要 2.CA用自己的私钥和证书信息中指定的签名算法对摘要加密,生成证书的签名 3.将证书和签名一起发布 4.客户拿到数字证书
-
使用证书发送信件的流程
1.张三给李四发送信件,信件上携带数字证书和签名。 2.李四收到信件后,取出证书,对证书验签。 2.1.对证书信息内容使用证书信息中指定的摘要算法生成摘要 2.2.使用CA的公钥对签名进行解密 2.3.将解密后的摘要和新生成的摘要进行比对 2.4.当比对成功后,说明验签成功 3.验签通过后,从数字证书信息中取出张三的公钥(确保是真实的)【确保公钥的信任安全】。 4.李四对信件的签名验签(确保消息未被篡改)。