use*_*021 0 cryptography public-key-encryption private-key
我向您发送使用pvt1(私钥)加密的数据。
那么如何打开此文档?
没有我pvt1,你怎么能打开它?
如果您可以使用pvt2钥匙打开,那么pvt1和pvt2钥匙之间是否应该没有关系?
否则,如何打开我的文档?
如果您需要我pvt1打开文件,那么在交换钥匙之前我们会见面吗?
名义上,您不使用私钥加密。您可以使用公钥或公钥和私钥的组合进行加密。
最常见的方案如下:
用公共密钥加密:
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 * Rp或Rs * Ep。也就是说,他需要,Es * Rs * G而他只有Es * Gand Rs * G。糟糕,由于无法分割,他被卡住了。