安全多方计算之二:一文搞懂百万富翁问题

这篇具有很好参考价值的文章主要介绍了安全多方计算之二:一文搞懂百万富翁问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

两个百万富翁Alice和Bob想知道他们两个谁更富有,但他们都不想让对方及其他第三方知道自己财富的任何信息,这是由中国计算机科学家、2000年图灵奖获得者姚启智教授于1982年在论文《Protocols for secure computations》中提出的姚氏百万富翁问题,开创了密码学研究的新领域:安全多方计算(Secure Multi-party Computation)。

安全多方计算之二:一文搞懂百万富翁问题
姚期智,1946年12月24日出生于中国上海,由于计算理论及其在密码学和量子计算中的应用方面的贡献获2000年图灵奖。2004年,当选为中国科学院外籍院士。同年,57岁的姚期智辞去普林斯顿大学终身教职,加盟清华大学高等研究中心,担任全职教授。2016年放弃美国国籍成为中国公民,正式转为中国科学院院士,加入中国科学院信息技术科学部,现任清华大学交叉信息研究院院长。

1. 解决方案

假设两个百万富翁 A A A B B B的财产在 1 1 1 10 10 10之间, A A A 4 4 4 B B B 9 9 9

  • A A A选择 10 10 10个相同的个盒子,按照顺序代表 1 1 1 10 10 10
    安全多方计算之二:一文搞懂百万富翁问题
  • A A A用自己财产的数字与盒子的数字进行比较,如果小于该数字,则放一个黑球,若大于等于则放一个蓝球。

安全多方计算之二:一文搞懂百万富翁问题

  • A A A将盒子上锁,并按 1 1 1 10 10 10的顺序发交给 B B B

  • B B B选择自己财产的数字对应的箱子,即第 9 9 9个盒子,然后交个 A A A

  • A A A打开盒子,共同判定结果:蓝球,因此 B B B更富有。

现实中,上述方案一般通过密码学工具实现。

2. 协议描述

姚氏百万富翁问题可形式化描述为:对两个秘密输入 i i i j j j,判断函数值 f ( i , j ) = i − j ≤ 0 f(i,j)=i-j\le 0 f(i,j)=ij0还是 f ( i , j ) = i − j ≥ 0 f(i,j)=i-j\ge 0 f(i,j)=ij0

假定 1 ≤ i , j ≤ N 1 \le i,j \le N 1i,jN。为了在不让任何第三方参与的情况下比较 i i i j j j的大小,又不向对方泄漏各自的数值,则可执行如下的协议:

  • step1 A A A B B B共同协商一种公钥加密体制( E E E为加密算法, D D D为解密算法)。

  • step2 A A A随机选择一个大随机数 x x x,用B的公钥加密得 E ( x ) E(x) E(x),然后将 E ( x ) − i E(x)-i E(x)i发送给 B B B

  • step3 B B B首先计算 N N N个数 y u = D ( E ( x ) − i + u ) , u = 1 , 2 , . . . , N y_u=D(E(x)-i+u),u=1,2,...,N yu=D(E(x)i+u),u=1,2,...,N然后随机选择大素数 p p p,再计算 N N N个数 z u ≡ y u   m o d   p , u = 1 , 2 , … , N z_u \equiv y_u \bmod p,u=1,2,…,N zuyumodp,u=1,2,,N接着验证对于所有的 0 ≤ a ≠ b ≤ N − 1 0 \le a \neq b \le N-1 0a=bN1是否都满足 ∥ z a − z b ∣ ≥ 2 \|z_a-z_b|≥2 zazb2,若不满足,则重新选择大素数 p p p重新验证。 最后, B B B p p p及以下的 N N N个数串发送给 A A A: z 1 , z 2 , . . . , z j , z j + 1 + 1 , z j + 2 + 1 , … , z N + 1 z_1,z_2,...,z_j,z_{j+1}+1,z_{j+2}+1,…,z_N+1 z1,z2,...,zj,zj+1+1,zj+2+1,,zN+1.- step4:设 A A A收到 N N N个数串的第 i i i个数 z i ≡ x   m o d   p z_i \equiv x \bmod p zixmodp,则结论是 i ≤ j i \le j ij;否 i ≥ j i \ge j ij

  • step5 A A A 将结果告诉 B B B

