PKI - 03 密钥管理(如何进行安全的公钥交换)
文章目录
- Pre
- 密钥管理面临的挑战
- 安全密钥管理的几种方式
- 手动密钥交换与确认
- 受信任的介绍
Pre
PKI - 02 对称与非对称密钥算法
密钥管理面临的挑战
密钥管理面临的挑战主要包括以下几点:
-
安全的公钥交换:在使用基于非对称密钥算法的服务之前,实体需要获取其他实体的公钥。然而,通过非信任的通道进行公钥交换存在安全风险,因为可能会受到中间人攻击,导致公钥被伪造或篡改。
-
防止公钥被截获和更改:在密钥交换过程中,公钥必须确保不会被截获和更改。如果公钥被恶意修改,那么接收方就无法正确验证数字签名或进行安全通信,从而导致安全漏洞。
-
Full Mesh复杂度:密钥交换涉及到多个实体之间的通信和密钥交换,特别是在大规模网络中,实体之间的连接可能形成复杂的Full Mesh结构,导致密钥管理和密钥交换的复杂度增加。
-
用户确认密钥有效性的不可靠性:在某些情况下,最终用户可能需要确认公钥的有效性。然而,依靠最终用户来确认密钥的有效性可能不够可靠,因为用户可能会受到社会工程攻击或误导,导致接受到的公钥并不是来自合法的实体。
综上所述,密钥管理面临着诸多挑战,包括安全的公钥交换、防止公钥被篡改、Full Mesh复杂度以及用户确认密钥有效性的不可靠性等问题。为了解决这些挑战,需要采用安全的密钥交换机制、密钥管理策略以及数字证书等技术来确保密钥的安全性和可靠性。
安全密钥管理的几种方式
手动密钥交换与确认
安全地交换公钥,最简单的安全方法是需要带外验证, 通过带外验证来安全地交换公钥是一种简单而有效的方法。
-
回读收到的密钥(指纹):在收到对方发送的公钥后,接收方可以通过安全的带外通道(例如电话)将接收到的密钥的指纹(例如公钥的哈希值)回读给发送方。这个指纹可以是公钥的摘要或哈希值,确保了不需要传输整个公钥,从而降低了泄露公钥的风险。
-
验证匹配:发送方收到接收方回读的密钥指纹后,可以将其与自己发送的公钥的指纹进行比对。如果两者匹配,则表明在传输过程中公钥没有被篡改或更改。这种匹配性检验可以确保公钥的完整性和真实性。
-
可扩展性问题:虽然这种方法简单易行,但是确实存在可扩展性问题。特别是在大规模网络中,或者需要频繁进行公钥交换的情况下,使用电话或其他带外通道来回读密钥指纹可能会变得不够实用和高效。因此,在实际应用中需要权衡利弊,根据具体情况选择合适的密钥交换机制。
总的来说,通过带外验证来安全地交换公钥是一种简单有效的方法,但需要注意其可扩展性问题,特别是在大规模网络中或需要频繁进行公钥交换的情况下。
受信任的介绍
b89d6ae4d827f9ae8.png)
- 1.用户A和用户B已经安全的交换了公钥(通过离线确认)
- 2.用户B和用户C已经安全的交换了公钥(通过离线确认)
- 3.用户A和用户C能否通过用户B的帮助,安全的交换公钥呢?
用户B能够扮演类似一个受信任的介绍者的角色,因为它是被用户A和C两者都信任的。
- 1.用户B通过自己的私钥给用户A的公钥做签名并把它发送给用户C
- 2.用户B通过自己的私钥给用户C的公钥做签名并把它发送给用户A
- 3.用户A和C能够验证签名,因为他们早已拥有了用户B的公钥
其中用户B作为受信任的介绍者,可以帮助用户A和用户C安全地交换公钥。进一步解释一下:
-
用户B签名用户A的公钥:首先,用户B使用自己的私钥对用户A的公钥进行签名,生成数字签名。这个数字签名相当于用户B对用户A的公钥的认可和背书,确保了公钥的真实性和完整性。
-
发送签名后的公钥给用户C:然后,用户B将签名后的用户A的公钥(明文)和数字签名一起发送给用户C。用户C收到后,可以使用用户B的公钥来验证数字签名,确保公钥的来源和完整性。
-
用户B签名用户C的公钥:接下来,用户B使用自己的私钥对用户C的公钥进行签名,生成数字签名。这个数字签名确保了用户B对用户C的公钥的认可和背书。
-
发送签名后的公钥给用户A:用户B将签名后的用户C的公钥和数字签名一起发送给用户A。用户A收到后,同样可以使用用户B的公钥来验证数字签名,确保公钥的来源和完整性。
-
验证签名:用户A和用户C都可以使用用户B的公钥来验证数字签名,确保公钥的来源和完整性。如果数字签名验证通过,则表明公钥是由用户B签名的,公钥的来源可信,用户A和用户C可以安全地使用对方的公钥进行加密和通信。
通过这种方式,用户B作为受信任的介绍者,可以帮助用户A和用户C安全地交换公钥,确保通信的安全性和可靠性。
CA 其实就是用户B的角色 。
相关文章:

