我向您发送使用pvt1
(私人)密钥加密的数据。
那你怎么打开这个文件?
没有我的pvt1
你怎么能打开它?
如果您可以使用pvt2
密钥打开,那么pvt1
和pvt2
密钥之间是否存在关联?
否则你怎么打开我的文件?
如果您需要我的pvt1
打开文档,那么我们之前是否会交换密钥?
答案 0 :(得分:4)
从理论上讲,您不使用私钥加密。您可以使用公钥或公钥和私钥的组合进行加密。
以下是最常见方案的工作原理:
使用公钥加密:
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 * G
和Rs * G
。哎呀,他因为无法分开而陷入困境。