PKI - 02 对称与非对称密钥算法

文章目录

  • 概述
  • 对称密钥算法
    • 凯撒密码
    • 优点
    • 缺点
  • 非对称密钥算法
    • 工作原理
    • 优点
    • 缺点
  • 非对称密钥的的用途一: 一种简单而优雅的“混合加密”解决方案
    • 加密
    • 解密
  • 非对称密钥的的用途二: 数字签名
    • 工作原理
    • 工作示意图
  • 扩展 DSA vs RSA

在这里插入图片描述


概述

对称密钥算法和非对称密钥算法是两种常见的加密技术,它们在加密和解密数据时采用不同的方法。

  1. 对称密钥算法
    • 对称密钥算法使用相同的密钥来加密和解密数据。
    • 加密者和解密者必须共享相同的密钥。
    • 加密速度快,适合大量数据的加密和解密。
    • 典型的对称密钥算法包括DES、3DES、AES等。
    • 缺点是密钥管理困难,需要安全地共享密钥,并且在传输过程中可能会被窃取。

  1. 非对称密钥算法
    • 非对称密钥算法使用一对密钥,分别是公钥和私钥,用于加密和解密数据。
    • 公钥是公开的,任何人都可以使用它来加密数据;私钥是保密的,只有拥有者才能解密数据。
    • 加密者使用接收者的公钥来加密数据,接收者使用自己的私钥来解密数据。
    • 非对称密钥算法还可以用于数字签名和密钥交换等安全操作。
    • 典型的非对称密钥算法包括RSA、DSA、ECC等。
    • 优点是密钥管理相对简单,不需要在传输过程中共享私钥,但加密和解密速度较慢。

总的来说,对称密钥算法适合加密大量数据,但需要安全地管理密钥;而非对称密钥算法相对更安全,但速度较慢,适合用于安全通信和数字签名等场景。通常,在实际应用中,对称密钥算法和非对称密钥算法会结合使用,以发挥各自的优势。


对称密钥算法

在这里插入图片描述

凯撒密码

凯撒密码是一种简单的替换加密技术,也称为移位密码。它是古典密码学中最早的密码之一,得名于古罗马军队领袖凯撒·尤利乌斯(Julius Caesar),据说他曾经使用过这种加密方法。

凯撒密码的原理很简单:它是一种替换密码,通过将字母按照一个固定的数目进行左移或右移来加密消息。例如,如果采用的是向右移动三个字母的方法,那么原文中的每个字母都被替换成它后面第三个字母。

举个例子,假设我们要加密的消息是 “HELLO”,并且采用的是向右移动三个字母的方法。那么加密后的消息就变成了 “KHOOR”。这是因为 “H” 向右移动三个字母后变成 “K”, “E” 向右移动三个字母后变成 “H”,以此类推。

解密凯撒密码也很简单,只要知道加密时使用的移位数,就可以将每个字母向左移动相同数量的字母来恢复原文。

尽管凯撒密码很容易理解和实现,但由于它的简单性,它并不安全,容易受到字母频率分析等攻击。因此,现代加密通常不再使用凯撒密码,而是使用更加复杂的加密算法来保护数据的安全。


优点

对称密钥算法的优点主要包括以下几个方面:

  1. 速度快:对称密钥算法通常执行速度非常快,因为它们的加密和解密过程都使用同一个密钥。相比于非对称密钥算法,对称密钥算法在处理大量数据时更加高效。

  2. 安全:尽管对称密钥算法在密钥管理方面存在挑战(例如安全地共享密钥),但在合适的环境中,它们可以提供足够的安全性。合理选择密钥长度、使用安全的算法以及正确实施密钥管理策略可以确保对称密钥算法的安全性。

  3. 紧凑:对称密钥算法生成的密文通常比非对称密钥算法生成的密文更紧凑,因为它们不需要存储公钥和签名等额外信息。这使得对称密钥算法在网络通信和存储方面更加高效。

综上所述,对称密钥算法具有快速、安全和紧凑的优点,使其成为许多加密应用中的首选算法。然而,仍需谨慎使用并采取适当的安全措施,以确保密钥的安全性和算法的适用性。


缺点

