【网络安全】对称加密、非对称加密以及密钥分配

news2024/12/31 5:03:41

目录

1、对称加密

2、非对称加密

3、如何分配对称密钥?

4、如何分配非对称密钥?


1、对称加密

        所谓对称加密,就是指加密密钥与解密密钥都使用相同的密钥。如下图所示,通信双方使用的就是对称加密密钥。//代表:DES和AES

        数据加密标准 DES(Data Encryption Standard) 属于对称密钥密码体制。它由 IBM 公司研制出,于 1977 年被美国定为联邦信息标准后,在国际上引起了极大的重视。ISO 曾将 DES 作为数据加密标准。

        DES 是一种分组密码。在加密前,先对整个的明文进行分组。每一个组为 64 位长的二进制数据。然后对每一个 64 位二进制数据进行加密处理,产生一组 64 位密文数据。最后将各组密文串接起来,即得出整个的密文。使用的密钥占有 64 位(实际密钥长度为 56 位,外加 8 位用于奇偶校验)。

        DES 的机密性仅取决于对密钥的保密,而算法是公开的。DES 的问题是它的密钥长度。56 位长的密钥意味着共有 2^{56} 种可能的密钥,也就是说,共有约 7.6 ×10^{16} 种密钥。假设一台计算机 1 us 可执行一次 DES 加密,同时平均只需搜索密钥空间的一半即可找到密钥,那么破译 DES 要超过 1000 年。

        然而芯片的发展出乎意料地快。不久,56 位 DES 已不再被认为是安全的。对于 DES 56 位密钥的问题,又提出了 三重DES(3DES) 的方案,把一个 64 位明文用一个密钥加密,再用另一个密钥解密,然后再使用第一个密钥加密,即

        Y=DES_{k1}(DES^{-1}_{K2}(DES_{k1}(X)))))

        这里,X 是明文,Y 是密文,K1 和 K2 分别是第一个和第二个密钥,DES_{k1}(.) 表示用密钥 K1 进行 DES 加密,而 DES_{k2}^{-1}(.) 表示用密钥 K2 进行 DES 解密。//加密,解密,再加密

        在 DES 之后,1997 年美国标准与技术协会(NIST),对一种新的加密标准即 高级加密标准 AES(Advanced Encryption Standard) 进行遴选,最后由两位年轻比利时学者 Joan Daemen 和 Vincent Rijmen 提交的 Rijndael算法 被选中,在 2001 年正式成为 NIST 的加密标准。在 2002 年成为美国政府加密标准。现在 AES 也是 ISO/IEC 18033-3 标准。

        AES 也是一种分组密码,分组长度为 128 位。AES 有三种加密标准,其密钥分别为 128 位、192 位和 256 位,加密步骤相当复杂,运算速度比 3DES 快得多,且安全性也大大加强。在 2001 年,NIST 曾有一个大致的估计,就是假定有一台高速计算机,仅用 1 秒钟就能够破译 56 位的 DES,那么要破译 128 位的 AES,就需要 10^{12} 年!

2、非对称加密

        非对称加密使用不同的加密密钥与解密密钥。也就是所谓的公钥密码体制。

        公钥密码产生主要有两个方面的原因,一是由于对称密钥的密钥分配问题,二是对数字签名的需求

        在对称加密中,加解密的双方使用的是相同的密钥。但怎样才能做到这一点呢?

        一种是事先约定,另一种是用信使来传送。在高度自动化的大型计算机网络中,用信使来传送密钥显然是不合适的。如果事先约定密钥,就会给密钥的管理和更换带来极大的不便。若使用高度安全的密钥分配中心 KDC(Key Distribution Center),也会使得网络成本增加。//密钥分配

        对数字签名的强烈需要也是产生公钥加密的一个原因。在许多应用中,人们需要对纯数字的电子信息进行签名,表明该信息确实是某个特定的人产生的。//数字签名

        对于公钥密码体制,目前最著名的是由美国三位科学家 Rivest, Shamir 和 Adleman 于1976 年提出并在 1978 年正式发表的 RSA 体制,它是一种基于数论中的大数分解问题的体制

        在公钥加密中,加密密钥 PK(Public Key 公钥) 是向公众公开的,而解密密钥 SK(Secret Key 私钥) 则是需要保密的。

        公钥加密的加密和解密过程有如下特点:

  1. 首先,密钥对 生成器会为接收者 B 生成一对密钥:即公钥 PK_{B} 和私钥 SK_{B}
  2. 然后,发送者 A 用 B 的公钥 PK_{B} 对明文 X 加密,得出密文 Y,发送给 B。
  3. 最后,B 接收到密文后,用自己的私钥 SK_{B} 进行解密,恢复出明文。

        //这个过程其实很好理解,就是如果要与B通信,就必须按照B给的方式对信息进行处理。处理后的信息,除了B,其他人都不能对这条信息进行解密。

        //就比如你向你的朋友转账(通信),首先必须知道对方的账号(公钥),然后把钱转到对方的账户上(公钥加密),这样你的朋友使用密码就可以取得到你转账的钱(私钥解密)

        下图,给出了使用公钥进行加密的过程:

        需要注意的是,任何加密方法的安全性都取决于密钥的长度,以及攻破密文所需的计算量,而不是简单地取决于加密的方式(对称加密或非对称加密)

