浏览器原理 35 # HTTPS

本文涉及的产品
.cn 域名,1个 12个月
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 浏览器原理 35 # HTTPS

说明

浏览器工作原理与实践专栏学习笔记



前言

经过前面几节的学习,浏览器安全还差网络安全没有学习,之前的笔记如下:有兴趣的可以看看


浏览器安全:


页面安全

   浏览器原理 31 # 同源策略:为什么XMLHttpRequest不能跨域请求资源?

   浏览器原理 32 # 跨站脚本攻击(XSS):为什么Cookie中有HttpOnly属性?

   浏览器原理 33 # CSRF攻击:为什么Cookie中有SameSite属性?


系统安全

   浏览器原理 34 # 安全沙箱


网络安全

   浏览器原理 35 # HTTPS(就是本篇)



中间人攻击


中间人攻击(Man-in-the-MiddleAttack,简称MITM攻击)是一种“间接”的入侵攻击,这种攻击模式是通过各种技术手段将受入侵者控制的一台计算机虚拟放置在网络连接中的两台通信计算机之间,这台计算机就称为中间人


HTTP 是明文传输数据的,在传输过程中的每一个环节,数据都有可能被中间人窃取或者篡改,我们把这种攻击方式称为中间人攻击


这些环节包括:用户电脑、WiFi 路由器、运营商和目标服务器,在这中间的每个环节中,数据都有可能被窃取或篡改。


20210616195923525.png



在 HTTP 协议栈中引入安全层

通常 HTTP 直接和 TCP 通信,HTTPS 则先和安全层通信,然后安全层再和 TCP 层通信。

20210616201659174.png


安全层有两个主要的职责:

  1. 对发起 HTTP 请求的数据进行加密操作
  2. 对接收到 HTTP 的内容进行解密操作


第一版:使用对称加密


对称加密是指加密和解密都使用的是相同的密钥


使用对称加密实现 HTTPS:


浏览器发送它所支持的加密套件列表和一个随机数 client-random,这里的加密套件是指加密的方法,加密套件列表就是指浏览器能支持多少种加密方法列表。


服务器会从加密套件列表中选取一个加密套件,然后还会生成一个随机数 service-random,并将 service-random 和加密套件列表返回给浏览器。


浏览器和服务器分别返回确认消息。


20210616202142955.png



这样浏览器端和服务器端都有相同的 client-random 和 service-random 了,然后它们再使用相同的方法将 client-random 和 service-random 混合起来生成一个密钥 master secret,有了密钥 master secret 和加密套件之后,双方就可以进行数据的加密传输。


但是传输 client-random 和 service-random 的过程却是明文的,加之随机数合成密钥的算法是公开的,所以协商秘钥的过程容易被黑客窃取。



第二版:使用非对称加密


和对称加密只有一个密钥不同,非对称加密算法有 A、B 两把密钥,如果你用 A 密钥来加密,那么只能使用 B 密钥来解密;反过来,如果你要 B 密钥来加密,那么只能用 A 密钥来解密。


公钥是每个人都能获取到的,而私钥只有服务器才能知道,不对任何人公开。


非对称加密实现 HTTPS:


   浏览器还是发送加密套件列表给服务器。


   服务器会选择一个加密套件,不过和对称加密不同的是,使用非对称加密时服务器上需要有用于浏览器加密的公钥和服务器解密 HTTP 数据的私钥,由于公钥是给浏览器加密使用的,因此服务器会将加密套件和公钥一道发送给浏览器。


   浏览器和服务器返回确认消息。

20210618093247519.png


这种方式存在的两个严重的问题:

  1. 非对称加密的效率太低。
  2. 无法保证服务器发送给浏览器的数据安全。


第三版:对称加密和非对称加密搭配使用


在传输数据阶段依然使用对称加密,但是对称加密的密钥采用非对称加密来传输。


混合加密实现 HTTPS:

   浏览器向服务器发送对称加密套件列表、非对称加密套件列表和随机数 client-random;


   服务器保存随机数 client-random,选择对称加密和非对称加密的套件,然后生成随机数 service-random,向浏览器发送选择的加密套件、service-random 和公钥;


   浏览器保存公钥,并生成随机数 pre-master,然后利用公钥对 pre-master 加密,并向服务器发送加密后的数据;


   服务器拿出自己的私钥,解密出 pre-master 数据,并返回确认消息。


20210618095528248.png


pre-master 是经过公钥加密之后传输的,所以黑客无法获取到 pre-master,就无法生成密钥,也就保证了黑客无法破解传输过程中的数据。



