2024-03-21  阅读(4)
原文作者:小小工匠 原文地址: https://artisan.blog.csdn.net/article/details/136069027

202403212041112201.png


Pre

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


密钥管理面临的挑战

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

  1. 安全的公钥交换 :在使用基于非对称密钥算法的服务之前,实体需要获取其他实体的公钥。然而,通过非信任的通道进行公钥交换存在安全风险,因为可能会受到中间人攻击,导致公钥被伪造或篡改。
  2. 防止公钥被截获和更改 :在密钥交换过程中,公钥必须确保不会被截获和更改。如果公钥被恶意修改,那么接收方就无法正确验证数字签名或进行安全通信,从而导致安全漏洞。
  3. Full Mesh复杂度 :密钥交换涉及到多个实体之间的通信和密钥交换,特别是在大规模网络中,实体之间的连接可能形成复杂的Full Mesh结构,导致密钥管理和密钥交换的复杂度增加。
  4. 用户确认密钥有效性的不可靠性 :在某些情况下,最终用户可能需要确认公钥的有效性。然而,依靠最终用户来确认密钥的有效性可能不够可靠,因为用户可能会受到社会工程攻击或误导,导致接受到的公钥并不是来自合法的实体。

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


安全密钥管理的几种方式

手动密钥交换与确认

202403212041114942.png


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

  1. 回读收到的密钥(指纹) :在收到对方发送的公钥后,接收方可以通过安全的带外通道(例如电话)将接收到的密钥的指纹(例如公钥的哈希值)回读给发送方。这个指纹可以是公钥的摘要或哈希值,确保了不需要传输整个公钥,从而降低了泄露公钥的风险。
  2. 验证匹配 :发送方收到接收方回读的密钥指纹后,可以将其与自己发送的公钥的指纹进行比对。如果两者匹配,则表明在传输过程中公钥没有被篡改或更改。这种匹配性检验可以确保公钥的完整性和真实性。
  3. 可扩展性问题 :虽然这种方法简单易行,但是确实存在可扩展性问题。特别是在大规模网络中,或者需要频繁进行公钥交换的情况下,使用电话或其他带外通道来回读密钥指纹可能会变得不够实用和高效。因此,在实际应用中需要权衡利弊,根据具体情况选择合适的密钥交换机制。

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


受信任的介绍

b89d6ae4d827f9ae8.png)

202403212041121243.png

  • 1.用户A和用户B已经安全的交换了公钥(通过离线确认)
  • 2.用户B和用户C已经安全的交换了公钥(通过离线确认)
  • 3.用户A和用户C能否通过用户B的帮助,安全的交换公钥呢?

202403212041126354.png

用户B能够扮演类似一个受信任的介绍者的角色,因为它是被用户A和C两者都信任的。

  • 1.用户B通过自己的私钥给用户A的公钥做签名并把它发送给用户C

  • 2.用户B通过自己的私钥给用户C的公钥做签名并把它发送给用户A

  • 3.用户A和C能够验证签名,因为他们早已拥有了用户B的公钥

    202403212041131315.png

其中用户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可以安全地使用对方的公钥进行加密和通信。

202403212041137106.png

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

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

202403212041141867.png


Java 面试宝典是大明哥全力打造的 Java 精品面试题,它是一份靠谱、强大、详细、经典的 Java 后端面试宝典。它不仅仅只是一道道面试题,而是一套完整的 Java 知识体系,一套你 Java 知识点的扫盲贴。

它的内容包括:

  • 大厂真题:Java 面试宝典里面的题目都是最近几年的高频的大厂面试真题。
  • 原创内容:Java 面试宝典内容全部都是大明哥原创,内容全面且通俗易懂,回答部分可以直接作为面试回答内容。
  • 持续更新:一次购买,永久有效。大明哥会持续更新 3+ 年,累计更新 1000+,宝典会不断迭代更新,保证最新、最全面。
  • 覆盖全面:本宝典累计更新 1000+,从 Java 入门到 Java 架构的高频面试题,实现 360° 全覆盖。
  • 不止面试:内容包含面试题解析、内容详解、知识扩展,它不仅仅只是一份面试题,更是一套完整的 Java 知识体系。
  • 宝典详情:https://www.yuque.com/chenssy/sike-java/xvlo920axlp7sf4k
  • 宝典总览:https://www.yuque.com/chenssy/sike-java/yogsehzntzgp4ly1
  • 宝典进展:https://www.yuque.com/chenssy/sike-java/en9ned7loo47z5aw

目前 Java 面试宝典累计更新 400+ 道,总字数 42w+。大明哥还在持续更新中,下图是大明哥在 2024-12 月份的更新情况:

想了解详情的小伙伴,扫描下面二维码加大明哥微信【daming091】咨询

同时,大明哥也整理一套目前市面最常见的热点面试题。微信搜[大明哥聊 Java]或扫描下方二维码关注大明哥的原创公众号[大明哥聊 Java] ,回复【面试题】 即可免费领取。

阅读全文