【Linux后端服务器开发】HTTPS协议

目录

一、加密算法

二、中间人攻击

三、CA认证


一、加密算法

**HTTPS协议是什么?**HTTPS协议也是一个应用层协议,是在HTTP协议的基础上引入了一个加密层。

HTTP协议内容是按照文本的方式明文传输的,这就导致在传输过程中出现一些被篡改的情况。

**什么是加密?**加密就是把明文(需要传输的内容)进行一系列变换,生成密文。解密就是加密的逆过程,将密文还原成明文。

在这个加密和解密的过程中,往往需要一个或多个中间的数据,辅助进行这个过程,这样的数据称为密钥。

对称加密

  • 采用单密钥的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称作对称加密,也称单密钥加密
  • 特点:算法公开、计算量小、安全性低、加密速度快

非对称加密

  • 需要两个密钥来进行加密和解密,这两个密钥是公钥(public key)和私钥(private key)
  • 通过公钥对明文加密,变成密文;通过私钥对密文解密,得到明文,公钥和私钥可以反着用
  • 特点:算法复杂、安全性较高、加密速度较低

对称加密&&非对称加密

由于对称加密存在密钥易泄漏问题,非对称加密存在加密效率低的问题,我们可以使用非对称加密完成服务器公钥的传递,通过服务器的公钥形成密钥再进行对称加密传输数据。

表面上看对称加密&&非对称加密的组合使用解决了安全性和效率性的问题,但是依然存在被中间人攻击的风险。

二、中间人攻击

中间人攻击 (Man-in-the-MiddleAttack),简称MITM攻击

  1. 服务器有非对称密钥的公钥S、私钥S'
  2. 中间人有非对称密钥的公钥M、私钥M'
  3. 客户端向服务器发送公钥请求,服务器明文传送公钥给客户端
  4. 中间人劫持数据报文,提取S并保存好,然后将被劫持报文中的公钥S替换成自己的公钥M,并将伪造报文发送客户端
  5. 客户端收到报文,提取公钥M(客户端不知道服务器的公钥S已经被换过了),自己形成对称密钥C,用公钥M加密得到密文X,形成报文发送给服务器
  6. 中间人再次劫持后得到密文X,直接用自己的私钥M'进行解密,得到密钥C,再用自己之前保存的服务器公钥S加密C,得到密文Y,再将报文推送给服务器
  7. 服务器拿到密文Y,用私钥S'解密,得到通信密钥C
  8. 双方开始采用对称密钥C进行对称加密通信,但是一切都在中间人的掌握中,劫持数据、进行切图或者篡改数据......

三、CA认证

服务端在使用HTTPS之前,需要向CA机构申领一份数字证书,数字证书里含有证书申请者信息、公钥信息等。服务器把证书给浏览器,浏览器从证书里获取公钥就行了,证书就如身份证,证明服务端公钥的权威性

CA证书可以理解为一个结构化的字符串,里面包含的信息是:证书发布机构、证书有效期、公钥、证书所有者、签名......

当服务端申请CA证书的时候,CA机构会对服务端进行审核,并专门为该网站形成数字签名,过程如下:

  1. CA机构拥有非对称加密的公钥A和私钥A'
  2. CA机构对服务端申请的证书明文数据进行hash,形成数据摘要
  3. CA机构最后对数据摘要用私钥A'加密,得到数字签名S

服务端申请的证书明文和数字签名S共同组成了数字证书,这样的一份数字证书就可以发送给服务端了

数据摘要 &&数据指纹

  • 数字指纹(数据摘要),其基本原理是利用单向散列Hash函数对信息进行运算,生成一串固定长度的数字摘要。数字指纹并不是一种加密机制,但可以用来判断数据有没有被篡改。
  • 特点:和加密算法的区别是摘要严格意义上不是加密,因为没有解密,只不过从摘要很难反推原信息,通常用来进行数据对比

数字签名

摘要经过加密,就得到数字签名,签名的形成是基于非对称加密算法的

数字签名的本质是为了防篡改,保证服务器公钥的合法性

非对称加密&&对称加密&&证书认证

在客户端和服务器刚建立连接的时候,服务器给客户端返回一个证书,证书包含了之前服务器的公钥,也包含了网站的身份信息

客户端获取到这个证书的时候,会对证书进行校验:

  • 判定证书的有效期是否过期
  • 判定证书的发布机构是否受信任(操作系统中已内置受信任的证书发布机构)
  • 验证证书是否被篡改(从系统中拿到该证书发布机构的公钥,对签名解密,得到一个hash值,称为数字摘要,设为hash1,然后计算整个证书明文信息的hash值,设为hash2,对比hash1和hash2是否相等,如果相等则证明证书是没有被篡改过的)

HTTPS工作过程中涉及到的密钥有三组:

  • 第一组(非对称加密):用于校验证书是否合法
  • 第二组(非对称加密):用于协商生成对称加密的密钥
  • 第三组(对称加密):客户端和服务器的数据通信
相关推荐
利刃大大26 分钟前
【高并发服务器:HTTP应用】十四、Util工具类的设计与实现
服务器·http·高并发·项目·cpp
Cyyyy_g27 分钟前
【2025 SWPU-NSSCTF 秋季训练赛】WebFTP
安全·网络安全
zhanglianzhao29 分钟前
基于云服务器自建Rustdesk远程桌面——以京东云为例
运维·服务器·京东云
可乐大数据41 分钟前
Docker安装(基于云服务器ECS实例 CentOS 7.9系统)
服务器·docker·centos
菲兹园长1 小时前
微服务组件(E、L、N、O、G)
linux·服务器·gateway
LBuffer1 小时前
破解入门学习笔记题二十五
服务器·前端·microsoft
平凡的学者2 小时前
RustyKey
网络安全·hackthebox
richxu202510012 小时前
Linux本地部署deepseek大模型之 6. Windows本地连接远程云服务器中的MySQL常见错误的解决办法
linux·服务器·windows
Ryan ZX2 小时前
Ubuntu 升级OpenSSH10.2p1与OpenSSL3.5.4版本避坑实践
linux·运维·服务器·ubuntu
unable code2 小时前
攻防世界-Misc-pdf
网络安全·ctf·misc·1024程序员节