3、如何分配对称密钥?

        对称密钥分配存在以下两个问题:

  1. 第一,如果 n 个人中的每一个需要和其他 n-1 个人通信,就需要 n(n-1) 个密钥。但每两人共享一个密钥,因此密钥数是 n(n - 1)/2。这常称为 n^{2} 问题。如果 n 是个很大的数,所需要的密钥数量就非常大。//密码数量大
  2. 第二,通信的双方怎样才能安全地得到共享的密钥呢?正是因为网络不安全,所以才需要使用加密技术。但密钥又需要怎样传送呢?//网络不安全

        目前常用的密钥分配方式是设立 密钥分配中心KDC(Key Distribution Center)。 KDC 是大家都信任的机构,其任务就是给需要进行秘密通信的用户临时分配一个会话密钥(仅使用一次)。

        如下图,用户 A 和 B 都是 KDC 的登记用户。A 和 B 在 KDC 登记时就已经在 KDC 的服务器上安装了各自和 KDC 进行通信的 主密钥(master key) K_{A}K_{B}

        密钥分配分为三个步骤://单纯的对称密钥的分配比较麻烦

  1. 用户 A 向密钥分配中心 KDC 发送时用明文,说明想和用户 B 通信。在明文中给出了 A 和 B 在 KDC 登记的身份。
  2. KDC 用随机数产生“一次一密”的会话密钥 K_{AB} 供 A 和 B 的这次会话使用,然后向 A 发送回答报文。这个回答报文用 A 的密钥 K_{A} 加密。这个报文中包含这次会话使用的密钥 K_{AB} 和请 A 转给 B 的一个 票据(ticket),该票据包括 A 和 B 在 KDC 登记的身份,以及这次会话将要使用的密钥K_{AB}。票据用 B 的密钥 K_{B} 加密,A 无法知道此票据的内容,因为 A 没有 B 的密钥K_{B},当然 A 也不需要知道此票据的内容。
  3. 当 B 收到 A 转来的票据并使用自己的密钥K_{B}解密后,就知道 A 要和他通信,同时也知道 KDC 为这次和 A 通信所分配的会话密钥K_{AB}

        此后,A 和 B 就可使用会话密钥K_{AB}进行这次通信了。需要注意的是,在网络上传送密钥时,都是经过加密的。解密用的密钥都不在网上传送。

