对称密码中的密钥是如何实现安全配送的?

对称密码在设计时就存在一个天然的缺陷,就是要求通信双方都要持有相同的密钥。确保密钥的安全传输和防止密钥泄露,往往比加密算法本身更为复杂和困难。一旦密钥被第三方获取,通信的安全性就会受到严重威胁,从而可能暴露敏感信息。接下来跟随博主一起来探索下如何在不安全的网络传输通道中实现密钥共享。

1. 什么是密钥配送问题

密钥配送问题是指在对称密码算法中,加密和解密使用同一个密钥,发送方必须设法将密钥安全地发送给接收方,而不会被第三方窃听者截获。如果密钥被窃取,那么加密的数据也会被破解,因此密钥的安全配送成为对称密码算法的一个关键问题

为了解决这个问题,密码学领域发展出了多种策略和解决方案。下面分别介绍几种主要的方法:

  • 通过通信双方事先共享密钥密钥来解决
  • 通过密钥分配中心(KDC)来解决
  • 通过密钥交换Diffie-Hellman(DH)来解决
  • 通过公钥密码来解决

为了让以下讲解更容易被大家理解,我们假设有如下场景:Alice在网上认识了Bob,现在Alice想给Bob发一封邮件,Alice不想让别人知道邮件的内容,所以她采用了对称密码算法。

接下来Alice就需要想办法让对称密码(此处也可称为密钥或加密密钥) 通过安全的方式提供给Bob。

Alice与Bob采用对称密码方式通信

2. 如何解决密钥配送问题?

2.1. 通过通信双方事先共享密钥来解决

事先共享是指事先用安全的方式将密钥交给对方。这种方法最为简单,但却存在以下局限

  • 地理位置限制:如果Alice和Bob家距离较近,Alice找到Bob,直接告诉他密钥就可以了。如果他们相距较远,就很难事先共享密钥了。通信双方地理位置较远
  • 记录和管理困难:即使能够实现事先共享密钥,但在人数较多的场景下,通信所需要的密钥数量也会增大,记录和管理如此多的密钥将变更非常困难。比如果Alice除了和Bob发加密邮件,还和另外1000个网友发加密邮件,那么Alice就需要记忆和管理1000个密钥,对于Alice来说,这几乎不可能。

2.2. 通过密钥分配中心(KDC)来解决

若所有参与通信的双方都要事先共享密钥,从而导致密钥的数量巨大,可以使用密钥分配中心(Key Distribution Center,KDC)来解决密钥配送问题。密钥分配中心会给每个人生成一个通信密钥,每个人只要和KDC事先共享密钥就可以了。

:实质上是把数量巨大的密钥交给KDC记录和管理了,每个人只需要记录自己与KDC的事先共享密钥。

有了KDC后,Alice向Bob发送加密邮件时,具体的步骤如下:

  1. Alice向KDC发出希望与Bob进行通信的请求。
  2. KDC生成一个会话密钥S,用于Alice和Bob在本次通信中用于加解密邮件;
  3. KDC从数据库中取出Alice的密钥A和Bob的密钥B
  4. KDC用Alice的密钥(KDC与Alice的事先共享密钥A)对会话密钥S进行加密,并发送给Alice;
  5. KDC用Bob的密钥(KDC与Bob的事先共享密钥B)对会话密钥S进行加密,并发送给Bob;
  6. Alice对来自KDC的会话密钥(己使用Alice的密钥A加密)进行解密,得到会话密钥S
  7. Alice用会话密钥S对邮件进行加密,并将邮件发送给Bob;
  8. Bob对来自KDC的会话密钥(己使用Bob的密钥B加密)进行解密,得到会话密钥S
  9. Bob用会话密钥S对来自Alice的加密邮件进行解密。
  10. Alice和Bob删除会话密钥S

KDC工作原理

上图为在KDC的参与下,Alice与Bob的加密通信过程。虽然KDC有效,但也存在局限

  • 所有的加密通信都由KDC处理,随着通信参与方增多,KDC的负荷也随之增加,可能出现单点故障导致整个加密通信平台瘫痪;
  • 如果 KDC被攻破,所有的通信都会被攻击者破译

2.3. 通过密钥交换Diffie-Hellman(DH)来解决

Diffie-Hellman密钥交换是1976年由Whitfield Diffie和Martin Hellman共同发明的一种算法。通过此算法,通信双方仅通过交换一些可公开的信息就能够生成出共享密钥了。

虽然这种算法被称为密钥交换,但双方并没有真正的交换过密钥,而是通过计算生成了一个相同的共享密钥。因此,这种算法也被称为Diffie-Hellman密钥协商

DH密钥交换流程