3. 协议说明

(1) 由于 z i ≡ y i   m o d   p ≡ D ( E ( x ) − i + i ) ≡ x   m o d   p z_i \equiv y_i \bmod p \equiv D(E(x)-i+i)\equiv x \bmod p ziyimodpD(E(x)i+i)xmodp,因此
当且仅当 i ≤ j i\le j ij时,数列 z 1 , z 2 , . . . , z j , z j + 1 + 1 , z j + 2 + 1 , … , z N + 1 z_1,z_2,...,z_j,z_{j+1}+1,z_{j+2}+1,…,z_N+1 z1,z2,...,zj,zj+1+1,zj+2+1,,zN+1中才存在数 z i ≡ x   m o d   p z_i \equiv x \bmod p zixmodp;否则该数列中任何数模 p p p都不与 x x x同余,此时 i > j i > j i>j。该步骤是协议的核心步骤,通过构造数列,实现了 i i i j j j大小的判断,类似于放置黑球与蓝球。

但该协议无法判断出 i = j i=j i=j的情况,是该协议的一个缺点,后续相关研究对此进行了改进

(2)要求 z n z_n zn中的任何两个数 z a , z b z_a,z_b za,zb满足 ∥ z a − z b ∣ ≥ 2 \|z_a-z_b|≥2 zazb2是为了保证 B B B发送给 A A A N N N个数的数列 z 1 , z 2 , . . . , z j , z j + 1 + 1 , z j + 2 + 1 , … , z N + 1 z_1,z_2,...,z_j,z_{j+1}+1,z_{j+2}+1,…,z_N+1 z1,z2,...,zj,zj+1+1,zj+2+1,,zN+1中任意两个数不同,一般称这样的数列为“好数列”。因为若数列中存在两个数 z m = z n , m < n z_m=z_n,m<n zm=znm<n,则 A A A可以判断出 B B B的秘密数大致范围为 m ≤ j < n m\le j<n mj<n

(3) A A A B B B先知晓了最终的结果,若 A A A欺骗 B B B告诉他相反的结论,则该协议是不公平的。为增加公平性, B B B可以要求与 A A A交换角色,即原来 A A A执行的步骤现由 B B B执行,而由 B B B执行的步骤改由 A A A执行。这样 B B B也可以首先得出结论。

4. 协议举例

