从私钥生成公钥

时间:2020-05-03 07:12:45

标签: private-key public-key

openssl生成公钥/私钥对时,是否首先生成私钥,然后根据私钥计算公钥?还是应该在与私钥同时计算公钥?

是否可以有多个与同一私钥匹配的公钥?

谢谢

1 个答案:

答案 0 :(得分:0)

至少不是在RSA中,实际上,您可以拥有一个公共密钥和几个“不同的”私有密钥。在RSA中,步骤是先生成公钥,然后再生成私钥。这是因为在开始和最终生成私钥之前选择了几个随机选择的值,但是在生成私钥后将它们全部丢弃。如果保留它们,则可以使用不同的值来重做该步骤,并且仍然使用相同的公共密钥,但是虽然乍一看所得到的私有密钥看起来会有所不同,但是它们是mathematically equal。即使您使用可能会创建多个密钥的算法,但出于所有意图和目的,它们都是同一密钥,因为如果使用一组私钥中的某个密钥进行签名是不可能的,则只能推断出该密钥是您拥有的公用密钥的有效对。

此外,这似乎是一个X-Y问题。即使您找到了为单个私钥创建多个公钥的算法,由于公钥本来就是公开的,所以没有什么可以阻止公众加密同一条消息并观察相同的加密结果。因此,您不能有两个不想与他人联系使用这些密钥的秘密演员。正如您特别提到的OpenSSL,在SSL上,您可能会向不同的CA提供不同的公钥(假设存在这种算法,因为我指出它在RSA中是相反的)或将它们嵌入到不同的应用程序/设备中,但是由于CA支持单个服务于多个域/服务器的证书以及服务于单个域的多个CA,目前的做法似乎没有任何好处。