由于Diffie-Hellman密钥协商原理比较复杂,一两句话说不清楚,在本文就不展开介绍了,如果大家感兴趣可以参阅博主文章《一文读懂密钥交换(DH、ECDH)算法(附密码国标下载)》。

2.4. 通过公钥密码来解决

在公钥密码中加密密钥(公钥)和解密密钥(私钥)是不同的。加密密钥是可以公开的,任何知道加密密钥的人都可以进行加密,但只有拥有解密密钥的人才能解密。

公钥密码原理

为了解决Alice与Bob的加密通信问题,Bob可以将加密密钥(公钥)发送给Alice,即便此加密密钥被他人窃取也关系不大,因为只有Bob才有解密密钥(私钥)。这样一来,其实就不存在密钥配送问题了。即采用公钥密码替代对称密钥可以解决密钥配送问题。

当然还有一种比较好的实践方法(HTTPS通信中常用的方式),即将对称密码的共享密钥通过公钥密码(用对方的公钥加密共享密钥)来配送,由于步骤与公钥密码类似(仅把公钥密码中通信的消息换成了共享密钥),具体工作流程如下图。

通过公钥密码来执行密钥配送

需要注意的是,如果采用了公钥密码来进行密钥配送,就又会涉及到数字证书和数字签名问题。若想了解更多关于公钥密码、数字签名和数字证书的细节,可以参阅博文:

  • 《一文彻底搞懂公钥密码、数字签名和数字证书》


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

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

相关文章

网络协议全景:Linux环境下的TCP/IP、UDP

目录 1.UDP协议解析1.1.定义1.2.UDP报头1.3.特点1.4.缓冲区 2.TCP协议解析2.1.定义2.2.报头解析2.2.1.首部长度(4位)2.2.2.窗口大小2.2.3.确认应答机制2.2.4.6个标志位 2.3.超时重传机制2.4.三次握手四次挥手2.4.1.全/半连接队列2.4.2.listen2.4.3.TIME_…

Git rebase 的使用(结合图与案例)

