网络传输的安全性(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效率是如何提升的?

相关推荐
深念Y36 分钟前
从WebSocket到WebRTC,豆包级实时语音交互背后的技术演进
websocket·网络协议·实时互动·webrtc·语音识别·实时音视频
Rsun0455138 分钟前
ConfigurableListableBeanFactory跟ApplicationContext作用
网络·网络协议·rpc
MOYIXIAOWEIWEI2 小时前
VMware-centos7更改静态ip
网络·网络协议·tcp/ip
小陈工2 小时前
Python Web开发入门(十二):使用Flask-RESTful构建API——让后端开发更优雅
开发语言·前端·python·安全·oracle·flask·restful
Echo-J3 小时前
WinDbg 双机调试(调试机为Windows11系统,被调试机为Windows7系统)
安全·网络安全·云计算·系统安全
南湖北漠3 小时前
记录生活中的一件小事(佚名整理)
网络·人工智能·计算机网络·其他·安全·生活
Strange_Head3 小时前
《Linux系统网络协议》从 TCP 到 HTTP:理解 Web 通信的第一步——网络篇
linux·网络·网络协议
云栖梦泽4 小时前
【AI】AI安全工具:AI模型安全检测工具的实战使用
人工智能·安全·机器学习
杨云龙UP4 小时前
Oracle 19c:RMAN Duplicate异机复制数据库实操_20260402
linux·运维·服务器·数据库·网络协议·tcp/ip·oracle
IeE1QQ3GT4 小时前
FastAPI + SQLite:从基础CRUD到安全并发的实战指南
安全·sqlite·fastapi