0

如果以下关于事情如何发展的示例基本上是正确的,我对公钥加密有疑问。然后我想知道在哪里可以找到我称之为 KG1、EA1 和 DA1 的三种算法的实现,以及每种算法的代码行数。

Alice 想要安全地获取消息。她使用密钥生成算法 KG1 创建私钥“C2A836B33FF1E”和公钥“35B1AC692”,并将公钥发布给全世界。

Bob 将他的消息“HELLO FROM BOB”和公钥“35B1AC692”的输入放入加密算法 EA1 中,生成字符串“DF1537532CB23B”并将该字符串发送给 Alice。Chuck 也截取了一份副本。

Alice 有一个解密算法 DA1,可以将字符串“DF1537532CB23B”和她的私钥“C2A836B33FF1E”作为输入,并产生输出“HELLO FROM BOB”,但由于 Chuck 没有私钥“C2A836B33FF1E”,他不能将“DF1537532CB23B”转换为“HELLO FROM BOB”。此外,虽然 Chuck 知道 KG1 算法和公钥“35B1AC692”,但他不能使用这些信息来回溯到私钥。

4

2 回答 2

1

是的,差不多就是这样。请注意,说 Chuck不能解密消息并不完全正确,而是他不能用已知的数学方法轻易地做到这一点。这样做的原因是密钥生成算法依赖于所谓的单向函数。对于给定的输入,这些函数相对容易计算,但很难从输出中返回。

单向函数的一个例子是将两个大素数相乘;乘法很容易,但要再次找到素因数非常困难,除非有一些新的数学突破。

至于方法的实现,它们会根据所使用的确切加密方案而有所不同。RSA 是较早且广为人知的公钥加密方案之一。这里有关于密钥生成、加密和解密这三个方面的详细步骤。

于 2011-05-26T13:56:43.910 回答
1

你做对了。这种方案造成的主要问题是“Bob 怎么能确定他从“世界”得到的公钥是 Alice 的公钥,而不是 Chuck 的公钥?确实,如果是 Chuck 的公钥,Chuck 就能解密 Bob 发送给 Alice 的消息。

这是通过证书解决的。每个参与者都有一份知名且受信任的证书颁发机构的公钥副本。当爱丽丝想向世界发布它的公钥时,她向其中一个机构付费以获得包含她的公钥的证书。获得证书时,每个人都可以使用权威机构的公钥验证证书没有损坏,因此请确保公钥是 Alice 的公钥,而不是 Chuck 的公钥。

认证的基本过程是加密签名:认证机构用其私钥加密一些数据。当您拥有数据、其签名和权威机构的公钥时,您可以验证使用权威机构的公钥解密签名会导致原始数据。

RSA 是事实上的标准,可用于多种语言和平台。你不应该自己重新实现它。

于 2011-05-26T14:04:25.657 回答