为什么我们不应该在非对称加密系统中使用私钥加密?

时间:2009-09-03 09:06:15

标签: signing encryption-asymmetric security

在非对称密码系统的标准使用中,使用公钥进行加密,使用私钥进行解密。

反向过程中,“使用私钥加密”称为“签名”。

标准工具,尽管术语和缺乏直接工具,但允许实施使用私钥进行加密的加密系统。

有人能解释为什么这样的解决方案容易受到攻击吗?

用户案例:

考虑到Alice想以非传统的方式向Bob发送一些东西:

爱丽丝和鲍勃见过面,爱丽丝给了鲍勃一把她创建的私钥生成的“公钥”,但她警告鲍勃保守秘密。她一直保密私钥,并没有把公钥给别人。

鲍勃可以确定他从Alice收到的消息(如果这些消息是由Alice私钥加密的)只能由他读取(前提是他真的保留了他的Alice公钥密钥副本)?

如何将这种加密稳健性与传统方式进行比较,在我们的例子中,Bob会将消息(通过Alice的公钥加密)发送给Alice?

问题是什么

非对称密钥被命名为“私有”和“公共”的事实无助于理解我的问题。密钥具有基础属性,它是我广播“公钥”,赋予它“公共”属性。请在回答之前明确区分:我不考虑这些密钥的“公共”和“私有”属性,而是“私钥”加密与“公钥”加密的可靠性。

即使在这种特殊情况下误导,我也不能使用其他术语。

我知道这种情况是非传统的,并且可能导致一些不一致,或者不是非对称加密系统的重点,因为Bob和Alice在这里分享某种共同的秘密,而这不是不对称加密的重点

我看到了几个Stackoverflow答案,表明“私钥”和“公钥”是可交换的(只需阅读下面的答案)。对于RSA来说情况并非如此,因为从密钥生成公钥是微不足道的,并且这保证在其他方面不具有计算可行性。对于非信徒,使用RSA在openssl中生成密钥的过程是:

  1. 生成密钥
  2. 从密钥中提取公钥。
  3. 如果“私钥”和“公钥”之间存在如此大的差异,“私钥”加密与传统“公钥”加密之间是否存在稳固性差异?

    长选择答案的简短回答

    误解“私钥”究竟是什么并没有帮助我。 “私钥”有两种不同的定义。 “实用私钥”和“理论私钥”。

    来自RSA理论的

    理论私钥与公钥共享数学对称性:

        
    • 你不能从另一个中推断出一个
    •   
    • 加密在任何方面同样扎实
    来自RSA工具的

    实用私钥(如openssl)包含了出于效率原因的附加信息,通常,公钥的一部分甚至按惯例设置。这些假设打破了对称性:

        
    • 从“实用私钥”获取公钥是微不足道的。
    •   
    • 但加密仍然同样坚实

    有关详细信息,请参阅所选答案!如果误解仍然存在,请评论......

    编辑备注:

        
    • 非对称加密系统密钥对经常被宣传为可交换的(即使在当前的堆栈溢出答案中),我试图引起反思这可能是危险的误解,因为在REAL生活工具中并非如此。
    •   
    • 添加了用户案例,我希望这会澄清我的问题
    •   
    • 添加了最终的'简答'

6 个答案:

答案 0 :(得分:8)

答案 1 :(得分:6)

只是因为当您加密某些内容时,您正在屏蔽它,以便只有一个人可以读取它(具有私钥的人)。你没有那个人的私钥,你只拥有他们的公钥。

如果您使用私钥对其进行加密,任何人都可以使用您的公钥对其进行解密 - 这是签名的原则 - 他们可以说它是由您的私钥加密的!

答案 2 :(得分:3)

更明确地说,'使用私钥加密'意味着要解密,您需要使用公钥。这不是问题,只有任何人可以解密您的[在此处插入项目],因为公钥只是: public 保护数据无用,此系统用于验证数据。

例如,爱丽丝想要发送一个文件给宝贝(是的,是的,拍我)。爱丽丝并不关心其他人是否可以阅读她的文件,这不是保密的,但她希望鲍勃能确定她发送的内容是他收到的内容。然后,她可以使用她的私钥加密她的文件,Bob可以使用她的公钥解密文件,确保文件没有被篡改。但如果其他人正在监听该事务,他们也可以解密并读取该文件。他们无法改变它。