对称密钥算法虽然具有许多优点,但也存在一些缺点:

  1. 密钥传输安全性问题:在对称密钥算法中,密钥需要在通信的两端共享。然而,这种密钥共享过程可能会受到中间人攻击或窃听的威胁,导致密钥被泄露或篡改,进而危及通信的安全性。

  2. 密钥管理困难:随着参与通信的参与者数量增加,需要的密钥数量呈指数级增长。密钥的管理和分发变得更加复杂,尤其是在大规模网络中,这可能会导致密钥管理问题变得非常困难。

  3. 密钥存储问题:由于需要大量的密钥用于不同的通信对,因此密钥的存储成为一个重要的问题。对大量密钥的安全存储和管理需要耗费大量资源和精力,容易成为安全漏洞的来源。

  4. 缺乏数字签名和不可否认性支持:对称密钥算法通常不支持数字签名和不可否认性,这意味着它们不能提供验证消息来源的功能,也不能防止发送者否认发送过消息的能力。这在某些安全应用场景下可能是一个限制因素。

综上所述,尽管对称密钥算法具有许多优点,但它们也存在一些显著的缺点,特别是在密钥管理和安全性方面的挑战。在选择加密方案时,需要综合考虑这些因素,并根据具体需求选择合适的算法和措施来确保通信的安全性。


非对称密钥算法

在这里插入图片描述

非对称密钥算法的主流协议为RSA,需要每一个参与者产生一对密钥。共享公钥到服务器,严格保障私钥的安全性。根据这种操作的特点,也被称作公共密钥系统。

工作原理

在这里插入图片描述
想象一下,你有一把神奇的锁,这个锁有两把钥匙:一把是公钥,一把是私钥。这两把钥匙是特殊设计的,只有一把钥匙可以打开锁,而另一把钥匙只能锁上锁,但无法打开。

现在,假设你想向你的朋友发送一封信,但你不想别人偷看你的信内容。你可以把你的锁放在信封上,然后把信封寄给你的朋友。你的朋友收到了信封后,只能用你的公钥(锁)来锁上信封,而无法打开。然后,他将这个信封寄回给你。当你收到回信时,你可以用你的私钥(另一把钥匙)来打开信封,读取里面的内容。

这就是非对称密钥算法的工作原理:发送方使用接收方的公钥加密数据,接收方使用自己的私钥解密数据。这样,即使数据在传输过程中被窃听,也只有接收方能够解密并阅读数据,因为私钥是只有接收方知道的。

这种方式保证了数据的安全传输,同时也确保了数据的完整性和真实性。


优点

您列出的非对称密钥的优点是正确的,让我更详细地解释一下:

  1. 安全性高:非对称密钥算法基于数学上的难解问题,如大素数的乘积分解(RSA)或离散对数问题(DSA),因此具有较高的安全性。攻击者很难通过破解密钥来获取数据或伪造签名。

  2. 密钥分发安全:由于非对称密钥的分发不需要在传输过程中交换私钥,只需要在安全通道中传输公钥,因此更安全。即使公钥被窃听,攻击者也无法获取私钥或篡改数据。

  3. 密钥数量与参与者数量相同:每个参与者只需要生成一对密钥(公钥和私钥),并将公钥发布给其他参与者。这样可以简化密钥管理,不像对称密钥算法那样会出现密钥数量急剧膨胀的问题。

  4. 无需预先建立信任关系:在使用非对称密钥算法进行通信时,不需要事先建立信任关系。参与者只需使用对方的公钥加密数据或验证签名即可,不需要担心安全性问题。

  5. 支持数字签名和不可否认性:非对称密钥算法支持数字签名,发送者可以使用私钥对数据进行签名,接收者使用发送者的公钥验证签名的有效性。这确保了数据的完整性和真实性,同时也提供了不可否认性,即发送方无法否认发送过数据的事实。

综上所述,非对称密钥算法具有高安全性、安全的密钥分发、简化的密钥管理、不需要预先建立信任关系以及支持数字签名和不可否认性等优点,使其成为安全通信和数字签名中的重要工具。


缺点

非对称密钥算法虽然具有许多优点,但也存在一些缺点,其中包括:

  1. 加密速度较慢:相比对称密钥算法,非对称密钥算法的加密和解密速度通常较慢。这是因为非对称密钥算法通常使用更复杂的数学运算,例如大数乘法、离散对数等,导致计算量较大,速度较慢。

  2. 密文长度变长:非对称密钥算法加密后的密文长度通常会比原始数据长度长。这是因为非对称密钥算法的加密过程中涉及到公钥和私钥的运算,导致生成的密文长度较长。相比之下,对称密钥算法生成的密文长度通常较短。

