今天聽莫老師講了姚期智提出的百萬富翁問題,簡直神了,這也太厲害了吧,我覺得是和零知識證明一樣的神奇,或許這就是數學的魅力吧。在不洩露個人隱私的情況下,可以比較兩個富翁的財富大小。著實太強了,佩服,其實歸根結底都是數學,學好數學的重要性不言而喻,加油吧好好學習數學!
首先我們假設有兩個富翁 a 和 b ,且 a 和 b 的財產都在同一水平,設 a 有 i 億,b 有 j 億,$ 0 首先初始化:a 有乙個公鑰\(pk_a\)和私鑰\(sk_a\),加密函式 e 和解密函式 d ,b 知道 a 的公鑰但不知道私鑰。
1)b 要做到事情:
首先 b 拿出乙個隨機大數 x ,然後用 a 的公鑰加密得到\(k=e(x, pk_a)\),相應的 \(x=d(k, sk_a)\)
計算出\(m=k-j+1\),將 m 傳送給 a。
2)a 要做的事情:
計算出\(k-j+1,k-j+2,\cdots,k-j+j,\cdots,k-j+10\),因為\(m=k-j+1\),所以等價於計算\(m,m+1,\cdots,k,\cdots,m+9\),你會發現\(k-j\)從加 1 到加 10 中必然會加上 j 的,因為\(j\subseteq(0, 10]\)。
然後使用 a 的私鑰,\(y=d(m, sk_a)\),解密出\(m,m+1,\cdots,k,\cdots,m+9\)的值分別為\(y_1, y_2,\cdots,y_j,\cdots,y_\)。
對\(y_n\)進行求模運算,\(z_n=y_n\mod\ p\),其中 p 是 a 隨機生成的乙個素數,得出集合 \(\=z_1, z_2,\cdots,z_i,\cdots,z_j,\cdots,z_\),如果這個集合中至少有兩個是不一樣的,則進行下一步,反之則重新生成素數p,重複第三步。
之後,保持\(z_1,\cdots,z_i\)不變,\(z_,\cdots,z_\)都加1,就變成\(z_1,z_2,\cdots,z_i,z_+1,\cdots,z_9+1,z_+1\),然後 a 將該集合和素數 p 傳送給 b 。
3)最後的結果:
如果 \(x\mod p=z_j\),說明\(z_j\subseteq\\),推出\(j<=i\)。
如果\(x\mod p=z_j\),則說明\(z_j\subseteq\+1,\cdots,z_+1\}\),推出\(j>i\)。
最後由 b 告訴 a ,到底誰才是最有錢的。
證明完畢,但是我還是有點疑問就是,這個(3).1
,\(j<=i\)的情況下,還是判斷不出來誰最有錢呀?
首先生成 10 個箱子,序號從\(1,2,3,\cdots,10\),a 有 i 億,b 有 j 億,$ 0
姚期智老師在2023年就發表了這個**,當時網際網路處於發展階段,隱私問題也就沒多少人重視,姚老師很有前瞻性,不虧是首位獲得圖靈獎的華人。但是如今開始重視隱私問題了,滴滴就是前車之鑑,國家也很重視資訊保安的建設,所以好好學習吧,哈哈
姚式百萬富翁問題
兩個百萬富翁都想比較到底誰更富有,但是有都不想讓別人知道自己有多少錢。在沒有可信的第三方的情況下如何進行?這就是著名的姚式百萬赴富翁問題。抽象並簡化問題,假設alice有乙個整數i,公鑰eb,私鑰db。bob有乙個整數j,且i,j 1,10 i,j in 1,10 i,j 1 10 1.bob選擇乙...
百萬富翁問題
題目描述 乙個百萬富翁遇到乙個陌生人,陌生人找他談了乙個換錢的計畫。該計畫如下 我每天給你10 萬元,你第一天給我1 分錢,第二天2 分錢,第三天4 分錢 這樣交換 30 天後,百萬富翁交出了多少錢?陌生人交出了多少錢?注意乙個是萬元,乙個是分 輸入描述 該題沒有輸入 輸出描述 輸出兩個整數,分別代...
題目1488 百萬富翁問題
1 秒 記憶體限制 128 兆 特殊判題 否 提交 4942 解決 1405 題目描述 乙個百萬富翁遇到乙個陌生人,陌生人找他談了乙個換錢的計畫。該計畫如下 我每天給你10 萬元,你第一天給我1 分錢,第二天2 分錢,第三天4 分錢 這樣交換 30 天後,百萬富翁交出了多少錢?陌生人交出了多少錢?注...