4、如何分配非对称密钥?

        我们都知道,使用非对称密钥时大家都各自保存有自己的私钥,然后把各自的公钥发布在网上。

       但是,如何能确信获取的公钥真的就是对方的呢?

        例如,A 和 B 都是公司。有个捣乱者给 A 发送邮件,声称自己是 B,要购买 A 生产的设备,货到付款,并给出了 B 的收货地址。邮件中还附上“B的公钥”(其实是捣乱者的公钥)。最后用捣乱者的私钥对邮件进行了签名。A 收到邮件后,就用邮件中给出的捣乱者的公钥,对邮件中的签名进行了鉴别,就误认为 B 真的是要购买设备。当 A 把生产的设备运到 B 的地址后,B 才知道被愚弄了!//B被冒充,A无法确认对方身份,因此交易会存在抵赖的可能性

        现在流行的办法,这就是找一个可信任的第三方机构,给拥有公钥的实体发一个具有数字签名的数字证书(digital certificate)数字证书就是对公钥与其对应的实体进行绑定(binding)的一个证明,因此它常称为公钥证书。这种签发证书的机构就叫作认证中心CA(Certification Authority),它由政府或知名公司出资建立(这样就可以得到大家的信任)。

        每个证书中写有公钥及其拥有者的标识信息(人名、地址、电子邮件地址或 IP 地址等)。更重要的是,证书中有 CA 使用自己私钥的数字签名,这就是认证中心 CA 把 B 的未签名的证书进行散列函数运算,再用 CA 的私钥对散列值进行 D 运算(也就是对散列值进行签名)。这样就得到了 CA 的数字签名。把 CA 的数字签名和未签名的 B 的证书放在一起,就最后构成了已签名的 B 的数字证书。//CA使用自己的私钥对证书的散列值进行加密

        CA 证书无法伪造,任何用户都可从可信任的地方(如代表政府的报纸)获得认证中心 CA 的公钥,以验证证书的真伪。这种数字证书是公开的,不需要加密。

        公司 A 拿到 B 的数字证书后,可以对 B 的数字证书的真实性进行核实。A 使用数字证书上给出的 CA 的公钥,对数字证书中 CA 的数字签名进行 E 运算,得出一个数值。再对 B 的数字证书(把 CA 的数字签名除外的部分)进行散列运算,又得出一个数值。比较这两个数值。若一致,则证明数字证书是真的。

        关于数字证书的内容,X.509 规定了一个数字证书必须包括以下这些重要字段:

  • X.509 协议的版本
  • 数字证书名称及序列号
  • 本数字证书所使用的签名算法
  • 数字证书签发者的唯一标识符
  • 数字证书的有效期(有效期开始到结束的日期范围)
  • 主体名(或主题名,公钥和数字证书拥有者的唯一标识符)
  • 公钥(数字证书拥有者的公钥和使用算法的标识符,对应的私钥由证书拥有者保存)

        至此,全文结束。

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

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

相关文章

Hive服务详解