A A A B B B两个百万富翁的财富, A A A的财富是 900 900 900万, B B B的财富是 400 400 400万,都不超过 1000 1000 1000万。即 A A A B B B的秘密数分别为 i = 9 i=9 i=9 j = 4 j=4 j=4 N = 10 N=10 N=10

  • step1 A A A B B B选定RSA公钥算法对数据加密,其中 n = 221 n=221 n=221 B B B的公钥 35 35 35,私钥 11 11 11

  • step2 A A A随机选择整数 x = 92 x=92 x=92,计算 E ( x ) ≡ 9 2 35   m o d   221 = 105 E(x) \equiv 92^{35} \bmod 221=105 E(x)9235mod221=105,然后把 E ( x ) − i = 105 − 9 = 96 E(x)-i=105-9=96 E(x)i=1059=96发送给B。

  • step3:对 u = 1 , 2 , … , 10 u=1,2,…,10 u=1,2,,10 B B B分别计算 y u = D ( E ( x ) − i + u ) = D ( 96 + u ) y_u=D(E(x)-i+u)=D(96+u) yu=D(E(x)i+u)=D(96+u) y 1 = D ( 96 + 1 ) ≡ 9 7 11   m o d   221 = 193 y_1=D(96+1)\equiv 97^{11}\bmod 221=193 y1=D(96+1)9711mod221=193 y 2 = D ( 96 + 2 ) ≡ 9 8 11   m o d   221 = 106 y_2=D(96+2)\equiv 98^{11}\bmod 221=106 y2=D(96+2)9811mod221=106 y 3 = D ( 96 + 3 ) ≡ 9 9 11   m o d   221 = 44 y_3=D(96+3)\equiv 99^{11}\bmod 221=44 y3=D(96+3)9911mod221=44 y 4 = D ( 96 + 4 ) ≡ 10 0 11   m o d   221 = 94 y_4=D(96+4)\equiv 100^{11}\bmod 221=94 y4=D(96+4)10011mod221=94 y 5 = D ( 96 + 5 ) ≡ 10 1 11   m o d   221 = 186 y_5=D(96+5)\equiv 101^{11}\bmod 221=186 y5=D(96+5)10111mod221=186 y 6 = D ( 96 + 6 ) ≡ 10 2 11   m o d   221 = 136 y_6=D(96+6)\equiv 102^{11}\bmod 221=136 y6=D(96+6)10211mod221=136 y 7 = D ( 96 + 7 ) ≡ 10 3 11   m o d   221 = 103 y_7=D(96+7)\equiv 103^{11}\bmod 221=103 y7=D(96+7)10311mod221=103 y 8 = D ( 96 + 8 ) ≡ 10 4 11   m o d   221 = 195 y_8=D(96+8)\equiv 104^{11}\bmod 221=195 y8=D(96+8)10411mod221=195 y 9 = D ( 96 + 9 ) ≡ 10 5 11   m o d   221 = 92 ‾ \underline{y_9=D(96+9)\equiv 105^{11}\bmod 221=92} y9=D(96+9)10511mod221=92 y 10 = D ( 96 + 10 ) ≡ 10 6 11   m o d   221 = 98 y_{10}=D(96+10)\equiv 106^{11}\bmod 221=98 y10=D(96+10)10611mod221=98

取素数 p = 109 p=109 p=109,计算 z u ≡ y u   m o d   p ≡ y u   m o d   109 , u = 1 , 2 , … , 10 z_u \equiv y_u \bmod p \equiv y_u\bmod 109,u=1,2,…,10 zuyumodpyumod109,u=1,2,,10
z 1 ≡ y 1   m o d   109 ≡ 193   m o d   109 = 84 z_1\equiv y_1 \bmod 109\equiv 193\bmod 109=84 z1y1mod109193mod109=84 z 2 ≡ y 2   m o d   109 ≡ 106   m o d   109 = 106 z_2\equiv y_2 \bmod 109\equiv 106\bmod 109=106 z2y2mod109106mod109=106 z 3 ≡ y 3   m o d   109 ≡ 44   m o d   109 = 44 z_3\equiv y_3 \bmod 109\equiv 44\bmod 109=44 z3y3mod10944mod109=44 z 4 ≡ y 4   m o d   109 ≡ 94   m o d   109 = 94 z_4\equiv y_4 \bmod 109\equiv 94\bmod 109=94 z4y4mod10994mod109=94 z 5 ≡ y 5   m o d   109 ≡ 186   m o d   109 = 77 z_5\equiv y_5 \bmod 109\equiv 186\bmod 109=77 z5y5mod109186mod109=77 z 6 ≡ y 6   m o d   109 ≡ 136   m o d   109 = 27 z_6\equiv y_6 \bmod 109\equiv 136\bmod 109=27 z6y6mod109136mod109=27 z 7 ≡ y 7   m o d   109 ≡ 103   m o d   109 = 103 z_7\equiv y_7 \bmod 109\equiv 103\bmod 109=103 z7y7mod109103mod109=103 z 8 ≡ y 8   m o d   109 ≡ 195   m o d   109 = 86 z_8\equiv y_8 \bmod 109\equiv 195\bmod 109=86 z8y8mod109195mod109=86 z 9 ≡ y 9   m o d   109 ≡ 92   m o d   109 = 92 ‾ \underline{z_9\equiv y_9 \bmod 109\equiv 92\bmod 109=92} z9y9mod10992mod109=92 z 10 ≡ y 10   m o d   109 ≡ 98   m o d   109 = 98 z_{10}\equiv y_{10} \bmod 109\equiv 98\bmod 109=98 z10y10mod10998mod109=98

