带你读《2022技术人的百宝黑皮书》——HTTPS的原理浅析与本地开发实践(4)

简介: 带你读《2022技术人的百宝黑皮书》——HTTPS的原理浅析与本地开发实践(4)

带你读《2022技术人的百宝黑皮书》——HTTPS的原理浅析与本地开发实践(3)https://developer.aliyun.com/article/1340628?groupCode=taobaotech


数字签名(公钥数字签名)

 

image.png定义

只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。数字签名算法一般使用 RSA(非对称加密) + SHA256(安全摘要算法)。

 

image.png特点

解决了文件在发送过程中无法被篡改的问题,但是无法避免被中间人伪造。

 

image.pngRSA数字签名验证流程

 

 

 

RSA加密过程通式

image.png,公钥 = (e,n)

 

RSA解密过程通式

image.png

image.png   ,私钥 = (d,n) 秘钥对为 (e,d,n);

小明用自己的秘钥对生成签名过程:待签名的数据 => 哈希运算(SHA-256) => 文件哈希值(摘要) => 签名运算(RSA,私钥加密) => 数字签名;

小红拥有小明对外开发的公钥(PS:小红可能不知道,小明的公钥已经被替换成中间人的公钥),在收到小明的信息后,做签名验证;

公钥解密后的哈希值与待签名的文件哈希值对比,相同,则签名成立,否则签名不成立。

 

image.png数字签名的问题

小明传输的数字签名可以被另外一个具有秘钥对的中间人替换传输的文件。相当于中间人模仿了小明的“签名”。

image.png

 

 

 

这个问题出现的核心原因在于:小明的公钥被中间人的公钥替换了,小红自己无法判断当前的公钥是否是小明的! 所以,我们需要证明的是接收方拿到的公钥是发送方提供的,而不是中间人提供的。

 

基于当前的案例,我们如何证明小红接收到的公钥就是小明发送的,而非被他人篡改的呢?这就需要有一种公开的权威的认证机制 ——数字证书机制。

 

image.png数字证书

数字证书是利用非对称秘钥体系中,秘钥对的公钥和私钥是一一对应的特性,通过权威的证书签发机构(CA)签发证书预制秘钥,并将根证书预装在操作系统中,从而防止公钥被篡改。所以,数字证书可以用来证明公钥是属于某个认证用户的。

 

证书签发机构用自己的私钥对需要认证的人(或组织机构)的公钥施加数字签名并生成证书,即证书的本质就是对公钥施加数字签名。

 

带你读《2022技术人的百宝黑皮书》——HTTPS的原理浅析与本地开发实践(5)https://developer.aliyun.com/article/1340625?groupCode=taobaotech

相关文章
|
12天前
|
安全 网络协议 网络安全
HTTPS:保护你的网站免受中间人攻击的关键技术
【6月更文挑战第13天】HTTPS是抵御中间人攻击的关键技术,通过数据加密、身份验证和完整性保护保障网络安全。它基于SSL/TLS协议加密通信,防止数据被窃取或篡改,并使用数字证书确认服务器身份,避免伪造。要确保HTTPS安全,需使用有效数字证书,启用强制HTTPS,定期更新维护并限制访问范围。
|
21天前
|
网络协议 前端开发 Java
网络原理 - HTTP / HTTPS(4)——构造http请求
网络原理 - HTTP / HTTPS(4)——构造http请求
16 1
|
21天前
|
存储 JSON 安全
网络原理 - HTTP / HTTPS(2)——http请求
网络原理 - HTTP / HTTPS(2)——http请求
20 1
|
6天前
|
监控 小程序 前端开发
基础入门-抓包技术&HTTPS协议&WEB&封包监听&网卡模式&APP&小程序
基础入门-抓包技术&HTTPS协议&WEB&封包监听&网卡模式&APP&小程序
|
1月前
|
安全 网络协议 应用服务中间件
一文读懂HTTPS⭐揭秘加密传输背后的原理与Nginx配置攻略
一文读懂HTTPS⭐揭秘加密传输背后的原理与Nginx配置攻略
|
21天前
|
JSON 缓存 前端开发
网络原理 - HTTP / HTTPS(3)——http响应
网络原理 - HTTP / HTTPS(3)——http响应
12 0
|
21天前
|
前端开发 网络协议 JavaScript
网络原理 - HTTP / HTTPS(1)——http请求
网络原理 - HTTP / HTTPS(1)——http请求
11 0
|
1月前
|
算法 安全 网络协议
https原理--RSA密钥协商算法
https原理--RSA密钥协商算法
27 0
|
1月前
|
前端开发
webpack如何设置devServer启动项目为https协议
webpack如何设置devServer启动项目为https协议
370 0
|
20天前
|
安全 前端开发 中间件
中间件中HTTP/HTTPS 协议
【6月更文挑战第3天】
16 3