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

news/2024/10/25 11:21:15/

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.ppmy.cn/news/1249878.html

相关文章

大数据-之LibrA数据库系统告警处理(ALM-37015 Gaussdb进程可用文件句柄资源不足)

告警解释 操作系统环境文件句柄不足时,产生该告警。 告警属性 告警ID 告警级别 可自动清除 37015 严重 是 告警参数 参数名称 参数含义 ServiceName 产生告警的服务名称 RoleName 产生告警的角色名称 HostName 产生告警的主机名 Instance 产生告警…

OD机考真题搜集:矩阵中非1的元素个数

题目 存在一个m*n的二维数组,其成员取值范围为0,1,2。其中值为1的元素具备同化特性,每经过1S,将上下左右值为0的元素同化为1。而值为2的元素,免疫同化。将数组所有成员随机初始化为0或2,再将矩阵的[0,0]元素修改成1,在经过足够长的时间后求矩阵中有多少个元素是0或2(即…

WebSocket 接口测试:打通前端与后端的通信之路!

什么是 WebSocket? WebSocket 是一种基于在单个 TCP 连接上进行全双工通信的协议,解决了HTTP协议不适用于实时通信的缺点,相较于 HTTP 协议,WebSocket 协议实现了持久化网络通信,可以实现客户端和服务端的长连接,能够…

渗透测试考核(靶机1)

信息收集 主机发现 nbtscan -r 172.16.17.0/24 发现在局域网内,有两台主机名字比较可疑,177和134,猜测其为目标主机,其余的应该是局域网内的其他用户,因为其主机名字比较显眼,有姓名的拼音和笔记本电脑的…

七天.NET 8操作SQLite入门到实战 - 第四天EasySQLite前后端项目框架搭建

前言 今天的主要任务是快速下载并安装.NET 8 SDK,搭建EasySQLite的前后端框架。 .NET 8 介绍 .NET 8 是 .NET 7 的后继版本。 它将作为长期支持 (LTS) 版本得到三年的支持。 使用技术栈和开发环境 咱们的.NET 8操作SQLite入门到实战教程主要使用技术栈为如下所示…

MATLAB实战 | APP设计

01、应用实战 【例1】生成一个用于观察视点仰角和坐标轴着色方式对三维图形显示效果影响的App,界面如图1所示。界面右上部的列表框用于选择绘图数据、切换按钮组用于选择绘图方法,中间的旋钮用于设置视点方位角和仰角,右下部的分档旋钮用于设…

Spring Boot项目Service类单元测试自动生成

在Spring Boot项目中,对Service类进行单元测试对于开发工程师而言具有重大意义和作用: 验证业务逻辑的正确性和完整性 核心业务逻辑的准确实现:Service类通常包含核心业务逻辑。单元测试确保这些逻辑被正确实现,满足业务需求。处…

stm32 can滤波器接收指定的ID

CAN 文章目录 CAN一、配置1、对扩展数据帧进行过滤:(只接收扩展数据帧)CAN_FilterIdHigh:CAN_FilterIdLow:2、对扩展远程帧过滤:(只接收扩展远程帧)3、对标准远程帧过滤:(只接收标准远程帧)4、对标准数据帧过滤:(只接收标准数据帧)5、对扩展帧进行过滤:(…