组合数字签名,用于检查大多数签名元素是否未更改

时间:2012-09-14 08:02:35

标签: security digital-signature

我对这个领域并不熟悉,所以如果这个问题看似微不足道或无聊,请原谅。

我有N个字符串,我需要以这种方式签名,如果签名仍然有效 最多可更改,删除或添加M个字符串。 N> M,N可能会有所不同。签名不应允许从签名本身中推断出N.

到目前为止,我所能想到的是一种直接的方法,分别为每个字符串构建哈希值,并将它们全部存储为签名,但它不符合最新要求。

如果存在某些特定于语言的示例,请同时提及它们, - Java,C ++,PHP等都可以。

1 个答案:

答案 0 :(得分:0)

经过一番调查后,我发现了以下可能有用的信息。

有一个所谓的“Rolling hashes”。另一个密切相关的技术名称为“Context Triggered Piecewise Hashes”(CTPH)。关于CTPH有一篇易于理解的文章: Identifying almost identical files using context triggered piecewise hashing

我认为它可用于签署N个元素,在单个输入文件中连接。

该算法假设块大小(用于定期拼接由传统哈希构建的签名)是公知的,因为它嵌入到最终签名中。这可能允许推断签名内容的近似大小,但显然保密N.

对于给定的未知内容,算法根据CTPH提供相似性度量或同源性,作为已知签名内容与之间的0(差异)和100(身份)之间的值。使用签名的未知内容。