对于您提供的情况,更好的方法是在他们见面时交换密钥,以便实际上有两个密钥对。您自己提到,如果您尝试使用公钥进行加密,则RSA尤其不会实际工作,因为算法中进行了优化。如果这是其他算法的常见情况,我不会完全惊讶。它们被设计为以单向运行(私有/加密,公共/解密)并且是已知的“昂贵”操作,因此它们可能在现实中被大量优化。

除此之外,我认为您的计划没有任何安全问题......只要密钥真正保密。私人/公共只是基于典型用法的通用名称。没有什么可以强迫你公开公钥。在您的情况下,您可能会将它们称为“加密密钥”和“解密密钥”,但我不会同时使用每个密钥。事实上,我建议你在你的计划中将它们定义为这样,理由是Jonathan Leffler在评论中给出的理由:

  

“公钥”是可由多人共享的内容。这就是“公钥”的定义。其他任何事情都很混乱

答案 3 :(得分:1)

我认为你错过了公钥/私钥加密的重点(至少我理解这一点)。

在您遇到的情况下,对称加密也可以正常工作。使用非对称加密的原因是规模问题。

假设你有,不仅仅是鲍勃和爱丽丝,而是假想的人,每个字母的字母。这些人希望能够向任何人发送消息,确保只有收件人才能阅读。使用普通的对称加密,这将需要每个人之间的共享密钥,因此如果我们有来自字母表镇的26个人,那就是26x25个密钥,每个人都必须记住并保护25个密钥。

输入对称(即公钥/私钥)加密。现在每个人都有一个私钥和一个公钥,具有正常的规则。要向Fred发送消息,您需要查找他的(并且只有一个)公钥。然后你给他发消息。只有Fred可以阅读此消息。在此方案中,您有26x2个密钥,每个人只需要记住并保护 1 密钥。还需要有一个公钥来源,但这很容易。

使用非对称加密,您按照每个人的一对密钥描述的方式将需要26x25x2个密钥。

再说一遍,它是关于可扩展性的。对称方案所需的密钥数量为N^2-N,其中在非对称方案中,它仅为2*N

答案 4 :(得分:0)

我不知道是否存在某些版权问题,但我会引用“Valery Pryamikov” 来自this forum

签名和加密是两种不同的原型 安全要求,其他要求不同的填充 模式。使用短语“用公共解密”键是最大的误用 Bruce广泛使用的密码学史术语 Schneier的书“应用密码学”。它本身的短语 应该用于描述带有消息的签名方案 恢复(如RSA)。这句话也被用来调整不对称 旧协议验证模型的加密和签名,如 禁止。然而,就其本身而言,这只是一个不恰当的人 - 公钥是 众所周知,解密操作具有提供的意义 内容的隐私 - 如果解密密钥是不可能的 众所周知。

即使如此原始的RSA允许公钥和私钥的交换,但在 现实他们不能互换。私钥解密是 使用CRT(中国剩余定理)实现4x 更好的私钥操作性能。为此 - 你不需要 只有指数,还有模数和乘法的因子分解 反转某些产品这些因素。公钥只有模数 和指数,不能用于此类计算。

答案 5 :(得分:0)

你在滥用这些条款。

如果密钥真的是私密的和公开的,那么是,使用私钥加密的任何东西都只能通过公钥解密,但如果密钥是真正公开的,任何人都可以解密。

让我们忽视这一点。

这里的问题是鲍勃所知道的。 Bob真的知道Alice是否将她的公钥发送给其他人?如果没有,他无法确保只有他才能解密消息。技术中没有任何东西可以确保这一点。由Alices私钥加密的任何内容都可以通过她的公钥解密,因此任何拥有该密钥的人都可以解密。根据公钥的本质,应该是任何人。

确保Bob的消息只能由Bob解密的唯一方法是让Bob向Alice提供他的公钥,并让Alice通过他的公钥加密她想要发送给Bob的所有内容,这将使数据成为联系人 - 除了鲍勃以外的任何人都可以加密。她是否也通过她的私钥加密相同的数据(即签署数据)是重点。

当然,Bob再一次不知道Alice没有向其他人发送完全相同的消息,而是为其他公钥加密。