Hash 对哈希值而不是文件进行签名

Hash 对哈希值而不是文件进行签名,hash,digital-signature,Hash,Digital Signature,从这个问题: 我想知道,在签名散列值而不是文件时是否存在安全风险或完整性问题?美国国家和国际数字签名文档(PDF、Word、Excel)标准以及代表原始文档/数据的数据签名散列值 这样你就有好朋友了 各个国家和国际标准机构定期发布新的标准和法规,以确保哈希函数的安全性 例如,2011年,美国国家标准协会发布了一份声明(见第6页),声明: 2013年12月31日后,安全强度小于112位的密钥长度不得用于生成数字签名 (重点在原文中。)该法规适用于美国政府,但非政府组织/公司也普遍遵循该法规作为最佳

从这个问题:


我想知道,在签名散列值而不是文件时是否存在安全风险或完整性问题?

美国国家和国际数字签名文档(PDF、Word、Excel)标准以及代表原始文档/数据的数据签名散列值

这样你就有好朋友了

各个国家和国际标准机构定期发布新的标准和法规,以确保哈希函数的安全性

例如,2011年,美国国家标准协会发布了一份声明(见第6页),声明:

2013年12月31日后,安全强度小于112位的密钥长度不得用于生成数字签名

(重点在原文中。)该法规适用于美国政府,但非政府组织/公司也普遍遵循该法规作为最佳实践的范例


实际上,它的意思是不要使用。相反,使用哈希函数族。

一个非常非常小的函数,只要使用安全的哈希函数即可。(如果您使用MD5,风险非常大,因为您可以强制哈希冲突。)谢谢您的回答。你能更详细地解释一下吗?这些散列值是从哪里来的?如果您是从某个远程客户端获取这些文件,则可能存在这样的风险:在发送到签名组件的途中,散列可能已被其他文件交换,而您实际上为一些不打算签名的文件创建了签名。如果您的签名组件只接受文档,您至少可以存储文档并抽查文档是否正确。这可能是一个审计问题。顺便说一句,在阅读了@LarryK的答案后,这个问题可能会被问到,我开始怀疑我是否正确理解了你的问题。您知道签名总是包含一些初始哈希计算吗?我以为你是;因此,我的评论集中在与你提到的问题相同的问题上。不过,拉里在这里的回答和托尔的评论似乎对你的理解有所不同。