gpt4 book ai didi

encryption - RSA 的公钥和私钥可以互换吗?

转载 作者:行者123 更新时间:2023-12-02 23:32:28 25 4
gpt4 key购买 nike

一方面,我听到人们说这两个 key 完全可以互换,第一个 key 可以解密第二个 key 加密的内容。这让我认为这两个键是可以互换的。

但另一方面,RSA 生成的 key 似乎具有不同的长度,并且在另一个主题上,使用私钥加密被称为“签名”,并且被认为不如使用公钥加密安全。 (2)

最重要的是,当公钥应该在野外公开分发时,私钥应该保持不公开。 (3)

我计划从一个唯一的服务器接收数据,所以我的想法是在该服务器上保留一个公钥来加密数据,并将私钥分发给所有可能的客户,但这违背了(3)。相反,如果我分发公钥并使用私钥加密我的数据,根据(2),加密的安全性较差。

我应该分发公钥并使用私钥加密以满足 (2) 的要求还是反之亦然?

注意:就我而言,性能不是问题。

最佳答案

答案取决于您提出问题是出于数学好奇心,还是纯粹出于实用的密码学原因。

  • 如果您正在实现加密系统,您不应该永远泄露您的私钥,因此从这个意义上说, key 绝对不能可以互换。此外,您描述的使用场景似乎非常适合身份验证而不是 secret 性,因此服务器发送到客户端的消息确实应该进行签名而不是加密。如果您还需要保密,则需要在协议(protocol)中执行更多步骤。

  • 从数学角度来看,答案是 OTOH"is",假设您使用仅包含模数 N 和指数 D 的私钥的内部表示,而另一个指数 E 是随机生成的。描述两个指数之间关系的公式是 1 = E*D (mod phi(N)),因此从数学角度来看,哪个指数是谁并不重要。

But on the other hand, RSA generated keys appear to have different length

如果您使用的实现生成的 RSA 私钥明显长于相应的公钥,则这几乎总是意味着该实现绝对不适合互换使用公钥和私钥。长度差异通常是由于以下因素的组合造成的:

  • 公共(public)指数 E 不是随机生成的,而是一个小的固定常数,例如 3 或 0x10001。另一方面,私有(private)指数 D 将几乎与模数一样大,因此私钥数据将几乎是公钥数据大小的两倍。如果您只有 RSA 私钥 (N,D),您对公共(public)指数的第一个猜测将是值 3 或 0x10001,并且很容易检查猜测是否正确。如果您希望 key 可以互换,那么您首先选择的指数必须随机选择为大于 1 且小于 phi(N) 的奇数整数,并且没有与 N 或 phi(N) 相同的质因数。<
  • 私钥数据包括公共(public)模数N的因子P、Q。
  • 私钥数据包括公共(public)指数 E。

关于encryption - RSA 的公钥和私钥可以互换吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9208583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com