Https原理总结及抓取Https的工作原理

版权声明:本文为博主原创文章,转载请注明出处: https://blog.csdn.net/kcstrong/article/details/84871568

Https原理:

a.Https == Http + SSL(TSL),SSL是网景公司的命名,TSL为OSI组织接手名的命名

b.要解决的问题:传统HTTP协议可能有三大风险:

    b.1 被截获并获取内容(因为是明文传输)
               b.2 被修改内容(无校验)
               b.3 被伪装(无身份识别)

因此Https引入了三个方案解决上述问题:

    b.1 传输数据加密,防止被截获
               b.2 服务器身份证书(特殊情况下也有客户端身份证书),防止被伪装
               b.3 握手过程中传递hashcode进行数据检验,防修改

c.握手原理及传输原理

    握手包括四次通信(C表示客户端,S表示服务器)
               c.1 C-->S
                   协议版本,如TLS1.0 
                   随机数R1
                   加密方法
                   压缩方法
               c.2 S-->C
                   确认协议版本
                   随机数R2
                   确认加密方法
                   服务器证书(证书含有公钥)
                c.3 C-->S
                   随机数R3(要使用服务器公钥加密,防止被窃听),此处有一个注意点:是一个非对称加密,客户端用服务器的公钥加密的内容,在服务器端用私钥解密即可得到该R3,其他人拿到数据是得不到R3的。
                   编码改变通知(明文要变为密文)
                   握手结束通知(发用于检验的hash值,由前述内容生成)
               c.4 S-->C
                   编码改变通知
                   握手结束通知(发用于检验的hash值,由前述内容生成)
                   传输就是普通的对称加密数据传输

抓包工具对https的实现

常用抓包工具Fiddler和Charles抓取Https包的原理是相近的,都是做了一个中间转发。以Fiddler为例,对于客户端来讲,Fiddler就是服务器,对服务器来讲,Fiddler伪装客户端。详情来讲,对于C中提到的四个过程,Fiddler既做客户端,又做服务器。如何做到让客户端和服务器均信任呢?关键在于证书,客户端需要安装Fiddler的证书,这样,从客户端发往Fiddler的命令就是全透明的,其c.3中加密随机数R3也是用Fiddler的证书中的公钥进行的加密。Fiddler拿到客户端明文信息之后,以客户端的格式向服务器进行通信,拿到服务器下发的客户端所关心的数据,再以Fiddler与客户端协商的加密算法发给客户端即可。
参考:https://www.cnblogs.com/JohnABC/p/5991988.html

            注:一个伪随机很容易被猜出,来源不同的三个伪随机就接近真的随机数了(源于ssl协议的握手中随机数应用原理)

猜你喜欢

转载自blog.csdn.net/kcstrong/article/details/84871568