多个数字签名的算法?

时间:2010-08-03 14:23:50

标签: algorithm encryption digital-signature

假设我有一个数据包,并且我将数据发送给10个用户。我想为这些数据添加一个属性,比如数字签名。 10个用户中的每一个都有不同的“密钥”。当他们将密钥应用于数据包上的此特殊签名时,它返回true或false。然而,他们无法使用他们的密钥确定其他用户是否真实。

3 个答案:

答案 0 :(得分:3)

即使数据包很大:

散列数据包中的数据。使用每个用户的密钥加密哈希,并将加密版本附加到邮件中。

每个用户散列原始数据包(没有签名),然后验证散列是否与其解密的块匹配。

这适用于对称和公私方法。

答案 1 :(得分:0)

假设数据包很小:

使用您想要为“True”的用户的公钥加密数据。使用更多随机密钥对其进行加密,以使总数加起来为10。 “真实”用户将能够读取该文件。 “假”用户不会。所有用户只会看到它已加密到十个用户,包括(可能)他们自己。

如果数据包很大,请使用对称方案对其进行加密,并以上述方式处理该加密的密码。

如果数据包仅包含true或false信息,您也可以使用收件人的密钥加密此值(以及用于随机化结果的简短盐)。在这种情况下,所有收件人都可以解密某些内容 - 无论是对还是错。

答案 2 :(得分:0)

您不能通过通道发送少于n位来实现此目的,其中n是用户数。

每个用户都生成自己的HMAC(DATA,HIS_KEY)
由于您知道所有密钥,因此您只能为每个用户发送一个密钥,并且用户必须在其HMAC中将str中的第一个位用于第一位。

所以这就是

DATA=random(128)
result = DATA  
For each user:  
    bit= MSB(HMAC(DATA,user["key"]))
    bit= bit xor user["true/flase"]
    result.append(bit)