4

显然我对不对称加密不够了解。

因此,在任何不对称加密系统中,我都可以要求一个密钥,它为我生成一个我应该保密的私钥和一个我应该广泛宣传的公钥。

但当然,我永远不能绝对确定我的私钥没有被泄露,无论我如何存储它。所以,就像密码一样,我想经常更改我的私钥。

我的问题是,在任何不对称加密系统中:每当我制作新的私钥时,我也会得到一个新的公钥,对吗?所以我的旧公钥不能与我的新私钥一起使用?...这意味着任何想使用我的加密与我交流的人都必须首先获得我的新公钥,对吗?

或者有什么方法可以经常更改我的私钥而不需要我的朋友不断更新我的公钥?

4

4 回答 4

3

使用非对称加密算法,公钥和私钥在数学上是相互关联的。您不能在不更改另一个键的情况下更改一个键。

不过,只要您采取合理的措施来保护您的私钥,您应该很少需要更改它。

  • 使用足够大的密钥来帮助防止它在可预见的将来被破解。(大小取决于算法,例如 4096 位 RSA。)
  • 不要在线存储您的私钥。
  • 将您的私钥存储在受密码保护的加密容器中。使密码长而复杂,并记住它。
  • 永远不要在您怀疑可能受到威胁的系统上使用您的私钥。
  • 考虑完全离线存储密钥,例如在记忆棒或 CD 上(当然是在加密容器中)。

这些是我个人会做的最低要求。

如果您碰巧担心人们拥有您的公钥的真实副本,请生成它的散列并为人们提供一种与您确认散列的方法。

归根结底,您的密钥和通信是否足够安全的问题取决于您要防御的内容。如果您认为您的系统受到威胁并且您的系统中的私钥被盗,那么频繁更改您的密钥是没有意义的,因为新密钥也会被盗。如果您认为您的公钥已被用于破解您的私钥,那么更大的密钥和更好的熵将导致它们花费更长的时间来破解。

当前 (2012) NIST对非对称密钥的建议是每 1-2 年更改一次,并使用 2048 位的最小密钥大小。

于 2013-08-13T21:54:46.083 回答
1

Syon 提出了一些很好的观点。要考虑的另一件事是拥有多个密钥。强烈建议使用单独的签名密钥和单独的加密密钥。

如果您的私人加密密钥被泄露,您的签名仍然有效。

为了详细说明 Syon 的观点,您可以在SafeNet eToken等硬件设备上创建和存储私钥。私钥无法提取,因此只要您实际拥有该代币,您就可以非常确信您的私钥是安全的。

于 2013-08-14T04:29:16.197 回答
1

据我所知,是的,可以在不更改公钥的情况下更改私钥。如果 {e,n} 是公钥(n 是两个大素数的乘积),{d,n} 是私钥。然后我们需要找到一个新的 e 值,使得 m=c^(ed) mod n。这是通过求解 ed=kx phi(n) +1 来实现的,其中 phi(n) 是 Eulers Totient 函数。更改私钥的原因是如果我们认为密钥已被泄露,因此我们需要一个新密钥,但出于遗留原因,我们需要保留旧的公钥。

于 2019-05-18T20:20:07.710 回答
-1

你完全理解它是如何工作的。如果不更改您的公钥,就无法更改您的私钥。现在,问题是如果你通过不安全的方式分发你的公钥,你可能会向中间攻击的人祈祷。

有关示例,请参见http://en.m.wikipedia.org/wiki/Man-in-the-middle_attack 。

避免这种攻击的方法是从受信任的实体获取数字证书。

于 2013-08-13T21:42:54.500 回答