目录 Git rebase 的使用Git rebase 概念Git rebase 原理rebase和merge的选择 Git rebase 的使用 在 Git 中整合来自不同分支的修改主要有两种方法:merge 以及 rebase Git rebase 概念 **rebase概念:**用来重新应用提交(commits&#xff09…

指针式仪表识别

源码下载:小宅博客网 效果如下: 工程结构: 说明: 源码是针对下面这种刻度,并且单个指针的仪表的 如果是下面这种,刻度线被连接起来的,目前不支持转换成仪表单位,只能输出指针角度&…

操作系统名词_文件下载_反弹shell_1

目录 名词解释 Poc、EXP、Payload与shellcode 后门 木马、病毒 黑白盒测试 社会工程学、撞库 ATT&CK 应用实例 实用案例1:文件上传下载-解决无图形化&解决数据传输 实用案例2:反弹shell命令-解决数据回显&解决数据通讯 结合案例1&…

构建响应式API:FastAPI Webhooks如何改变你的应用程序

FastAPI,作为一个现代、快速(高性能)的Web框架,为Python开发者提供了构建API的卓越工具。特别是,它的app.webhooks.post装饰器为处理实时Webhooks提供了一种简洁而强大的方法。在本文中,我们将探讨如何使用…

Python | python中的特殊方法__str__和__repr__

__str__和__repr__ 无方法有方法__str____repr__同时存在 __str__和__repr__都是更改print的输出形式 无方法 无特殊方法 class Person:def __init__(self,name,age):self.name nameself.age ageprint(Person(aa, 34))<main.Person object at 0x000002231EF78B38> …

【数据结构初阶】顺序结构二叉树(堆)接口实现超详解

文章目录 1.树1. 1 树的概念与结构1. 2 树的相关术语1. 3 树的表示1. 4 树形结构实际运用场景 2.二叉树2. 1 概念与结构2. 2 特殊的二叉树2. 2. 1 满二叉树2. 2. 2 完全二叉树 2. 3 二叉树存储结构2. 3. 1 顺序结构2. 3. 2 链式结构 3. 实现顺序结构二叉树&#xff08;小堆&…

麦肯锡的金字塔原理:越简单,越高效

分享下金字塔原理&#xff0c;它由麦肯锡公司的芭芭拉明托在《金字塔原理》一书中首次提出&#xff0c;旨在帮助人们通过结构化的思维分析问题&#xff0c;思考问题和解决问题。它是一种方法&#xff0c;也是一种思想。 总的来说&#xff0c;金字塔原理就是将事情归纳出一个中…

[C++进阶]AVL树

前面我们说了二叉搜索树在极端条件下时间复杂度为O(n),本篇我们将介绍一种对二叉搜索树进行改进的树——AVL树 一、AVL 树的概念 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单支树&#xff0c;查找效率低下。因此&#xff0c;两位…

随着访问范围的扩大 OpenAI o1-mini 现已向免费用户开放

上周&#xff0c;OpenAI 展示了其最新的大型语言模型&#xff08;LLM&#xff09;–OpenAI o1及其小兄弟 OpenAI o1-mini。该公司在公告中称&#xff0c;Plus 和 Team 用户可在公告发布之日起访问该模型。企业和教育用户将在本周获得该模型&#xff0c;而免费用户最终将获得 o1…

算法题总结(一)——二分查找专题

二分查找 我们二分查找的本质就是每次能够通过中间值来进行分割&#xff0c;能够比较判断&#xff0c;查找到或者接近需要的数据&#xff0c;然后把一部分的数据丢弃掉。 原题 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &…

一键更换软件源的工具——chsrc

前言 经常用pip&#xff0c;ubuntu的apt&#xff0c;或者centos的yum等包下载工具的人不可避免的一件事就是——“更换软件源”&#xff0c;因为以上三个包下载工具的软件源一般都是默认为国外的官方网站&#xff0c;由于国情问题&#xff0c;下载速度就会非常慢&#xff0c;所…

【Linux】生产者消费者模型:基于阻塞队列,使用互斥锁和条件变量维护互斥与同步关系

目录 一、什么是生产者消费者模型 二、为什么要引入生产者消费者模型&#xff1f; 三、详解生产者消费者模型 ​编辑 生产者和生产者、消费者和消费者、生产者和消费者&#xff0c;它们之间为什么会存在互斥关系&#xff1f; 生产者和消费者之间为什么会存在同步关系&…

Flet全平台开发:软件开发界勇士为Python语言补短板的一次极具挑战性的尝试、冲刺和华丽亮相

一、Flet创始人和开发者介绍、开发Flet的背景介绍 Flet 的创始人和开发者 Feodor Fitsner 是俄罗斯人&#xff0c;就职于微软。 Flet 的第一个版本于 2022 年 6 月发布。这是一个相对较新的库&#xff0c;它基于 Flutter 框架&#xff0c;首先支持的是用 Python 语言开发软件…

fiddler抓包03_汉化

Fiddler安装后为英文界面&#xff1a; 【汉化步骤】 ​① 下载汉化文件&#xff0c;链接: https://pan.baidu.com/s/1c13Dh--TwSCbwHykO8KAug?pwd8nvn 提取码: 8nvn ② 进入Fiddler目录&#xff0c;如我的安装在E:\test\Fiddler&#xff0c;将FiddlerTexts.txt复制到E:\tes…

大模型时代:普通人如何获利

随着人工智能技术的飞速发展&#xff0c;我们正步入一个以大模型为驱动力的新时代。这些大型语言模型&#xff0c;如GPT-3和BERT&#xff0c;已经在各个领域展现出惊人的能力&#xff0c;包括文本生成、翻译、问答等。这些技术的进步不仅改变了我们的生活&#xff0c;也为普通人…

【AI学习笔记】初学机器学习西瓜书概要记录(一)机器学习基础知识篇

初学机器学习西瓜书的概要记录&#xff08;一&#xff09;机器学习基础知识篇(已完结) 初学机器学习西瓜书的概要记录&#xff08;二&#xff09;常用的机器学习方法篇(待更) 初学机器学习西瓜书的概要记录&#xff08;三&#xff09;进阶知识篇(待更) 文字公式撰写不易&#x…

以root用户登陆ubuntu的桌面环境

前言 在学习Linux的时候&#xff0c;经常都需要使用sudo权限来对配置文件进行修改&#xff0c;常用的方法就是用vim编辑器在命令行界面进行修改&#xff0c;比如sudo vim /etc/profile&#xff0c;但我觉得每次都用命令行挺麻烦的&#xff0c;于是&#xff01;&#x1f913;我…

【STL】pair 与 map:基础、操作与应用

C 标准库中提供了许多用于处理数据结构的容器和工具。pair 和 map 是两个非常有用的工具&#xff0c;广泛应用于存储和处理关联数据。在本文中&#xff0c;我们将详细介绍 pair 与 map 的相关操作&#xff0c;并结合代码实例为读者提供清晰的理解。 pair&#xff1a;成对数据的…

Docker:SpringBoot项目创建Docker镜像并推送到阿里云容器镜像仓库

0. 准备工作 os&#xff1a;macos 15.0 jdk&#xff1a;1.8 docker&#xff1a;26.0.0 1. 阿里云容器镜像服务创建实例 创建个人版 个人实例创建成功 个人镜像加速器地址 2. 安装Docker Desktop Docker Desktop是Docker的一个集成工具&#xff0c;非必须&#xff0c;过程…