如何加密某些东西,以便可以使用三个键中的任意两个来解密?

时间:2009-11-12 01:52:34

标签: encryption

所以说我想加密一个文件,我希望它被读取的唯一方法是两个不同的人输入他们的密钥。因此,例如有四个键:

key1,key2,key3,key4。

如果我使用key1加密它,那么以下组合将解除它:

  • KEY2,KEY3
  • KEY3,KEY4
  • KEY2,KEY4

这是否可以使用标准方法?

5 个答案:

答案 0 :(得分:14)

生成唯一的内容密钥以加密邮件(这在许多邮件加密标准中很常见),然后针对该内容密钥应用erasure code方案,例如Reed-Solomon coding与足够的附加随机数据连接,以确保密钥的 n “分片”的任何 m 可以放在一起以创建最终密钥。 仅从随机数据部分中发出碎片,以便所有给出的碎片都不包含来自内容键的实际位。这样,任何数量的 m 之外的收集分片都不会提供有关密钥本身的任何有用信息。

编辑:Reed-Solomon生成关键分片似乎与Shamir's secret-sharing相同,首次发表于1979年;感谢@caf指出了这篇文章。

答案 1 :(得分:4)

随机生成对称密钥key1并使用它来加密数据,然后使用Shamir's Secret Sharing protocol从key1生成key2,key3和key4。

为了安全地分发key2,key3和key4,您可以使用公钥算法使用收件人的公钥加密它们。

答案 2 :(得分:2)

假设您正在分配键x1,x2,.. xN

使用主对称密钥 M 加密文件。然后存储 M 的几个加密副本:

  • 使用x1和x2加密
  • 使用x2和x3加密
  • 使用x1和x3加密
  • ...

任何两个密钥都将解锁一个主服务器的加密副本,这将解密该文件。

答案 3 :(得分:1)

不是你说的,我不认为。但你可以得到这样的效果:使用公钥加密;现在有4个公钥和4个私钥。作为#1号人员,使用其他3的每个成对组合加密您的消息。使用密钥2对消息进行加密,然后使用密钥3对消息进行加密。现在使用密钥2对消息进行加密,然后使用密钥4加密。最后,3然后4.现在,如果其他两个人聚在一起,他们可以恢复原始消息

答案 4 :(得分:0)

使第四个键成为其他三个的按位校验和...你甚至可以按顺序递增哪个键具有校验和值..所以

  1. key 4 bit 1是1-3键中第1位的校验和,
  2. 键1位2是键2-4中位2的校验和,
  3. key 2 bit 3是密钥1,3,4和
  4. 中第3位的校验和
  5. key 3 bit 4是密钥1,2,4和
  6. 中第4位的校验和
  7. key 4 bit 5是密钥1,2,3中第5位的校验和, 等......
  8. 有点像条纹突袭5确实...

    这样,无论你拥有四个键中的哪三个,都可以重新创建一个。使用所有四个密钥的某种组合来加密消息。