freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

HTTPS双向认证
hua1998 2021-04-16 13:17:57 237398

作者 :上海派拉软件基础研发部-左健

一、HTTPS基础

1. 什么是HTTP和HTTPS

HTTP:超文本传输协议(HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

HTTPS:超文本传输安全协议(HyperText Transfer Protocol Secure)是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL/TLS层,HTTPS的安全基础是SSL/TLS,因此加密的详细内容就需要SSL/TLS。HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

2. SSL和TLS区别是什么

SSL:安全套接字层(Secure Socket Layer)位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。该协议由两层组成:SSL记录协议和SSL握手协议。

TLS:传输层安全协议(Transport Layer Security)用于两个应用程序之间提供保密性和数据完整性。该协议由两层组成:TLS记录协议和TLS握手协议。

总结:SSL有1,2,3三个版本,但现在只使用版本3,TLS是SSL的标准化后的产物,有TLS1.0 、TLS1.1、TLS1.2三个版本,TLS1.0和SSL3.0几乎没有区别,事实上我们现在用的都是TLS,但因为历史上习惯了SSL这个称呼,平常还是以叫SSL为多。

3. 什么是CRL

CRL:证书吊销列表 (Certificate Revocation List) ,客户端通过定期的去CA那里请求一个被吊销的证书列表,作为本地缓存,从而之后对服务器证书的验证就可以依赖这个缓存。但是这个方案需要客户端去管理一个本地缓存,这相当于把所有的责任都扔给了客户端。客户端访问CA的服务器的带宽和稳定性都存在疑问,所以这种方案是注定要输给服务端的解决方案的。

4. 什么是OCSP

OCSP:在线证书状态协议(Online Certificate Status Protocol),在TLS的使用中,客户端无法判断一个还没有过期的证书是否被吊销了。因为CA在颁发了证书之后大部分情况下都是等待这个证书过期了之后的自然失效,而如果CA出于某些原因要人为的吊销某个证书就没有了办法。这个时候客户端在从服务端拿到了一个证书之后,去找OCSP服务端的接口去验证一下这个证书的是否过期这一信息。

5. 什么是HSTS

HSTS:http严格传输安全(HTTP Strict-Transport-Security),HSTS是国际互联网工程组织 IETF 正在推行一种新的 Web 安全协议,网站采用 HSTS 后,用户访问时无需手动在地址栏中输入 HTTPS,浏览器会自动采用 HTTPS 访问网站地址,从而保证用户始终访问到网站的加密链接,保护数据传输安全。在服务端设置HSTS后,不安全的请求将无法访问

二、HTTPS流程图

5c0a7074a95219093710b7fd7532ed67.png

三、HTTPS报文名词答疑

1. Session Identifier

Session Identifier(会话标识符),是 TLS 握手中生成的 Session ID。服务端可以将 Session ID 协商后的信息存起来,浏览器也可以保存 Session ID,并在后续的 ClientHello 握手中带上它,如果服务端能找到与之匹配的信息,就可以完成一次快速握手。

2. Session Ticket

Session Identifier 机制有一些弊端,例如:1)负载均衡中,多机之间往往没有同步 Session 信息,如果客户端两次请求没有落在同一台机器上就无法找到匹配的信息;2)服务端存储 Session ID 对应的信息不好控制失效时间,太短起不到作用,太长又占用服务端大量资源。

而 Session Ticket(会话记录单)可以解决这些问题,Session Ticket 是用只有服务端知道的安全密钥加密过的会话信息,最终保存在浏览器端。浏览器如果在 ClientHello 时带上了 Session Ticket,只要服务器能成功解密就可以完成快速握手。

3. Client Key Exchange和Server Key Exchange

协议里常用的cipher suite除了RSA, DH_DSS,DH_RSA之外,随机数C(pre-master key)是双方各自计算而不放在信道上传递的。例如,如果用的是TLS_DHE_XXX等等,随机数C(pre-master key)是各自从server key Exchange, client key exchange里计算的(dh协商,双方各自贡献一部分公共信息,但随机数C(pre-master key)只在本地产生,TCP通信包里没有)

四、HTTPS抓包报文分析细节

1. client hello

①、发送客户端支持的tls版本

②、发送客户端支持的对称加密列表

③、随机数A

6e0255f2ef294f3d13284f4a518a2e91.png

2. server hello

①、服务端选择的tls版本

②、服务端选择的对称加密算法

③、服务端证书

④、随机数B

⑤、Server Key Exchange

⑥、要求客户端返回客户端证书(https双向认证独有)

12189f1eeecdf755dee21dbabeff82e5.png


c6b51b62d7f6f6da05dfc8448b8c550a.png

3. 客户端发送证书等信息

①、客户端证书(https双向认证独有)

②、Client Key Exchange

③、客户端私钥签名的握手数据(https双向认证独有)

④、对称加密通知

⑤、使用随机数A、随机数B、随机数C(pre master key)计算出的对称加密密钥加密的握手数据

4af8fd31906980ca701e6aebe7b4fd90.png

4. 服务端完成握手

①、New Session Ticket

②、对称加密通知

③、使用随机数A、随机数B、随机数C(pre master key)计算出的对称加密密钥加密的握手数据

5fad177b7a441f0af18775a82800a845.png


# web安全
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 hua1998 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
hua1998 LV.4
专注网络安全、身份安全、零信任等相关技术和理论
  • 19 文章数
  • 23 关注者
一文全面了解个人信息保护法规
2024-10-23
企业数据安全与访问控制体系建设
2024-09-30
什么是Identity Fabric(身份编排)
2024-09-11
文章目录