假设某个组想要加密某些信息,然后以需要该组的共识来解密信息的方式在组成员之间共享加密密钥。我对各种情况感兴趣,其中广泛的共识范围从一致到绝对多数。一种有用的技术可以应用于对称密钥,私钥或两者。
我可以采取一种方法来推动我自己的方法,因为我相信很多SO成员都可以。但是出于这个问题的目的,我对仅感兴趣的方法已被广泛发布并经过专家密码分析师的审查。期刊引文很好,但学术资源的解释也很有用。
答案 0 :(得分:10)
我一直对这种秘密共享技术着迷。我已经看到在互联网上实现它的代码,但从未见过实际的应用程序。 Shamir's secret sharing维基百科文章链接到一些实际代码以及原始学术文章。
答案 1 :(得分:4)
你所描述的听起来很像“秘密分裂”(第12.1节。细胞学简介。特拉普和华盛顿。第2版)基本思想是你可以想出一个包含你的“秘密”的多项式(一键) )作为一个点上线。您可以通过选择此多项式上的其他点来给出“份额”。两个点定义形式为f(x)= ax + b的线,三个点定义形式为f(x)= ax ^ 2 + bx + c的多项式,四个点定义f(x)形式的某些形状= ax ^ 3 + bx ^ 2 + cx + d,依此类推。您可以选择一个多项式,其中包含您的秘密作为一个点,并且多项式的次数足以使任何N个人都可以重建它。
这是被称为“Shamir阈值方案”的基本思想。
在Secret Splitting和Shamir's Secret Sharing上查看维基百科 维基百科页面提供了一些指向此想法实现的链接,包括Windows和UNIX的GPL代码。
答案 2 :(得分:1)
使用error-correcting codes很容易实现。您可以使用命令行工具,例如 par2 (这不完全适用于此特定用途btw,因为它会生成不同大小的恢复块)。假设你有(n + m)个选民,并且想要达到法定数量的n票。生成n个私钥K 18,K 2,... Kn,并生成相同大小的m个附加ECC块P'。这样任何n个块都足以重构密码K 18 K2∘...∘Kn
答案 3 :(得分:1)
到这里讨论Shamir秘密分享的数学基础,并简要讨论它所具有的实际应用类型。向下滚动页面,阅读关于多项式和秘密共享的讲义。这可能是该地区的基本概述,但对您来说应该非常有趣。 Discrete Mathematics Notes
答案 4 :(得分:0)
Lotus Notes提供了'Silo密码'的实际实现,通过这种方式,对某些资源(数据/信息/文档)的访问被锁定为'shared-id' - ID(我认为基于RSA的认证PKI系统的一部分) )设置2个或更多(我认为最多16个)个人用户密码。验证者/管理员设置了一种方案,根据这些方案,可以使用任意数量的密码或所有密码来“打开”活动使用的ID。此过程通常用于将Org或OU证书锁定为5个管理员/公司官员授予访问权限中的5个或3个中的2个,从而确保可以控制高级证书使用/访问,并避免缺席管理员。