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

相关推荐
云卓科技3 小时前
无人机之数据提取篇
科技·安全·机器人·无人机·制造
山兔13 小时前
工控安全防护机制与技术
安全
我命由我123454 小时前
SSL 协议(HTTPS 协议的关键)
网络·经验分享·笔记·学习·https·ssl·学习方法
HEX9CF5 小时前
【CTF Web】Pikachu xss之href输出 Writeup(GET请求+反射型XSS+javascript:伪协议绕过)
开发语言·前端·javascript·安全·网络安全·ecmascript·xss
小小工匠5 小时前
加密与安全_HOTP一次性密码生成算法
算法·安全·htop·一次性密码
Tandy12356_5 小时前
js逆向——webpack实战案例(一)
前端·javascript·安全·webpack
什么鬼昵称7 小时前
Pikachu-xxe-xxe漏洞
网络·安全·xxe
A 八方9 小时前
【漏洞复现】泛微OA E-Office do_excel.php 任意文件写入漏洞
开发语言·安全·php
#欲速则不达#9 小时前
高级I/O
c++·网络协议