数字签名公钥

时间:2011-11-13 08:49:42

标签: cryptography public-key-encryption

我是加密的新手。

在公钥加密中,我们有一对密钥 - 一个用于加密,一个用于解密。

如果Alice希望Bob发送她的秘密消息,她会发布她的加密密钥(它将被称为公钥)并保密解密密钥(它将被称为私钥)。 Bob使用Alice公钥加密消息,Alice使用她的私钥解密Bob的消息。

直到现在我认为我们都同意。

现在让我们看看签名会发生什么。 Alice希望向Bob发送消息并签名以证明Bob拥有她的Alice所拥有的消息。签名旨在解决身份验证问题。利用公共密钥密码术,签名是用Alice私钥加密消息(例如校验和)消息,并由Bob用Alice公钥解密。由于只有Alice知道它的私钥,因此Bob可以确定该消息来自Alice。

如何解释签名here

  

一些非对称算法(公钥算法),如RSA允许   在相反的方向上工作的过程:消息可以   用私钥加密并用相应的密码解密   公钥。如果收件人想要解密与Bob的邮件   公钥他/她必须知道该消息来自Bob,因为   没有其他人拥有发件人的私钥。数字签名就是这样做的   方式。

我很困惑的是,Alice用于加密签名的私钥是什么? 因此,签名我们使用:

  1. 相同组密钥,用于从Bob向Alice发送安全邮件, 这意味着Alice使用相同的私钥来解密从Bob收到的消息 用于加密消息的摘要,由Alice发送回Bob或...
  2. 用于签署Alice消息的附加对加密/解密密钥,其中 Alice发布了该对的解密密钥。

2 个答案:

答案 0 :(得分:3)

将签名解释为“使用私钥加密”错误。好吧,主要是。这是RSA签名如何工作的传统解释,但实际上它与RSA签名真正的工作方式不匹配,因为存在“填充”这样的事情,即将数据元素转换为大整数然后回来。填充的细节对于安全性至关重要 - 您不会使用相同的填充进行加密和签名。

此外,签名“使用私钥加密”的视图仅适用于使用“陷门置换”的非对称算法,而许多签名算法不能(例如DSA)。所以我建议忘记这个解释,这充其量只是令人困惑。

使用私钥在给定消息上生成签名算法。它通过消息和公钥进行验证;如果公钥是与用于生成签名的私钥相对应的公钥,则只有当这是相同的消息时,验证算法才会说“ok”(或者更准确地说,如果找到一个独立的,那么它在计算上是不可行的。验证算法将接受的消息)。因此,签名是一种“非对称”算法,因为它们使用密钥对,一个是公共的,另一个是私有的。

有一些密钥对类型(实际上,RSA密钥对)可以用于签名和加密(分别使用RSA签名算法和RSA加密算法 - 这些算法不是相同的,虽然他们共享相同的数学核心操作)。您可能在技术上对两者使用相同的密钥对;但是,不推荐

  • 由于算法之间的相互作用,可能存在隐含的弱点。关于该主题的研究很少。虽然填充差异应该阻止这些,但没有证据。

  • 加密密钥和签名密钥具有不同的生命周期。有关详细信息,请参阅this answer(简而言之:您要备份加密私钥,签名私钥,因此它们不能是相同的密钥)。

    < / LI>
  • 如果在RSA中发现了一些严重的弱点,您可能希望用其他算法的密钥替换密钥,并且无法保证替换加密和签名算法仍然能够共享相同的密钥类型

答案 1 :(得分:2)

您只能拥有一对密钥并且只发布一个公钥,可用于加密发送给您的邮件并检查您创建的邮件签名。使用额外的键/子键可以实现不同目的的设置,但不是必需的。

相关问题