Encryption 如何生成非对称加密密钥对?

Encryption 如何生成非对称加密密钥对?,encryption,cryptography,public-key-encryption,private-key,key-generator,Encryption,Cryptography,Public Key Encryption,Private Key,Key Generator,我最近在计算机科学课上学习了公钥/私钥加密,以及它在数据加密/解密方面的工作原理。我们还介绍了如何将其用于数字签名。然而,我们并没有详细讨论实际的键是如何生成的 我知道它从一个非常大的数字开始,然后通过某种keygen算法返回两个不同的密钥,一个是私有的,另一个是公共的。这些算法是已知的还是黑箱系统?一个用户是否总是有相同的一对密钥链接到他们,或者他们在任何时候都会改变 这似乎是一个非常数学化的问题,因为键是相互关联的,但一个键不能从另一个键中推断出来 在生成的两个数字中,p和q是大小大致相同的

我最近在计算机科学课上学习了公钥/私钥加密,以及它在数据加密/解密方面的工作原理。我们还介绍了如何将其用于数字签名。然而,我们并没有详细讨论实际的键是如何生成的

我知道它从一个非常大的数字开始,然后通过某种keygen算法返回两个不同的密钥,一个是私有的,另一个是公共的。这些算法是已知的还是黑箱系统?一个用户是否总是有相同的一对密钥链接到他们,或者他们在任何时候都会改变

这似乎是一个非常数学化的问题,因为键是相互关联的,但一个键不能从另一个键中推断出来

在生成的两个数字中,
p
q
是大小大致相同的非常大的素数,用于计算
N
,这两个素数使用

下面更详细地描述了如何从一个随机(大)数开始,使用并达到一个很可能是素数的数

我知道它从一个非常大的数字开始,然后通过某种keygen算法返回两个不同的密钥,一个是私有的,另一个是公共的

嗯,这并不完全正确。当然,大多数非对称算法都基于大量数据,但这不是一个要求。例如,有基于哈希的算法,哈希是基于位/字节,而不是数字

但是是的,对于非对称算法,通常包含执行密钥对生成的特定算法。例如,非对称加密由三个
Gen
Enc
Dec
组成,其中
Gen
表示密钥对的生成。当然,密钥对由公共部分和私有部分组成

RSA基本上是从生成两个大的随机素数开始的,它不一定从一个数字开始

这些算法是已知的还是黑箱系统

它们是已知的,并且是系统安全的基础。不能仅使用任何数字来执行,例如RSA。请注意,对于RSA,可能有不同的算法和配置;并非每个系统都使用相同的
Gen

一个用户是否总是有相同的一对密钥链接到他们,或者他们在任何时候都会改变

这取决于系统的密钥管理。通常有一些刷新或重新生成键的方法。例如,X.509证书往往有一个结束日期(到期日或到期日),因此您甚至不能永远使用相应的私钥;您必须不时刷新证书和密钥

这似乎是一个非常数学化的问题,因为键是相互关联的,但一个键不能从另一个键中推断出来

这通常是不正确的。公钥通常很容易从私钥派生。对于RSA,公共指数可能未知,但通常设置为固定数字(65537)。这与模数(也是私钥的一部分)一起构成公钥。对于椭圆曲线密钥,首先生成一个私有随机值,然后直接从中导出公钥


当然,您永远不能从公钥派生私钥;这没有任何意义-如果可以的话,它不会是非常私密的。

这个答案是针对RSA的,可能值得注意的是在你的答案中。@LukePark我不熟悉任何其他使用公钥/私钥对的加密算法,这可能会造成歧义。ElGamal?DSA?严格地说,DH也有公钥和私钥。有无数算法被认为是公钥和私钥算法。你应该在回答中说明你是在专门谈论RSA,因为OP一般都在问PKC。感谢你花时间为你的问题画了一张图。PK crypto的一般类比是将它们视为至少分两步计算的数学恒等式。对于RSA,使用具有指数的标识…加密应用一个步骤(指数化),解密(也是指数化)完成标识,以达到与“1”相等的指数…将消息返回到其原始状态。对于EC ElGamal来说,这是相同的概念,但在循环组上使用group运算符:加密在循环的某个方向发送消息,而解密则将消息推到循环的其余部分,以恰好完成1个循环。