深入理解https,对称加密和非对称加密,web前端开发教程

本文详细解释了HTTPS如何结合对称和非对称加密,使用CA认证、数字签名确保通信安全,以及TLS1.2握手流程。对比了HTTP与HTTPS的区别,强调HTTPS的安全优势和在SEO中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


HTTPS将对称加密与非对称加密结合起来,充分利用两者各自的优势。在交换密钥环节使用非对称加密方式,之后的建立通信交换报文阶段则使用对称加密方式。

具体做法是:发送密文的一方使用公钥进行加密处理“密钥”,对方收到被加密的信息后,再使用自己的私有密钥进行解密。这样可以确保交换的密钥是安全的前提下,之后使用对称加密方式进行通信交换报文。所以,HTTPS采用对称加密和非对称加密两者并用的混合加密机制。

在这里插入图片描述

CA认证和第三方认证有什么区别


**第三方认证是指与交易双方没有切实的利益关系并被国家认可授权的有资历审核认证的单位,**包括很多如,CA认证、CE认证、QA/QC认证等等。拿CE认证来说,产品要想在欧盟市场上自由流通,就必须经国CE认证,加贴“ CE ”标志,以表明产品符合欧盟《技术协调与标准化新方法》指令的基本要求,这是欧盟法律对产品提出的一种强制性要求。

**CA认证是CA中心进行的认证。**CA(Certificate Authority),称为电子商务认证中心,是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。CA认证是第三方认证的一种,应用于电子商务方面。

二、数字签名 + 第三方认证

=================================================================================

数据无法被解密,但可能被篡改,解决报文可能遭篡改问题 —— 比对数字签名


网络传输过程中需要经过很多中间节点,虽然数据无法被解密,但可能被篡改,那如何校验数据的完整性呢?那就是校验数字签名。

先普及摘要的含义:对需要传输的文本,做一个HASH计算(SHA1,SHA2)

数字签名如何生成


一段文本 ----hash函数----》 消息摘要 ----私钥加密----》 数字签名

将一段文本先用Hash函数生成消息摘要,然后用发送者的私钥加密生成数字签名,与原文一起传送给接收者。接下来就是接收者校验数字签名的流程了。

其实此处的发送者就是Sever,接受者是Client。

校验(比对)数字签名流程


收到原文和数字签名之后,需要比对校验。

步骤:

  1. 数字签名 ----发送者的公钥解密----》 消息摘要1

  2. 原文 ----hash函数----》 消息摘要2

  3. 消息摘要1 与 消息摘要2 比对

如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,

否则说明信息被修改过,因此数字签名能够验证信息的完整性。

接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与上一步得到的摘要信息对比。

举个例子:假设消息传递在Kobe,James两人之间发生。James将消息连同数字签名一起发送给Kobe,Kobe接收到消息后,通过校验数字签名,就可以验证接收到的消息就是James发送的。当然,这个过程的前提是Kobe知道James的公钥。问题来了,和消息本身一样,公钥不能在不安全的网络中直接发送给Kobe,或者说拿到的公钥如何证明是James的?

此时就需要引入了证书颁发机构(Certificate Authority,简称CA),CA数量并不多,Kobe客户端内置了所有受信任CA的证书。CA对James的公钥(和其他信息)数字签名后生成证书。

为什么是发送者的公钥?请求公钥的过程是数字签名的过程还是校验数字签名的过程?

下面的【数字证书认证机构的业务流程】能给与答案,请继续看。

解决通信方身份可能被伪装的问题 —— 数字证书(第三方认证)

在这里插入图片描述

客户端无法识别传回公钥是中间人的,还是服务器的,也就是客户端可能拿到的公钥是假的,这是问题的根本,我们可以通过某种规范可以让客户端和服务器都遵循某种约定,那就是通过「第三方认证的方式」

数字证书认证机构处于客户端与服务器双方都可信赖的第三方机构的立场上。

在这里插入图片描述

数字证书认证机构的业务流程


1.服务器的运营人员向第三方机构CA提交公钥、组织信息、个人信息(域名)等信息并申请认证;

2.CA通过线上、线下等多种手段验证申请者提供信息的真实性,如组织是否存在、企业是否合法,是否拥有域名的所有权等;

3.如信息审核通过,CA会向申请者签发认证文件-证书。证书包含以下信息:申请者公钥、申请者的组织信息和个人信息、签发机构 CA的信息、有效时间、证书序列号等信息的明文,同时包含一个签名。其中签名的产生算法:首先,使用散列函数计算公开的明文信息的信息摘要,然后,采用 CA的私钥对信息摘要进行加密,密文即签名; 【数字签名生成的过程】

4.客户端 Client 向服务器 Server 发出请求时,Server 返回证书文件;

5.客户端 Client 读取证书中的相关的明文信息,采用相同的散列函数计算得到信息摘要,然后,利用对应 CA的公钥解密签名数据,对比证书的信息摘要,如果一致,则可以确认证书的合法性,即服务器的公开密钥是值得信赖的。【校验数字签名的过程】

6.客户端还会验证证书相关的域名信息、有效时间等信息; 客户端会内置信任CA的证书信息(包含公钥),如果CA不被信任,则找不到对应 CA的证书,证书也会被判定非法。

