在看美国大片的时候,电影里在动用核武器时通常需要多位高官依次输入各自手中的密码,才能启动核武器,否则缺失任何一人的密码都会启动不成功。或者由总统一人通过核武器手提箱发送核武器打击命令。
在上述场景中可以了解到,总统是掌握了终极密码的,而其他高管则掌握了部分密码并且不知道其他人手中的密码,而且只有多位官员同时拿出自己手中的密码的时候才能恢复出终极密码,这也是为了总统不在的时候,依然有能力实施核打击。
那如何保证官员自身无法通过手中的密码推测出其他人的密码,甚至是整个终极密码呢? 方法就是秘密分割。 将终极密码当成秘密,然后通过秘密分割,将秘密分成若干碎片(即官员手中的密码),每一个碎片本身并不代表什么,但把这些碎片放到一起,就能够恢复出秘密,即终极密码。 如此,即使有官员辞职甚至叛变,也能保证终极密码的安全。
举个简单例子说明下密码分割是怎么做的。例子中采用 异或运算作为生成生成碎片消息的算法。
1、现在总统设置了属于自己的终极密码Secret,此时此密码只有总统一个人知道。
2、总统使用随机数工具生成3个随机数(假设有4个官员会拥有秘密碎片),设三个随机数分别是R,S,T。同时每个随机数的长度与Secret的一样长。
3、总统用这3个随机数与Secret异或得到第四个关联随机数U。 U=Secret xor R xor S xor T 。 (xor为异或运算)
4 、总统将 R,S,T,U 4个随机数分发给4个官员。至此,完成秘密分割,4个官员可以通过R xor S xor T xor U = Secret 计算出终极密码,以备不时之需。
不过,从上述秘密分割的算法也存在一个问题。假如总统和其中一个官员挂掉了,紧靠其余3人是无法恢复出秘密的。