TLS、对称/非对称加密、CA认证

1. SSL与TLS

SSL/TLS是一种密码通信框架,他是世界上使用最广泛的密码通信方法。SSL/TLS综合运用了密码学中的对称密码,消息认证码,公钥密码,数字签名,伪随机数生成器等,可以说是密码学中的集大成者。

TLS协议和SSL协议是一脉继承的,TLS是从SSL3.0的基础上发展而来,两者的关系如下:
请添加图片描述
TLS/SSL位于OSI七层模型中的会话层或表示层,是介于传输层与应用层之间的一种协议。
当前最常用的Https协议就是由 Http + TLS 加密结合的协议。

2. 密码学相关理论

加密:

数据每时每刻都在互联网中传输,从而实现各个终端对数据的获取需求。刚开始的时候数据都是明文传输的,每个TCP包中包裹着终端每次请求的数据。这种包被传输链路中某个节点监听后就会造成数据泄露,因此网景公司提出了SSL协议于Web的安全传输。

可以看到加密后传输协议隐藏为TLS,传输的内容变成了乱码。
服务器发送该加密报文,客户端解密后就可以得到原来的内容。

密钥:

数据的加密是通过密钥进行的,通过密钥,明文被加密成密文。密钥非为对称加密密钥和非对称加密密钥,这个在之后详细介绍。密钥为一段随机生成的数,通常以 .pem或者 .key文件保存,可以使用Openssl生成。
请添加图片描述

OpenSSL

openssl是一个开源密码学工具,可以生成密码、创建CA证书、加解密等,我们系统的加解密也是基于这个开源软件尽心开发的,openssl的基本指令如下:

//生成一个2048位的密钥
$ openssl genrsa -out server.key 2048 //根据私钥生成公钥
$ openssl req -new -key server.key -out server.csr -config csr.conf//使用CA证书对公钥进行认证
$ openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 10000 -extensions v3_ext -extfile csr.conf//使用pkcs12将公钥与私钥加密打包
$ openssl pkcs12 -export -out server.pfx -in server.crt -inkey server.key 

openssl的使用可以参考网上的文章:

OpenSSL的基本使用教程(一)_openssl lite使用教程-CSDN博客

3. 对称加密

对称加密是指加密解密都是使用同一个密钥。服务器使用该密钥进行加密,经过传输后客户端使用该密钥解密。该方式效率高,但存在安全隐患。
请添加图片描述

服务器在传输报文之前,首先需要将密钥以明文的方式传输给客户端,如果此时密钥被黑客得到,那么之后的所有密文都不具有加密效果。
请添加图片描述

为了解决这个问题,研究人员进一步提出了非对称加密。

4. 非对称加密

非对称加密具有一个密钥对,公钥和私钥,理论上来说公钥和私钥并不区分,便于区分将保存在本地的那个叫做私钥,将需要传输给对方的那个叫做公钥。

数据经过私钥加密后,只能由对应的公钥解密,同样数据经过公钥加密后,只能由对应的私钥解密。

那么只要客户端拥有服务器的公钥,通过公钥加密报文,服务器用自己的私钥解密就可以实现对传输过程的加密。

非对称加密的效率比较低,因此实际使用的场景并不多。

以Https为例,其传输的过程为:

1.服务器拥有公钥 cer1,私钥key1,客户端拥有对称加密钥匙 key2

2.服务器将 cer1 明文发送给客户端

3.客户端使用 cer1 对自己的 key2 进行加密,同时传输给服务器 key2+cer1

4.服务器使用key1对收到的 key2+cer1 进行解密,得到key2

5.之后服务器与客户端使用 key2 进行对称加密
请添加图片描述

该过程仍然存在风险,黑客可以通过中间人假冒向客户端发送自己的公钥,从而得到最后的对称密钥。
请添加图片描述

通过保证公钥的正确性即可检验出黑客假的公钥 cer2 ,因此提出了CA认证,只有经过CA认证的公钥才是安全的公钥。

5. CA证书与电子签名验证

请添加图片描述

为了保证公钥的正确性,防止黑客使用自己的公钥冒充服务器公钥截取客户端生成的对称密钥,使用CA机构对公钥进行签名,可通过CA证书验证来证明公钥的正确性。

CA机构是权威的第三方,机构本身具有自己的CA公钥与CA私钥,CA公钥是发给全体互联网成员的,可以将其称为CA证书。

服务器需要将自己的 公钥以及认证信息经过HASH加密后发改CA机构,CA机构使用CA私钥对提交的信息进行加密,这就得到了带有数字签名的数据。

在使用时使用CA公钥对带有数字签名的数据解密,得到经HASH后的数据,同时将公钥以及认证信息 经过HASH加密后与CA解密后的数据比对,验证电子签名的安全性。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【android开发-16】android中文件和sharedpreferences数据存储详解

