HTTPS原理分析
一、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;B接收到后解密,得到这个摘要
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进行加密。