首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数字签名与数字签名讯息摘要

数字签名与数字签名讯息摘要
EN

Stack Overflow用户
提问于 2014-07-29 15:15:05
回答 2查看 8.5K关注 0票数 4

我有消息(m),在以不安全的方式发送数据后,我想存储一些数据来验证其完整性。

我可以创建一个数字签名(DSA / RSA)。

  • S( m ) =m的数字签名。

或者我可以计算一个摘要(散列)并对其进行加密。

  • H(m) =m摘要
  • C( H(m) )= H(m)的加密数据

在任何情况下,当接收方收到消息时,都应该验证其完整性。

什么方法更安全的S(m)或C( H(m) )?

更新

假设爱丽丝想给鲍勃发个口信

使用数字签名:

爱丽丝的角色:

  • 使用她的私钥计算S(m)
  • 把m,S(m)和她的公钥发给Bob

鲍勃的角色:

  • 鲍勃收到S(m),m和Alice的公钥
  • Bob使用m和Alice的密钥验证S(m)。

使用摘要:

爱丽丝的角色:

  • 使用Bob公钥计算C( H(m) )
  • 把C( H(m) )和m发送给Bob

鲍勃的角色:

  • 用他的私钥破译C( H(m) )
  • 计算H(m)
  • 验证m( H(m) =d)的完整性

我看到了使用我发布的第二种方法的软件,但我认为第一种方法更安全,对吗?

更新2

总之,最好的方法是使用第一种方法,使用一种安全的方式与Bob共享Alice的公钥。

第二种方法根本不提供安全性。

感谢@Perseids

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-29 16:57:18

它们都不管用。

第一个攻击:夏娃在攻击中间安装一个人,并拦截由发送的所有消息。她没有转发m,而是转发n。她没有在m上使用爱丽丝的私钥签名,而是用她的私钥在n上转发一个签名。她寄给鲍勃的不是爱丽丝的公钥,而是她的公钥。鲍勃永远也看不出这种区别,因为他事先不知道爱丽丝的公钥。

攻击第二个:拦截所有来自的消息(并将它们丢弃),并创建与‘相同的消息,但使用n而不是m。别忘了假装是爱丽丝。

问题的根源在于鲍勃需要对爱丽丝的真实身份有一定的了解。如果你不知道比他的名字更“比尔盖茨”,那么我很容易冒充他。数字签名的标准假设是Bob从安全源了解Alice的公钥,或者他们以前通过安全通道进行交换。然后鲍勃可以检查爱丽丝的签名和已知的爱丽斯的好公钥。

票数 6
EN

Stack Overflow用户

发布于 2014-07-29 16:34:49

在数字签名的上下文中,“消息”通常是一个散列值--即某个文档的摘要(通常意义上的“消息”)。因此,当您以适当的方式“签署文档”时,您正在将由签名算法定义的单向转换应用于该文档的摘要,而不是整个文档。

当然,您可以发明基于对称或非对称加密的消息身份验证的其他方法,或者同时基于这两种方法。但这样,你肯定会重新发明轮子,而且你的车轮很有可能变成四倍左右。数字签名算法是专门为公钥基础设施中的无缝身份验证而设计的。所以要适当地使用它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25018871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档