【应用层协议】HTTPS的加密流程

文章目录

  • [1. 认识HTTPS](#1. 认识HTTPS)
  • [2. 密文](#2. 密文)
  • [3. HTTPS加密流程](#3. HTTPS加密流程)
    • [3.1 对称加密](#3.1 对称加密)
    • [3.2 非对称加密](#3.2 非对称加密)
    • [3.3 证书](#3.3 证书)

1. 认识HTTPS

HTTPS(超文本传输协议安全)也是一个应用层协议,它是在HTTP协议的基础上引入了一个加密层。

也就是HTTP协议传输文本的方式是明文,而HTTPS协议传输文本是密文,这样文本传输的过程就不会被篡改,保护了数据的完整性和隐私。

下面便是一个数据被篡改的案例,当我们下载一个软件是被第三方劫持,进而下载成第三方的软件:

2. 密文

密文就是明文经过一系列操作生成的,这一过程也叫加密

把密文经过一系列操作变成明文,这一过程叫解密 ,解密过程用到的的数据被称做密钥
举例

相信许多人都看过查理九世,里面经常有一些看不到的文字,但我们使用解密卡就呢个能轻松的看到,这个解密卡就是密钥。

3. HTTPS加密流程

HTTPS协议传输数据,便是加密后密文,加密的方式有很多,但整体可分为对称加密非对称加密

3.1 对称加密

对称加密的意思就是通过同一个密钥可以进行加密和解密。

如上图,我们的请求和响应都是密文,当第三方截获数据后,因为它没有密钥,它也不知道是什么意思。

当然,不同客户端与服务器之间的密钥不能都是同一个,同一个的话第三方很容易就会获得,所以不同客户端的密钥要不一样。

但这样又面临一个问题,服务器要一下维护所有用户的密钥,这也是相当麻烦的。

那么,我们就可以当一个客户端和服务器建立连接时先和服务器协商我们
这次 的密钥是什么。

这样就安全了吗?如果第三方这样呢。

是不是这一次被破解,那么非对称加密就诞生了。

3.2 非对称加密

非对称加密就是有两个密钥,一个客户端持有的公钥,一个服务器持有的私钥,公钥对明文加密,私钥对密文解密,但是也可以反着用,两者是配对的。

公钥通常用于传递密钥的目的,然后在使用密钥传输数据,相比对称加密,运算速度变慢,效率变低,但是更加的安全。

这样如果第三方拦截数据后,第三方并没有私钥,进而也无法获得密钥。

但是这样又会有一个问题,客户端如何获得公钥?万一是第三方伪造的公钥呢?

3.3 证书

在客户端和服务器刚一建立连接的时候, 服务器给客户端返回一个 证书。

这个证书包含了刚才的公钥, 也包含了网站的身份信息。

这个 证书 可以理解成是一个结构化的字符串, 里面包含了以下信息:

  1. 证书发布机构
  2. 证书有效期
  3. 公钥
  4. 证书所有者
  5. 签名 ...

这个证书一般都向第三方机构(正规机构,如搭建一个 HTTPS 网站要在CA机构先申请一个证书)申请,第三方机构审核网站的资质后,就会为服务器颁发证书,证书会被第三方机构使用私钥加密,而公钥会被分发给客服端(不是网络传输,系统内置)。

当客服端与服务器建立连接时,服务器就会把证书发送给客户端,客户端就安全的拿到了服务器的公钥。

  1. 那么黑客是否可以改变这个证书的内容,把服务器公钥换成自己的呢?
    答案是不能的,因为证书中含有一个具有校验和的数字签名,这个数据是第三方机构用自己的私钥生成的,黑客无法修改,如果黑客修改了公钥,客户端解密数字签名,得到一个校验和,然后客户端再对证书中的属性按照相同算法再进行一次校验和,如果两次校验和不同,会发现数据被修改。
  2. 那黑客是否能把证书换成自己的呢?
    也不能,黑客证书域名和客户端的域名肯定不同,证书审核是无法通过的。

使用证书获得公钥过程:

相关推荐
yixvxi1 天前
RFC 8659:DNS CAA资源记录
服务器·https·ssl
北京耐用通信1 天前
耐达讯自动化Profinet转Devicenet网关:精细化工行业的“协议融合利器”
人工智能·物联网·网络协议·自动化·信息与通信
三水不滴1 天前
计算机网络核心网络模型
经验分享·笔记·tcp/ip·计算机网络·http·https
云小逸1 天前
【nmap源码学习】 Nmap 源码深度解析:nmap_main 函数详解与 NSE 脚本引擎原理
网络协议·学习·安全
SunflowerCoder1 天前
基于插件化 + Scriban 模板引擎的高效 HTTP 协议中心设计
http·c#
迎仔1 天前
03-网络协议基础详解:数字世界的交通规则与语言
网络·网络协议
Remember_9931 天前
MySQL 索引详解:从原理到实战优化
java·数据库·mysql·spring·http·adb·面试
猫老板的豆1 天前
WebSocket 工具类使用指南
网络·websocket·网络协议
我真会写代码1 天前
WebSocket:告别轮询,实现Web实时通信 WebRTC:无需插件,实现浏览器端实时音视频通信
网络·websocket·网络协议·webrtc·实时音视频
404Clukay1 天前
Windows Server 配置 Let‘s Encrypt 免费 HTTPS 证书(WACS + Nginx 自动化方案)
windows·nginx·https