对称加密与非对称加密、证书、SSL/TLS握手过程

news2024/9/27 7:20:46

文章目录

  • 对称加密(Symmetrical Encryption):
  • 非对称加密(Asymmetric Encryption):
  • 区别:
  • SSL证书
  • TLS1.2握手过程

对称加密(Symmetrical Encryption):

对称加密,是一种既简单速度又快的加密方式,加密与解密使用的都是同一个密钥,别名又叫做:单密钥加密;对称加密有很多公开算法,并且因为它效率很高,所以适用于加密大量数据的场合;但其密钥的传输过程是不安全的,并且容易被破解,密钥管理起来也相对麻烦。

优点:

  • (1)对称加密算法的优点是算法公开。
  • (2)计算量小。
  • (3)加密速度快。
  • (4)加密效率高。

缺点:

  • 对称加密算法的缺点是在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。
  • 其次如果一方的秘钥被泄露,那么加密信息也就不安全了。
  • 另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的独一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。

算法:

  • 在对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。

非对称加密(Asymmetric Encryption):

非对称加密算法需要两个密钥来进行加密和解密,这两个密钥是公开密钥(public key,简称公钥)和私有密钥(private
key,简称私钥),如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。加密密钥是公开的,密钥的分配和管理就很简单,而且能够很容易地实现数字签名,因此最适合于电子商务应用的需要;但是如果对大数量进行操作,计算量特别大,速度远远比不上对称加密。

一图简单了解非对称加密:最后利用会话秘钥(棕色)给数据进行加密
在这里插入图片描述

优点:

  • (1)密钥分配简单。
  • (2)密钥的保存量少。
  • (3)可以满足互不相识的人之间进行私人谈话时的保密性要求。
  • (4)可以完成数字签名和数字鉴别。

缺点:

  • (1)公钥密码是对大数进行操作,计算量特别浩大,速度远比不上私钥密码体制。
  • (2)公钥密码中要将相当一部分密码信息予以公布,势必对系统产生影响。
  • (3)在公钥密码中,若公钥文件被更改,则公钥被攻破。

算法:

  • 在非对称加密算法中常用的算法又:RSA、DSA、ECDSA等。

区别:

  • (1)对称加密中加密和解密使用的秘钥是同一个;非对称加密中采用两个密钥,一般使用公钥进行加密,私钥进行解密。
  • (2)对称加密解密的速度比较快,非对称加密和解密花费的时间长、速度相对较慢。
  • (3)对称加密的安全性相对较低,非对称加密的安全性较高。

SSL证书

  • 保存在源服务器的数据文件,包含公钥和私钥
  • SSL证书是数字证书的一种,因为配置在服务器上,也称为SSL服务器证书。
  • SSL 证书 就是遵守 SSL协议,由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能。

TLS1.2握手过程

  • SSL由从前的网景公司开发,有1,2,3三个版本,但现在只使用版本3
  • SSL是TLS的前身,TLS是SSL的标准化后的产物,有1.0 1.1 1.2三个版本,默认使用1.0

三次握手成功后进行SSL握手
在这里插入图片描述

  • Client Hello(TLS版本,加密套件,Client随机数):Client首先发送Hello,告诉Server支持的TLS版本以及支持的加密套件,再把Client随机数发给Server。

  • Server Hello:Server收到Client Hello也给Client发送Hello,并告知Server确认支持的TLS版本以及选择的加密算法。同样,也会把Server随机数发给Client。

  • Certificate:Server接着再发送自己的证书给Client,这样Client浏览器就可以对照自己的证书信任列表来确认这个服务器是否可信。

  • Server Key Exchange:发送完证书,Server就把公钥发送给Client。

  • Client Key Exchange, Change Cipher Spec, Encrypted Handshake Message:Client用刚刚收到的公钥加密pre-master预主密钥,并把这个加密后的随机数发送给Server。Server收到加密后的预主密钥,会用自己的私钥进行解密从而得到预主密钥。

  • Change Cipher Spec: 这一步就是告诉服务器往后的数据就用商议好的算法和密钥来加密。

  • Encrypted Handshake Message: 表示Client这边的TLS协商已经OK了。同时服务器也会发送这个,表示也TLS准备完成【此时完成的握手,可以进行数据加密交换】

Client会用Client随机数、Server随机数和预主密钥(也就是三个随机数)计算出会话密钥。Server也同样计算出和Client一样的会话密钥。之后,Client和Server就都只使用这个会话密钥对数据进行加密。

  • 服务器和客户端采用非对称加解密方式交换对称加密的密钥(随机数3),保证这个对称密钥不泄露,交换成功后就采用对称加密方式。

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

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

相关文章

大数据之PySpark的RDD介绍

文章目录 前言一、RDD简介二、RDD的特性三、RDD的特点总结 前言 #博学谷IT学习技术支持# 之前的文章主要介绍Spark基础知识,例如集群角色、Spark集群运行流程等,接下来会进一步讨论Spark相对核心的知识,让我们拭目以待,同时也期待…

Linux安装Harbor亲测成功

Harbor简介 Harbor 是为企业用户设计的容器镜像仓库开源项目,包括了权限管理(RBAC)、LDAP、审计、安全漏洞扫描、镜像验真、管理界面、自我注册、HA 等企业必需的功能,同时针对中国用户的特点,设计镜像复制和中文支持等功能。 虽然Docker官方…

Android framework学习指南之Launcher启动过程原理分析

