两个客户如何知道私钥?

时间:2018-05-29 05:36:08

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

据我所知,在发送邮件时,邮件使用公钥加密并发送,需要私钥才能打开加密邮件。但我不知道两个客户都知道私钥。例如:

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

邮件get使用公钥加密,然后发送

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

但是,Alice的计算机如何知道私钥,它是如何实现的,它是在另一层加密中加密消息,还是一开始就在计算机上,但是如何?

我只是想知道,如果有人能请你解释感谢会很棒!

2 个答案:

答案 0 :(得分:1)

双方都会生成与其保持一致的自己的私钥。然后将这些密钥的公共部分分发给想要与私钥所有者通信的其他方。

重要的是确保您与您认为自己正在沟通的人进行沟通,否则中间人可以将他的公钥发送给伪装成预期收件人的双方。

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

答案 1 :(得分:0)

在最简单的模型中:

  • Alice生成密钥对Apub / Apriv
  • 如果这是RSA,Bob不需要密钥。
  • Alice将Apub发送给Bob。她安全地做到了这一点(练习留给了读者)。
  • Bob使用Apub加密一些数据。
  • Bob将加密的内容发送给Alice。
  • Alice知道先验(简单的情况,请记住吗?)正在使用哪个密钥,并使用Apriv来恢复数据。

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

  • Alice生成密钥对Apub / Apriv。她安全地保存了这些(运动留给读者)。
  • Alice以Apub为主题公钥获取X.509公钥证书。
    • 自签名在这里很好,或者CA颁发的总是很好。
  • Bob仍然是一个快乐的人,不需要管理密钥。这使他的FISMA / PCI / etc合规审计更加容易。
  • Alice将她的证书发给Bob。她安全地做到了这一点(ELTTR)。
  • Bob(使用软件)从证书中提取Apub并使用它加密数据。
  • Bob(的软件)构建格式化的消息,其中包括识别使用的证书以及加密内容的方式。
    • 也许他只是发回整个证书。 (可能不是)
    • 也许他会发送证书颁发者名称和序列号值。
    • 也许他从证书中发送了主题密钥标识符扩展名。
    • 只要爱丽丝知道他在做什么,他就有很多选择。
  • Bob将此格式化的消息发送给Alice。
  • Alice确定格式化消息中已解决了多个证书中的哪一个。
  • Alice拥有密钥管理系统,可以根据证书确定要使用的私钥。
  • Alice使用Apriv恢复数据。

更复杂的模型是Bob的一部分简化形式的Enveloped CMS(加密消息语法)。 Alice阅读该消息并使用类似Windows证书存储(能够将标识符携带到Windows加密密钥存储区以获取私钥)来确定证书并最终确定私钥。

可以在“更复杂”的层上完成许多不同的事情。如果Alice非常喜欢管理密钥,她可以为每个与之交谈的人制作不同的密钥,然后通过消息“Bobness”或“Daviosity”知道她应该使用与她给Bob的公钥匹配的私钥,或者Dave