【问题标题】:How do both clients know the private keys?两个客户端如何知道私钥?
【发布时间】:2018-11-07 16:08:44
【问题描述】:

我了解,在发送消息时,消息会使用公钥加密并发送过来,需要私钥才能打开加密消息。但是我想知道两个客户是如何知道私钥的。例如:

John 向 Alice 发送一条消息,说“Hello World”。

消息使用公钥加密,然后发送

Alice 使用私钥对其进行解密。

但是,Alice 的计算机是如何知道私钥的,它是如何到达那里的,它是与另一层加密中的加密消息一起提供的,还是一开始就在两台计算机上,但是如何?

我只是想知道,如果有人能解释一下,那就太好了!谢谢!

【问题讨论】:

  • 只有一方需要私钥。这是需要分发的公钥。

标签: encryption cryptography key public-key-encryption private-key


【解决方案1】:

双方都会生成自己的自己的私钥并随身携带。然后将这些密钥的公共部分分发给希望与私钥所有者进行通信的其他方。

重要的部分是确保您正在与您认为正在与之通信的人进行通信,否则中间人可能会将他的公钥发送给伪装成预期接收者的双方。

这个答案在某种程度上确实假设我们正在谈论 RSA。有许多使用私钥/公钥的非对称密码系统可能不一定对我使用的术语有意义。

【讨论】:

  • 是的,但是对方怎么知道解开解密消息的私钥是什么?
  • 我不明白你不明白什么。我生成一个私钥和公钥并将我的公钥给你。您加密了一条消息并将加密的消息发送给我。我用我的私钥解密它。瞧。
  • 现在我明白了,一开始我以为你用公钥生成并加密消息然后发送给我,不知何故我知道私钥,并解密它。感谢您为我澄清订单。
【解决方案2】:

在最简单的模型中:

  • Alice 生成一个密钥对 Apub / Apriv
  • 如果这是 RSA,Bob 不需要密钥。
  • Alice 将 Apub 发送给 Bob。她安全地执行此操作(练习留给读者)。
  • Bob 使用 Apub 加密了一些数据。
  • Bob 将他的加密资料发送给 Alice。
  • Alice 知道先验(简单的场景,还记得吗?)正在使用哪个密钥,并使用Apriv 来恢复数据。

在更复杂的模型中,实体可能有很多私钥。除了“尝试所有这些”之外,我们还可以添加一些结构。

  • Alice 生成一个密钥对 Apub / Apriv。她安全地保存了这些(练习留给读者)。
  • Alice 获得了一个 X.509 公钥证书,其中 Apub 作为主题公钥。
    • 这里自签没问题,或者 CA 签发总是好的。
  • Bob 仍然是一个快乐的人,不需要管理钥匙。这让他的 FISMA/PCI/etc 合规性审计变得更加容易。
  • Alice 将她的证书发送给 Bob。她安全地执行此操作 (ELTTR)。
  • Bob(使用软件)从证书中提取 Apub 并使用它加密数据。
  • Bob('s software) 构建了一个格式化的消息,其中包括识别使用了哪个证书以及加密内容是什么的方法。
    • 也许他只是将整个证书发回。 (可能不会)
    • 也许他会发送证书颁发者名称和序列号值。
    • 也许他从证书中发送了主题密钥标识符扩展值。
    • 只要 Alice 明白他在做什么,他就有很多选择。
  • Bob 将此格式化消息发送给 Alice。
  • Alice 确定了她的几个证书中的哪一个在格式化消息中被寻址。
  • Alice 有一个密钥管理系统,可以根据证书确定使用哪个私钥。
  • Alice 使用Apriv 恢复数据。

对于 Bob 来说,更复杂的模型是 Enveloped CMS(加密消息语法)的一种简化形式。 Alice 阅读了该消息并使用类似 Windows 证书存储(能够将标识符传送到 Windows 加密密钥存储的私钥)之类的东西来确定证书并最终确定私钥。

在“更复杂”的层可以做很多不同的事情。如果 Alice 真的喜欢管理密钥,她可以为与她交谈的每个人制作不同的密钥,然后从消息“Bobness”或“Daviosity”中知道她应该使用与她提供给 Bob 或 Dave 的公钥匹配的私钥.

【讨论】:

  • 迄今为止最好最详细的解释之一,感谢您的帮助!
猜你喜欢
  • 2012-03-27
  • 1970-01-01
  • 1970-01-01
  • 2021-07-04
  • 2012-03-29
  • 1970-01-01
  • 2014-07-31
  • 2018-09-28
  • 2022-08-19
相关资源
最近更新 更多