当前位置: 首页 > news >正文

简单讲解HTTPS如何保证安全性和可靠性

我们知道https比http多了SSL/TLS协议,使得原先的明文传输得到加密,那么来分析一下原理。

首先要了解一些基础的概念:

对称加密和非对称加密:

对称加密就是双方使用相同的加密和解密方式去处理数据。会比明文传输要安全一些,当然密钥一旦泄露,就不再安全了。

非对称加密双方都会使用两个密钥:公钥和私钥。简单来说,公钥就是可以公开的密钥,私钥就是个人私有的密钥。
举个例子,A和B要使用非对称加密,A把自己的公钥给B,于是B用A的公钥加密数据之后发送回A,A需要用自己的私钥解密。

而TLS握手协议使用的是混合加密:

TLS握手

步骤如下

  1. 客户端发起握手,向服务端发送一个随机数1
  2. 服务器收到后,向客户端发送一个随机数2
  3. 服务器向客户端发送一个数字证书和公钥(数字证书容后解释)
  4. 客户端用收到的公钥加密后发送预主密钥,服务端用自己的私钥解密。(非对称加密)
  5. 现在双方手里都有随机数1、随机数2、预主密钥,三者联合都能算出会话密钥
  6. 此后的沟通都采用会话密钥进行加密沟通,及对称加密。

通过这种方式,先通过非对称加密在保证只有会话双方知道会话密钥的情况下,在进行对称加密可以保证安全

我们注意到有一个东西叫做数字证书出现了,它是做什么的呢?

它是服务器用来向客户端保证“我是我”的。

数字证书

因为上述过程会出现一个问题,加入客户端发送请求没能到达正确的服务端,而是被“黑客”拦截,“黑客”完全可以代替服务端完成全套流程,那就谈不上安全可言了。所以我们需要服务端证明它是正确的服务端。

如何证明呢?我们知道,自己是无法证明自己不是神经病的(bushi),只有大夫可以证明。

那么我们在此引入一个第三方CA,由它来派发证书,就可以证明了。同样的,如何这个证书的真实性呢?可以采用非对称加密。

CA使用自己的私钥在证书签名,客户端用CA公钥验证证书真实性。

数字签名

现在我们已经建立了一个安全的会话,但是仍然存在一些问题:我们可以保证会话过程中信息不被窃取,但是如何保证信息不会丢失呢?或者,仍然有可能发生的篡改如何避免?也就是,如何保证信息的完整性?

https的做法是使用摘要算法生成数字签名,即:
发送方用摘要算法对原始数据计算哈希值,该哈希值唯一,且无法逆向推导出内容。将哈希值附加到数据中一起传输。
接收方用相同密钥计算哈希值,比较哈希值,判断内容是否被篡改。

http://www.dtcms.com/a/291608.html

相关文章:

  • 网安学习NO.15
  • 树链剖分-苹果树
  • TPS61194PWPRQ1适用于汽车照明低 EMI、高性能 4 通道 LED 驱动器TPS61194
  • Day07_网络编程20250721_大项目
  • sqli-labs靶场通关笔记:第46-53关 order by注入
  • 一文详解REST风格
  • 青少年科学世界名刊分析评介:《生物技术世界》
  • 机器学习中的数据预处理:从入门到实践
  • Spring 对数组和集合类的自动注入
  • 234、回文链表
  • 使用AI把普通的条形柱状图,丰富成“好看高大上”的条形柱状图
  • 解决win10下Vmware虚拟机在笔记本睡眠唤醒后ssh连接不上的问题
  • PyQt5—QInputDialog 学习笔记
  • 印度给巴铁断水,中国悄然开建雅鲁藏布江水电站,纯属巧合!
  • Python 标准库之 os 模块全面讲解
  • 大模型为什么出现幻觉?
  • 在Anolis8.6上源码编译安装部署OpenVAS(GVM)未完待续
  • 华为云CCE-PV使用OBS存储类之坑
  • Android NDK ffmpeg 音视频开发实战
  • 语义化版本规范(SemVer)
  • 【计算机组成原理】符号位OF、ZF、CF、SF详解
  • c语言 进阶 动态内存管理
  • stream event
  • Playwright-MCP浏览器会话复用全解析
  • swiper js无缝滚动---解决播放总是有间隔、动画一闪一跳的问题
  • 3.组合式API父子通信
  • 【免费版】开启 Youtube 双语字幕
  • 神经网络——非线性激活
  • Java学习-----AIO模型
  • STM32小实验四--按键控制LED灯