主题:如何分摊秘密(一)——从《鹿鼎记》中的四十二章经说起 -- 明日枯荷包
那么如果是三个人或更多人要分摊秘密怎么办?
非常方便。仍旧是那个6位数密码,假设现在老板要派三个人甲乙丙去。
按照原来的老方法,现在老板随机产生两个6位数,比如153607和582149,把它们分别给甲和乙,然后用真正的密码123456去逐位减这两个数字:
1-1-5 = -5 -->5
2-5-8 = -11 -->9
3-3-2 = -2 -->8
4-6-1 = -3 -->7
5-0-4 = 1 -->1
6-7-9 = -10 -->0
总之如果结果不在0-9中就加减若干个10,使得结果成为一个0-9之间的数。老板得到598710,给丙。
同样的分析,甲和乙凭手里的那个数能增加他对真正的密码是什么的信息吗?不能,那俩数根本就是随便产生出来的。丙靠他的数也一样不行,和前面两个人的情况中乙的情况差不多。
如果其中有两人合谋怎么办?比如甲和乙合谋——没用,他们那俩数都是随便产生出来的。甲和丙合谋?每一个可能的最终密码值都对应着一个乙手里的那个数的可能值,可是乙手里的那个数的可能是000000-999999中的任何一个,概率都是1/1000000,于是真正的密码还是在000000-999999中的任何一个,概率还是1/1000000。通过甲和丙的同谋,还是无法带给甲和丙任何他们以前不知道的事情。乙和丙的同谋情况也一样。
但是如果甲乙丙共同决定要得到密码,只要把他们手上三个数逐位加(可能要减去若干个10使得结果在0-9间)就可以了:
1+5+5 = 11 ->1
5+8+9 = 22 ->2
3+2+8 = 13->3
6+1+7 = 14->4
0+4+1 = 5->5
7+9+0 = 16->6
人数再多的话,多产生一些随机数即可。N个人产生N-1个随机数,最后一个人则分配给真正密码逐位减这些数字的结果。
很容易看出来,就算密码位数不是6位,而是非常非常长,这个方法也一样可行。如今啥都是数字化的,一个文件其实就是一个大数字,文字的记录是文本文件(或者Word文件也无所谓),如果是一张地图,或者是拍了些见不得人的照片啥的,就是个图像文件,一段录像是一个视频文件。既然这些文件无非都分别是一个(也许有很多很多位的)数,那么就可以用前面说的这个方法来分摊到若干人上。这个被分摊的秘密也不一定非得表示成10进制的,比如计算机文件一般是以二进制形式储存传送的,也可以看作是十六进制甚至是更大的数字进制的,假设是P进制,那就把前面那个随机数产生器改变一下,让它产生合适范围(0到P-1之间)的数字。这样我们就得到了一个在许多人之间分摊一个任意大小的秘密(大小不是说秘密泄露的严重性,是说内容多少)的方法。这个方法可以保证每个人“掌握”却不“知道”,而且即使是有若干同谋在一起也无法知道最终秘密更多的信息。只有在所有人都同意揭开秘密的时候,大家才能知道这个秘密。
不过正如前面所言,这个方法好是好,但未免过分严格了一点。要是在100个人中这么分摊秘密,万一有一个人三长两短把他掌握的秘密弄丢了怎么办?大家拿着99份分摊的秘密,可是对知道最终秘密一点用都没有。所以我们还得想出一个办法,能够只要求达到规定的一定人数比如说80个人,而不要求全体都同意,就可以揭开秘密。
喝水……
- 相关回复 上下关系8
🙂逐篇花,连续第三宝! 西电鲁丁 字0 2010-08-12 21:09:27
🙂加油加油 晨池 字78 2010-08-12 17:20:18
🙂俗话说“学海无涯” 1 明日枯荷包 字344 2010-08-14 06:35:42
🙂如何分摊秘密(五)——更多人的秘密
😄人品好呀。"恭喜:你意外获得【通宝】一枚" 西电鲁丁 字0 2010-08-12 21:02:20
☹️我不得不说 月桂 字56 2010-08-12 07:04:53
🙂看这种文章最好自己拿张纸写写算算 2 明日枯荷包 字124 2010-08-12 07:21:22
🙂是啊,昨晚一直惦记着这贴, 南方有嘉木 字201 2010-08-12 08:48:23