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

百万富翁问题是姚期智先生在1982年提出的第一个安全双方计算问题


问题可以描述为:两个百万富翁街头邂逅,他们都想炫一下富,比比谁更有钱,但是出于隐私,都不想让对方知道自己到底拥有多少财富,如何在不借助第三方的情况下,让他们知道他们之间谁更有钱。

在这里插入图片描述

具体流程: 假设富翁A的财富为a, 富翁B的财富为b

  1. A生成公私钥对 ( P K A , S K A ) (PK_A, SK_A) (PKA,SKA)。 A用公钥 P K A PK_A PKA加密自己的财富值: C A = E n c ( a ) C_A = Enc(a) CA=Enc(a),将 C A C_A CA与公钥 P K A PK_A PKA发送给B.
  2. B随机选择下 x , y x,y xy(随机大整数), 用A的公钥 P K A PK_A PKA分别计算 C B 1 = E n c ( b ∗ x + y ) C_{B1} = Enc(b*x + y) CB1=Enc(bx+y) C B 2 = E n c ( a ∗ x + y ) C_{B2} = Enc(a*x + y) CB2=Enc(ax+y), 将 C B 1 , C B 2 C_{B1}, C_{B2} CB1CB2发给A, 记作 A = a ∗ x + y , B = b ∗ x + y A = a*x + y, B = b*x + y A=ax+y,B=bx+y
  3. 因为Paillier加密同态属性: E ( m 1 , r 1 ) ∗ E ( m 2 , r 2 ) = E ( m 1 + m 2 , r 1 + r 2 ) E(m_1, r_1) *E(m_2, r_2) = E(m_1 + m_2, r_1 + r_2) E(m1,r1)E(m2,r2)=E(m1+m2,r1+r2) E ( m , r ) C = E ( m ∗ C , r ∗ C ) E(m, r)^C = E(m * C, r * C) E(m,r)C=E(mC,rC), 所以 C B 2 = E n c ( a ∗ x + y ) = E n c ( a ) x ∗ E n c ( y ) C_{B2} = Enc(a*x + y) = Enc(a)^x * Enc(y) CB2=Enc(ax+y)=Enc(a)xEnc(y)
  4. A利用自己的私钥 S K A SK_A SKA解开A 与 B即可得到谁更有钱。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值