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

Linux网络:HTTPS协议

文章目录

  • 一,HTTPS原理
  • 二,加密方式
    • 2-1对称加密
    • 2-2 非对称加密
    • 2-3 混合加密
    • 2-4 中间人攻击
  • 三,证书
    • 3-1 HTTPS 证书是什么
    • 3-2 数据签名
    • 3-3 CA 认证
    • 3-4 简单总结


一,HTTPS原理

你可以把HTTP通信 想象成两个人在大街上大声聊天:路人都能听到(信息可能被窃听),任何人都可以插嘴冒充(信息可能被篡改或伪造)

HTTPS 通信 就像两个人在一个 密室里,用密码本对话:建立密室(TLS握手),客户端(你)和服务器(网站)先商量好用哪种加密方式,服务器出示 身份证(数字证书),证明“我真的是 www.xxx.com,不是冒牌货”。

客户端检查身份证(证书是否可信、是否过期、域名是否匹配)。确认身份后,客户端生成一个“对话密钥”,交给服务器(用公钥加密),用同一把钥匙对话(对称加密),之后你们都用这把钥匙加密和解密消息,路人就算偷听,也只能听到乱码。

总结:HTTPS 用 证书 + 加密,保证了:谁在跟你对话(身份认证),说的内容别人看不懂(加密),对话不会被篡改(完整性)


二,加密方式

2-1对称加密

一把钥匙开锁:加密和解密都用同一把钥匙,发送方用钥匙锁箱子,接收方用同一把钥匙开箱子。

  • 例子

你和朋友约定一个密码本(密钥):写“我今晚吃饭吃泡面” → 用密码本加密 → 朋友用同一本密码本解密,微信或者支付宝通信:用户的账号密码、支付金额都用同一个“临时密码本”加密发送到服务器

发送方用密钥
𝐾对明文 𝑃 进行加密 → 得到密文C

接收方用同一个密钥
𝐾对密文解密 → 得到原文 𝑃

  • 优缺点

加密/解密速度快,适合大数据

密钥必须安全传输,否则别人也能解密 比喻:想象你和朋友用同一把锁锁信箱,然后互相传递。只要钥匙安全,你们通信就是私密的。
在这里插入图片描述
大致上面那个图一样HTTPS(TLS)握手完成后,会话密钥保存在浏览器内存的 TLS 栈中,用于加密和解密 HTTP 请求与响应,浏览器不会把密钥写到磁盘或日志里,只存在运行时内存中

直接抓包解析密钥是不可能的网络上的抓包工具,只能看到密文,没有会话密钥,抓到的数据无法解密,必须获取内存中会话密钥,你需要用 调试工具或内存分析工具 直接读取浏览器进程内存,难度高,而且现代浏览器和操作系统有安全机制防止随便访问进程内存


2-2 非对称加密

核心思想:使用 一对密钥

公钥(Public Key):可以公开,用于加密或验证签名

私钥(Private Key):必须保密,用于解密或生成签名

公钥加密 → 私钥解密

私钥签名 → 公钥验证

公钥像银行提供的保险箱,任何人都可以把钱放进去,私钥像银行的钥匙,只有银行能打开保险箱拿到里面的内容

发送方用接收方 公钥 加密消息,接收方用 私钥 解密消息

安全性:即使有人截获密文,也无法解密,因为没有私钥

在这里插入图片描述
通过这种方式每个人都有自己的通信规则,但是只有自己能解开别人发过来的信息


2-3 混合加密

什么是混合加密?

混合加密 = 非对称加密 + 对称加密结合

非对称加密:保证密钥安全传输

对称加密:高效加密大量数据

你和银行想互传大量信件,银行给你一个保险箱(非对称加密),你把一个临时密码本(对称密钥)放进去,银行拿钥匙打开,接下来,你们用这个临时密码本写信,速度快又安全

HTTPS 中的混合加密流程

为什么要混合加密:当我们要使用对称加密时,会因为要发送一个密钥给客户端,但是这个密钥有被黑客截取的风险,所以我们先通过非对称加密将密钥加密安全传输给客户端,客户端再使用密钥和服务端进行堆成加密,实现了既有非对称加密的安全性,又有对称加密数据传输的高效性

非对称加密慢 → 不适合加密大量数据

对称加密快,但密钥传输有风险 → 需要非对称加密安全传输

  • 结合优点:

非对称加密 = 安全传输密钥

对称加密 = 高速数据加密

  • 形象比喻:

非对称加密 = 保险箱锁住临时密码本

对称加密 = 用密码本写信

两者结合 = 既安全又高效

总结:混合加密就是 TLS 使用的策略

  • 核心公式:

握手阶段:非对称加密(传会话密钥)

通信阶段:对称加密(加密实际数据)

它保证了 安全性 + 高性能


2-4 中间人攻击

MITM 攻击的理论步骤:

  • 拦截通信:攻击者位于客户端和服务器之间,拦截客户端发起的 HTTPS 请求

在这里插入图片描述

  • 伪装服务器:攻击者生成自己的公钥/私钥对,向客户端发送伪造公钥(代替服务器的公钥)
    在这里插入图片描述
  • 客户端加密会话密钥:客户端用攻击者公钥加密生成的会话密钥,发送给“服务器”,实际上攻击者能解密

在这里插入图片描述

  • 攻击者解密得到会话密钥:攻击者用自己的私钥解密会话密钥,攻击者现在掌握对称密钥 → 可以解密/篡改所有数据

  • 转发给真正的服务器:攻击者用服务器公钥加密同一会话密钥(或协商新的),双向通信继续,但攻击者在中间完全透明

