是否有算法将消息安全地分成需要至少y部分重新组合的x部分?

时间:2010-03-07 03:54:33

标签: algorithm encryption

是否有算法将消息安全地拆分为需要至少y部分重新组合的x部分?显然,y <= x。

一个例子:

说我有一条秘密信息,我只想在我去世时阅读。作为确保这一点的一种方式,我将一小部分信息提供给十个朋友。现在,我无法保证所有朋友都能将他们的信息放在一起以恢复原文。因此,我以这样的方式构造每个消息部分,以便只需要任何5个朋友将他们的部分放在一起来重建整体。但是,拥有少于5个部分不会给出消息,除了可能的长度。

我的问题是,这可能吗?我可以用什么算法来实现这个目标?

澄清编辑:这一点的重要部分是加密强度。攻击者不应该使用少于y个部分来全部或部分地恢复该消息。

7 个答案:

答案 0 :(得分:18)

Shamir Secret SharingBlakley's scheme是两种完善的,可证明安全的共享秘密的方式,只有在预定数量的“份额”合并后才能恢复。

答案 1 :(得分:3)

检查http://parchive.sourceforge.net/。有一个基于Reed-Solomon Code的规范和软件,用于在 x 部分中拆分存档并创建 y 奇偶校验文件。

例如。您在五个1mb“数据”文件中拆分一个5mb存档,并创建另外五个1mb“奇偶校验”文件。您可以使用数据和奇偶校验文件的任意组合来恢复原始文件,例如1个数据文件和4个奇偶校验文件,或5个奇偶校验文件。

也许你可以申请这个。

编辑:应用程序将您的存档拆分为X部分并创建(X-Y)奇偶校验文件,然后将一部分和所有奇偶校验文件分配给每个收件人。然后,他们中的任何一个可以将他们的部分放在一起,加上他们共享的奇偶校验文件,以产生所需的输出。

答案 2 :(得分:2)

我觉得,您可以实际加密邮件并在y人之间拆分密钥,而不是将邮件拆分为x部分。

现实世界中的类似问题将是投票。 El gamal加密用于重新随机化以解决此问题。

- 巴拉

答案 3 :(得分:1)

您正在寻找的是Rabin的“信息分散算法”。这里有一个很好的解释和示例代码:http://bryanmills.net/archives/2007/09/information-dispersal-algorithms/

答案 4 :(得分:0)

听起来像RAID 5 x 磁盘需要 y &lt; x 才能重新组装分区。 Reed-Solomon error correction algorithm是此类容错的一种实现。

答案 5 :(得分:0)

是的,这是可能的。它被称为前向纠错。见http://en.wikipedia.org/wiki/Forward_error_correction

答案 6 :(得分:0)

示例Reed Solomon FEC代码,来自Luigi Rizzo并由UDPcast团队更新,从字节到千兆字节,

http://koders.com/c/fidD435475ABA35C752BC554D7D3E04208B2896D06C.aspx?s=fec#L3

从磁带到音频控制器的小刻度,以位为单位,

http://koders.com/cpp/fidF6CF3C208FBFE2EF0DAAD9CBFEC777068A81595D.aspx

相关问题