使用 public 密钥加密是什么意思?

What does it mean to encrypt with a public key?

我听过很多 public 密钥理论,但我从来没有真正理解如何加密可以用您没有的私钥解密的东西。

如何使用 public 密钥加密消息,以便只有拥有与该密钥关联的相应私钥的人才能解密它?

加密密钥成 public/private 对。私有由所有者密切持有,但 public 可以传递给那些需要加密某些内容以便将其发送给所有者的人。

用 public 密钥加密的内容只能用私钥解密,因为它包含 encrypt/decrypt 例程使用的更多详细信息。

虽然这可能无法提供您可能正在寻找的技术细节,但希望它有助于阐明键之间的关系。

这样看:

A message from Person B is being delivered to only Person A. Person A has the key (Private Key) to open the Chest (Public Key) and read the message. At this point, Person A can respond to the message and place it back in the Chest (Public Key) and redeliver to Person B. Person B can now use their key (Private Key of their own) to read the message in the Chest (Public Key)

希望这个类比能有所帮助。

这个 video 由 Youtube 频道 Art of the Problem 在深入了解 RSA 算法如何实现它的具体细节之前很好地从概念上对其进行了解释。

如果您将加密视为使用锁和钥匙来保护信息,那么标准的共享密钥加密涉及您和您的合作者持有同一把钥匙。当您发送消息时,您会收到消息,使用您的密钥将其锁在一个上锁的盒子中,然后将盒子发送给收件人,收件人会使用您拥有的密钥的副本打开它。

在public-私钥加密中,您不会泄露您的密钥副本;您将密钥保密。相反,您给出了有关如何构建只有您的钥匙才能打开的锁的说明。你把这个给任何需要它的人。他们负责建立锁并使用它来保护他们的信息,然后再将其发回给您。如果他们做对了,那么当你把你的私钥放进去时,他们建造的锁就会完美地打开。

考虑加密步骤的另一种方式是,您实际上将锁的副本分发给任何想向您发送消息的人。他们可以拿走这把锁,将其锁在他们的消息上,没有钥匙就没有人可以打开它阅读内容——即使是原始发件人!如果使用物理锁,这将非常昂贵,但通过数字方式很容易做到。

Public-隐私加密依赖于一个One-way function (more correctly, a certain type of one-way function called a trapdoor function),一个易于计算的数学公式,但如果只有输出则很难找到输入。类似地,你有一个锁设计,它很容易从一组指令构建,但很难在没有看到适合锁的实际钥匙的情况下进行逆向工程。

我也倾向于从打结的角度来考虑这部分。采取一系列步骤将绳子打结非常容易。即使知道您做了什么以及按什么顺序操作,有时也无法通过颠倒步骤的顺序来解开结。要么你在某处打滑,要么你需要用秘密的解绳钥匙来解开绳子。 (提示:解开暗结的钥匙是一把刀,解完后数一数手指)