Encryption 为什么在数字签名中加密消息摘要?

Encryption 为什么在数字签名中加密消息摘要?,encryption,cryptography,key,signature,Encryption,Cryptography,Key,Signature,我试图理解以下内容: 为什么密码学中的消息摘要应该用发送方的私钥加密 接收方可以用发送方的公钥解密,但其他任何人也可以这样做。即使是中间人,所以我也没有真正意识到在数字签名意义上加密消息摘要。 尝试分离。即使在数学上它们是相似的运算,也有一些重要的区别。我将尝试总结一些基本知识 mesaage并使用自己的私钥加密消息摘要 实际上,person A创建了内容的散列并对散列进行签名。这意味着执行解密操作,使用其私钥填充签名,创建签名 现在,人员B将生成消息的哈希值,以将其与消息摘要进行比较 这是错误

我试图理解以下内容:

为什么密码学中的消息摘要应该用发送方的私钥加密

接收方可以用发送方的公钥解密,但其他任何人也可以这样做。即使是中间人,所以我也没有真正意识到在数字签名意义上加密消息摘要。

尝试分离。即使在数学上它们是相似的运算,也有一些重要的区别。我将尝试总结一些基本知识

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

实际上,person A创建了内容的散列并对散列进行签名。这意味着执行解密操作,使用其私钥填充签名,创建签名

现在,人员B将生成消息的哈希值,以将其与消息摘要进行比较

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

B人

  • 创建内容的哈希值
  • 验证提供的签名-使用A的公钥加密提供的签名,这将导致散列和签名填充
但其他任何人也可以这样做

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

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

编辑:

为什么用脉冲密钥加密不合适

加密确保只有收件人才能解密消息,但它不会说是谁在发送消息。(A可以相信只有B阅读该消息,但B可能不确定该消息是否来自A)

签名不可否认地标识了发送者。(B可以确保消息是由A发送的)


这种方法有一些注意事项(对直接加密的消息进行签名),但在crypto OS论坛中可以更好地解释细节。

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