这些缺点使得非对称密钥算法在某些应用场景下可能不太适合,特别是在需要高效加密和解密大量数据的情况下。因此,在选择加密算法时,需要根据具体的需求和应用场景综合考虑算法的优缺点,并选择合适的算法来确保通信的安全性和效率。


非对称密钥的的用途一: 一种简单而优雅的“混合加密”解决方案

对称密钥算法加密大块数据(因为速度快) , 用非对称密钥算法加密密钥(因为安全)。
在这里插入图片描述

该方案是一种常见的组合使用对称密钥和非对称密钥算法的方式,被称为“混合加密”。

具体操作步骤如下:

  1. 对称密钥加密大块数据

    • 首先,使用对称密钥算法(如AES/DES/DES3)生成一个随机的对称密钥。
    • 然后,使用这个随机生成的对称密钥来加密要传输的大块数据。对称密钥算法由于速度快,适合加密大块数据。
  2. 非对称密钥加密对称密钥

    • 接下来,选择接收方的公钥进行加密。这个公钥是公开的,任何人都可以获得。
    • 将随机生成的对称密钥使用接收方的公钥加密,得到密文。
    • 将密文发送给接收方。
  3. 接收方解密

    • 接收方收到密文后,使用自己的私钥解密得到对称密钥。
    • 然后,使用解密得到的对称密钥对加密的大块数据进行解密,得到原始数据。

这种混合加密方案兼顾了对称密钥算法的速度和非对称密钥算法的安全性。对称密钥算法用于加密大块数据,因为其速度快;而非对称密钥算法用于加密对称密钥,以确保密钥的安全传输。这样既能保证数据的安全传输,又能提高效率。


加密

在这里插入图片描述

对称密钥加密大块数据

  • 首先,使用DES对称密钥算法生成一个随机的对称密钥。
  • 然后,使用这个随机生成的对称密钥来加密要传输的大块数据。

非对称密钥加密对称密钥

  • 接下来,选择接收方的公钥进行加密。这个公钥是公开的,任何人都可以获得。
  • 将随机生成的对称密钥使用接收方的公钥加密,得到密文。
  • 将密文和数据一起打包发送给接收方。

解密

在这里插入图片描述

接收方解密

  • 接收方收到密文后,使用自己的私钥解密得到对称密钥。
  • 然后,使用解密得到的对称密钥对加密的大块数据进行解密,得到原始数据。

在这里插入图片描述


非对称密钥的的用途二: 数字签名

非对称密钥的另一个重要用途是数字签名。

数字签名就像是一个人在文件上盖上他的个人印章一样,但是更加安全和可靠。它使用了一对非常特殊的钥匙,一个是公开的(公钥),一个是私密的(私钥)。

想象一下,你有一个神奇的钥匙,这个钥匙可以把你的名字(数字签名)刻在文件上。但是这个钥匙有两个部分,一个是公开的,所有人都能看到(公钥),另一个是只有你自己知道的(私钥)。

当你想给某个文件签名时,你使用你的私钥对文件进行加密,这样就生成了你的数字签名。只有拥有你的公钥的人才能解密你的数字签名,从而确认这个签名是你所创建的,没有被伪造或篡改。

在这里插入图片描述


工作原理

数字签名是一种用于验证数据来源和完整性的技术。它类似于手写签名,但使用了密码学的技术,可以提供更高的安全性和可靠性。

下面是数字签名的基本原理:

  1. 签名过程

    • 发送方使用自己的私钥对数据进行加密(签名)。这个过程类似于使用私章在文件上盖章,表明文件的真实性和所有权。
    • 然后,发送方将加密后的数据(签名)和原始数据一起发送给接收方。
  2. 验证过程

    • 接收方收到数据后,会使用发送方的公钥对签名进行解密。如果成功解密,说明这个签名是由发送方的私钥加密的,即确实是发送方签署的。
    • 接收方再对原始数据进行一些计算,以确保数据的完整性和真实性。如果计算得到的结果与签名匹配,那么数据就可以被验证为是由发送方签署的,且在传输过程中未被篡改。

