数字签名公钥

dim*_*mba 7 cryptography public-key-encryption

我是加密的新手.

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

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

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

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

该如何签名解释在这里:

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

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

  1. 用于从Bob向Alice发送安全消息的同一组密钥,意味着Alice用于解密从Bob接收的消息的相同私钥可用于加密消息的摘要,由Alice发送回Bob或...
  2. 用于签署Alice消息的附加加密/解密密钥对,其中Alice发布该对的解密密钥.

Tho*_*nin 4

将签名解释为“用私钥加密”是错误的。嗯,主要是。这是对 RSA 签名如何工作的传统解释,但实际上它与 RSA 签名的实际工作方式并不相符,因为存在“填充”之类的东西,它是将数据元素转换为大整数并返回。填充的细节对于安全性至关重要——并且您不会将相同的填充用于加密和签名。

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

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

有几种密钥对类型(实际上是 RSA 密钥对)既可用于签名又可用于加密(分别使用 RSA 签名算法和 RSA 加密算法——尽管它们共享相同的算法,但它们不是相同的算法)相同的数学核心运算)。从技术上讲,您可以对两者使用相同的密钥对;但是,不建议这样做:

  • 由于算法之间的相互作用,可能存在隐含的弱点。关于这个主题的研究很少。尽管填充差异应该可以防止这些问题,但没有证据表明。

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

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