首页 > 编程语言 >[Javaee]网络原理-https协议

[Javaee]网络原理-https协议

时间:2024-11-09 23:16:59浏览次数:3  
标签:加密 Javaee 黑客 密钥 https 服务器 原理 客户端

前言

前面的文章,我们着重介绍了http协议相关的知识。

【Javaee】网络原理—http协议(一)-CSDN博客

【Javaee】网络原理-http协议(二)-CSDN博客

http存在着安全问题(如运营商劫持),针对http的安全问题,我们引入了https进行解决。

下面,将详细介绍https协议

目录

 

一.https协议是什么

二.https工作流程

1.对称加密与非对称加密

2.https工作的基本流程

1)引入对称加密

2)引入非对称加密

3)中间人攻击

4)证书机制



一.https协议是什么

https也是一个应用层协议,是在http协议的基础上引入了一个加密层。

当今https协议在互联网中是非常普遍的。

因http协议内容都是按照文本的方式明文传输的,这就导致在传输过程中出现一些数据被篡改的情况

就比如臭名昭著的运营商劫持
 

什么是运营商劫持??

运营商劫持是指互联网服务提供商或移动通信运营商在用户访问特定网站或服务时,通过技术手段重定向用户的流量,导致用户访问到的不是他们原本想要访问的内容。

举个栗子:

我去下载天天动听播放器,这是正常情况下的,会弹出该软件的下载地址

可如果被劫持了的话,则是

下载的是QQ浏览器,对我们用户来说,属于是一种欺诈,因为我们想下载的与实际下载的不符合,对于厂商来说,则是妥妥的抢劫(抢流量)。

这是大概的流程。

即使运营商不劫持,也可能被黑客给劫持。

为解决此问题,除了从法律角度解决,也应从技术手段解决,我们需将http传输的明文加密成密文进行传输。

二.https工作流程

在计算机密码学中,有以下几个核心的概念

  1. 明文:传输的原始数据
  2. 密文:把明文进行加密之后得到一个让别人不能理解的数据
  3. 加密:明文—>密文
  4. 解密:密文—>明文
  5. 密钥:进行加密/解密的重要数据(辅助工具)

1.对称加密与非对称加密

对称加密:

加密还是解密,使用同一个密钥

非对称加密:

使用一对密钥进行加密/解密。

即使用其中的一个密钥加密,就使用另一个密钥解密

这两个密钥一般一个公开出来,一个私藏起来。

公开的叫公钥,私藏的叫私钥

2.https工作的基本流程

前文提到,在进行通信时,如果进行明文传输,很容易被黑客截获/篡改信息

1)引入对称加密

针对传输的数据进行对称加密

这样看起来,传输的数据进行了加密,好像已经安全了。

但事实并非如此。

在客户端和服务器交互的过程中,一个服务器对应着多个客户端,多个客户端使用着不同的密钥。

因此,我们要让每个客户端连上服务器的时候生成一个随机的密钥

服务器也得拿到这个密钥才能解密。

上述传输看似密文传输,但密钥进行明文传输给服务器时,黑客也会劫持获得密钥,后续的加密也形同虚设。

那如果再对密钥传输进行加密,能行吗??

也不行,因为你也需要传输密钥加密的密钥,等于无限套娃,黑客终将能获取的传输的数据。

2)引入非对称加密

针对上述问题,我们需引入非对称加密进行解决。

通过非对称加密,对需要传输的密钥进行加密

业务数据还是使用对称加密(非对称加密开销大,影响性能)

非对称加密并不是取代对称加密,而是辅助对称加密

非对称加密就涉及到了公钥和私钥

非对称加密中,只要把私钥保护好,公钥可以随便公开。

这样一来,看似问题得到了解决,但也存在着严重缺陷。

3)中间人攻击

简单来说,因为客户端和服务器不清楚当前的公钥是伪造的,黑客入侵的网络设备在客户端前假扮服务器,在服务器前假扮客户端。

具体流程如下:


        

首先,客户端向服务器发送请求,想要获取服务的公钥pub1

服务器收到到请求后,向服务器响应,但响应被黑客劫持,且黑客将自己生成的公钥pub2返回给客户端。

客户端无法分辨这个公钥是不是黑客伪造的,只能选择相信

于是,客户端基于pub2对对称密钥进行加密传输给服务器,黑客基于私钥pri2对公钥进行解密,得到对称密钥。

然后,黑客再基于pub1对对称密钥进行加密,发送给服务器,这样,后续传输的业务数据,在黑客眼中就一览无余了。

上述就是中间人攻击,这个问题在于客户端和服务器不能分辨出公钥是否为黑客伪造的。

但如果能让服务器和客户端分辨出来,那问题也就能得到解决。

4)证书机制

此处需引入第三方公正机构。

如果想要搭建服务器,使用https时,就需要在公证机构这里申请证书。

这个证书可以理解成一个结构化的字符串,里面包含着一些信息

如:证书发布机构,证书有效期,公钥,证书所有者,数字签名(合法性的关键要点).......

