JavaEE-HTTPS的加密流程

news2024/10/7 10:16:29

目录

  • 对称加密
  • 非对称加密
  • 证书的引入

对称加密

对称加密就是用同一个密钥把明文进行加密变成密文,也能把密文解密为明文.
理想状态下:
引入对称加密之后, 即使数据被截获, 由于黑客不知道密钥是啥, 因此就无法进行解密, 也就不知道请求的真实内容是啥了.
在这里插入图片描述
但同一时刻服务器服务的客户端有很多,这么多客户端, 每个人用的秘钥都必须是不同的(如果相同的话黑客破解一个key,其他客户端的也就全部知道了,安全系数不高),所以服务器需要维护每个客户端与其密钥之间的联系.

比较类型的做法是:
客户端与服务器建立连接的同时能够进行协定密钥是什么
在这里插入图片描述
但对密钥的传输也是明文,黑客能够轻松拿到,形同虚设.

此时就需要引入非对称加密.

非对称加密

非对称加密要用到两个密钥, 一个叫做 “公钥”, 一个叫做 “私钥”.

公钥的由来始于密码学的发展。在传统密码学中,采用的是对称密钥加密方式,即加密和解密使用同一把密钥。但由于对称密钥加密存在密钥分发等问题,人们提出了“公钥密码学”概念,其中最重要的是RSA算法。
RSA算法的核心思想是利用大数分解的困难性实现公钥及私钥之间的转换。具体地说,RSA算法利用两个大质数p和q的乘积N作为模数,选择一个整数e作为公钥,使得e与(p-1)(q-1)互质,然后利用扩展欧几里得算法求出d,使得d*e ≡ 1 mod (p-1)(q-1),d即为私钥。这样,任何人都可以得到公钥(e,N),但只有持有私钥d的人才能解密密文

公钥和私钥是配对的. 最大的缺点就是运算速度非常慢,比对称加密要慢很多,因此非对称密钥一般用来保证对称密钥的安全传输.

公钥用来加密
私钥用来解密
当然也可反着来
私钥用来加密
公钥用来解密

在这里插入图片描述

  • 客户端在本地生成对称密钥通过公钥进行加密传输给服务器.
  • 即使黑客截取到了密文,也因为没有私钥而无法获取信息.
  • 服务器接收到密文后用私钥进行解密,获取到对称密钥.
  • 后续传输只需要使用使用对称密钥进行加密即可.

那么客户端是如何拿到公钥的,如何确定公钥是不是黑客伪造的呢?
如下情况:
在这里插入图片描述

  • 黑客通过一招偷梁换柱即可在服务器与客户毫不知情的情况下获取后续传续所用的密钥,这种情况下加密传输对黑客来说依旧是明文传输.

这种情况就需要引入证书了.

证书的引入

在客户端和服务器刚一建立连接的时候, 服务器给客户端返回一个 证书.
这个证书包含了刚才的公钥, 也包含了网站的身份信息.
证书都是由 CA(Certificate Authority)机构来颁发.

证书的类型
1、SSL证书,用于加密HTTP协议,也就是HTTPS。
2、代码签名证书,用于签名二进制文件,比如Windows内核驱动,Firefox插件,Java代码签名等等。
3、客户端证书,用于加密邮件。
4、双因素证书,网银专业版使用的USB Key里面用的就是这种类型的证书。

证书中包含了以下信息:
证书发布机构
证书有效期
公钥
证书所有者
签名
等待

当客户端获取到这个证书之后, 会对证书进行校验(防止证书是伪造的).

  • 判定证书的有效期是否过期
  • 判定证书的发布机构是否受信任(操作系统中已内置的受信任的证书发布机构).
  • 验证证书是否被篡改: 从系统中拿到该证书发布机构的公钥, 对签名解密, 得到一个 hash 值(称为数据摘要), 称为 hash1. 然后计算整个证书的 hash 值, 称为 hash2. 对比 hash1 和 hash2 是否相等.如果相等, 则说明证书是没有被篡改过的.

