PKI - 03 密钥管理(如何进行安全的公钥交换)

文章目录

  • Pre
  • 密钥管理面临的挑战
  • 安全密钥管理的几种方式
    • 手动密钥交换与确认
    • 受信任的介绍

在这里插入图片描述


Pre

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


密钥管理面临的挑战

密钥管理面临的挑战主要包括以下几点:

  1. 安全的公钥交换:在使用基于非对称密钥算法的服务之前,实体需要获取其他实体的公钥。然而,通过非信任的通道进行公钥交换存在安全风险,因为可能会受到中间人攻击,导致公钥被伪造或篡改。

  2. 防止公钥被截获和更改:在密钥交换过程中,公钥必须确保不会被截获和更改。如果公钥被恶意修改,那么接收方就无法正确验证数字签名或进行安全通信,从而导致安全漏洞。

  3. Full Mesh复杂度:密钥交换涉及到多个实体之间的通信和密钥交换,特别是在大规模网络中,实体之间的连接可能形成复杂的Full Mesh结构,导致密钥管理和密钥交换的复杂度增加。

  4. 用户确认密钥有效性的不可靠性:在某些情况下,最终用户可能需要确认公钥的有效性。然而,依靠最终用户来确认密钥的有效性可能不够可靠,因为用户可能会受到社会工程攻击或误导,导致接受到的公钥并不是来自合法的实体。

综上所述,密钥管理面临着诸多挑战,包括安全的公钥交换、防止公钥被篡改、Full Mesh复杂度以及用户确认密钥有效性的不可靠性等问题。为了解决这些挑战,需要采用安全的密钥交换机制、密钥管理策略以及数字证书等技术来确保密钥的安全性和可靠性。


安全密钥管理的几种方式

手动密钥交换与确认

在这里插入图片描述


安全地交换公钥,最简单的安全方法是需要带外验证, 通过带外验证来安全地交换公钥是一种简单而有效的方法。

  1. 回读收到的密钥(指纹):在收到对方发送的公钥后,接收方可以通过安全的带外通道(例如电话)将接收到的密钥的指纹(例如公钥的哈希值)回读给发送方。这个指纹可以是公钥的摘要或哈希值,确保了不需要传输整个公钥,从而降低了泄露公钥的风险。

  2. 验证匹配:发送方收到接收方回读的密钥指纹后,可以将其与自己发送的公钥的指纹进行比对。如果两者匹配,则表明在传输过程中公钥没有被篡改或更改。这种匹配性检验可以确保公钥的完整性和真实性。

  3. 可扩展性问题:虽然这种方法简单易行,但是确实存在可扩展性问题。特别是在大规模网络中,或者需要频繁进行公钥交换的情况下,使用电话或其他带外通道来回读密钥指纹可能会变得不够实用和高效。因此,在实际应用中需要权衡利弊,根据具体情况选择合适的密钥交换机制。

总的来说,通过带外验证来安全地交换公钥是一种简单有效的方法,但需要注意其可扩展性问题,特别是在大规模网络中或需要频繁进行公钥交换的情况下。


受信任的介绍

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安全地交换公钥。进一步解释一下:

  1. 用户B签名用户A的公钥:首先,用户B使用自己的私钥对用户A的公钥进行签名,生成数字签名。这个数字签名相当于用户B对用户A的公钥的认可和背书,确保了公钥的真实性和完整性。

  2. 发送签名后的公钥给用户C:然后,用户B将签名后的用户A的公钥(明文)和数字签名一起发送给用户C。用户C收到后,可以使用用户B的公钥来验证数字签名,确保公钥的来源和完整性。

  3. 用户B签名用户C的公钥:接下来,用户B使用自己的私钥对用户C的公钥进行签名,生成数字签名。这个数字签名确保了用户B对用户C的公钥的认可和背书。

  4. 发送签名后的公钥给用户A:用户B将签名后的用户C的公钥和数字签名一起发送给用户A。用户A收到后,同样可以使用用户B的公钥来验证数字签名,确保公钥的来源和完整性。

  5. 验证签名:用户A和用户C都可以使用用户B的公钥来验证数字签名,确保公钥的来源和完整性。如果数字签名验证通过,则表明公钥是由用户B签名的,公钥的来源可信,用户A和用户C可以安全地使用对方的公钥进行加密和通信。

在这里插入图片描述

通过这种方式,用户B作为受信任的介绍者,可以帮助用户A和用户C安全地交换公钥,确保通信的安全性和可靠性。

CA 其实就是用户B的角色 。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序 民宿预订租赁系统uniApp

通过山青水磨APP办理租房相关业务,线上解决预定、退订的业务,旅客在使用时更加灵活,实现了快速找房,在线沟通、便捷租赁等操作,除此以外,还能帮助旅客获取周边资讯、当地特色活动服务,提升旅客的…

彻底学会系列:一、机器学习之线性回归(一)

1.基本概念(basic concept) 线性回归: 有监督学习的一种算法。主要关注多个因变量和一个目标变量之间的关系。 因变量: 影响目标变量的因素: X 1 , X 2 . . . X_1, X_2... X1​,X2​... ,连续值或离散值。 目标变量: …

【React】redux状态管理、react-redux状态管理高级封装模块化

【React】react组件传参、redux状态管理 一、redux全局状态管理1、redux概述2、redux的组成1.1 State-状态1.2 Action-事件1.3 Reducer1.4 Store 3、redux入门案例1.1 前期准备1.2 构建store1.2.1 在src下新建store文件夹1.2.2 在store文件夹下新建index.ts文件1.2.3 在index.t…

