【问题标题】:Why encrypt message digest in digital signature?为什么要在数字签名中加密消息摘要?
【发布时间】:2020-03-14 07:32:12
【问题描述】:

我正在尝试理解以下内容:

为什么要使用来自发件人的私钥对密码学中的消息摘要进行加密?

接收方可以使用发送方的公钥对其进行解密,但其他任何人也可以这样做。即使是中间的那个人,所以我真的不明白在数字签名的意义上加密消息摘要的意义。

【问题讨论】:

  • 这是一个数字签名;它应该是每个人都可以验证的。这不是秘密。
  • 密码学网站已经回答了这个问题。但总的来说,即使例如RSA 使用相同的操作进行加密和数字签名生成(即模幂运算)并不意味着使用私钥的模幂运算等于加密。他们在 PKCS#1 RSA 标准的初始版本中犯了这个错误,但在所有后续版本中都已纠正。
  • 我投票结束这个问题,因为这不是关于编程,而是关于密码学,它一直是asked and answered(都是我,因为它被问了很多在这里)
  • @JamesReinstateMonicaPolk 感谢您的回复。但是你为什么要对“消息摘要”进行加密呢? A 使用 B 的公钥对消息进行加密,并使用自己的私钥对消息摘要进行加密。 B 用自己的私钥解密消息,并用 A 的公钥解密消息摘要。现在 B 将生成消息的哈希值以将其与消息摘要进行比较。我不明白为什么必须对消息摘要进行加密?能否请您详细说明一下。
  • 用“加密”这个词来指代RSA的签名操作是错误的。这样做只会让您感到困惑。所以不要这样做。使用“标志”一词。数字签名是“签名”然后“验证”,这些是核心操作。不是“加密”和“解密”。阅读上面@MaartenBodewes 的第一条评论。

标签: encryption cryptography key signature


【解决方案1】:

尝试分离encryption and signing。即使在数学上它们是相似的操作,也有一些重要的区别。我会尝试总结基础知识

mesaage 并使用自己的私钥加密消息摘要

实际上 - 人 A 创建了内容的哈希并签署了哈希。这意味着执行 解密 操作并使用其私钥签名填充,创建签名

现在 B 人将对消息进行哈希值,以将其与消息摘要进行比较。

这是错误的。谁(任何攻击者)都可以修改/伪造内容并创建有效的摘要。

B 人

  • 创建内容的哈希值
  • 验证提供的签名 - 使用 A 的公钥加密提供的签名,这将导致散列和签名填充

但其他人也可以这样做

签名确保只有 A 可以对消息摘要进行签名,因为只有使用私钥才能“解密” - 创建一个输出,在“加密”之后可能会产生一些特定的值(摘要)。

使用完整的 RSA 操作规范(PSS 填充)而不是教科书 RSA(没有随机数和填充)也很重要。否则,如果有人可以欺骗 A 解密任何输入,从而导致创建签名或泄露私钥。

编辑:

为什么用公钥加密不够用

加密确保只有收件人可以解密消息,但它并没有说明谁在发送消息。 (A 可以相信只有 B 读到了这条消息,但 B 可能不确定它是来自 A 的消息)

签名不可否认地识别发件人。 (B可以确定消息是A发送的)

这种方法有一些注意事项(签署直接加密的消息),但可以在加密操作系统论坛中更好地解释详细信息。

【讨论】:

    猜你喜欢
    • 2015-04-09
    • 1970-01-01
    • 2014-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多