进阶教程:Charles为什么能解密https包

  1. charles为什么能解密https包
    1. https简介
      1. 对称加密
      2. 非对称加密
      3. 数字证书
    2. charles解密HTTPS包原理

charles为什么能解密https包

https简介

https其实是http协议加上ssl协议,ssl协议一个重要的功能就是提供加密的会话,将所有数据在发送方进行加密,在接收方进行解密。常见的加密算法有对称加密和非对称加密两种。

对称加密

对称加密就是服务器在发送数据前先生成一个密钥,然后将密钥传输给客户端,之后再用这个密钥加密通信数据传输,客户端在收到数据后再将数据解密。

这个算法的问题之一在于如何安全地传输密钥,数据能够安全通信的前提是密钥能够安全的传输,可是密钥怎么安全传输呢。

非对称加密

非对称加密要求服务端和客户端都有一对密钥,称为公钥和私钥,其中公钥是公开的,并且用公钥加密的数据只有用私钥才能解开。

首先,服务端和客户端交换公钥,服务端用客户端的公钥进行加密数据然后客户端用自己的私钥解密,客户端给服务端发送信息时同理。这样就能保证安全传输了。

但是非对称加密加密时速度比较慢,因此一种较为常见的方法是通过非堆成加密传输对称加密的密钥,这样后面的通信都可以用对称加密了。具体流程如下:

服务器首先发送自己的公钥,客户端收到后,生成一把对称加密使用的密钥,通过服务器的公钥加密,之后再把加密后的密钥发送给服务器,服务器通过自己的私钥解密,最终服务器也可以安全的获得对称加密的密钥了。

这种方法就很安全了吗???
假如现在A和B通信,A首先发送公钥时被C拦截,C谎称自己的公钥是A的并将其发给B,B收到后用C的公钥加密密钥发送,然后C用自己的私钥解密,解密后C也就获得密钥了,最后C再把密钥通过A的公钥加密发送给A。毫无疑问,A和B发送的数据对于C来说和明文没什么区别并且A和B还察觉不到。

怎么解决上面的问题呢??

数字证书

解决上述问题是用数字证书,找一个有公信力的认证中心(CA),可以看到访问https网站时,网址左侧会提示当前证书是否受信。

服务器在传输公钥给客户端时,会把公钥和服务器的个人信息通过hash算法生成信息摘要,另外,还会通过CA的私钥对信息摘要进行加密形成数字签名,最后还会把原来没Hash算法之前的个人信息以及公钥和数字签名合并在一起,形成数字证书。当客户端拿到这份数字证书之后,就会用CA提供的公钥来对数字证书里面的数字签名进行解密来得到信息摘要,然后对数字证书里服务器的公钥以及个人信息进行Hash得到另外一份信息摘要。最后把两份信息摘要进行对比,如果一样,则证明这个人是服务器,这样就可以保证服务器的公钥安全的交给客户端了。

charles解密HTTPS包原理

charles首先会生成一个根证书charles proxy CA,通过将该证书加入到受信任的证书颁发机构后,charles证书就变成了受信的CA,首先服务器发送的数字证书和数字签名被charles拦截被解密,由于charles也有一个受信的CA,因此charles再将这些数据加密成数字证书和数字签名发送给客户端后,客户端同样会认为这是服务器发送的公钥,由此就能解密服务器和客户端间的htpps数据了。

这也是为什么需要将charles的根证书加入到受信任的证书颁发机构中了。


本网站发布的一切文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请联系邮箱:1194325527@qq.com处理

目录
×

给作者杯卡布奇诺

github