MySQL 图书管理系统

1.需求分析 1.1项目需求分析简介 1.1.1信息需求分析 (1) 图书信息:包括书籍编号,书籍名称,出版社,作者,库存量,出版日期,价格,库存,剩余量,类别等&#xf…

JPEG图像的压缩标准(1)

分3个博客详细介绍JPEG图像的压缩标准,包含压缩和解压缩流程,熵编码过程和文件存储格式。 一、JPEG压缩标准概述 JPEG压缩标准由国际标准化组织 (International Organization for Standardization, ISO) 制订,用于静态图像压缩。JPEG标准包…

MVC框架学习

大一的时候写过一个mvc框架的跑酷游戏,但是那时候基础不扎实,没学明白也没听懂。现在深入的学习一下 以下内容参考:MVC 模式 | 菜鸟教程 (runoob.com) MVC 模式 MVC 模式代表 Model-View-Controller(模型-视图-控制器&#xff…

vue3 之 商城项目—一级分类

整体认识和路由配置 场景:点击哪个分类跳转到对应的路由页面,路由传对应的参数 router/index.js import { createRouter, createWebHashHistory } from vue-router import Layout from /views/Layout/index.vue import Home from /views/Home/index.vu…

智慧自助餐饮系统(SpringBoot+MP+Vue+微信小程序+JNI+ncnn+YOLOX-Nano)

一、项目简介 本项目是配合智慧自助餐厅下的一套综合系统,该系统分为安卓端、微信小程序用户端以及后台管理系统。安卓端利用图像识别技术进行识别多种不同菜品,识别成功后安卓端显示该订单菜品以及价格并且生成进入小程序的二维码,用户扫描…

transformer剪枝论文汇总

文章目录 NN Pruning摘要实验 大模型剪枝LLM-PrunerSparseGPT LTPVTPWidth & Depth PruningPatch SlimmingDynamicViTSPViTDynamicBERTViT SlimmingFastFormersNViTUVCPost-training pruning NN Pruning 《Block Pruning For Faster Transformers》 《为更快的transformer…

Django学习记录02

1.请求与响应 1.1get与post的区别 get 一般是从url输入地址,会调用get请求 post 一般是内部数据传输# get请求 def something(request):# req是一个对象,封装了用户发送过来的所有请求相关数据# 1.获取请求方式 http://localhost:8000/something# pri…

Go 语言 for 的用法

For statements 本文简单翻译了 Go 语言中 for 的三种用法,可快速学习 Go 语言 for 的使用方法,希望本文能为你解开一些关于 for 的疑惑。详细内容可见文档 For statements。 For statements with single condition 在最简单的形式中,只要…

centos7编译安装redis

一、环境 系统:CentOS Linux release 7.9.2009 (Core) redis版本:redis 6.0.6 二、安装及部署 当前最新稳定版本是redis 6.0.6 国内网址:http://www.redis.cn redis下载列表:http://download.redis.io/releases/ 下载 wge…

机器学习--K-近邻算法常见的几种距离算法详解

文章目录 距离度量1 欧式距离(Euclidean Distance)2 曼哈顿距离(Manhattan Distance)3 切比雪夫距离 (Chebyshev Distance)4 闵可夫斯基距离(Minkowski Distance)5 标准化欧氏距离 (Standardized EuclideanDistance)6 余弦距离(Cosine Distance)7 汉明距离(Hamming Distance)【…

14.scala隐式转换

目录 概述实践代码执行结果 结束 概述 隐式转换:偷偷的(隐式)对现有功能进行增强(转换) 实践 代码 package com.fun.scalaimport java.io.File import scala.io.Sourceobject ImplicitApp {def main(args: Array[String]): Unit {// implicit 2 to 等价 &…

K8S之Pod常见的状态和重启策略

Pod常见的状态和重启策略 常见的Pod状态PendingPodScheduledUnschedulablePodInitializingImagePullBackOffInitializedRunningErrorCrashLoopBackOffTerminatingSucceededFailedEvictedUnknown Pod的重启策略使用Always重启策略使用Never重启策略使用OnFailure重启策略(常用) …

go消息队列RabbitMQ - 订阅模式-direct

1.发布订阅 在Fanout模式中,一条消息,会被所有订阅的队列都消费。但是,在某些场景下,我们希望不同的消息被不同的队列消费。这时就要用到Direct类型的Exchange。 在Direct模型下: 队列与交换机的绑定,不能…

NuxtJs安装Sass后出现ERROR:Cannot find module ‘webpack/lib/RuleSet‘

最近了解NuxtJs时,发现问题比较多,对于初学者来说是件比较头痛的事。这次是安装sass预处理器,通过命令安装后,出现了ERROR:Cannot find module webpack/lib/RuleSet 错误,于是根据之前经验,对版…

解析spritf和sscanf与模拟常用字符串函数strchr,strtok(二)

今天又来继续我们的字符串函数的文章,这也是最后一篇了。希望这两篇文章能让各位理解透字符串函数。 目录 strchr strtok sprintf和sscanf strchr strchr 是一个用于在字符串中查找特定字符首次出现位置的函数。以下是解析和模拟实现 strchr 函数的示例&…

在Visual Studio中引用和链接OpenSceneGraph (OSG) 库

在Visual Studio中引用和链接OpenSceneGraph (OSG) 库,按照以下步骤操作: 构建或安装OSG库 下载OpenSceneGraph源代码(如3.0版本)并解压。使用CMake配置项目,为Visual Studio生成解决方案文件。通常您需要设置CMake中的…

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. 增强批…