【问题标题】:Public key and private key relationship [closed]公钥和私钥关系[关闭]
【发布时间】:2016-12-31 06:48:44
【问题描述】:

我向您发送使用pvt1(私有)密钥加密的数据。

那么如何打开这个文档呢?

没有我的pvt1怎么打开?

如果您可以使用pvt2 键打开,那么pvt1pvt2 键之间不应该存在关系吗?

否则你怎么能打开我的文档?

如果你需要我的pvt1来打开文件,那我们之前见面交换密钥吗?

【问题讨论】:

  • 发件人使用收件人的公钥加密邮件,收件人使用他们的私钥解密。

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


【解决方案1】:

理论上,您不使用私钥进行加密。您可以使用公钥或公钥和私钥的组合进行加密。

以下是最常见方案的工作原理:

使用公钥加密:
1. 接收者生成公钥/私钥对。这两个键是相关的。
2. 收件人将其公钥发送给您,您确认它属于他们。
3. 你用收件人的公钥加密了一些东西。
4. 只能用收件人自己拥有的私钥解密。
5. 收件人用自己的私钥解密消息。

这个系统的优点是发送者和接收者之间不需要专门设置。收件人可以向所有人提供他们的公钥,这样任何人都可以向他们发送只有他们可以阅读的加密消息。

公钥和私钥以某种特殊的方式关联。这是一个复杂的数学,但这里有一个过度简化(但仍然很棘手)的解释:

你有一些操作,除了不可逆之外,它的行为类似于乘法。私钥是随机生成的。有一些众所周知的常数 G。公钥是私钥“乘以”G。我将调用接收者的密钥 Rs 和他们的公钥 Rp。所以Rp = Rs * G。 (这里*代表一个类似乘法但不可逆的运算。)

要加密消息,您可以选择一个新的随机公钥/私钥对,仅用于该消息。我将调用公钥Ep 和私钥Es。所以Ep = Es * G

要发送消息,请使用Es * Rp 对其进行加密,然后将其与Ep 一起发送。为了解密它,接收者用Rs * Ep解密它。

为什么会这样?因为Es * Rp = Rs * Ep。为什么?
Es * Rp = Rs * Ep
Es * Rs * G = Rs * Es * G
这是真的,因为这种类似乘法的运算是可交换的。

为什么攻击者不能解密它?攻击者有:
Ep(因为我们发送了它)
Rp(因为它是公开的)

攻击者需要Es * RpRs * Ep。也就是说,他需要Es * Rs * G,而他只有Es * GRs * G。哎呀,他被卡住了,因为他不能分裂。

【讨论】:

  • 着迷。谢谢你明白我的问题是什么。 100 分中的 100 分。