通过数字签名,接收方可以验证数据的来源和完整性,确保数据的安全性和可靠性。这种技术在数字证书、电子合同、电子商务等领域广泛应用,是保障网络通信安全的重要手段之一。


工作示意图

在这里插入图片描述


扩展 DSA vs RSA

DSA(Digital Signature Algorithm,数字签名算法)和RSA(Rivest-Shamir-Adleman)都是常见的非对称加密算法,用于数字签名和加密通信。

  1. RSA

    • RSA是由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出的,是目前最常用的非对称加密算法之一。
    • RSA算法基于大整数的因子分解问题,其安全性基于两个大质数相乘产生的数难以分解为质数的乘积。
    • RSA算法可以用于加密、解密、数字签名和密钥交换等方面。在数字签名中,发送者使用私钥对消息进行签名,接收者使用发送者的公钥验证签名的有效性。
    • RSA算法的主要缺点是其计算复杂度较高,尤其是在加密和解密大量数据时。
  2. DSA

    • DSA是一种数字签名算法,由美国国家安全局(NSA)于1991年提出。
    • DSA算法基于离散对数问题,其安全性基于计算离散对数的困难性。
    • DSA算法专门设计用于数字签名,不能用于加密和解密数据。发送者使用私钥对消息进行签名,接收者使用发送者的公钥验证签名的有效性。
    • 与RSA相比,DSA算法在数字签名方面效率更高,但只能用于数字签名,不能用于加密通信。

总的来说,RSA和DSA都是非对称加密算法,用于数字签名和加密通信。RSA适用于加密、解密、数字签名和密钥交换等多种应用场景,而DSA专门设计用于数字签名。选择适合的算法取决于具体的安全需求和应用场景。

RSA 收取专利费,美国因此搞了个DSA。 RSA专利过期以后,美国也改为使用RSA。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

jvm体系结构

