检查我对公钥加密的理解以及算法实现大小的问题

时间:2011-05-26 13:51:16

标签: implementation public-key-encryption

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

Alice希望安全地收到邮件。她使用密钥生成算法KG1创建私钥“C2A836B33FF1E”和公钥“35B1AC692”,并将公钥发布给全世界。

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

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

2 个答案:

答案 0 :(得分:1)

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

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

关于方法的实现,它们根据所使用的确切加密方案而变化。 RSA是早期和更为人熟知的公钥加密方案之一。关于密钥生成,加密和解密的所有三个步骤都有详细的步骤here

答案 1 :(得分:1)

你做对了。这个方案引起的主要问题是“Bob怎么能确定他从”世界“获得的公钥是Alice的公钥,而不是Chuck的公钥?的确,如果是Chuck的公钥,Chuck将能够解密Bob发送给Alice的消息。

这由证书解决。每个参与者都拥有知名和可信证书颁发机构的公钥副本。当Alice想要将公钥发布给全世界时,她向这些权限中的一方付款以获取包含其公钥的证书。获取证书时,每个人都可以使用权限的公钥验证证书是否已损坏,因此请确保公钥是Alice的公钥,而不是Chuck的公钥。

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

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