Tips 2020-05-17
一、HTTPS的实现原理
1. 对称加密
A与B之间的通讯数据都用同一套密钥来进行加密解密。
简单快捷,密钥较短,且破译困难。
如果用户一旦过多的话,管理密钥也是一种困难。不方便直接沟通的两个用户之间怎么确定密钥也需要考虑,这其中就会有密钥泄露的风险,以及存在更换密钥的要求
2. 非对称加密
用公钥和私钥来加解密的算法。例如,A的公钥加密过的东西只能通过A的私钥来解密;同理,A 的私钥加密过的东西只能通过 A 的公钥来解密。顾名思义,公钥是公开的,别人可以获取的到;私钥是私有的,只能自己拥有。
比对称加密安全
加解密比对称加密耗时
但是非对称加密也是存在漏洞,因为公钥是公开的,如果有 C 冒充 B 的身份利用 A 的公钥给 A 发消息,这样就乱套了,所以接下来就采用非对称加密+摘要算法+数字签名的机制来确保传输安全。
常见的非对称加密算法有:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)Hash算法(摘要算法)
Hash算法(摘要算法)
Hash算法的特点是单向不可还原,用户可以通过hash算法对目标信息生成一段特定长度的唯一hash值,却不能通过这个hash值重新获得目标信息。因此Hash算法常用在不可还原的密码存储、信息完整性校验等。只要源数据不同,算法得到的摘要必定不同。
常见的Hash算法有MD2、MD4、MD5、HAVAL、SHA
a
和加密的明文,再将加密明文解密得到原始明文,然后通过同一 hash 算法得到新的摘要 b
,比较 a
与 b
就可得知在传输过程中是否被更改过。SSL协议通信过程
(1) 浏览器发送一个连接请求给服务器;服务器将自己的证书(包含服务器公钥S_PuKey)、对称加密算法种类及其他相关信息返回客户端;
(2) 客户端浏览器检查服务器传送到CA证书是否由自己信赖的CA中心签发。
(3) 客户端浏览器比较证书里的信息,如证书有效期、服务器域名和公钥S_PK,与服务器传回的信息是否一致,如果一致,则浏览器完成对服务器的身份认证。
(4) 并选择一个通话密钥key,接着用服务器公钥S_PuKey加密后发送给服务器;
(5) 服务器接收到的浏览器传送到消息,用私钥S_PrKey解密,获得通话密钥key。
(6) 接下来的数据传输都使用该对称密钥key进行加密。