网络传输的安全性(HTTPS)

互联网应用之间是通过网络传输数据的,那么,网络传输真的安全吗?

  1. 作为发送方,我发送的消息内容会不会被中间人看到?(数据窃听
  2. 作为接收方,我收到的消息内容会不会是假的?(数据篡改)
  3. 对方的身份是不是真实的?(身份冒充)

本文就从网络传输的安全性出发,解密HTTPS原理。

1. 数据窃听

如果使用明文传输,数据就可能被中间人窃听。所以要加密传输, 发送方把数据放在箱子里面锁起来再发送出去,接收方用对应的钥匙解锁。其他人没有钥匙,自然就无法知道箱子里面的数据是什么。这就达到了防止数据被窃听的目的。

1.1. 对称加密

加解密使用同一个密钥,所以叫对称加密。常用的算法有AES。

对称加密最大的问题就是秘钥交换秘钥管理。因为加解密使用同一个秘钥,所以当你把加密秘钥告诉别人时,就已经泄漏了解密秘钥。另外,如果有多个发送方,接收方就需要维护多个秘钥,不方便管理。

1.2. 非对称加密

加解密使用不同的密钥,接收方保管解密密钥(私钥),并把加密密钥(公钥)提供给发送方,从而解决秘钥交换的问题,这就是非对称加密。常见的算法有RSA。

首先,由接收方创建密钥对并保管私钥,保证只有接收方能够解密。然后,把公钥告诉发送方(可以有多个发送方吗?)。最终,发送方用公钥加密的数据,只有接收方的私钥能够解密。

一般不会直接用非对称加密会话,因为其算法复杂计算耗时长 。更常见的是用非对称加密完成秘钥交换,再用对称加密会话。在正式会话之前,接收方创建一个随机秘钥。然后,通过非对称加密发给发送方。最后,用这个随机秘钥进行对称加密会话。从而达到了防止数据被窃听的目的,又能提高加解密的处理效率。

1.3. 小结

为了防止数据被窃听,需要对数据进行加密传输。对称加密使用同一个秘钥,简单高效,但存在秘钥交换和秘钥管理的问题。因此,非对称加密使用不同的密钥: 接收方保管解密密钥(私钥),并把加密密钥提供给发送方(公钥)。缺点是算法复杂计算耗时长。综上,一般使用非对称加密完成秘钥交换,再用对称加密会话。从而达到了防止数据被窃听的目的,又能提高加解密的处理效率。

2. 数据篡改

平时我们收到快递时,核对防伪码 可以防止东西被调包。在网络传输中,也有一个类似防伪码的机制,防止数据被篡改,它就是摘要

2.1.摘要

摘要是对原始数据进行压缩生成的唯一标识,不同数据生成的摘要是不同的。如果原始数据生成的摘要跟报文中的摘要不匹配,则说明数据已被篡改。常用的算法有MD5和SHA-1。

如果中间人修改了原始数据,再生成新的摘要,也是能验证通过的。那么,怎么验证报文中的摘要就是发送方生成的呢?

2.2.数字签名

前面讲到了非对称加密,用公钥加密只有私钥能解密,反过来也是成立的,即能用公钥解密的数据一定是用私钥加密的。私钥只有一个人知道,可以作为唯一身份标识 。首先,发送方生成密钥对,自己保管私钥,并把公钥提供给接收方。然后,发送方用私钥加密摘要,接收方用公钥解密得到摘要,进行摘要验证。这样就能验证数据完整性身份验证 ,达到防止数据篡改的目的,这就是数字签名

3. 身份冒充

在建立HTTPS安全链接时,服务器会返回一个公钥给浏览器,用于非对称加密完成密钥交换。那么,浏览器怎么核实公钥的有效性呢?

我们都知道乘坐高铁时,工作人员会要求乘客出示身份证以便核实身份。身份证是由具有权威性的公安机关颁发的,所以能够有效证明公民身份。

3.1. 数字证书

在网络通信中,也有类似身份证的机制来核实公钥的有效性,这就是数字证书

首先,网站要找CA机构申请数字证书: CA机构用私钥对服务器的公钥做加密,生成数字证书。其次,在开始建立HTTPS安全链接时,服务器返回数字证书。最后,浏览器用CA机构的公钥对数字证书做解密,得到服务器的公钥。因为只有CA机构知道私钥,所以能够解密成功就说明证书内容是合法的,即服务器公钥是有效的。

最后一步可能同学会有疑问: 浏览器是怎么知道CA机构的私钥的?因为全球权威的CA机构并不多,所以他们的私钥是直接内嵌在浏览器内核的。

4. HTTPS

5. 总结

互联网应用之间是通过网络传输数据的,网络传输的安全性很重要。首先,使用非对称加密完成秘钥交换,再用对称加密会话,防止数据窃听; 其次,用数字签名验证数据完整性和身份验证,防止数据篡改; 最后,通过数字证书核实网站身份,防止身份冒充。综上所述,这三个核心技术保障了HTTPS通信的安全性。

参考资料

什么是 HTTPS 的证书信任链?自己给自己发行不行?

一直没明白的 HTTPS,今天懂了!

了解 HTTP 看这一篇就够

(建议收藏)前端面试必问的十六条HTTP网络知识体系

爱奇艺海外版HTTPS效率是如何提升的?

相关推荐
小Ti客栈20 小时前
安全之加密算法
安全
wadesir1 天前
掌握Rust并发数据结构(从零开始构建线程安全的多线程应用)
数据结构·安全·rust
携欢1 天前
POrtSwigger靶场之Exploiting XXE using external entities to retrieve files通关秘籍
网络·安全·github
菩提小狗1 天前
小迪安全笔记_第4天|扩展&整理|30+种加密编码进制全解析:特点、用处与实战识别指南|小迪安全笔记|网络安全|
笔记·安全·web安全
94620164zwb51 天前
数据备份模块 Cordova 与 OpenHarmony 混合开发实战
安全
晚枫歌F1 天前
TCP协议详解
网络·网络协议·tcp/ip
秋4271 天前
防火墙基本介绍与使用
linux·网络协议·安全·网络安全·架构·系统安全
sweet丶1 天前
扩展了解DNS放大攻击:原理、影响与防御
网络协议·安全
acrelgxy1 天前
看不见≠不存在,更不等于安全!故障电弧探测器,让隐形危险现出原形。
安全·电力监控系统·智能电力仪表
老赵聊算法、大模型备案1 天前
新规解读:2025 年修正版《中华人民共和国网络安全法》核心变化解读
安全·web安全