目录

简介

对称**加密

公开**加密

认证

HTTPS中的混合加密

https解决的问题

使用Wireshark抓包https

第一步,Client Hello。

第二步,Server Hello。

第三步,Certificate、Server Key Exchange、ServerHello Done。

第四步,Client Key Exchange、Change Cipher Spec、Encrypted Handshake Message。

第五步,New Session Ticket、Change Cipher Spec、Encrypted Handshake Message。

参考


简介

在学习https中,接触到https(http + ssl)使用混合加密的方式保证通信安全。首先,学习了以下几个概念:

对称**加密

通信的双方使用同一个**对信息进行加密和解密,优点是加解密速度快,缺点是**没法可靠分发(如果**可以可靠分发,那消息也应该可以)。

公开**加密

使用一对非对称的**,私钥保存在本地,公钥可以公开。发送密文的一方使用对方的公钥进行加密,接收方收到后,使用自己的私钥进行解密。优点是解密的私钥不需要进行分发。缺点是加解密速度慢,同时公钥可能被替换。

认证

CA(Certificate Authority),证书授权中心。为了防止公钥被替换,CA提供认证服务。

服务端的工作人员首先会提供自己的公钥给CA进行认证,CA会对服务端的资质等信息进行审核,如信息审核通过,CA 会向申请者签发认证文件-证书。证书包含以下信息:申请者公钥、申请者的组织信息和个人信息、签发机构 CA 的信息、有效时间、证书***等信息的明文,同时包含一个签名。

签名的产生算法:首先,使用散列函数计算公开的明文信息的信息摘要,然后,采用 CA 的私钥对信息摘要进行加密,密文即签名;

具体流程:

  1. 客户端 C 向服务器 S 发出请求时,S 返回证书文件;
  2. 客户端 C 读取证书中的相关的明文信息,采用相同的散列函数计算得到信息摘要,然后,利用对应 CA 的公钥解密签名数据,对比证书的信息摘要,如果一致,则可以确认证书的合法性,即公钥合法;
  3. 客户端然后验证证书相关的域名信息、有效时间等信息;客户端会内置信任 CA 的证书信息(包含公钥),如果CA不被信任,则找不到对应 CA 的证书,证书也会被判定非法。

在这个过程注意几点:

  • 申请证书不需要提供私钥,确保私钥永远只能服务器掌握;
  • 证书的合法性仍然依赖于非对称加密算法,证书主要是增加了服务器信息以及签名;
  • 内置 CA 对应的证书称为根证书,颁发者和使用者相同,自己为自己签名,即自签名证书;
  • 证书=公钥+申请者与颁发者信息+签名;

HTTPS中的混合加密

简单的说,客户端和服务端首先使用公开**加密的方法传输对称加***,为了防止公钥在被替换,服务端会对自己的公钥向CA申请认证,客户端确认了证书后,双发使用对称**加密的方法进行通信。下面是图解http中的流程图:

https中的混合加密与Wireshark抓包分析

https解决的问题

  • 防监听 
    • 数据是加密的,所以监听得到的数据是密文,hacker看不懂。
  • 防伪装 
    • 伪装分为客户端伪装和服务器伪装,通信双方携带证书,证书相当于身份证,有证书就认为合法,没有证书就认为非法,证书由第三方颁布,很难伪造
  • 防篡改 
    • https对数据做了摘要,篡改数据会被感知到。hacker即使从中改了数据也白搭。

使用Wireshark抓包https

抓的网站是 www.blog.csdn.net ,ping出来的地址是 47.95.47.253, 在Wireshark中筛选出来的结果如下:

https中的混合加密与Wireshark抓包分析

第一步,Client Hello。

可以看到,客户端提供了一个随机数(和当前的时间戳和一个随机数有关),后面生产对称**有关;一个加密算法列表,供服务器选择。

https中的混合加密与Wireshark抓包分析

第二步,Server Hello。

也提供了一个随机数,并且选择了使用一种SHA256算法。

https中的混合加密与Wireshark抓包分析

第三步,Certificate、Server Key Exchange、ServerHello Done。

接下来一个一个看。

https中的混合加密与Wireshark抓包分析

Certificate,可以看到服务器提供了两个证书,证书包括一长串数字(签名),和一些明文信息,第一个公司就是csdn(域名,行业啥的),第二个是一个提供ssl服务的公司。

https中的混合加密与Wireshark抓包分析

Server Key Exchange,使用ECDH(Ellipticcurve Diffie–Hellman)算法交换公钥。

https中的混合加密与Wireshark抓包分析

Server Hello Done里没啥,就是告诉客户端,服务器和你hello完了。

https中的混合加密与Wireshark抓包分析

第四步,Client Key Exchange、Change Cipher Spec、Encrypted Handshake Message。

客户端使用服务器提出的ECDH算法交换**,改变编码,加密握手信息。

https中的混合加密与Wireshark抓包分析

第五步,New Session Ticket、Change Cipher Spec、Encrypted Handshake Message。

New Session Ticket:包含了一个加密通信所需要的信息,这些数据采用一个只有服务器知道的**进行加密。目标是消除服务器需要维护每个客户端的会话状态缓存的要求。这部分内容在后面的扩展部分会讲到

Change Cipher Spec:编码改变通知。这一步是服务端通知客户端后面再发送的消息都会使用加密,也是一条事件消息。

Encrypted Handshake Message:这一步对应的是 Server Finish 消息,服务端也会将握手过程的消息生成摘要再用秘钥加密,这是服务端发出的第一条加密消息。客户端接收后会用秘钥解密,能解出来说明协商的秘钥是一致的。

https中的混合加密与Wireshark抓包分析

到这里双方SSL/TLS握手完成,后面就是用对称**加密的消息了。

https中的混合加密与Wireshark抓包分析

参考

https://www.jianshu.com/p/a3a25c6627ee

https://www.cnblogs.com/handsomeBoys/p/6556336.html

https://zhidao.baidu.com/question/2144656506602959108.html

https://book.douban.com/subject/25863515/

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-07-17
  • 2021-12-30
  • 2021-12-28
  • 2021-04-13
  • 2021-11-25
猜你喜欢
  • 2021-08-07
  • 2021-04-16
  • 2022-01-16
  • 2021-04-15
  • 2021-12-06
相关资源
相似解决方案