第四版:添加数字证书


通过对称和非对称混合方式,已经完美地实现了数据的加密传输。


但是黑客可以通过 DNS 劫持将 IP 地址替换成了黑客的 IP 地址,黑客就可以在自己的服务器上实现公钥和私钥,所以需要服务器向浏览器提供证明,证明这个服务器是你的,需要使用权威机构颁发的证书,这个权威机构称为 CA(Certificate Authority),颁发的证书就称为数字证书(Digital Certificate)。

数字证书有两个作用:


  1. 通过数字证书向浏览器证明服务器的身份
  2. 数字证书里面包含了服务器公钥



含有数字证书的 HTTPS 的请求流程

  1. 服务器没有直接返回公钥给浏览器,而是返回了数字证书,而公钥正是包含在数字证书中的;
  2. 在浏览器端多了一个证书验证的操作,验证了证书之后,才继续后续流程。


20210618165139168.png


如何申请数字证书


需要准备一套私钥和公钥,私钥留着自己使用;


然后向 CA 机构提交公钥、公司、站点等信息并等待认证,这个认证过程可能是收费的;


CA 通过线上、线下等多种渠道来验证所提供信息的真实性,如公司是否存在、企业是否合法、域名是否归属该企业等;


如信息审核通过,CA 会签发认证的数字证书,包含了公钥、组织信息、CA 的信息、有效时间、证书序列号等,这些信息都是明文的,同时包含一个 CA 生成的签名。



数字签名的过程:

  1. 首先 CA 使用 Hash 函数来计算极客时间提交的明文信息,并得出信息摘要;
  2. 然后 CA 再使用它的私钥对信息摘要进行加密,加密后的密文就是 CA 颁给极客时间的数字签名。



浏览器如何验证数字证书


   首先浏览器读取证书中相关的明文信息,采用 CA 签名时相同的 Hash 函数来计算并得到信息摘要 A;


   然后再利用对应 CA 的公钥解密签名数据,得到信息摘要 B;


   对比信息摘要 A 和信息摘要 B,如果一致,则可以确认证书是合法的;


   同时浏览器还会验证证书相关的域名信息、有效时间等信息。


通常情况下,操作系统中会内置信任的顶级 CA 的证书信息(包含公钥),如果这个 CA 链中没有找到浏览器内置的顶级的 CA,证书也会被判定非法。


申请和使用证书的过程中应注意:


   申请数字证书是不需要提供私钥的,要确保私钥永远只能由服务器掌握;


   数字证书最核心的是 CA 使用它的私钥生成的数字签名;


   内置 CA 对应的证书称为根证书,根证书是最权威的机构,它们自己为自己签名,我们把这称为自签名证书。


freeSSL 申请免费证书



拓展


证书类型


CA是一个机构,它的职责是给一些公司或者个人颁发数字证书,在颁发证书之前,有一个重要的环节,就是审核申请者所提交资料的合法性和合规性。


个人:

   CA只需要审核所域名的所有权就行了,审核域名所有权有很多中方法,在常用的方法是让申请者在域名上放一个文件,然后CA验证该文件是否存在,即可证明该域名是否是申请者的。我们把这类数字证书称为DV,审核这种个人域名信息是最简单的,因此CA收取的费用也是最低的,有些CA甚至免费为个人颁发数字证书。


普通公司:


   CA除了验证域名的所有权之外,还需要验证公司的合法性,这类证书通常称为OV。由于需要验证公司的信息,所有需要额外的资料,而且审核过程也更加复杂,申请OV证书的价格也更高,主要是由于验证公司的合法性是需要人工成本的。


金融机构、银行、电商平台等:


   还需额外的要验证一些经营资质是否合法合规,这类证书称为EV。申请EV的价格非常高,甚至达到好几万一年,因为需要人工验证更多的内容。


数字证书链


CA机构分两种类型:


   中间CA(Intermediates CAs):通常申请者都是向中间CA去申请证书的

   根CA(Root CAs):给中间CA做认证


比如:可以打开csdn的网站,然后点击小锁,再点击证书


20210619122546317.png


可以看到证书信息:2020年由 GeoTrust CN TSA CA G1 颁布


20210619122648436.png



点开颁布者说明就能知道是https://www.digicert.com/CPS/

什么是DigiCert Global Root CA?


   DigiCert Global Root CA 就是 DigiCert 提供的一个根证书。

证书链就是:*.csdn.net—>GeoTrust CN TSA CA G1 2020–>DigiCert Global Root CA。