Hive服务 HiveServer2、Hive Metastore 服务服务共同构成了 Hive 生态系统中的核心功能,分别负责管理元数据和提供数据查询服务,为用户提供了一个方便、高效的方式来访问和操作存储在 Hive 中的数据。 1. Hive 查询服务(HiveServer2&#xf…

恶补《操作系统》2_1——王道学习笔记

2操作系统-进程 2.1_1 进程的定义、组成、组织方式、特征 组成:PCB(进程存在唯一的标志),程序段,数据段 组织方式:链接方式,指针指向不同的队列;索引方式,索引表 特征…

【深度学习】yolo-World,数据标注,zeroshot,目标检测

仓库:https://github.com/AILab-CVC/YOLO-World 下载权重: 仓库下载和环境设置 下载仓库:使用以下命令从 GitHub 上克隆仓库: git clone --recursive https://github.com/AILab-CVC/YOLO-World.git创建并激活环境&#xff1a…

VMmark 4 - 虚拟化平台基准测试

VMmark 4 - 虚拟化平台基准测试 VMmark is a free tool used to measure the performance and scalability of virtualization platforms. 请访问原文链接:VMmark 4 - 虚拟化平台基准测试,查看最新版。原创作品,转载请保留出处。 作者主页…

GPT与GAN结合生成图像——VQGAN原理解析

1、前言 这篇文章,我们讲VQ_GAN,这是一个将特征向量离散化的模型,其效果相当不错,搭配Transformer(GPT)或者CLIP使用,达到的效果在当时可谓是令人拍案叫绝! 原论文:Tam…

栈和队列-介绍与实现(超级!!!详解-C语言)

目录 栈 栈的介绍 栈的概念 栈的结构 栈的实现 初始化栈 StackInit 销毁栈 StackDestroy 入栈 StackPush 出栈 StackPop 获取栈顶元素 StackTop 检查栈是否为空 StackEmpty 获取栈中有效元素个数 StackSize 队列 队列的介绍 队列的概念 队列的结构 队列的应用 队列的实现 …

LabVIEW与Modbus协议的多点温度监控系统

LabVIEW与Modbus协议的多点温度监控系统 随着工业自动化和智能化水平的不断提升,对于现场监控技术的需求日益增长。开发了一种基于LabVIEW与Modbus协议的多点温度监控系统,实现高效、准确的温度数据采集、处理和显示,以及数据存储功能&#…

【IR 论文】Google 对通过 prompt LLM 做 Query Expansion 的工作

论文:Query Expansion by Prompting Large Language Models ⭐⭐⭐ Google Research, arxiv:2305.03653 论文速读 之前我在论文笔记 Query2doc 中介绍了信息检索(IR)以及 Query Expansion 的相关背景知识。 本篇文章是 Google 发表的关于对…

Maven:配置与使用指南1

https://mvnrepository.com Maven 1.maven简介 不同模块的jar包以及同时设计的功能的微小变化版本; 真实的开发环境:我们将我们的源代码在服务器上重新编译重新打包,工程升级维护过程繁琐 1.Maven是一个项目管理工具,将项目开…

SpringBoot xxl-job 任务调度

首先官网下载xxl-job的源代码,然后切换到jdk8,等Maven下载依赖 执行mysql的脚本,修改连接配置,启动admin站点 默认地址 http://localhost:8080/xxl-job-admin/ 先新增一个任务执行器,指向未来任务代码的站点 然后在…

数学建模完整版

模型与适用题型 微分方程传染病预测模型 神经网络 层次分析法 粒子群算法 matlab 优劣解距离法

计算机组成原理—数据的表示和运算

二进制:2进1 八进制里的1位对应二进制里的三位 重点:转换为10进制

git常见命令(成长版)

ps:所谓成长版就是后续可能还会添加命令: 1.删除本地分支: git branch -d 分支名 2.拉取代码后默认master分支,切换到线上其他分支: (1)查看线上所有分支: git branch -a &#…

比特币之路:技术突破、创新思维与领军人物

比特币的兴起是一段充满技术突破、创新思维和领军人物的传奇之路。在这篇文章中,我们将探讨比特币发展的历程,以及那些在这一过程中发挥重要作用的关键人物。 技术突破与前奏 比特币的诞生并非凭空而来,而是建立在先前的技术储备之上。在密码…

贪心算法-活动安排问题和背包问题

实验6贪心算法-活动安排问题和背包问题 实验目的: 理解贪心算法的基本思想运用贪心算法解决实际问题 实验内容: 采用贪心方法编程实现以下问题的算法 1.如何安排下列活动使得使用的活动场所最少,并给出具体的安排方法。 活动 a b c …

全新Storm Core API管理系统源码 免授权版

全新Storm Core API管理系统源码 免授权版 本系统为API系统,实现了api集成等基础功能,以后可能会更新key调用api,或者实现付费功能,敬请期待,前端模板均无加密,用户可自行二开,具体请看图 测试环境:PHP7.2+MySQL5.6 访问:http://你的域名/install 进行安装 伪静态…

AIGC实战——基于Transformer实现音乐生成

AIGC实战——基于Transformer实现音乐生成 0. 前言1. 音乐生成的挑战2. MuseNet3. 音乐数据3.1 巴赫大提琴组曲数据集3.2 解析 MIDI 文件3.3 分词3.4 创建训练数据集 4. MuseNet 模型4.1 正弦位置编码4.2 多输入/输出 5. 音乐生成 Transformer 的分析6. 多声部音乐分词6.1 网格…

含匹配扰动的多智能体领航跟随一致性Matlab仿真

文章目录 [TOC](文章目录) 前言一、问题描述二、基于LQR的观测器和控制器设计1.观测器设计2.控制器设计 三、数值仿真四、参考文献总结 前言 ​本文探讨了带有匹配扰动的多智能体领航跟随一致性控制方法,并提供了相应的Matlab仿真代码。 具体的设计步骤如下&#…

Algorius Net Viewer 2024.2.1 (Windows) - 网络可视化、管理、监控和清点

Algorius Net Viewer 2024.2.1 (Windows) - 网络可视化、管理、监控和清点 Comprehensive software product for visualizing, administering, monitoring, and inventorying computers network of any level 请访问原文链接:Algorius Net Viewer 2024.2.1 (Windo…

【动态规划】C++ 子序列问题(递增子序列、数对链、定差子序列、斐波那契子序列...)

文章目录 1. 前言2. 例题最长递增子序列 3. 算法题3.1_摆动序列3.2_最长递增子序列的个数3.3_最长数对链[3.4_ 最长定差子序列](https://leetcode.cn/problems/longest-arithmetic-subsequence-of-given-difference/description/)3.5_最长的斐波那契子序列的长度3.6_最长等差数…