如果仅仅是第三方认证,没有数字签名(只是对网站信息进行第三方机构私钥加密)


第三方认证机构是一个公开的平台,中间人可以去获取。

数字签名:将网站的信息,通过特定的算法加密,比如MD5,加密之后,再通过服务器的私钥进行加密,形成「加密后的数字签名」。

可能会发生以下情况

在这里插入图片描述

从上面我们知道,因为没有比对过程,所以中间人也向第三方认证机构进行申请,然后拦截后把所有的信息都替换成自己的,客户端仍然可以解密,并且无法判断这是服务器的还是中间人的,最后造成数据泄露

数字签名的作用


  • 能确定消息确实是由发送方签名并发出来的,因为别人假冒不了发送方的签名。

  • 数字签名能确定消息的完整性,证明数据是否未被篡改过。

Client是如何去对比两者数字签名的呢?


浏览器会去安装一些比较权威的第三方认证机构的公钥,比如VeriSign、Symantec以及GlobalSign等等。

验证数字签名的时候,会直接从本地拿到相应的第三方的公钥,对私钥加密后的数字签名进行解密得到真正的签名。

然后客户端利用签名生成规则进行签名生成,看两个签名是否匹配,如果匹配认证通过,不匹配则获取证书失败。

小结


CA是颁发证书机构(Certificate Authority)的简称

客户端会内置信任CA的证书信息(包含公钥),服务端返回的证书中有申请者公钥。

证书的合法性取决于对比信息摘要

CA是否信任依赖于客户端内置信任的CA

公钥是从服务器请求来的

数字签名的生成:网站信息通过特定的算法加密,比如MD5, 加密之后,用第三方机构的私钥(Server的私钥)再次加密

数字证书包含两个特别重要的信息:网站公钥、数字签名

通信方身份可能被伪装 —— 第三方证书

数据无法被解密,但可能被篡改,解决报文可能遭篡改问题 —— 校验数字签名

如果仅仅是第三方认证,没有数字签名(只是对网站信息进行第三方机构私钥加密) ,造成数据泄露,所以HTTPS通过【证书 + 数字签名】来保证安全

三、HTTPS工作流程(TLS 1.2 握手过程)

============================================================================================

在这里插入图片描述

  1. Client发起一个HTTPS请求,连接443端口。这个过程可以理解成是【请求公钥的过程】。

  2. Server端收到请求后,会把申请好的数字证书(也可以认为是公钥证书)返回给Client。

  3. 浏览器安装后会自动带一些权威第三方机构公钥,使用匹配的公钥对数字签名进行解密。根据签名生成的规则对网站信息进行本地签名生成,然后两者比对【(解密后的签名和对网站信息用hash函数生成的签名比对,其实这也是数字签名校验的过程,上面写的数字签名校验实例没有经过CA)】。通过比对两者签名,匹配则说明认证通过【(也可以说是证书合法,并且客户端内置的CA是信任的)】,不匹配则获取证书失败。

  4. 在安全拿到服务器公钥后,客户端Client使用伪随机数生成器随机生成一个对称密钥,使用【服务器公钥】(证书的公钥)加密这个【对称密钥】,发送给Server(服务器)。

  5. 服务器Server通过自己的私钥,对信息解密,至此得到了【对称密钥】,此时两者都拥有了相同的【对称密钥】,接下来,就可以通过该对称密钥对传输的信息加密/解密啦。

  6. Server使用对称密钥加密“明文内容A”,发送给Client。

  7. Client使用对称密钥解密响应的密文,得到“明文内容A”。

  8. Client再次发起HTTPS的请求,使用对称密钥加密请求的“明文内容B”,然后Server使用对称密钥解密密文,得到“明文内容B”。

请求到的公钥的作用:


  • 解密数字签名(匹配的公钥是服务器拿到的跟浏览器自带的第三方机构公钥匹配成功的公钥)

  • 加密Client使用伪随机数随机生成的一对称秘钥(这步骤开始对称加密,把对称秘钥发送给Server,这个步骤经过非对称加密之后变成安全的了)

HTTPS工作中啥时候是非对称加密,啥时候是对称加密?


Server安全拿到对称秘钥之后,也就是Client和Server都拥有了相同的【对称秘钥】之后,开始对称加密;认之前是非对称加密。换句话说,在交换密钥环节使用非对称加密方式,之后的建立通信交换报文阶段则使用对称加密方式。

四、HTTP 与 HTTPS 的区别

=====================================================================================

HTTP 是明文传输协议,HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。

HTTPS比HTTP更加安全,对搜索引擎更友好,利于SEO,谷歌、百度优先索引HTTPS网页;

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

前端CSS面试题文档,JavaScript面试题文档,Vue面试题文档,大厂面试题文档,需要的读者可以戳这里免费领取!

分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

前端CSS面试题文档,JavaScript面试题文档,Vue面试题文档,大厂面试题文档,需要的读者可以戳这里免费领取!

[外链图片转存中…(img-duXEC8lm-1712376057023)]

[外链图片转存中…(img-eSW2DJeD-1712376057023)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值