下面通过一个完整的流程来演示引入证书后的加密流程:

在这里插入图片描述
在这里插入图片描述
整个流程总结为三部分:

  • 校验证书是否被篡改.服务器持有在注册证书时获得的私钥1,客户端持有公钥1((操作系统包含了可信任的 CA 认证机构有哪些, 同时持有对应的公钥),服务器使用私钥对证书进行加密传输,客户端获取证书后,进行解密验证证书是否有没有被修改过.
  • 生成对称加密的密钥. 服务器生成私钥2,公钥2,将公钥2放入证书中,加密传输给客户端,客户端通过公钥1解密后获取公钥2,并生成对称密钥key,通过公钥2加密,传输到服务器,服务器通过私钥2解密获取对称密钥key.
  • 后续客户端与服务器的数据传输都是通过对称密钥进行加密解密传输.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/554265.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库规范与SQL调优

数据库设计规范章节,依旧以《阿里巴巴Java开发手册》为原型进行修正和完善。 MySQL规约 (一) 建表规约 (二) 索引规约 (三) SQL规约 (四) ORM规约 (一) 建表规约 1. 【强制】 表达是与否概念的字段,必须使用is_xxx的方式命名,数据类型是…

Windows修改为Mac的字体方法

一: 首先下载字体文件和修改器 Mac字体修改 https://www.aliyundrive.com/s/KKvcRNYkP5p 提取码: 6d3p 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。 二: 设置并修改字体 1:…

服务(第二十八篇)rsync

配置rsync源服务器: #建立/etc/rsyncd.conf 配置文件 vim /etc/rsyncd.conf #添加以下配置项 uid root gid root use chroot yes #禁锢在源目录 address 192.168.80.10 …

浅谈管网抢维修效率对产销差率的影响

1 背景 多年来,漏损治理工作一直围绕检漏、分区计量或压力管理等相关话题,却忽视了抢维修速度与质量对漏损治理成效的影响。实际上,不管是DMA分区计量,还是检漏,最终还是要通过抢维修来修复漏点达到控制漏损的目的。尽…

Vue 3中利用UseStorage轻松实现本地存储功能,释放数据持久化的力量

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: 三十天精通 Vue 3 文章目录 一、介绍1.1 什么是本地存储1.2 Vue 3中的UseStorage插件简介 二、…

第18章_MySQL8其它新特性

第18章_MySQL8其它新特性 1. MySQL8新特性概述 MySQL从5.7版本直接跳跃发布了8.0版本,可见这是一个令人兴奋的里程碑版本。MySQL 8版本在功能上做了显著的改进与增强,开发者对MySQL的源代码进行了重构,最突出的一点是多MySQL Optimizer优化器…

MySQL-1-SQL语句的分类、MySQL命令、SQL查询语句

一、SQL语句的分类(任何一条sql语句以分号结尾;SQL语句不区分大小写) DQL(数据查询语言):查询语句,凡是select都是DQL。 DML(数据操作语言):insert、delete、…

Midjourney 介绍-AI绘画工具

《Midjourney》是一款2022年3月面世的AI绘画工具,创始人是David Holz。 它一款基于浏览器的在线应用程序,因此你无需安装任何软件,只需在浏览器中访问MidJourney的官方网站即可开始使用。 只要输入想到的文字,就能通过人工智能产出…

一文带你了解MySQL之基于成本的优化

前言 本文章收录在MySQL性能优化原理实战专栏,点击此处查看更多优质内容。 目录 一、什么是成本二、单表查询的成本2.1 准备数据2.2 基于成本的优化步骤2.3 基于索引统计数据的成本计算 三、连接查询的成本2.1 准备数据2.2 Condition filtering介绍2.3 多表连接的成…

『MySQL 实战 45 讲』16 - “order by” 是怎么工作的

“order by” 是怎么工作的 首先创建一个表 CREATE TABLE t ( id int(11) NOT NULL, city varchar(16) NOT NULL, name varchar(16) NOT NULL, age int(11) NOT NULL, addr varchar(128) DEFAULT NULL, PRIMARY KEY (id), KEY city (city) ) ENGINEInnoDB;全字段排序 在 cit…

正确甄别API、REST API、RESTful API和Web Service之间的异同

看到API你会想起什么?是接口、第三方调用、还是API文档?初看你可能会觉得这太熟悉了,这不是系统开发日常系列吗?但你仔细想一想,你会发现API的概念在你脑海里是如此的模糊。如何你通过搜索引擎检索API,你会…

目标检测数据预处理——部件截图,按一定比例进行外扩

本片是截图的篇的升级版本,简单版本的截图请参考根据目标框外扩一定比例进行截图(连带标签)。 对目标框(类别名称)进行分类,将同一类的目标框进行截图并分类保存在不同的文件夹中。 在本篇当中,…

Vue3中响应式Reactive的独特之处:它在哪些场景下胜出Ref?

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: 三十天精通 Vue 3 文章目录 一、Vue 3中响应式Reactive的独特之处1.1 引言1.2 Vue 3中的响应式…

算法leetcode|51. N 皇后(rust重拳出击)

文章目录 51. N 皇后:样例 1:样例 2:提示: 分析:题解:rust:go:c:python:java: 51. N 皇后: 按照国际象棋的规则,皇后可以…

详解c++STL—STL常用算法

目录 1、常用遍历算法 1.1、for_each 1.2、transform 2、常用查找算法 2.1、find 2.2、find_if 2.3、adjacent_find 2.4、binary_search 2.5、count 2.6、count_if 3、常用排序算法 3.1、sort 3.2、random_shuffle 3.3、merge 3.4、reverse 4、常用拷贝和替换算…

在MyBatis XML文件中处理特殊符号的方法,如“>”、“<”、“>=”、“<=”这些符号XML会报错如何处理

前言 在MyBatis的XML映射文件中,我们经常需要使用特殊符号,比如"大于"、"小于"、"大于等于"、"小于等于"等比较操作符。然而,这些符号在XML中具有特殊的含义,因此需要进行特殊处理&…

nginx缓存及rsync远程访问控制

nginx缓存功能 http{ proxy_cache_path /data/nginx/cache/levels1:2 keys_zonemy_cache:10m max_size10g inactive60m use_temp_pathoff; path强制参数,指定缓存文件的存放路径。 levels: 定义了缓存目录的层级。每层可以用1(最多16种选择,0-f)或2(最…

2023年认证杯SPSSPRO杯数学建模A题(第一阶段)碳板跑鞋全过程文档及程序

2023年认证杯SPSSPRO杯数学建模 A题 碳板跑鞋 原题再现: 在专业运动鞋上使用的碳板,也可被称为碳纤维增强环氧树脂材料,事实上是将碳纤维织成布,再浸入环氧树脂固化后形成的板材。它以较轻的重量达到了相当好的弹性和刚度。在上…

【jvm系列-13】jvm性能调优篇---参数设置以及日志分析

JVM系列整体栏目 内容链接地址【一】初识虚拟机与java虚拟机https://blog.csdn.net/zhenghuishengq/article/details/129544460【二】jvm的类加载子系统以及jclasslib的基本使用https://blog.csdn.net/zhenghuishengq/article/details/129610963【三】运行时私有区域之虚拟机栈…

【腾讯云FinOps Crane 集训营】让我看看还有谁没用过crane这个降本利器

近几年云原生概念的发展如雨后春笋,势如破竹,而devops和k8s(Kubernetes)两兄弟也搭上云原生的车先后火了起来 devops:如字面意思Development&Operations,它的理念是开发即运维,目的是消除开发者们与运维之间的隔阂…