前言 Launcher是一个用来显示系统中已经安装的应用程序的应用程序,Launcher 在启动过程中会请求PackageManagerService 返回系统中已经安装的应用程序的信息,并将这些信息封装成一个快捷图标列表显示在系统屏幕上,这样用户可以通过点击这些快…

Flask框架的入门使用

Flask框架的入门使用 Flask框架Flask概述常用扩展包 Flask的基本使用环境准备创建helloworld.py文件启动运行访问 参数配置Flask对象配置应用程序配置读取配置信息加载配置信息配置对象与环境变量结合 app.run参数 开发服务器启动方式在命令行中运行Python程序中手动启动Pychar…

2.2.3开机流程中的BIOS与UEFI开机检测程序

操作系统的系统软件产生,是为了计算机所有硬件系统的资源合理分配。操作系统会控制所有的硬件并且提供核心功能,因此我们的计算机就能够认识硬盘内的文件系统,并且进一步的读取硬盘内的软件文件与执行该软件来达成各项软件的执行目的。 基本上…

【Redis】封装Redis缓存工具解决缓存穿透与缓存击穿问题

基于StringRedisTemplate封装一个缓存工具,主要有一下几个方法 方法1:将任意Java对象序列化为json并存储在String的指定key中且设置TTL 方法2:将任意Java对象序列化为json并存储在String的指定key中,并可以设置逻辑过期时间&…

【python可视化】常用数据类型

🙋‍ 哈喽大家好,本次是python数据分析、挖掘与可视化专栏第二期 ⭐本期内容:常用数据类型 🏆系列专栏:Python数据分析、挖掘与可视化 👍欢迎大佬指正,一起学习,一起加油&#xff01…

【Frida-实战】EA游戏平台的文件监控(PsExec.exe提权)

▒ 目录 ▒ 🛫 问题描述环境 1️⃣ 代码编写开源代码搜索自己撸代码procexp确定句柄对应的文件名并过滤 2️⃣ PsExec.exe提权定位找不到EABackgroundService.exe的问题 PsExec.exe提权PsExec.exe原理 🛬 结论📖 参考资料 🛫 问题…

4年Android开发,面试通过全靠狂刷这份面试题,从11K涨到25K+(内含答案)

在博主认为,对于Android面试以及进阶的最佳学习方法莫过于刷题博客书籍总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现面试并不难,其次就是在刷题的过程中有没有去思考&am…

【Python】序列类型③-集合

文章目录 1.集合(set)简介2.集合的定义3.集合的遍历4.集合的常用方法 1.集合(set)简介 集合是一种无序可变的容器对象 集合最大的特点:同一个集合内元素是不允许有重复的,因此集合自带"去重"效果 2.集合的定义 集合的定义有两种方式: 使用{}进行定义,这种方式不能定…

【TCP 重传、滑动窗口、流量控制、拥塞控制】

文章目录 重传机制超时重传快速重传SACK方法Duplicate SACK 滑动窗口流量控制那操作系统的缓冲区,是如何影响发送窗口和接收窗口的呢?窗口关闭 拥塞控制慢启动拥塞避免拥塞发生快速恢复 重传机制 TCP 实现可靠传输的方式之一,是通过序列号与…

chatgpt可以降重论文吗-chatgpt降重论文软件

chatgpt可以降重论文吗 ChatGPT是一种自然语言处理技术,可以生成符合指定条件的文本。因此,理论上可以使用ChatGPT来降重论文。但是,需要注意以下几点: 是否符合学术道德要求:学术论文的降重需要严格遵守学术道德准则…

mfc140u.dll丢失怎么解决?,哪种方法更简单?

如果您在运行 Windows 操作系统时遇到了“mfc140u.dll 丢失”或“找不到 mfc140u.dll”等错误提示,那么这意味着您的计算机遗失了该文件。mfc140u.dll 文件是 Microsoft Visual C 的一部分,是支持应用程序运行所必需的。无论是什么原因导致了 mfc140u.dl…

PointNetGPD<论文>

摘要 提出了一种端到端的抓取位置预测模型,能够从点云中估计出机器人的抓取位姿。网络以原始点云作为输入,能够捕捉到抓取器闭合区域点云的复杂几何结构,即使这些点云很稀疏。 PointNetGPD是一种轻量级的网络模型,能够处理抓取器…

手把手教你在Centos7.6系统安装mysql5.7

文章目录 1 查看linux系统版本2 官网获取文件3 wget下载4 安装yum源5 查看是否正常工作6 安装mysql服务6.1出错6.2解决方法 7 检查配置文件8 启动mysql服务9 root第一次登录10 其他设置10.1 修改密码10.2 开启开机自启动10.3 配置my.conf 1 查看linux系统版本 需要安装对应系统…

Docker安装、Docker基本操作

一、Dokcer安装 1.安装 # 1、yum 包更新到最新,需要几分钟时间(注意:也可以直接跨过) sudo yum update # 2、作用:安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的 sudo yum install -y yum-util…

从文字到语义:文本分词和词性标注的原理与实现

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

个人博客系统调试详细过程

系统功能的详细说明和源代码见以下链接:https://blog.csdn.net/shooter7/article/details/121180333相关的源码数据库文件、软件安装包可以联系博主koukou(壹壹23七2五六98) 调试过程如下: 文章目录 调试过程如下:一、数据库安装二、sql数据文件的导入三…

java调用cmd命令

1.首先,我们需要了解一下 java是如何调用 cmd的: 6.在实际的开发中,我们有可能会遇到 java调用 cmd命令的情况: 7.对于一些特定的环境下,例如在嵌入式系统中,那么我们可以使用下面这种方式来调用 cmd命令&a…