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

HTTPS如何保证数据传输过程中的安全性?

就是在三次握手的基础上加了一个ssl/tls安全检验

这是个对称+非对称加密结合的混合加密算法

首先考虑一个最简单的加密算法 对称加密

即客户端和服务端都用同一个秘钥对数据进行加密,这个秘钥由服务端保管,由服务端发送给客户端,或者在握手过程中生成,然后客户端和服务端的双工通信都用这个秘钥进行加密和解密,使得http不再使用明文传输

但是问题的关键在于 怎么告诉客户端这个秘钥

明文传输? 那非常容易被中间人获取到,并且窃取我们的数据或者发送一些不安全的数据

所以单单是对称加密肯定是不行的

所以引入了非对称加密

在非对称加密的算法中,一共有一公一私两队秘钥,假如有数据A 则可以用公钥加密为数据B

若是要解密必须要用私钥,若是没有私钥,无法解密出数据!

服务端给客户端的只有公钥,私钥保存在自己这边,客户端发送数据时用公钥加密,到客户端这边再用私钥解密,这样就安全许多

但是仅仅这样的还可能被中间人攻击

中间人拦截公钥,把公钥替换成自己的,这样客户端用这个公钥加密 很容易就被中间人破译出来 这样的话就裸奔了,

而且我疑惑的是,这样确实客户端可以向服务器发数据了 但是服务器怎么想客户端发数据呢?客户端又没有私钥,也许客户端也可以搞一个自己的私钥+公钥

总的来说无论如何都要把公钥明文传输,这样就给了中间人可乘之机,所以非对称加密也并非完全安全

终极方案:对称加密+非对称加密

核心是使用非对称加密的方式传输"公钥”, 客户端生成一个随机数,用服务端传过来的公钥加密后传给服务端,服务端收到后用自己的私钥解密,这样两边就都获得了这个最终的对称加密的公钥,而中间人即使拿到了加密后的数据,没有私钥也无法解密

那还是有一个问题,如何确定这个公钥确确实实是服务端发过来的,而非中间人

所以数字证书就派上用场了,服务器并非直接发公钥,而是发一个数字证书,这个证书是经过权威机构(CA)认证的,而且客户端也可以检验这个证书是真是假,是真之后才进行通信

最后还有一个问题,就是数据篡改和完整性问题

这是通过数字签名+摘要算法实现的,简单说就是每次加密消息都有一个消息认证码,是通过秘钥+消息内容计算出来的哈希值,服务端收到后在计算一次,不一致则丢弃

http://www.xdnf.cn/news/19622.html

相关文章:

  • HQX SELinux 权限问题分析与解决
  • 2025 年,这些求职技能利用空闲时间就能学,轻松提升职场竞争力​
  • 亚马逊的领导力原则
  • Photoshop - Ps 处理图层
  • Qt模型/视图编程详解:QStringListModel与多视图数据同步
  • linux 命令 awk的常见用法
  • Zynq中级开发七项必修课-第四课:S_AXI_HP0 高速端口访问 DDR
  • OCR 识别准确率的关键影响因素
  • NAT与内网穿透
  • 【python】python进阶——pip命令
  • 【完整源码+数据集+部署教程】粘土石实例分割系统源码和数据集:改进yolo11-LVMB
  • Qt Demo(3) 之 deepseek 帮我写的关于图像显示的小界面
  • 【Vue2 ✨】Vue2 入门之旅(十):Vuex 入门
  • 精读:《VideoMAE V2: Scaling Video Masked Autoencoders with Dual Masking》
  • 一键换装玩疯了!3个AI魔法提示词让你秒变时尚达人
  • lua脚本在redis中执行是否是原子性?
  • Java反序列化漏洞揭秘:从原理到攻击实战
  • RT-DETR模型训练中断,接着训练的方法
  • 单片机day1
  • DevExpress WPF中文教程:如何将WPF数据网格绑定到本地数据库?
  • MyBatis:让 SQL 与代码和谐共处的持久层框架
  • Windows 和 Linux 服务器 IP 与域名强制绑定方法
  • Python上下文管理器:资源管理的隐形守护者
  • 灵神题单之链表、树
  • k8s的CRD自定义资源类型示例
  • 整体认识K8s之PriorityClass优先级调度/HPA自动扩缩容机制
  • 【设计模式】从游戏角度开始了解设计模式 --- 创建型模式(一)
  • 【Linux系统】万字解析,进程间的信号
  • Photoshop用户必看:让你的PSD像JPG一样可预览
  • 书写腾讯天气遇到的问题