Https加密流程以及原理(通俗易通并附图)

1.定义

  • HTTP over SSL 的简称,即工做在 SSL(安全套接字层) 或TLS(SSL的升级版)上的 HTTP。说白了就是加密通讯的HTTP。算法

  • 必定注意HTTPS不是协议安全

2.工做原理

  • 在客户端和服务器之间协商出一套对称密钥,每次发送信息以前将内容加密,收到以后解密,达到内容的加密传输。

加密解密数据用的对称加密,传输Pre master sercert和证书验证使用的非对称加密。服务器

  • 为何不直接使用非对称加密?

非对称加密因为使用了复杂的数学原理,所以计算至关复杂,若是彻底使用非对称加密来加密通讯内容,会严重影响网络通讯的性能。网络

3.Https创建过程

Step 1. Client Hello C端通知S端创建链接 同时会带上客户端支持的:

1. 对称加密算法
2. 非对称加密算法
3. Hash算法
4. SSL或者TLS版本号
5. 一个随机数
复制代码

Step 2.Server Hello S端通知C端创建链接 并带上Server端选择的:

1. 对称加密算法
2. 非对称加密算法
3. Hash算法
4. SSL或者TLS版本号
5. 一个随机数
复制代码

那么此时客户端和服务端就拥有了相同的性能

1. 对称加密算法
2. 非对称加密算法
3. Hash算法
4. SSL或者TLS版本号
5. 两个随机数
复制代码

Step 3.S端发给客户端被第三方机构信任的一个证书公钥,客户端收到证书公钥后对证书进行验证。

看图:加密

如图发来的信息主体是证书的公钥,可是它同时会附加上证书的签名和HOST主机名称。

1. 首先咱们经过发来证书的根证书在本地找寻相同的根证书(本地根证书通常是操做系统自身已经带着的)。
2. 取出根证书的公钥对证书的签名(用证书私钥对发来公钥进行加密的一个Hash值)作认证(公钥解密)。
3. 比对验证后的数据(Hash)和发来证书公钥的Hash值是否相同,若是相同则认证经过,说明是一个受信任的证书。
复制代码

Step 4.生成Pre Master-sercert(一个随机数),并用发来的证书公钥加密传给Server端。

Step 5.C端和S端用Pre Master-sercert 和1,2部的两个随机数生成Master-sercert。

Step 6.C端和S端用相同的Master-sercert和相同的对称加密算法生成秘钥和sercert key(用于作Hash摘要),这时由于生成对称加密密钥的条件两方相同,因此最后生成的秘钥虽然没有经过传输,两方也是相同的(避免了对称加密过程当中的秘钥泄露问题)。

Step 7.开始加密数据 C端加密数据发给S端同时会带上用sercert key为介质作的Hash值(为了防止数据被篡改)。

Step 8.S端解密数据后用sercert key对数据作Hash并同发送来的Hash做对比,若是相同则经过验证。

4.HTTPS 链接创建的过程 简要

1. Client Hello 
2. Server Hello 
3. 服务器证书 信任创建
4. Pre-master Secret 
5. 客户端通知:将使用加密通讯 
6. 客户端发送:Finished 
7. 服务器通知:将使用加密通讯 
8. 服务器发送:Finished
复制代码

5.抓包软件能够抓到加密信息的原理Fiddler为何能够抓取到信息?

由于它要求你手动信任了它的根证书。此时它就能够篡改证书为它本身的证书了,HOST NAME直接篡改成目标服务器不变,证书公钥是它自身的假机构签发的而你本地又信任了它的根证书,那么此时证书的验证是能够经过的,后续的Pre Master-Sercert它也能够获取到了,那么最后它是持有密钥的。Fiddler至关于当了中间人,客户端服务端两头骗,因此咱们平时不要信任未知的证书。spa

可参考:blog.csdn.net/hbdatouerzi…操作系统

相关文章
相关标签/搜索