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

发布于:2023-01-21 ⋅ 阅读:(480) ⋅ 点赞:(0)

百万富翁问题是姚期智先生在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即可得到谁更有钱。

网站公告

今日签到

点亮在社区的每一天
去签到

热门文章