1,文件读写方式的数据存储 下面是一个简单的示例,演示如何在Android中使用内部存储来保存和读取文件: 保存文件: try { String data "这是要保存的数据"; FileOutputStream fos openFileOutput("myFile"…

在微信小程序中如何改变默认打开的页面

在微信小程序中,在我们编写页面的时候,可能会在重新渲染的时候导致页面跳转到默认打开的页面上,为了提升用户的一个体验,我们可以设置一些内容来修改小程序默认打开的页面,提升开发者的开发体验。 当我们打开一个微信…

linux之buildroot(3)配置软件包

Linux之buildroot(3)配置软件包 Author:Onceday Date:2023年11月30日 漫漫长路,才刚刚开始… 全系列文章请查看专栏: buildroot编译框架_Once_day的博客-CSDN博客。 参考文档: Buildroot - Making Embedded Linux Easymdev.t…

陀螺仪LSM6DSV16X与AI集成(2)----姿态解算

陀螺仪LSM6DSV16X与AI集成.2--姿态解算 概述视频教学样品申请完整代码下载欧拉角万向节死锁四元数法姿态解算双环PI控制器偏航角陀螺仪解析代码上位机通讯加速度演示陀螺仪工作方式主程序演示 概述 LSM6DSV16X包含三轴陀螺仪与三轴加速度计。 姿态有多种数学表示方式&#xff…

go-fastfds部署心得

我是windows系统安装 Docker Desktop部署 docker run --name go-fastdfs(任意的一个名称) --privilegedtrue -t -p 3666:8080 -v /data/fasttdfs_data:/data -e GO_FASTDFS_DIR/data sjqzhang/go-fastdfs:lastest docker run:该命令用于运…

二手物品交易系统详细功能介绍

这是二手物品交易系统的详细功能介绍: 二手交易系统:该系统主要服务于二手交易市场,允许卖家发布二手商品信息,买家可以询价、购买支付,同时支持发布高价回收信息。多城市切换:用户可以切换到不同城市&…

LLM推理部署(四):一个用于训练、部署和评估基于大型语言模型的聊天机器人的开放平台FastChat

FastChat是用于对话机器人模型训练、部署、评估的开放平台。体验地址为:https://chat.lmsys.org/,该体验平台主要是为了收集人类的真实反馈,目前已经支持30多种大模型,已经收到500万的请求,收集了10万调人类对比大模型…

力扣题:字符的统计-12.2

力扣题-12.2 [力扣刷题攻略] Re:从零开始的力扣刷题生活 力扣题1:423. 从英文中重建数字 解题思想:有的单词通过一个字母就可以确定,依次确定即可 class Solution(object):def originalDigits(self, s):""":typ…

Linux部署HDFS集群

(一)VMware虚拟机中部署 ps、其中node1、node2、node3替换为自己相应节点的IP地址,或者host文件中配置过的主机名,或者看前置准备 或者查看前置准备:Linux部署HDFS集群前置准备 1.下载压缩包 https://www.apache.or…

STM32L051使用HAL库操作实例(13)- 读取IAQ-CORE-C传感器实例

目录 一、前言 二、传感器参数 三、STM32CubeMX配置(本文使用的STM32CubeMX版本为6.1.2)例程使用模拟I2C进行数据读取 1.MCU选型 2.使能时钟 3.时钟配置 4.GPIO口配置 四、配置STM32CubeMX生成工程文件 五、点击GENERATE CODE生成工程文件 六、…

IT外包服务内容有哪些?

在信息技术迅猛发展的今天,越来越多的企业为了提高效率、降低成本以及更专注于核心业务,选择将信息技术工作外包给专业的IT服务公司。IT外包包含很多不同的服务,以下是对主要服务内容的简要概述。 1. 网络建设与维护 网络是现代企业信息系统…

同调群的维度 和 同调群的秩

同调群的维度是指同调群中非零元素的最小阶数。与线性代数中对向量空间的维度的理解类似。对同调群,k维同调群的维度是k。 同调群的秩是指同调群中的自由部分的维度。同调群通常包含自由部分和挠部分。同调群的秩是指同调群中自由部分的维度。对同调群,…

Hadoop学习笔记(HDP)-Part.14 安装YARN+MR

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

【SpringCloud系列】@FeignClient微服务轻舞者

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

RocketMQ-核心编程模型

RocketMQ的消息模型 深入理解RocketMQ的消息模型 RocketMQ客户端基本流程 RocketMQ基于Maven提供了客户端的核心依赖&#xff1a; <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-client</artifactId><version&…

unity学习笔记19

一、角色动画的使用练习 从资源商店导入的动画资源&#xff08;Character Pack: Free Sample&#xff09;中将资源中的角色创建在场景里&#xff0c;现在场景里存在的角色并没有任何动画。 在资源中找到Animations文件夹&#xff0c;在这个文件有很多模型文件&#xff08;.FBX…

什么牌子的开放式耳机好?开放式耳机选购指南来了!

在当今音频科技不断演进的时代&#xff0c;开放式耳机作为一种受欢迎的音频设备&#xff0c;吸引着越来越多的消费者&#xff0c;与封闭式耳机相比&#xff0c;开放式耳机在音质表现和舒适度上都具有独特的优势&#xff0c;在众多品牌和型号中选择一款满足个人需求的开放式耳机…

【UGUI】Unity为下拉菜单添加选项(DropDown)

要想控制谁就把谁拿到代码里-获取组件-修改组件参数&#xff08;变量或者方法&#xff09; 代码示例&#xff1a; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using TMPro;public class UIcontrol : MonoBehavi…

Leetcod面试经典150题刷题记录——数组 / 字符串篇

数组 / 字符串篇 1. 合并两个有序数组Python3排序法双指针法 2. 移除元素Python3 3. 删除有序数组中的重复元素Python3 7. 买卖股票的最佳时机Python3 8. 买卖股票的最佳时机ⅡPython3贪心法动态规划法 11. H 指数Python3排序法计数排序法二分查找 有个技巧&#xff0c;若想熟悉…

linux磁盘挂载

一、磁盘查看与分区挂载 查看未挂载的磁盘 sudo fdisk -l对上述未挂载的磁盘进行分区和格式化 sudo fdisk /dev/sdd输入g生成分区表&#xff0c; mklabel gpt (创建分区表) #与上一步重复了&#xff0c;可以省略 mkpart primary 1 -1 p (输出结果) q (离开菜单)分好区之后可…