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

相关推荐
JhonKI7 分钟前
从零实现Json-Rpc框架】- 项目实现 - 服务端registry&discovery实现
网络协议·rpc·json
蜗牛沐雨19 分钟前
MCP协议的Streamable HTTP:革新数据传输的未来
网络·网络协议·http
金丝猴也是猿1 小时前
如何在Flutter上实现高性能的动态模板渲染
websocket·网络协议·tcp/ip·http·网络安全·https·udp
rockmelodies1 小时前
OpenSCAP 是一个基于开源的安全合规性自动化框架
安全·开源·自动化
swift开发pk OC开发1 小时前
Flutter性能优化细节
websocket·网络协议·tcp/ip·http·网络安全·https·udp
网络抓包与爬虫1 小时前
Flutter 环境搭建、常用指令、开发细节
websocket·网络协议·tcp/ip·http·网络安全·https·udp
赴前尘1 小时前
Go+Gin实现安全多文件上传:带MD5校验的完整解决方案
安全·golang·gin
IT成长日记1 小时前
Elasticsearch安全加固指南:启用登录认证与SSL加密
安全·elasticsearch·ssl
半路_出家ren1 小时前
网络安全设备介绍:防火墙、堡垒机、入侵检测、入侵防御
安全·网络安全·负载均衡·堡垒机·防火墙·网络安全设备·上网行为管理
louisgeek1 小时前
MQTT 消息队列遥测传输
网络协议