安全多方计算——百万富翁问题

安全多方计算(SMC)是解决一组互不信任的参与方之间保护隐私的协同计算问题,SMC要确保输入的独立性,计算的正确性,同时不泄露各输入值给参与计算的其他成员。主要是针对无可信第三方的情况下,如何安全地计算一个约定函数的问题,安全多方计算在电子选举、电子投票、电子拍卖、秘密共享、门限签名等场景中有着重要的作用。

百万富翁问题

 

1982年,姚启智教授在提出百万富翁问题后就给出了该问题的一种解决方案。该方案用于对两个数进行比较,以确定哪一个较大。Alice知道一个整数i;Bob知道一个整数j, Alice与Bob希望知道谁的数最大,但都不想让对方知道自己的数。为简单起见,假设j与i的范围为[1,100]。Bob有一个公开密钥Eb和私有密钥Db。

 

百万富翁问题协议

(1)  Alice选择一个大随机数x,并用Bob的公开密钥加密c=Eb(x);

(2)  Alice计算c-i,并将结果发送给Bob:

(3)  Bob计算下面的100个数:Yu=Db(c-i+u),(u=1,2,...,100 )其中Db是Bob的私有解密密钥。Bob选择一个大素数p(p应该比x稍小一点,Bob不知道x,但Alice能容易地告诉他x的大小),然后计算下面的100个数:Zu=(Yu mod p),。然后验证对所有的u≠v, |Zu-Zv|>=2,并对所有的u验证:0<Zu<p—1。如果不成立,Bob就选择另一个素数并重复验证;

(4)  Bob将以下数列和p发送给Alice:[Z1Z2,...  ,Zj + 1,Zj+1 +1, ..., Z100 +1],p;就是所从第j位对Zu数列+1操作;

(5)  Alice验证这个数列的第i个数是否与x模p同余。如果同余,她得出的结论是i<=j;如果不同余,她得出的结论是i>j;

(6)  Alice把这个结论告诉Bob。

大富翁问题演示实例

 

猜你喜欢

转载自blog.csdn.net/qq_38234785/article/details/106259302
今日推荐