首页 文章

数字签名公钥[关闭]

提问于
浏览
6

我是加密的新手 .

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

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

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

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

这个签名如何解释here

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

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

  • same 密钥集,用于从Bob向Alice发送安全消息,这意味着Alice用于解密从Bob接收的消息的相同私钥可用于加密消息的摘要,由Alice发送回Bob或...

  • Additional 用于对Alice的消息进行签名的加密/解密密钥对,其中Alice发布该对的解密密钥 .

2 回答

  • 3

    签名为"encrypt with private key"的说明是 wrong . 好吧,主要是 . 这是RSA签名如何工作的传统解释,但实际上它与RSA签名的实际工作方式不匹配,因为存在"padding"这样的事情,即将数据元素转换为大整数和返回 . 填充的细节对于安全性至关重要 - 您不会使用相同的填充进行加密和签名 .

    此外,签名视图"encrypt with the private key"仅适用于使用"trapdoor permutation"的非对称算法,而许多签名算法不适用(例如DSA) . 所以我建议忘记这个解释,它充其量也是令人困惑的 .

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

    有一些密钥对类型(实际上,RSA密钥对)可以用于签名和加密(分别使用RSA签名算法和RSA加密算法 - 它们不是相同的算法,尽管它们共享相同的数学核心操作) . 从技术上讲,您可以使用相同的密钥对;但是,不建议这样做:

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

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

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

  • 2

    您只能拥有一对密钥并且只发布一个公钥,该公钥可用于加密发送给您的邮件并检查您创建的邮件签名 . 除了用于不同目的的附加键/子键,设置可以更复杂不需要 .

相关问题