最近 聯(lián)邦學(xué)習 概念很是火熱,同態(tài)加密
、不經(jīng)意傳輸
、秘密共享
這些名詞也常有耳聞,大多數(shù)相關(guān)的文章都寫得很專業(yè),專業(yè)到把我們這些剛想入門的新手直接就給拒之門外了。
今天嘗試通過一個小故事來簡單理解 基于秘密共享的多方安全計算,關(guān)于這個名詞的定義我就不用專業(yè)詞匯贅述了,直接看故事。
- 我、小王、小張是同一家公司的員工
- 我們各自不知道對方的工資
- 我們都不想讓其他人知道自己的真實薪資
- 但我們特別想知道我們間的平均工資,來決定自己是否應(yīng)該申請漲薪
今天的主角 秘密共享
就是來解決這個問題的,大家可以在保證自己薪資不泄露的前提下求得平均工資。咋一聽這簡直天方夜譚,逗我呢,那咋算嘛?
其實通過一些簡單的數(shù)學(xué)知識就能做到了,接下來大家就跟著我的方法來試著算一下,假設(shè)大家工資是:
- 我 5000
- 小王 4000
- 小張 9000
第一步,我們?nèi)朔謩e將自己的薪資拆成任意三個數(shù)相加的和,如:
- 我 5000 = 1000 + 1000 + 3000
- 小王 4000 = 2000 + 1000 + 1000
- 小張 9000 = 4000 + 3000 + 2000
現(xiàn)在每個人手上都有了 3 個數(shù)字,選其中 2 個數(shù)字分別告訴其他倆人,留下 1 個數(shù)字只有自己知道。
如下圖所示,經(jīng)過這樣的 “秘密” 交換,每個人手上擁有了 3 個新的數(shù)字,其中一個是之前自己留下的,另外兩個分別來自其他倆人。大家都將自己的信息以特定的方式共享了出來,并且因為大家都保留了 1 個只有自己知道的數(shù)字,所以這種共享是安全的,不會泄露自己的真實薪資的。
接下來,如果要求 3 個人的工資總和,只需要每個人將手上新的 3 個數(shù)相加之和(圖中黃圈)公布給大家即可,再次加總就能得到 18000 的總數(shù),除以 3 就是平均工資 6000。
原來我每天辛辛苦苦工作,拿到的錢還不及平均數(shù)!知道真相后的我第二天就向老板提出了加薪申請。
當然,實際工程中的算法并不會這么簡單,這個示例只是幫助正要入門的新手理解一些基本的理念,數(shù)據(jù)科學(xué)并沒有想象中那么可怕~