在这里插入图片描述


三,证书

3-1 HTTPS 证书是什么

HTTPS 证书 是一个数字文件,作用像网站的“身份证”,用来证明网站(比如 example.com)是真实的,防止有人冒充。它让浏览器和网站之间的通信安全(加密),没人能偷看或篡改数据。

通俗比喻:证书就像你去银行办业务,银行出示一张“营业执照”,证明它是正规银行。执照上有“公安局”盖的章,告诉你它没被伪造。

HTTPS 里的作用:告诉浏览器:这个网站是我要访问的真网站,提供“公钥”给浏览器,用来加密数据(后面会讲),确保通信安全,比如你在网站输入密码,不会泄露。


3-2 数据签名

数据签名是证书里的“防伪章”,确保证书内容(比如网站名字、公钥)没被任何人偷偷改过,网站把自己的信息(像名字 example.com 和一把公钥)交给一个可信机构,这个机构把信息“压缩”成一个独特的“指纹”(用一种叫哈希的数学方法,比如 SHA-256),机构用自己的“秘密钥匙”(私钥)给指纹加密,生成一个“签名”,贴在证书上浏览器收到证书后,用机构的“公开钥匙”(公钥)解开签名,检查指纹。如果指纹对得上,说明证书没被改过。

通俗比喻:像你在淘宝买东西,卖家寄来一个包裹,上面有顺丰的防伪封条(签名)。你用顺丰的“验证器”(公钥)检查封条,确认包裹没被打开过。如果有人改了包裹内容,封条就对不上。

为什么重要?防止坏人伪造证书,假装是 example.com,偷你的密码。
例子:你访问 https://example.com,浏览器检查证书的签名,确保是真网站。

HTTPS 里签名保护证书的真实性,让浏览器相信网站的公钥可以用来加密数据


3-3 CA 认证

CA(证书颁发机构)是一个可信的“认证机构”,像“公安局”一样,负责给网站发证书并盖章(签名)。它确保网站是真实的,不是假冒的。

怎么做的?

  • 网站(比如 example.com)向 CA 申请证书,提交自己的名字和公钥。
  • CA 检查网站是不是真的(比如确认 example.com 属于申请者)。
  • CA 用自己的私钥给证书签名,生成一个可信的证书(像 server.crt)。
  • 浏览器用 CA 的公钥(预装在浏览器或电脑里)验证证书的签名,确认网站身份。

通俗比喻:

CA“公安局”,给正规网站发“身份证”(证书)。你用公安局的公章(CA 公钥)检查身份证,确认网站不是假的,如果一个假网站给你个伪造的身份证,章不对,浏览器就会警告(“证书不受信任”)

  • 为什么重要?

确保你访问的是真网站,比如 example.com而不是黑客的假网站。
例子:你访问 https://bank.com,CA 认证保证这是真的银行网站。

  • HTTPS 里:CA 认证让浏览器信任证书,进而信任网站的公钥,用来安全交换加密密钥。

3-4 简单总结

数据签名:证书的“防伪章”,用哈希(SHA-256)+ 私钥加密,确保证书没被改,像包裹上的封条,浏览器用 CA 公钥检查。

CA 认证:可信机构签发证书,证明网站身份真实,像公安局发的身份证,浏览器用 CA 公钥验证。

HTTPS 里的作用:签名确保证书可信,CA 认证确认网站身份,共同建立安全通信。


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

相关文章:

  • 【Linux】进程概念(三):深入剖析操作系统学科的进程状态理论体系与 Linux 系统下的浅度睡眠、深度睡眠、停止、僵尸、死亡等具体进程状态
  • java面试Day2 | mysql优化、索引、事务、并发事务、MVCC、主从同步、分库分表
  • 怎么用文字生成视频:从本土到海外的软件工具选择指南
  • Git远程与本地仓库关联指南(含推送冲突解决方案)
  • uniapp u-popup弹窗展示时禁止底部内容滚动,禁止滑动遮罩层滚动
  • 赛灵思 XCVU13P-2FIGD2104E XilinxFPGA VirtexUltraScale+
  • 基于非线性MPC的自动驾驶路径跟踪与避障控制器设计(Matlab实现)
  • 使用云手机进行烈火一刀挂机多开的优势
  • 造成云手机黑屏的原因有哪些?
  • 智能电视玩机攻略_开启设备隐藏ADB 自由安装第三方应用
  • 微服务项目->在线oj系统(Java-Spring)----2.0
  • Swift闭包使用详情
  • STM32,新手学习
  • 保险丝Fuse
  • Kafka的持久化及副本机制总结
  • c() 函数在 R 中的用途详解
  • 使用Rsync+sersync实现数据实时同步
  • 关于conda forge长时间solving的问题以及如何解决
  • 前端学习手册-JavaScript基础语法(十)
  • 如何在 Linux 服务器上查看 GPU 型号与 CUDA 版本?
  • LeetCode hot 100 解题思路记录(三)
  • 小程序移动端设计UI(二)酒店自助入住小程序—东方仙盟练气期
  • 解决pnpm中的 Pinia 版本冲突:Cannot read properties of undefined (reading ‘_s‘)
  • 说一说大模型后训练的流程
  • 【微实验】激光测径系列(三)
  • Vim 使用从入门到精通
  • 快速实现 Excel 表格转 SVG:Java 教程
  • [极客大挑战 2019]LoveSQL
  • Excel和WPS表格中选中全部空单元格并输入相同内容
  • 日志易制造业安全UEBA解决方案