怎么证明根证书是合法的?


   浏览器验证 csdn 的证书时,会先验证 *.csdn.net 的证书,如果合法在验证中间CA的证书,如果中间CA也是合法的,那么浏览器会继续验证这个中间CA的根证书。如果这个根证书在操作系统里面,那么浏览器就认为这个根证书是合法的,如果验证的根证书不在操作系统里面,那么就是不合法的。


而操作系统里面这些内置的根证书也不是随便内置的,这些根CA都是通过 WebTrust 国际安全审计认证。


什么是 WebTrust 认证?


WebTrust(网络信任)认证是电子认证服务行业中唯一的国际性认证标准,主要对互联网服务商的系统及业务运作的商业惯例和信息隐私,交易完整性和安全性。


WebTrust认证是各大主流的浏览器、微软等大厂商支持的标准,是规范CA机构运营服务的国际标准。在浏览器厂商根证书植入项目中,必要的条件就是要通过WebTrust认证,才能实现浏览器与数字证书的无缝嵌入。


20210619131710292.png


目前通过WebTrust认证的根CA有 Comodo,geotrust,rapidssl,symantec,thawte,digicert等。也就是说,这些根CA机构的根证书都内置在个大操作系统中,只要能从数字证书链往上追溯到这几个根证书,浏览器会认为使用者的证书是合法的。

















目录
相关文章
|
2月前
|
安全 算法 网络安全
HTTPS原理
HTTPS 通过加密、数字证书、握手过程等多种手段,确保了网络通信的安全和可靠。它为用户提供了更高级别的隐私保护和数据安全,是现代互联网中重要的安全保障机制。随着网络安全威胁的不断增加,HTTPS 的应用也越来越广泛,成为保障网络安全的重要基石。
127 70
|
13天前
|
安全 算法 网络协议
【网络原理】——图解HTTPS如何加密(通俗简单易懂)
HTTPS加密过程,明文,密文,密钥,对称加密,非对称加密,公钥和私钥,证书加密
|
16天前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
68 1
|
2月前
|
安全 算法 网络安全
一张图就把HTTPS工作原理讲明白了!
【10月更文挑战第31天】
106 1
一张图就把HTTPS工作原理讲明白了!
|
2月前
|
安全 算法 网络协议
网易面试:说说 HTTPS 原理?HTTPS 如何保证 数据安全?
45岁老架构师尼恩在其读者交流群中分享了关于HTTP与HTTPS的深入解析,特别针对近期面试中常问的HTTPS相关问题进行了详细解答。文章首先回顾了HTTP的工作原理,指出了HTTP明文传输带来的三大风险:窃听、篡改和冒充。随后介绍了HTTPS如何通过结合非对称加密和对称加密来解决这些问题,确保数据传输的安全性。尼恩还详细解释了HTTPS的握手过程,包括如何通过CA数字证书验证服务器身份,防止中间人攻击。最后,尼恩强调了掌握这些核心技术的重要性,并推荐了自己的技术资料,帮助读者更好地准备面试,提高技术水平。
|
3月前
|
前端开发 JavaScript 异构计算
简述浏览器的渲染原理
浏览器渲染原理主要包括以下步骤:1)解析HTML文档生成DOM树;2)解析CSS生成CSSOM树;3)结合DOM与CSSOM生成渲染树;4)布局计算(回流)确定元素大小和位置;5)绘制(Paint)将节点转为图形内容;6)合成(Composite)多层图像。整个过程从文档解析到最终输出完整网页,并通过优化技术提升性能。
|
4月前
|
安全 网络安全 数据安全/隐私保护
https的原理
https的原理
88 2
|
5月前
|
Web App开发
Chrome浏览器导出HTTPS证书
Chrome浏览器导出HTTPS证书
69 0
Chrome浏览器导出HTTPS证书
|
5月前
|
安全 算法 网络协议
【在Linux世界中追寻伟大的One Piece】HTTPS协议原理
【在Linux世界中追寻伟大的One Piece】HTTPS协议原理
57 2
|
6月前
|
缓存 网络协议 算法
(二)Java网络编程之爆肝HTTP、HTTPS、TLS协议及对称与非对称加密原理!
作为一名程序员,尤其是Java程序员,那必须得了解并掌握HTTP/HTTPS相关知识。因为在如今计算机网络通信中,HTTP协议的作用功不可没,无论是日常上网追剧、冲���、亦或是接口开发、调用等,必然存在HTTP的“影子”在内。尤其对于WEB开发者而言,HTTP几乎是每天会打交道的东西。
113 10