加密公钥;用于解密的私钥?

时间:2011-03-29 02:45:17

标签: encryption public-key private-key

我知道私钥和公钥在数学上是相关的,用一个密钥加密的数据只能与其他密钥相关联。我的问题是私钥总是用于加密数据,而公钥总是用来解密它?或者可以是副版本,如果是这样,你可以给出一些示例应用程序,其中它用于其他方向(公钥加密和私钥解密)?

4 个答案:

答案 0 :(得分:8)

加密是关于保密数据的;数据被转换成不透明的blob,反向操作需要攻击者不知道的东西,即“秘密”或“私人”信息。加密的全部意义在于解密不能只用公共信息来完成;因此,解密使用私钥。但是,让任何人加密数据都没有问题,因此加密可以使用公钥。

有些算法(实际上只有一个:RSA),从一个偶然的角度来看,似乎是“可恢复的”:您可能会考虑使用私钥进行加密,使用公钥进行解密。如上所述,存在机密性(如果解密密钥是公开的,那么任何人都可以解密,因此加密的数据不再被认为是机密的)。这种“反向加密”可以用作数字签名算法的基础,其中没有机密性概念,而是可靠的关键所有者行为证明。

然而 RSA比模幂运算更多。 RSA加密首先通过称为“填充”的操作将输入消息转换为大整数。 RSA签名生成首先通过另一个操作将输入消息转换为大整数,也称为“填充”; 这不是所有相同的填充。填充对于安全性至关重要,并且加密和签名之间所需的特性非常不同。例如,加密填充需要高级别的附加随机性,而签名填充需要大量冗余(以及散列函数,以便容纳长输入消息)。

将签名称为“使用私钥加密”是RSA标准历史上的方式(因此名称如“md5WithRSAEncryption”),但它是不准确的(填充是,并且必须是不同的)并且过于具体(它仅适用于RSA,而不适用于El Gamal,DSA,Diffie-Hellman,NTRU ......)。这只是一个普遍的混乱。

答案 1 :(得分:1)

如果我想向您发送安全邮件,我会使用您的 public 键加密邮件。这样,只有你(知道私有密钥)才能解密它。

答案 2 :(得分:1)

不仅可以使用公钥进行加密,这实际上是加密保密时的正常操作模式。这是有道理的 - 任何人都可以使用公钥加密,只有正确的收件人才能使用他们的私钥解密。

在许多公钥系统中,签名在数学上类似于相反的情况 - “使用私钥加密” - 但请注意,签名操作从根本上与加密操作不同。例如,对于RSA,签名必须使用不变的,可验证的填充方法,而加密应使用随机填充。

答案 3 :(得分:-1)

它是可以互换的。

数字签名 - >私钥加密,公钥解密,以验证发件人。

发送消息 - >公钥加密,私有解密和所有者读取消息。

编辑:人们似乎不同意“可互换”的定义。我需要澄清一点,我所说的是操作的数学视角,而不是安全方面最好的。 Ofc,你应该使用密钥进行预期的操作。

然而,HenrickHellström对SO线索的回应解释了为什么它们在数学上是可互换的:Are public key and private key interchangeable?