B B B对数列进行验证,并将 p = 109 p=109 p=109及以下数列发送给 A A A z 1 = 84 , z 2 = 106 , z 3 = 44 , z 4 = 94 , z 5 + 1 = 78 , z 6 + 1 = 28 , z 7 + 1 = 104 , z 8 + 1 = 87 , z 9 + 1 = 93 ‾ , z 10 + 1 = 99 z_1 = 84,z_2=106,z_3=44,z_4= 94,z_5+1= 78,z_6+1=28,z_7+1=104,z_8+1=87,\underline{z_9+1=93},z_{10}+1=99 z1=84,z2=106,z3=44,z4=94,z5+1=78,z6+1=28,z7+1=104,z8+1=87,z9+1=93,z10+1=99

  • step4 A A A检查该数列中的第 9 9 9个数是 93 93 93,由于 93 ≠ 92   m o d   109 93 \neq 92\bmod 109 93=92mod109,因此 i > j i>j i>j,即 A A A B B B更富有。

  • step5 A A A 将结果告诉 B B B

5. 协议扩展

(1)社会主义百万富翁问题

社会主义百万富翁问题是百万富翁问题的引申,描述如下:Alice有数值 a a a,Bob有数值 b b b,不泄漏各自任何信息的情况下得到 a = b a=b a=b a ≠ b a\neq b a=b

(2)向量相等判定

Alice有向量 A = ( a 1 , a 2 , . . . , a n ) A=(a_1,a_2,...,a_n) A=(a1,a2,...,an),Bob有向量 B = ( b 1 , b 2 , . . . , b n ) B=(b_1,b_2,...,b_n) B=b1,b2,...,bn),不泄漏各自任何信息的情况下得到 A = B A=B A=B A ≠ B A \neq B A=B

(3)安全数据排序文章来源地址https://www.toymoban.com/news/detail-500234.html

  • 安全多方单数据排序: n n n个参与方 P 1 , P 2 , . . . , P n P_1,P_2,...,P_n P1,P2,...,Pn,每个持有秘密数据 x i ( i = 1 , 2 , . . . , n ) x_i(i=1,2,...,n) xii=1,2,...,n,在 P i P_i Pi不泄露 x i x_i xi任何信息给其他参与者的情况下,得到 x i x_i xi在这些数据中的排序位置 y i y_i yi
  • 安全多方多数据排序: n n n个参与方 P 1 , P 2 , . . . , P n P_1,P_2,...,P_n P1,P2,...,Pn,每个持有秘密数据集 X i ( i = 1 , 2 , . . . , n ) X_i(i=1,2,...,n) Xii=1,2,...,n),将 n n n个数据集合的并集 X = X 1 ∪ X 2 , . . . , X n X=X_1\cup X_2,...,X_n X=X1X2,...,Xn中所有的数据按照小到大的顺序安全地排成一个序列,排序结束后, P i P_i Pi能够知道 X i X_i Xi中的每个数在并集 X X X的排序位置。

