深入理解https,对称加密和非对称加密,怒斩获了30家互联网公司offer

使用非对称加密在数据加密解密过程需要消耗一定时间,降低了数据传输效率;

对称加密+非对称加密(HTTPS采用这种方式)


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的私钥)再次加密

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

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

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

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

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

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

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

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

最后

编程基础的初级开发者,计算机科学专业的学生,以及平时没怎么利用过数据结构与算法的开发人员希望复习这些概念为下次技术面试做准备。或者想学习一些计算机科学的基本概念,以优化代码,提高编程技能。这份笔记都是可以作为参考的。

CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

名不虚传!字节技术官甩出的"保姆级"数据结构与算法笔记太香了

编程基础的初级开发者,计算机科学专业的学生,以及平时没怎么利用过数据结构与算法的开发人员希望复习这些概念为下次技术面试做准备。或者想学习一些计算机科学的基本概念,以优化代码,提高编程技能。这份笔记都是可以作为参考的。

CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

名不虚传!字节技术官甩出的"保姆级"数据结构与算法笔记太香了

  • 24
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值