PKI - 03 密钥管理(如何进行安全的公钥交换)
文章目录 Pre密钥管理面临的挑战安全密钥管理的几种方式手动密钥交换与确认受信任的介绍 Pre PKI - 02 对称与非对称密钥算法 密钥管理面临的挑战 密钥管理面临的挑战主要包括以下几点: 安全的公钥交换:在使用基于非对称密钥算法的服务之前,…...

Bee+SpringBoot稳定的Sharding、Mongodb ORM功能(同步 Maven)
Hibernate/MyBatis plus Sharding JDBC Jpa Spring data GraphQL App ORM (Android, 鸿蒙) Bee 小巧玲珑!仅 860K, 还不到 1M, 但却是功能强大! V2.2 (2024春节・LTS 版) 1.Javabean 实体支持继承 (配置 bee.osql.openEntityCanExtendtrue) 2. 增强批…...

HarmonyOS SDK 助力新浪新闻打造精致易用的新闻应用
原生智能是HarmonyOS NEXT的核心亮点之一,依托HarmonyOS SDK丰富全面的开放能力,开发者只需通过几行代码,即可快速实现AI功能。新浪新闻作为鸿蒙原生应用开发的先行者之一,从有声资讯入手,基于Speech Kit朗读控件上线听…...

IT行业有哪些证书含金量高呢?
目录 引言: 一、 计算机网络类证书 二、 数据库管理类证书 三、 安全与信息技术管理类证书 四、 编程与开发类证书 五、 数据科学与人工智能类证书 六、结论: 悟已往之不谏,知来者犹可追 …...

zlib交叉编译(rv1126)
目录 1.下载 2.解压 3.配置 4.编译 1.下载 1)下载地址 zlib Home Site 2)下载tar.gz版本 下载该版本。 2.解压 1)解压到某个文件夹,新建 install-rv1126文件夹 2)进入源码目录 3.配置 1)导出交叉编…...

数字孪生与智慧园区的融合:打造未来产业生态的新篇章
随着科技的飞速发展,数字孪生和智慧园区已经成为当今社会发展的重要趋势。数字孪生技术为物理世界的对象提供了数字化的复制体,而智慧园区则通过各种信息技术手段实现园区的智能化管理。二者的融合,将为未来产业生态的发展开辟新的篇章。 一…...
nodejs将console.log保存到log.txt文档中(electron工具)
txtConsole.js const { app } require(electron); const fs require(fs); const moment require(moment); const mainData require(./mainData);//electron 软件根目录 const rootPath path.dirname(app.getPath(exe));const txtConsole {log(p1 , p2 , p3 , p4 , p…...

微服务的幂等性
微服务架构设计的中心思想是将服务进行拆分,但是在这个过程中,如果被依赖的服务发生奔溃,就会引起一系列问题。为了解决这个问题,就会引入重试的机制,重试又会引入幂等性的问题,下面我们就分析这个过程&…...

Redis之基础篇
Redis简介 Redis是一种基于键值对(Key-Value)的NoSQL数据库,它支持string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集…...

