【JavaEE】网络原理-HTTPS

网络原理-HTTPS

1. HTTPS是什么

HTTPS是在应用层上的协议, 基于HTTP进行加密

  • HTTP协议内容都是按照文本内容进行明文传输,容易使得内容被"劫持"。

  • 十年前,经常有下载链接被劫持,就会产生下载图片和下载链接不是一个产品的现象

2. 对称加密

简而言之,对称加密就是:加密和解密都用的同一把锁,和同一把钥匙

  • 因为密钥不管一开始从哪里生成,都需要让对方知道本次通信的密钥是什么,只有密钥对应起来才能进行通信
  • 所以在密钥传输的过程中容易被劫持
  • 这样的弊端显而易见,如果黑客在服务器和客户端之间,那么就很容易能够知道C-S之间通信的密钥,那么这个加密就会形同虚设。
  • 即使不同的客户端使用自己生成的不同的密钥,那也会被黑客劫持

3. 非对称加密

非对称加密是用于==对对称加密进行加密==的方式,这并不会对于每次的会话进行使用。

3.1 过程

最重要的是衍生出了"公钥"与"私钥"的概念。

  1. 公钥是暴露在网络中的,随便什么人都可以看得见,但是私钥只有服务器才有
  2. 私钥可以对于公钥进行解密
  1. 客户端对于服务器发起请求,携带着后续会话使用什么对称密钥信息

    此时这段对称密钥是暴露在网络中的,但是只能通过私钥进行解密

  2. 服务器使用自己独有的私钥对于这段请求进行解密,获得后续对话使用的对称密钥

    此时服务器知道了对称密钥是什么,后续就不再使用公钥进行加密,直接使用对称密钥

  3. 客户端进行请求的时候将使用对称密钥进行加密

    服务器进行响应的时候将使用对称密钥进行解密

3.2 优点

  1. 确保了安全性
  2. 最大程度减少了资源开销(相比于所有会话都使用非对称加密来说)

3.3 缺点

仍然可能被攻击。

第一种情况:

  1. 黑客可以伪装为服务器,获取客户端的请求(即能够获取到后续会话的对称密钥)

  2. 接着使用暴露的公钥对于这个对称密钥进行加密,发送给服务器

    此时服务器并不知道这个请求是由黑客发送的还是正常的客户端

  3. 服务器发送正常的响应

  4. 后续对话就会由黑客使用对称密钥对于会话进行解密

第二种情况:

  1. 黑客可以伪造一对公钥和私钥
  2. 客户端发送请求被黑客进行劫持后,黑客返回私自伪造的公钥和私钥
  3. 后续对话就会由黑客和客户端进行

3.4 完善方案

最关键的一点是客户端拿到公钥后能够知道是否是真的,而不是伪造的,这就衍生出了公证机构。

公证机构会向服务器颁发**"证书"**,这个证书由公证机构自己的加密算法生成得到,无法进行伪造。

证书信息:

  1. 域名

  2. 证书有效期

  3. 服务器的公钥

  4. 公证机构的信息

  5. 证书的签名

    签名:公证机构使用自己的私钥对于校验和进行加密,就得到签名

过程:

  1. 公证机构颁布证书的时候,会使用自己的算法对于证书计算出一个校验和

  2. 客户端收到服务器的响应之后,先使用操作系统自带的证书(得到计算校验和的算法)得到校验和1

  3. 客户端再使用相同的计算校验和的算法对于证书的其他字段 进行计算,得到校验和2

  4. 如果两个校验和相等,那么证真,反之则伪

为什么能够防止黑客?
  1. 黑客想要伪造证书,会使得校验和2发生变化

    伪造证书分为两种伪造:

    1. 黑客想要修改公钥,因为签名没有变化,会使得校验和2发生变化
    2. 黑客修改公钥和签名,因为黑客不知道公证机构的私钥,所以无法生成签名
相关推荐
Tassel_YUE2 小时前
网络自动化04:python实现ACL匹配信息(主机与主机信息)
网络·python·自动化
Diamond技术流2 小时前
从0开始学习Linux——网络配置
linux·运维·网络·学习·安全·centos
Spring_java_gg2 小时前
如何抵御 Linux 服务器黑客威胁和攻击
linux·服务器·网络·安全·web安全
方方怪3 小时前
与IP网络规划相关的知识点
服务器·网络·tcp/ip
weixin_442643424 小时前
推荐FileLink数据跨网摆渡系统 — 安全、高效的数据传输解决方案
服务器·网络·安全·filelink数据摆渡系统
Wlq04154 小时前
J2EE平台
java·java-ee
XiaoLeisj4 小时前
【JavaEE初阶 — 多线程】Thread类的方法&线程生命周期
java·开发语言·java-ee
阑梦清川4 小时前
JavaEE初阶---网络原理(五)---HTTP协议
网络·http·java-ee
FeelTouch Labs5 小时前
Netty实现WebSocket Server是否开启压缩深度分析
网络·websocket·网络协议
杨荧6 小时前
【JAVA毕业设计】基于Vue和SpringBoot的服装商城系统学科竞赛管理系统
java·开发语言·vue.js·spring boot·spring cloud·java-ee·kafka