命名公钥和私钥的问题

时间:2011-09-14 07:13:48

标签: cryptography public-key-encryption

我听说您可以使用私钥加密数据作为数字签名的方法。换句话说,您可以使用私钥加密邮件。

在文本中,他们似乎总是说只有公钥可以加密,私钥可以解密文本。

我认为这是一个糟糕的选择。是一个密钥的单个实例只能做一个或另一个,但是哪个密钥是公共的还是私有的,这不是它的功能问题,而是它的分布或缺乏。

4 个答案:

答案 0 :(得分:7)

对于初学者来说,术语令人困惑。 RSA可用于2种不同的加密功能:数据加密和数字签名。

对于数据加密, 使用收件人的公钥加密数据; 他们 使用他们的私钥解密它。请注意,由于RSA的各种限制,加密和解密的“数据”通常只是对称算法的关键。

对于数字签名,使用您的私钥 签署数据; 他们 使用您的公钥验证数据签名。同样,RSA的各种限制意味着RSA算法实际操作的内容通常是数据的安全散列。

有时签名操作称为“使用私钥加密”,验证操作称为“使用公钥解密”。我认为这只会让人感到困惑,所以我总是喜欢在这种情况下签署和验证的条款。此外,“加密”和“解密”对DSA和ECDSA等其他签名算法毫无意义。

答案 1 :(得分:2)

You CAN generate public key from private key.

您无法从公钥生成私钥(嗯,您可以,但这在计算上非常昂贵)。

这就是两者之间的区别。它们不可互换(因此,例如,您不应发布私钥,并保留公钥),因为算法的工作方式。

RSA为例。算法基础是整数分解的问题。您选择两个大整数 p q 并将它们相乘以得到 n = p * q 。然后创建公钥和私钥:

  • 公钥:(n,e)
  • 私钥:(p,q,d)

然后:

  • 从私钥计算公钥很容易:

    n = p * q

    e = d ^( - 1)modφ(n),其中φ(n)=(p-1)(q-1)

  • 很难从公钥计算私钥 - 它需要 n 的因子分解才能获得 p q ,这是非常困难的如果p和q足够大。

答案 2 :(得分:0)

您向公众发布加密密钥,并将您的解密密钥保密。这样,任何人都可以向您发送只有您可以解密的加密数据。

如果你反过来这样做,那么你将是唯一一个能够加密你的数据的人,但是任何人都可以对它进行解密。这是没有意义的。如果每个人都可以解密您的邮件,您也可以不加密地发送邮件。没有必要对邮件进行加密,然后将解密密钥公开。

答案 3 :(得分:0)

有两种类型加密,一种是对称的,另一种是非对称的。在对称中,用于加密和解密的密钥是相同的。在非对称中,用于加密的密钥是公钥,解密是私钥..

所有工作都基于密钥的保密原则。在数字签名中,常用作SSL / TLS协议的一部分,使用非对称加密进行身份验证和共享,进一步用于加密通信线路