靶机实战bwapp亲测xxe漏洞攻击及自动化XXE注射工具分析利用
靶机实战bwapp亲测xxe漏洞攻击及自动化XXE注射工具分析利用。 1|0介绍 xxe漏洞主要针对webservice危险的引用的外部实体并且未对外部实体进行敏感字符的过滤,从而可以造成命令执行,目录遍历等.首先存在漏洞的web服务一定是存在xml传输数据的,可以在http头的content-type中查…...

openGauss学习笔记-216 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-CPU
文章目录 openGauss学习笔记-216 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-CPU216.1 CPU216.2 查看CPU状况216.3 性能参数分析 openGauss学习笔记-216 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-CPU 获取openGauss节点的CPU、内存、I/O和网络资源使用情况…...

【教程】Linux使用git自动备份和使用支持文件恢复的rm命令
转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 背景介绍 首先非常不幸地告诉你:Linux 系统的标准 rm 命令不支持文件恢复功能。一旦使用 rm 删除了文件或目录,它们就会从文件系统中永久删除,除非你使用专门的文件恢复工具尝试…...

记录使用M1 Mac开发LVGL嵌入式项目
技术流 使用Gui Guider进行UI设计,生成lvgl code将lvgl code移植到esp32s3开发板 Gui Guider的安装 安装下面流程一步一步进行 LVGL的移植 硬件:esp32-8048s043开发板 开发环境:PlatformIO M1芯片安装ESP32驱动 从https://www.wch.cn…...

【SpringBoot】JWT令牌
📝个人主页:五敷有你 🔥系列专栏:SpringBoot ⛺️稳重求进,晒太阳 什么是JWT JWT简称JSON Web Token,也就是通过JSON形式作为Web应用的令牌,用于各方面之间安全的将信息作为JSON对象传输…...
Python爬虫 Beautiful Soup库详解#4
爬虫专栏:http://t.csdnimg.cn/WfCSx 使用 Beautiful Soup 前面介绍了正则表达式的相关用法,但是一旦正则表达式写的有问题,得到的可能就不是我们想要的结果了。而且对于一个网页来说,都有一定的特殊结构和层级关系,…...

Tkinter教程21:Listbox列表框+OptionMenu选项菜单+Combobox下拉列表框控件的使用+绑定事件
------------★Tkinter系列教程★------------ Tkinter教程21:Listbox列表框OptionMenu选项菜单Combobox下拉列表框控件的使用绑定事件 Tkinter教程20:treeview树视图组件,表格数据的插入与表头排序 Python教程57:tkinter中如何…...

Django中的SQL注入攻击防御策略
Django中的SQL注入攻击防御策略 SQL注入是一种常见的网络安全威胁,可以导致数据库被非法访问和数据泄露。本文将介绍在Django框架中防止SQL注入攻击的关键方法,包括使用参数化查询、使用ORM、进行输入验证和使用安全的编码实践。 SQL注入是一种利用应用程…...

ORM模型类
模型 创建两个表 创建模型类 from django.db import models# Create your models here. class BookInfo(models.Model):name models.CharField(max_length10, uniqueTrue) # 书名pub_date models.DateField(nullTrue) # 发布时间read_count models.IntegerField(default…...

Java强训day14(选择题编程题)
选择题 编程题 题目1 import java.util.Scanner;public class Main {public static void main(String[] args) {//读入年月日(字符串形式读入)Scanner sc new Scanner(System.in);String s sc.nextLine();String[] ss s.split(" ");i…...

Redis核心技术与实战【学习笔记】 - 31.番外篇:Redis客户端如何与服务器端交换命令和数据
简述 Redis 使用 RESP 协议(Redis Serialzation Protocol)协议定义了客户端和服务器端交互的命令、数据的编码格式。在 Redis 2.0 版本中,RESP 协议正式称为客户端和服务器端的标准通信协议。从 Redis 2.0 到 Redis 5.0 ,RESP 协…...

【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...

Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...

【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
适应性Java用于现代 API:REST、GraphQL 和事件驱动
在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...