百万富翁问题— DavidCai.eth
文章推薦指數: 80 %
最近在看零知识证明,了解到了一个很有意思的问题,即《姚氏百万富翁问题》,该问题由图灵奖得主姚期智老师提出。
算是对开始了解零知识证明的朋友起到 ...
DavidCai.ethdavidcai.eth百万富翁问题0x5670December29th,2021最近在看零知识证明,了解到了一个很有意思的问题,即《姚氏百万富翁问题》,该问题由图灵奖得主姚期智老师提出。
算是对开始了解零知识证明的朋友起到抛砖引玉作用的经典问题。
下面展开一下问题的描述,以及姚期智老师给出的一个答案。
问题
假设有两个富翁甲,乙,他们的财产数量分别为a,b,且1≤a,b≤N。
甲,乙两者想知道他们两者的财产数量谁多,但是又不能透露他们具体的财产数量。
解答
乙先生产自己的一对非对称加密(如RSA)秘钥对,即公钥E,私钥C。
并像TLS通信中一样将公钥E发送给甲,然后是自己保留C。
第一步
甲再取一个大于a的数字X(尽量取大),将X通过乙的公钥加密后得到E(X),然后将E(X)-a发送给乙。
第二步
乙取得E(X)-a后,由于不知道X的具体值,所以也更无从知晓a。
他将进行一组计算来对E(X)进行枚举(对所有a的可能范围,即1到N),然后使用私钥解密,使得枚举结果中有一项为X:
C(E(X)-a+1)
C(E(X)-a+2)
...
C(E(X)-a+a)=>即X
...
C(E(X)-a+N)
由于1≤a,b≤N的前提,所以其中必有一项为C(E(X)-a+a),即X。
第三步
乙取一个素数P,P尽量比X小几个数量级(甲提前向乙透露X的数量级并不会有问题)。
这时,将上述计算取得的一组结果全部与P取余,得:
C(E(X)-a+1)modP
C(E(X)-a+2)modP
...
C(E(X)-a+a)modP=>即XmodP
...
C(E(X)-a+N)modP
第四步
在上述取余结果计算中,前b项不变,后N项全部+1,即:
C(E(X)-a+1)modP
C(E(X)-a+2)modP
...
C(E(X)-a+b)modP
C(E(X)-a+(b+1))modP+1
...
C(E(X)-a+N)modP+1
然后将这组结果与P全部发送给甲。
由于第a项为:C(E(X)-a+a)modP即XmodP,若a
延伸文章資訊
- 1百万富翁问题实现 - 程序员大本营
Web 前端密码加密是否有意义?www.zhihu.com 在这个温柔问题下看到了 @w2014 的一些密码学有趣的定理,感觉很有意思,例如零知识证明、盲签名、百万富翁问题,进而看 ...
- 2混淆电路(Garbled Circuit)(一):姚氏百万富翁问题 - 知乎专栏
今天记录一个非常有意思的问题,姚氏百万富翁问题。 首先我要介绍一下姚期智(Andrew Chi-Chih Yao),以及著名的姚氏百万富翁问题。
- 3從「百萬富翁問題」說起看華控清交如何打造數據生態閉環
這其實是中國科學院姚期智院士、國內唯一圖靈獎獲得者在1982年提出並解決的「百萬富翁問題」,當時他給出了「多方計算」這一答案。
- 4姚期智百万富翁问题:大数据时代,如何保护个人隐私?
姚期智百万富翁问题:大数据时代,如何保护个人隐私?,于2021年05月21日上线,由李永乐老师上传。西瓜视频为您提供高清视频,画面清晰、播放流畅, ...
- 5百万富翁问题的一个简单解释 - 简书
两个百万富翁都想比较到底谁更富有,但是有都不想让别人知道自己有多少钱。在没有可信的第三方的情况下如何进行? 这个问题就是著名的姚式百万富翁 ...