一、Jvm 的介绍 1、JVM体系结构 2、JVM运行时数据区 3、JVM内存模型 JVM运行时内存 共享内存区 线程内存区 3.1、共享内存区 共享内存区 持久带(方法区 其他) 堆(Old Space Young Space(den S0 S1)) 持久代: JVM用持久带(Permanent Space&…

使用CICFlowMeter 实现对pcap文件的特征提取【教程】

使用CICFlowMeter 实现对pcap文件的特征提取【教程】 针对现有的关于CICFlowMeter 的使用教程不够全面,一些细节没有展示,我将结合网络上的相关资料和实际的经历,提供一些经验和建议。 configuration information --------------- Windows…

污水处理设备数据分析:潜在市场容量高达1000亿

随着国家可再生能源激励政策和中长期发展规划的不断贯彻落实,一些大型能源投资公司、房地产开发商、装备制造龙头企业和物流运营商瞄准了污水处理设备产业的巨大潜在市场,纷纷加入到了污水处理设备建设的行列。我国污水处理设备行业发展重点已从农户自用…

时间序列之趋势

什么是趋势? 在时间序列中,趋势成分表示序列均值持续的、长期的变化。趋势是一个序列中移动最慢的部分,但却代表最重要的时间尺度。在产品销售的时间序列中,随着越来越多的人逐年了解该产品,市场扩张就可能会产生增长…

JavaScript ATM取款机

①:循环的时候,需要反复提示输入框,所以提示框写到循环里面 ②:退出的条件是用户输入了 4,如果是4,则结束循环,不在弹窗 ③:提前准备一个金额预先存储一个数额 ④:取钱…

【敏感词】敏感词检测功能v1.1.0版本正式上线

背景 为了解决系统发布信息时人工审核成本高的问题,开发一个敏感词检测系统。该系统能够自动检测用户输入的内容中是否包含敏感词,从而减少不合规内容的发布,降低人工审核成本。通过实施这个系统,可以提高信息发布的效率和准确性…

文献速递:肿瘤分割---- 优先注意网络,用于医学图像中多病变分割

文献速递:肿瘤分割---- 优先注意网络,用于医学图像中多病变分割 Title 题目 Prior Attention Network for Multi-Lesion Segmentation in Medical Images 优先注意网络,用于医学图像中多病变分割 Abstract 摘要 —The accurate segmen…

【C++】win11,OpenCV安装教程(VS2022)

1.下载 首先进入官网,下载对应的安装包,苹果系统就选IOS pack,微软系统就选Windows 下载地址:Releases - OpenCV 不方便外网下载的话可以下载我分享的百度网盘资源: 链接:https://pan.baidu.com/s/1lV7l…

学生信息|基于Springboot的学生信息管理系统设计与实现(源码+数据库+文档)

学生信息管理系统目录 目录 基于Springboot的学生信息管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员登录 2、课程管理 3、公告信息管理 4、公告类型管理 四、数据库设计 1、实体ER图 2、具体的表设计如下所示: 五、核心代码 六、…

阿里资深摸鱼测试工程师推荐——Web自动化测试学会这一招,下班早一小时

前 言 大家都知道,我们在通过 Selenium 执行 Web 自动化测试时,每次都需要启动/关闭浏览器,如果是多线程执行还会同时打开多个,比较影响工作的正常进行。那有没有办法可以不用让浏览器的自动化执行干扰我们的工作呢? …

seatunnel数据集成(一)简介与安装

seatunnel数据集成(一)简介与安装seatunnel数据集成(二)数据同步seatunnel数据集成(三)多表同步seatunnel数据集成(四)连接器使用 1、背景 About Seatunnel | Apache SeaTunnel …

【Spring基础】从0开始学习Spring(2)

前言 在上篇文章,我已经讲了Spring中最核心的知识点:IoC(控制反转)以及DI(依赖注入)。这篇文章,我将讲一下关于Spring框架中的其它比较琐碎但是又还是挺重要的知识点,因此&#xff…

【类与对象(中)】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 1.类的6个默认成员函数 2. 构造函数 2.1 概念 2.2 特性 3.析构函数 3.1 概念 3.2 特性 4. 拷贝构造函数 4.1 概念 4.2 特征 引用 常引用 5.赋值运算符重载 5.1…

Excel——高级筛选匹配条件提取数据

一、筛选多条件 Q:筛选多个条件,并将筛选出的内容复制到其他区域 点击任意一个单元格 点击【数据】——【筛选】——【高级筛选】 选择【将筛选结果复制到其他位置】——在【列表区域】 鼠标选择对应的区域位置,条件区域一定要单独写出来&a…

DevOps落地笔记-19|响应速度:天下武功,唯快不破

上一课时介绍一个团队应该具备什么样的能力,以及如何度量团队的交付效能。事实上,团队的能力在一定程度上反映了软件的交付能力;而响应速度则是企业能否快速占领市场的重要因素。试想一下,有两个企业都发现了市场上的机会&#xf…

【数据结构和算法】--- 基于c语言排序算法的实现(1)

目录 一、排序的概念及其应用1.1排序的概念1.2 排序的应用1.3 常见的排序算法 二、插入排序2.1直接插入排序2.2 希尔排序2.2.1 预排序2.2.2 缩小gap2.2.3 小结 三、选择排序3.1 直接选择排序3.2 堆排序 一、排序的概念及其应用 1.1排序的概念 排序: 所谓排序&…

作业2.6

一、填空题 1、一个类的头文件如下所示&#xff0c;num初始化值为5&#xff0c;程序产生对象T&#xff0c;且修改num为10&#xff0c;并使用show()函数输出num的值10。 #include <iostream.h> class Test { private: static int num; public: Test(int); void sh…

Flink SQL Client 安装各类 Connector、Format 组件的方法汇总(持续更新中....)

博主历时三年精心创作的《大数据平台架构与原型实现&#xff1a;数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行&#xff0c;点击《重磅推荐&#xff1a;建大数据平台太难了&#xff01;给我发个工程原型吧&#xff01;》了解图书详情&#xff0c;…

京东首页移动端-web实战

设置视口标签以及引入初始化样式 <link rel"stylesheet" href"./css/normalize.css"><link rel"stylesheet" href"./css/index.css"> body常用初始化样式 body {width: 100%;min-width: 320px;max-width: 640px;margin:…

基于SpringBoot+Vue的实验室管理系统

末尾获取源码作者介绍&#xff1a;大家好&#xff0c;我是墨韵&#xff0c;本人4年开发经验&#xff0c;专注定制项目开发 更多项目&#xff1a;CSDN主页YAML墨韵 学如逆水行舟&#xff0c;不进则退。学习如赶路&#xff0c;不能慢一步。 目录 一、项目简介 二、开发技术与环…