[JavaEE初阶] 防止网络传输中的中间人入侵---证书

上节回顾~

HTTPS=HTTP+SSL(加密协议)

1.引入对称密钥:

  • 客户端生成对称密钥
  • 通过网络把密钥传输给服务器
  • 双方使用对称密钥对数据进行加密解密
  • 缺陷:对称密钥是明文传输的

2.引入非对称密钥,把对称密钥进行加密传输

  • 注意私钥是服务器才有
  • 非对称加密,成本是非常高的,不太适合加密大量数据
  • 对称加密,成本低,适合对大量数据进行加密

当前场景有三个密钥

  • 一个是用户端生成的对称密钥(可以理解为用户密码)
  • 一个是服务器生成的公钥,可以公示出来告诉所有设备
  • 一个是服务器生成的私钥,只有服务器自己知道
    上述这样的流程存在重大安全隐患,黑客可以通过特殊手段来获取到对称密钥,破坏后续传输的安全性

中间人入侵

中间人入侵过程

校验机制---证书

引入校验机制,中间人攻击的关键,在于客户端无法区分收到的公钥是不是真正的 来自服务器的公钥还是被黑客篡改过的公钥->想办法对公钥进行校验

于是引入了证书->证明公钥是合法的

这就是为什么使用Fidder时,需要安装证书

->fidder的工作原理就是中间人攻击,只不过是咱们授权的(你安装了fidder证书,就相当于授权了)

1.服务器向第三方公证机构申请证书

2.客户端询问证书

3.客户端校验证书

4.完整流程

问题一:客户端如何确保拿到的pub2是公证机构的pub2,而不是黑客伪造的pub2?

  • pub2不是通过网络传输的,而是用户操作系统中内置的(安装好系统,系统就内置了一系列知名公证机构的公钥)
  • 只要安装正版系统,而不是搞黑客的盗版系统,就可以信任pub2是正确合法的

问题二:客户端收到的证书 "服务器的公钥"可能被黑客篡改呀?

  • 但是改后的数,算出的校验和,与服务器中的原始校验和就对不上了
  • 此时客户端就会报错
  • 浏览器就会弹出一个红色的页面,告诉你网站不安全,是否要继续访问(证书的校验失败)

问题三:黑客能否自己申请一个证书,用自己的证书,替换整个服务器的证书呢?

  • 证书中包含服务器的域名
  • 黑客申请的证书的域名 和 正经服务器证书的域名肯定是不同的
  • 浏览器这边还是可以验证,输入的URL的域名和 得到证书的域名是不匹配的
  • 不匹配->浏览器就会弹出一个红色的页面,告诉你网站不安全,是否要继续访问(证书的校验失败)

问题四:那如果黑客把整个证书给换了,再把域名给伪造了呢?

  • 证书是要在公证机构这边申请的,每一个公司/组织申请的域名是不一样的

问题五:若黑客修改证书,同时修改服务器的公钥和数字签名呢?

  • 修改公钥,就要重新计算校验和,还需要对校验和重新加密
  • 如果黑客使用自己的私钥加密,就会导致客户端系统内置的公证机构公钥 和 黑客的私钥匹配不上
  • 不匹配->浏览器就会弹出一个红色的页面,告诉你网站不安全,是否要继续访问(证书的校验失败)
  • 那使用公证机构的私钥来加密吗(不然和系统内置的公钥就匹配不上了呀)->黑客能拿到公证机构的私钥吗?[狗头]

问题五:那黑客本地系统不是也能看到公钥和证书吗?

  • 引入证书,是防止黑客修改 服务器的公钥
  • 黑客看到 系统内置的公证机构的公钥是啥->无所谓(公钥本身就是公开的)
  • 黑客看到校验和->也无所谓->校验和本身就是用来校验数据的,本身并没有什么含义
  • 整个过程只是为了保证客户端可以验证 服务器的公钥是合法的
  • 只要服务器的公钥合法了 就可以使用服务器的公钥对 "客户端产生的对称密钥" 进行加密
  • 后续继续使用对称密钥进行加密交流
  • 业务数据,黑客是看不到一点的

上述流程是面试的高频考点

1.引入对称加密

2.引入非对称加密

3.中间人攻击

4.引入证书&数字签名

想知后续如何,且听下回分解~

END✿✿ヽ(°▽°)ノ✿

相关推荐
青梅橘子皮6 小时前
Linux---基本指令
linux·运维·服务器
cui_ruicheng7 小时前
Linux进程间通信(三):System V IPC与共享内存
linux·运维·服务器
运维全栈笔记7 小时前
Linux安装配置Tomcat保姆级教程:从部署到性能调优
linux·服务器·中间件·tomcat·apache·web
dllmayday8 小时前
Linux 上用终端连接 WiFi
linux·服务器·windows
ACP广源盛139246256739 小时前
IX8024与科学大模型的碰撞@ACP#筑牢科研 AI 算力高速枢纽分享
运维·服务器·网络·数据库·人工智能·嵌入式硬件·电脑
Empty-Filled9 小时前
AI生成测试用例功能怎么测:一个完整实战案例
网络·人工智能·测试用例
峥无10 小时前
Linux系统编程基石:静态库·动态库·ELF文件·进程地址空间全景图
linux·运维·服务器
码云数智-大飞10 小时前
本地部署大模型:隐私安全与多元优势一站式解读
运维·网络·人工智能
jinanwuhuaguo10 小时前
(第二十九篇)OpenClaw 实时与具身的跃迁——从异步孤岛到数字世界的“原住民”
前端·网络·人工智能·重构·openclaw
汤愈韬11 小时前
三种常用 NAT 的经典案例
网络协议·网络安全·security