到了这里,关于安全多方计算之二:一文搞懂百万富翁问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 联邦学习与安全多方计算

    联邦学习(FL,Federated Learning)是谷歌于2016年提出的一种分布式机器学习框架,可以 在保护个人数据隐私的前提下,联合多方用户的数据实现模型训练 。 联邦学习用于解决“数据孤岛”问题,核心思想是“ 数据不动模型动,数据可用不可见 ”。 传统机器学习中,数据需集

    2023年04月15日
    浏览(24)
  • 安全多方计算简介

    安全多方计算(Secure Multi-Party Computation,SMPC)用于解决一组互不信任的参与方各自持有秘密数据,协同计算一个既定函数的问题。安全多方计算在保证参与方获得正确计算结果的同时,无法获得计算结果之外的任何信息。在整个计算过程中,参与方对其所拥有的数据始终拥有绝

    2024年02月07日
    浏览(25)
  • 第162篇 笔记-安全多方计算

    一、主要概念 安全多方计算 (Secure Multi-Party Computation):指多个参与者在不泄露各自隐私数据情况下,利用隐私数据参与保密计算,共同完成某项计算任务。 该技术能够满足人们利用隐私数据进行保密计算的需求,有效解决数据的“保密性”和“共享性”之间的矛盾。多方

    2024年02月03日
    浏览(25)
  • 隐私计算论文合集「多方安全计算系列」第一期

    当前,隐私计算领域正处于快速发展的阶段,涌现出了许多前沿的 SOTA算法 和备受关注的 顶会论文 。为了方便社区小伙伴学习最新算法、了解隐私计算行业最新进展和应用,隐语开源社区在GitHub创建了Paper推荐项目awesome-PETs(PETs即Privacy-Enhancing Technologies , 隐私增强技术 )

    2024年02月09日
    浏览(32)
  • 华为安全专家带你入门安全多方计算

    6月8日(本周四) 19:00—21:00 ,华为安全专家带你入门安全多方计算,欢迎参加! 考虑以下应用场景: Alice认为她可能患有某种遗传病,Bob有一个包含DNA模式与各类疾病的数据库。Alice可将她的DNA序列交给Bob得到诊断结果。然而,Alice不想泄露自己的DNA序列,也不想Bob及其他人

    2024年02月08日
    浏览(32)
  • 安全多方计算之七:门限密码系统

    门限密码系统由分布式密钥生成算法、加密算法、门限解密算法三部分构成,定义如下: (1)分布式密钥生成 :这是一个由参与者共同生成公钥 y y y 的协议,协议运行结束后,每个参与者将获得一个关于私钥 x x x 的碎片、对应于该碎片的公钥密钥 y i y_i y i ​ ,以及与私钥

    2024年01月19日
    浏览(29)
  • 多方安全计算破解企业数据互信难题

    所谓 多方安全计算 ,最初是为解决一组互不信任的参与方之间在保护隐私信息以及没有可信第三方的前提下协同计算问题而提出的理论框架。 当企业之间进行数据相关的合作时,随之而来就涉及到数据泄露的问题。因此,如何兼顾“数据价值共享”和“隐私保护”,成为当

    2023年04月16日
    浏览(27)
  • 联邦学习中的安全多方计算

    Secure Multi-party Computation in Federated Learning 安全多方计算就是许多参与方需要共同工作完成一个计算任务或者执行一个数学函数,每个参与方针对这个执行构建自己的数据或份额,但不想泄露自己的数据给其他参与方。 在安全多方计算中的定义包括以下几个方面: 一组有私有输

    2024年02月11日
    浏览(29)
  • 一文搞懂隐私计算

    隐私计算(Privacy computing)是指在保证数据不对外泄露的前提下,由两个或多个参与方联合完成数据分析计算相关技术的统称。 隐私计算作为跨学科技术,以密码学为核心理论, 结合了大数据、人工智能、区块链等多领域知识。其这些技术路线中,以安全多方计算为代表的基

    2024年02月07日
    浏览(35)
  • 安全多方计算之九:不经意传输

    考虑这样的场景:A意欲出售许多个问题的答案,B打算购买其中一个问题的答案,但又不想让A知道他买的哪个问题的答案。即B不愿意泄露给A他究竟掌握哪个问题的秘密,此类场景可通过不经意传输协议实现。 不经意传输(OT,Oblivious Transfer)又称健忘传输或茫然传输,由Rabin于

    2023年04月16日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包