后续客户端从服务器拿公钥,就不只是拿公钥,而是拿整个证书,此时客户端就可以凭借证书中的数字签名,对证书合法性进行验证(校验和+加密)

客户端如何验证数字签名???

1.客户端把整个证书的各种字段,再算一次校验和,得到checksum1

2.客户端再使用公正机构的公钥,对数字签名进行解密,得到checksum2

3.对比checksum1和checksum2是否相等,如果相等,则是合法证书,若是不相等,意味着证书的内容被篡改过,此时浏览器会弹出警告页面提示用户该网站不安全

通过证书机制,客户端可分辨出公钥是否为黑客伪造。


以上便是https的全部内容,如有不对,欢迎指正

标签:加密,Javaee,黑客,密钥,https,服务器,原理,客户端
From: https://blog.csdn.net/yc_xym/article/details/143464182

相关文章

  • 万字长文深度解读Movie Gen技术原理(5部曲):图像&视频联合生成模型 (2)
    ​引言简介图像和视频基础模型时间自编码器(TAE)训练目标骨干架构文本嵌入和视觉-文本生成空间上采样模型扩展和训练效率预训练预训练数据训练微调STF微调数据集创建监督微调&模型平均推理推理提示重写提高推理效率评估评估维度评估......
  • 电机分类及组成及FOC原理等个人理解
    https://zhihui.lingjun.life/2020/07/02/foc/1.BLDCBLDC就是无刷直流电机,通过磁场:这种,让转子转动起来,一个状态接着一个状态的转起来。而这种换向操作就需要换向器来进行。而无刷电机的驱动主要使用三相逆变电路来实现而逆变电路的意思就是:把直流转换为交流,通过三相PWM矩......
  • YOLO系列基础(一)卷积神经网络原理详解与基础层级结构说明
    系列文章地址YOLO系列基础(一)卷积神经网络原理详解与基础层级结构说明-CSDN博客YOLO系列基础(二)Bottleneck瓶颈层原理详解-CSDN博客目录卷积神经网络的原理及卷积核详解一、卷积神经网络的原理二、卷积层与卷积核详解卷积核的作用卷积核的设计卷积样例与代码说明:卷积核......
  • 视频分享——多款AI游戏外挂原理,深度解析,战斗力爆表!
    相关视频地址:多款AI游戏外挂原理,深度解析,战斗力爆表!强化学习算法library库:(集成库)https://github.com/Denys88/rl_gameshttps://github.com/Domattee/gymTouch个人github博客地址:https://devilmaycry812839668.github.io/......
  • 并查集(原理、实现、应用)
    一、原理在一些应用问题中,需要将n个不同的元素划分成一些不相交的集合。开始时,每个元素自成一个单元素集合,然后按一定的规律将归于同一组元素的集合合并。在此过程中要反复用到查询某一个元素归属于那个集合的运算。适合于描述这类问题的抽象数据类型称为并查集(union-find......
  • 深入Java多态机制:从原理到实现
    目录1.什么是多态?2.如何在Java中实现多态?2.1方法重写实现多态2.2接口实现多态3.Java接口中方法实现的支持3.1默认方法4.总结多态(Polymorphism)是面向对象编程(OOP)的核心概念之一。多态允许对象在不同的上下文中执行不同的行为,即同一操作可以在不同的对象中产生不......
  • GoLang协程Goroutiney原理与GMP模型详解
    本文原文地址:GoLang协程Goroutiney原理与GMP模型详解什么是goroutineGoroutine是Go语言中的一种轻量级线程,也成为协程,由Go运行时管理。它是Go语言并发编程的核心概念之一。Goroutine的设计使得在Go中实现并发编程变得非常简单和高效。以下是一些关于Goroutine的关键特性:轻量......
  • 一文彻底弄懂JUC工具包的CountDownLatch的设计理念与底层原理
    CountDownLatch是Java并发包(java.util.concurrent)中的一个同步辅助类,它允许一个或多个线程等待一组操作完成。一、设计理念CountDownLatch是基于AQS(AbstractQueuedSynchronizer)实现的。其核心思想是维护一个倒计数,每次倒计数减少到零时,等待的线程才会继续执行。它的主要设......
  • SciTech-Mathmatics-BigDataAIML: PCA(Principle Component Analysis)主成分分析 的
    SciTech-Mathmatics-BigDataAIML:PCA(PrincipleComponentAnalysis)主成分分析参考链接HowtoCalculatePrincipalComponentAnalysis(PCA)fromScratchinPythonhttps://www.kaggle.com/code/aurbcd/pca-using-numpy-from-scratchPCAusingNumpyfromscratchhttps......
  • HTTPS协议
    HTTPS一、介绍二、HTTP中间人攻击1、介绍2、下载示例三、相关概念1、密钥2、加密3、解密4、数据摘要(1)介绍(2)特点5、数字签名(1)介绍(2)实现步骤(3)示意图四、对称加密1、介绍2、特点3、缺点五、非对称加密1、介绍2、优点3、缺点六、CA证书1、介绍2、功能3、CA认证4、示意......