可以使用公共密钥来解密由相应的私有密钥加密的消息吗?


21

从我对一对公用密钥和专用密钥的用法所看到的内容中,公用密钥用于加密消息,而专用密钥用于解密加密的消息。

如果消息是用私钥加密的,则可以用相应的公钥解密吗?

如果是,您可以举一些使用这种情况的例子吗?

谢谢。



如果解密密钥是公开的,为什么还要加密呢?
Bergi

5
@Bergi数字签名?
user11153 '16

6
@Bergi:长答案:通过使用私钥对消息进行加密(可以使用公钥解密),您可以发送可以被任何人读取但只能由您编写的消息。通过先使用私钥进行加密,然后再使用接收者的私钥进行加密,您将创建一条消息,该消息只能由目标接收者解密,并且只能由您编写。
gnasher729

2
@ gnasher729我认为您的意思是先使用私钥进行加密,然后再使用接收方的公钥进行加密。您不应该拥有别人的私钥
kiamlaluno

Answers:


49

问:如果您向后踩一条鱼,它会向后走吗?
一种: ???

鱼不是自行车。同样,您不能使用私钥来加密消息,也不能使用公钥来解密消息。他们没有正确的设备。

使用RSA(这是一种流行的公共密钥密码系统,但不是唯一的一种),私有密钥和公共密钥具有相同的数学属性,因此可以在算法中互换使用它们。(但是,它们不具有相同的安全性,通常可以从私钥中轻易猜出公钥。)您可以采用RSA加密算法并为其提供私钥,也可以采用RSA解密算法并向其提供公钥。键。但是,根据标准算法,结果没有意义。

公钥和私钥之间的这种对称性并未扩展到大多数其他公钥密码系统。通常,公钥不是用于解密算法的数学对象的正确类型,而私钥不是用于加密算法的数学对象的正确类型。

可以这么说,公钥密码系统基于活板门功能的概念。一个单向函数是一个函数,很容易计算,但其倒数是很难计算的。活板门函数类似于单向函数,但是存在一个“魔术”值,可以轻松计算逆函数。

如果您有活板门功能,则可以使用它来制作公钥加密算法:向前(朝着简单的方向),该函数进行加密;向后(沿困难方向),该函数解密。解密所需的魔术值是私钥。

如果您有活板门功能,还可以使用它来制作数字签名算法:向后(朝硬方向),该函数进行签名;向前(朝容易的方向),该函数将验证签名。同样,签名所需的魔术值是私钥。

活板门功能通常来自家庭。指定家庭某一特定元素所需的数据是公钥。

尽管公钥加密和数字签名基于相同的概念,但它们并不完全相同。例如,RSA陷阱门功能基于取消乘法的难度,除非您已经知道其中一个因素。有两种基于RSA公共密钥加密方案的常见家族,分别称为PKCS#1 v1.5和OAEP。还有两种基于RSA的常见数字签名方案系列,分别称为PKCS#1 v1.5和PSS。两个“ PKCS#1 v1.5”具有相似的设计,但不完全相同。此答案由托马斯Pornin这个答案由马腾Bodewes进入在RSA的情况下,签名/验证和加密/解密的区别的一些细节。

请注意,出于历史原因,一些公开密钥加密技术的外行演示会伪装数字签名和验证作为解密和加密,原因是:RSA首先被普及,并且RSA的核心操作是对称的。(RSA的核心操作,称为“教科书RSA”,是RSA签名/验证/加密/解密算法中的步骤之一,但它本身并不构成签名,验证,加密或解密算法。)从10000英尺的角度来看,它们是对称的,但是一旦进入细节,它们就不是对称的。

另请参见从签名还原为加密?,这说明您可以从签名方案中构建加密方案,但只能在特定条件下进行。


2
+1是为了清楚地解释一个误解,当我单击此问题时我什至不知道自己有错。
Ixrec

1
谢谢。“公钥不是用于解密算法的数学对象的正确类型,而私钥不是用于加密算法的数学对象的正确类型。” 您是说它们仍然可以用于这些目的,但不是很好的选择,或者不能这样做?除了安全属性(例如,硬度不对称以猜测另一个密钥)以外,哪些数学属性决定了它们不是“正确”类型?
蒂姆(Tim)

2
将删掉前两段,但是否则这是一个非常有见地的答案。我来自于外行对加密/解密和签名/验证的解释,以及私钥如何用于“加密”的解释,而您的回答恰恰说明了我在想什么。
凯尔·查达

那么,本文是否有误:globalsign.com/en/blog/how-do-digital-signatures-work?它提到公共密钥用于解密,私有密钥用于加密
Kenneth Worden

@KennethWorden这基本上是正确的,但是有些细节是错误的。在“应用签名”下,“哈希已加密”应为“哈希已签名 ”,仅此一项就可以进行数字签名。在“验证签名”下,没有“解密的哈希”之类的东西:对于大多数签名方案,您无法从签名中获取哈希,而是发生了另一种数学运算(称为验证)它以哈希和签名作为输入,并输出“ ok”或“ bad”。
吉尔斯(Gilles)'所以

6

当PKE方案使用活板门排列作为黑盒时,使用私钥“加密”,然后使用公钥“解密”将产生原始消息。对于其他PKE方案,甚至都没有必要理解这一点。(例如,尝试使用私钥进行``加密''可能是类型错误。)

当人们认为这种情况属于数字签名并且未及时纠正时,可以使用[通过“私钥”加密消息,然后通过“相应的公共密钥”解密] 。看到这个答案这个问题


4
否。您一直在迷信教科书RSA是唯一的公共密钥密码系统,并且签名与解密是同一回事。
吉尔斯(Gilles)'所以

前者是一个很好的观点,我会解决。由于我的长句子不够清楚,您的评论的后半部分吗?

4
我不理解“当人们认为它是用于数字签名时”的意思。似乎您是在说人们错误地认为数字签名不同于公钥加密。来自您,我确定这不是您的意思,但是即使添加了第一段,您的回答也确实令人困惑。
吉尔(Gilles)“所以,别再邪恶了”

2

是的,使用私钥加密的邮件可以使用公钥解密。

实际上,这是为了验证数据的真实性而实现的。在数字签名中,一个人用他的私钥加密数据的哈希。任何人都可以使用该人的可用公共密钥对它们进行解密,并验证数据的真实性。


2
您可以使用RSA密码系统执行此操作,但不能使用所有公钥密码系统执行此操作。例如,El-Gamal密码系统不同于El-Gamal签名方案。另请参见吉尔斯的答案
离散蜥蜴

诚然。我试图给出直截了当的答案,而不考虑特定的算法@Discretelizard
Kevin Amipara

感谢您提供直接的答案。
jrahhali

0

将非对称加密中的公钥视为锁而不是密钥。拥有锁和带该锁的锁盒的黑客会解锁该锁盒吗?当然不行,要解锁该盒子,您需要锁定钥匙。从未公开发送过,只有发件人拥有。

但是,答案是肯定的:D黑客实际上有可能仅使用公共密钥(锁和锁盒)解密邮件。但这对于今天的任何计算机来说都非常困难。因为使用该公共密钥还原加密的消息是一项非常困难的数学运算,尤其是当该密钥最大为2048位数字时。数学运算的强度取决于大量素数分解的难度。

这是一个很好的视频,解释了RSA算法的工作原理https://www.youtube.com/watch?v=wXB-V_Keiu8


0

该问题就eMRTD而言是有效的,其中使用AA公钥对由eMRTD私钥加密的内部身份验证响应进行解密。它是ICAO 9303标准的一部分。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.