百科问答小站 logo
百科问答小站 font logo



数字签名有可能被伪造吗? 第1页

  

user avatar   xuan-xing-29 网友的相关建议: 
      

Hash是用来算原文的“摘要”(digest)。

而签名是签名一方(通常是服务器)用自己的私钥签在“摘要”上。(Signing with the private key on the digest)

“摘要”所有人都能算,只要知道原文,因为hash中并未使用任何原文之外的保密信息。

验证签名的是否有效,通常是先算“摘要”, 再以摘要和公钥作为输入,调用验证算法来验证(verify)签名是否有效。而不是先验证签名(即题主所说的公钥解密),再算摘要来比对。

再强调一下,Hash是公开的,原文是公开的,所以不需要解密。

因此,数字签名的安全性基于:

1. Hash算法的抗碰撞性(collision-resistance)

即很难找到两个不同的原文 m0, m1,让它们的摘要Hash(m0) = Hash(m1)。

例:SHA-3现在比MD5,SHA-2都要安全,很难碰撞。

2. 伪造数字签名的难度

即对于“新鲜”的原文摘要hash(m*),很难算出一个在它上面的合法签名,除非掌握服务器私钥。

所谓“新鲜”是指这个摘要hash(m*)没有被服务器签名过。(签过的原文-签名对没意义,本来就是服务器签的)

所以,理论上来说,有下面两种典型的攻击:

1. 找与“旧”原文摘要值相同的原文,等价于攻击hash算法,找出碰撞。如使用题主提到的用彩虹表或者其他的手段。

2. 直接伪造数字签名。

其实,达到伪造任意签名,就可以说完全攻破了这个数字签名系统……

回到https, 如果使用的cipher suite是类似TLS_DHE_RSA_WITH_AES_256_CBC_SHA256的, 签名通常出现在server key exchange这条消息中。数字签名使用的算法是RSA,对象是客户端发送的随机数、服务器端发送的随机数、服务器端的密钥交换内容,产生摘要所用的hash函数是SHA256。




  

相关话题

  OpenSSL、Berkeley Sockets 是否存在「超级秘密」的漏洞,以至于任何基于通用 OS 的防御都是徒劳的? 
  不用 https 自己实现对 http请求的内容的 rsa 加密,这样足够安全吗? 
  想学网络安全,有没有良心机构推荐? 
  网络安全是不是包含了很多板块? 
  如何通过事件查看开放公网远程桌面的电脑有没有被访问? 
  如何看待网易邮箱至今登录界面没有https? 
  为什么更安全的 HTTPS 协议没有在互联网上全面采用? 
  如果有人给你两万美元让你黑自己的公司,你会怎么做? 
  如何看待网易邮箱至今登录界面没有https? 
  数字签名有可能被伪造吗? 

前一个讨论
Unicode 字符集中有哪些神奇的字符?
下一个讨论
为什么计算机科学如密码学喜欢用 Alice 和 Bob 举栗子?





© 2024-12-23 - tinynew.org. All Rights Reserved.
© 2024-12-23 - tinynew.org. 保留所有权利