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

【HTTPS】对称加密和非对称加密

HTTPS 是什么

HTTPS 是在 HTTP 的基础上,引入了一个加密层(SSL)。HTTP 是明文传输的(不安全)

当下所见到的大部分网站都是 HTTPS 的,这都是拜“运营商劫持”所赐

运营商劫持

下载⼀个“天天动听“:

  • 未被劫持的效果,点击下载按钮,就会弹出天天动听的下载链接 image.png|454
  • 已被劫持的效果,点击下载按钮,就会弹出 QQ 浏览器的下载链接 image.png|465

image.png

即使运营商不劫持,如果被黑客盯上了,也是可能会对你的信息安全造成一些影响的

有些商场、饭店会提供 WiFi

  • 你连他们的 WiFi,你的请求就要经过他的路由器设备
  • 你能连,黑客就也能连,黑客就可能把路由器给黑了
  • 黑客可能用自己的设备伪造一个“商场 WiFi”
    一旦你的数据经过了黑客的设备,并且没有加密,那就非常危险了。尤其是“各种密码”

加密

解决安全问题,最核心的要点,就是“加密”。黑客领域的攻防,都是“相对”的概念,这是一个对抗的过程。但是可以做到,即使数据被黑客拿到了,他也解析不了/无法篡改,也能起到安全的效果

  • 你加密的数据,理论上来说,也可能被黑客破解,但加密的成本很低,但破解的成本很高
  • 只要破解成本超出了要保护的数据价值本身,就是安全的

引入加密,是保证数据安全的有效手段

密码学中的几个重要概念:

明文:要传输的真实数据,要表达的实际的意思
密文:针对明文加密后,得到的结果。往往是不直观的,不易理解的
密钥:加密和解密过程中的关键道具

对称加密:加密和解密用的是同一个密钥
非对称加密:加密和解密用的不是同一个密钥,这两个密钥 k1k2是成对的

  • 可以使用 k1 加密,k2 解密
  • 可以使用 k2 加密,k1 解密

两个密钥,可以一个公开出去,称为“公钥”,另一个自己保存,称为“私钥”
手里只有一把的话,是无法知道另一把是什么的(是有一定的数学原理的)

HTTPS 工作过程(面试)

只要针对 HTTPS 的数据进行解密了,就能够得到 HTTP 格式的数据

上述的运营商劫持,无论是修改 referer 还是修改返回的链接(body),本质上都是明文传输惹的祸。需要引入加密,对上述传输的数据进行保护,主要就是要针对 headerbody 进行加密

1. 引入对称加密

通过对称加密的方式,针对传输的数据进行加密操作,这样网络上传输的就是密文了 image.png|673

  1. 对称加密的时候,客户端和服务器需要使用同一个密钥

  2. 不同的客户端需要使用不同的密钥

    • 如果所有的客户端的密钥都一样,加密就形同虚设,黑客就很容易拿到密钥
    • 这就意味着,每个客户端连接到服务器的时候,都需要自己生成一个随机的密钥,并且把这个密钥告知服务器。(也不一定非得是客户端生成,服务器生成也行,但也是要告诉客户端的)

问题的关键: 密钥需要传输给对方,一旦黑客拿到了密钥,意味着加密操作就没意义了image.png|513

  • 这样即使你传输的是密文,但黑客也能解密

2. 引入非对称加密

使用非对称加密主要的目的是为了加密“对称密钥”,确保对称密钥的安全性

不能使用非对称加密针对后续传输的各种 headerbody 等进行加密,而是只能对对称加密的密钥进行加密

  • 因为非对称加密的加密解密成本(消耗的 CPU 资源)远远高于对称加密
  • 少来少去的用点还可以,但是如果大规模的使用,就难以承担了

image.png

  • 此处就让服务器持有私钥(只有服务器知道);客户端持有公钥(黑客也知道)
  • 客户端就可以使用公钥,对生成的对称密钥进行加密
  • 黑客虽然有公钥,但是对密钥加密的密文只有通过私钥才能解密,黑客拿不到私钥,也就无法对这个数据解密,也就拿不到 888888 对称密钥了
  • 只要 888888 安全到达服务器,后续服务器和客户端之间就可以使用 888888 作为对称加密的密钥,此时黑客就无法破解后续的数据了

客户端向服务器要公钥和通过公钥传输对称加密的密钥的两步操作就是 SSL 内部完成的操作。使用 HTTPS 的时候,磁层也是 TCP,先进行 TCP 三次握手,TCP 连接打通之后,就要进行 SSL 的握手了(交换密钥的过程)。后面才是真正的传输业务数据。(完整的 HTTPS 的请求/响应)

此处公钥和私钥可以这样理解

  • 有些老的楼里带有信箱
  • 你的手里有信箱钥匙(私钥),邮递员手里有锁头(公钥

可以让服务器生成公钥私钥。私钥就只有服务器自己知道,公钥可以告诉任何人

  • 客户端要传输数据的时候,就向服务器要公钥

上述操作,其实仍然存在严重的漏洞,黑客仍然有办法破解掉其中的加密操作

http://www.lryc.cn/news/443864.html

相关文章:

  • MySQL中的LIMIT与ORDER BY关键字详解
  • Java 编码系列:集合框架(List、Set、Map 及其常用实现类)
  • Go进阶概览 -【7.2 泛型的使用与实现分析】
  • 罗德岛战记游戏源码(客户端+服务端+数据库+全套源码)游戏大小9.41G
  • AI+教育|拥抱AI智能科技,让课堂更生动高效
  • WebServer
  • java项目之基于spring boot的多维分类的知识管理系统的设计与实现源码
  • go的结构体、方法、接口
  • 力扣第一题——删除有序数组中的重复项
  • Tuxera NTFS for Mac 2023绿色版
  • LeetCode[中等] 155. 最小栈
  • Python青少年简明教程目录
  • Revit学习记录-版本2018【持续补充】
  • 深度学习01-概述
  • leetcode232. 用栈实现队列
  • 智慧火灾应急救援航拍检测数据集(无人机视角)
  • eureka.client.service-url.defaultZone的坑
  • 统信服务器操作系统【d版字符系统升级到dde图形化】配置方法
  • 学习IEC 62055付费系统标准
  • 如何在Markdown写文章上传到wordpress保证图片不丢失
  • html,css基础知识点笔记(二)
  • (k8s)kubernetes 部署Promehteus学习之路
  • 初写MySQL四张表:(3/4)
  • 【Java】线程暂停比拼:wait() 和 sleep()的较量
  • CQRS模型解析
  • qt-C++笔记之作用等同的宏和关键字
  • java(3)数组的定义与使用
  • Integer 源码记录
  • 【RocketMQ】一、基本概念
  • 笔记9.18