一個(gè)好用的多方隱私求交算法庫(kù)JasonCeng/MultipartyPSI-Pro

Github鏈接傳送:JasonCeng/MultipartyPSI-Pro

大家好辰企,我是阿創(chuàng)绸栅,這是我的第29篇原創(chuàng)文章怕磨。

今天是一篇純技術(shù)性文章黄选,希望對(duì)工程獅們有所幫助础钠。

向大家推薦一個(gè)我最近改造的算法庫(kù)(JasonCeng/MultipartyPSI-Pro)

主要涉及隱私計(jì)算、聯(lián)邦學(xué)習(xí)領(lǐng)域毅哗,是一個(gè)支持多方的隱私求交算法庫(kù)率寡,主要是是基于osu-crypto/MultipartyPSI的增強(qiáng)實(shí)現(xiàn)。

詳細(xì)介紹就是下方的README啦~

基于可編程不經(jīng)意偽隨機(jī)數(shù)的多方隱私求交算法庫(kù)

Programmable Oblivious PRF & multi-party PSI

?? 簡(jiǎn)介

本算法庫(kù)是基于osu-crypto/MultipartyPSI的增強(qiáng)實(shí)現(xiàn)瞎领。

該算法的原論文來自 CCS 2017 : Practical Multi-party Private Set Intersection from Symmetric-Key Techniques[ePrint]

? 特性

簡(jiǎn)潔的 API 設(shè)計(jì)泌辫,使用如絲滑般流暢

支持多方隱私求交

支持讀取文件數(shù)據(jù)

支持多機(jī)通信

在增強(qiáng)半誠(chéng)實(shí)模型和標(biāo)準(zhǔn)半誠(chéng)實(shí)模型中實(shí)現(xiàn)了多方PSI(nPSI),安全性有保障

核心算法可編程OPRF(Programmable Oblivious PRF)九默,包含以下多種實(shí)現(xiàn):

Table-based OPPRF

Polynomial-based OPPRF

BloomFilter-based OPPRF

詳細(xì)的文檔和示例震放,幫助開發(fā)者更快的上手項(xiàng)目

???? 驗(yàn)證情況

機(jī)器配置:1C 2G (Intel(R) Core(TM) i7-8665U CPU @ 1.90GHz)

數(shù)量:3臺(tái)(3方)

數(shù)據(jù)集大小:8條

數(shù)據(jù)長(zhǎng)度:128bit

3方求交耗時(shí):1.035 s

?? 使用

依賴庫(kù)

支持 C++14 的 C++ 編譯器

Boost

Miracl

NTL

libOTe

注:對(duì)于libOTe驼修,它需要支持PCLMUL殿遂、AES-NI和SSE4.1的CPU∫腋鳎可選:nasm?用于改進(jìn) SHA1 性能墨礁。

1. 克隆代碼

git clone https://github.com/JasonCeng/MultipartyPSI-Pro.git

2. 安裝依賴

代碼已經(jīng)在 Windows (Microsoft Visual Studio) 和 Linux 上進(jìn)行了測(cè)試。安裝所需的庫(kù):

windows:

打開 PowerShell

cd ./thirdparty

.\all_win.ps1?(該腳本適用于 Visual Studio 2015耳峦。對(duì)于其他版本恩静,您應(yīng)該修改?MSBuild?腳本中的幾個(gè)地方。)

linux:

cd ./thirdparty

bash .\all_linux.get.

注意:如果您遇到構(gòu)建 boost蹲坷、miracl 和 libOTe 的?all_win.ps1?或?all_linux.get?的問題驶乾,請(qǐng)按照?libOTe?上的更多手動(dòng)說明進(jìn)行操作)

3. 編譯

Windows:

按順序構(gòu)建?cryptoTools、libOTe?和libOPRF項(xiàng)目循签。

為bOPRFmain項(xiàng)目添加參數(shù)(例如:-u)

運(yùn)行bOPRFmain

Linux:

make (依賴:?CMake,?Make,?g++)

單元測(cè)試:?./bin/frontend.exe -u

4. 運(yùn)行

輸出包括online/offline/total平均運(yùn)行時(shí)長(zhǎng)级乐。

參數(shù)列表:

-u 單元測(cè)試:computes PSI of 5 paries, 2 dishonestly colluding, each with set size 2^12 in semihonest setting

-n 參與方數(shù)量

-p 參與方ID,ID最大的參與方為結(jié)果接收方

-m set size

-t 惡意參與方數(shù)量(在不誠(chéng)實(shí)模型設(shè)置中生效)

-a 以增強(qiáng)半誠(chéng)實(shí)模型模式運(yùn)行县匠。默認(rèn)使用Table-based OPPRF算法风科。

0: Table-based; 1: POLY-seperated; 2-POLY-combined; 3-BloomFilter

-r 當(dāng) r = 1 時(shí)使用優(yōu)化的3方PSI算法

-f 輸入數(shù)據(jù)的文本文件(絕對(duì)路徑或相對(duì)路徑均可以)

-ip 其他參與方ip撒轮,且相對(duì)順序需與-p的編號(hào)保持一致。比如-p 0所帶的-ip的順序需為<-p 1 ip>,<-p 2 ip>

示例:

1. 單元測(cè)試

./bin/frontend.exe -u

2. nPSI

在半誠(chéng)實(shí)模型設(shè)置中贼穆,計(jì)算3方的PSI题山,其中包含2個(gè)不誠(chéng)實(shí)方,數(shù)據(jù)存儲(chǔ)在data.bin中故痊。

三臺(tái)機(jī)器的ip分別是:192.168.1.10,192.168.1.11,192.168.1.12

# 機(jī)器1-192.168.1.10:

./bin/frontend.exe -n 3 -t 2 -m 12 -p 0 -f ./data.bin -ip 192.168.1.11,192.168.1.12 > log01.log

# 機(jī)器2-192.168.1.11:

./bin/frontend.exe -n 3 -t 2 -m 12 -p 1 -f ./data.bin -ip 192.168.1.10,192.168.1.12 > log02.log

# 機(jī)器3-192.168.1.12:

./bin/frontend.exe -n 3 -t 2 -m 12 -p 2 -f ./data.bin -ip 192.168.1.10,192.168.1.11 > log03.log

注意:-ip后所帶的ip為其他參與方ip臀蛛,且相對(duì)順序需與-p的編號(hào)保持一致。比如-p 0所帶的-ip的順序需為<-p 1 ip>,<-p 2 ip>

5. 總結(jié)

1. git clone https://github.com/JasonCeng/MultipartyPSI-Pro.git?

2. cd thirdparty/

3. bash all_linux.get

4. cd ..

5. cmake .

6. make -j

7. 在三臺(tái)機(jī)器上執(zhí)行:

# 機(jī)器1:

./bin/frontend.exe -n 3 -t 2 -m 12 -p 0 -f ./data.bin -ip 192.168.1.11,192.168.1.12 > log01.log

# 機(jī)器2:

./bin/frontend.exe -n 3 -t 2 -m 12 -p 1 -f ./data.bin -ip 192.168.1.10,192.168.1.12 > log02.log

# 機(jī)器3:

./bin/frontend.exe -n 3 -t 2 -m 12 -p 2 -f ./data.bin -ip 192.168.1.10,192.168.1.11 > log03.log

??? 后續(xù)工作

移除運(yùn)行時(shí)非必要參數(shù)崖蜜,如-m

所有分支均支持-f傳入文本文件數(shù)據(jù)

所有分支均支持-ip進(jìn)行多機(jī)通信

輸出求交結(jié)果到指定路徑浊仆,由leader傳入指定路徑

對(duì)小樣本、大樣本數(shù)據(jù)進(jìn)行測(cè)試

?? 幫助

有關(guān)構(gòu)建或運(yùn)行該算法庫(kù)的任何問題豫领,請(qǐng)聯(lián)系 JasonCeng by mail: zengzhaochuangx@qq.com


如果你覺得寫得不錯(cuò)

麻煩給個(gè)贊~

關(guān)注我抡柿,帶你了解區(qū)塊鏈行業(yè)


推薦閱讀:

1、《區(qū)塊鏈?zhǔn)菢?gòu)建產(chǎn)業(yè)互聯(lián)網(wǎng)的可信基礎(chǔ)設(shè)施》

2等恐、《隱私計(jì)算布局思考》

3洲劣、讀書 |《數(shù)據(jù)資產(chǎn)論》:數(shù)據(jù)如何資產(chǎn)化?

4课蔬、區(qū)塊鏈產(chǎn)業(yè)發(fā)展五大趨勢(shì):數(shù)據(jù)安全囱稽、科技監(jiān)管、自主可控二跋、雙碳戰(zhàn)略战惊、數(shù)字經(jīng)濟(jì)

5、揭秘北京冬奧會(huì)開幕式“數(shù)字雪花”背后的區(qū)塊鏈技術(shù)

6扎即、Web3對(duì)于我們普通人意味著什么吞获?

7、最近火爆的數(shù)字藏品究竟是什么谚鄙?

提前看到未來的人各拷,

和花一輩子都看不清的人, 注定是截然不同的命運(yùn)闷营。

點(diǎn)擊下方卡片關(guān)注101鏈視界烤黍,和1000+讀者一起

洞察技術(shù)本質(zhì)

▲ 關(guān)注101鏈視界,洞察技術(shù)本質(zhì)

技術(shù)交流?|?行業(yè)研報(bào)?|?前沿洞察 | 轉(zhuǎn)載開白 | 加入社群

請(qǐng)?jiān)诠娞?hào)后臺(tái)回復(fù)?合作

歡迎把文章分享到朋友圈

Github鏈接傳送:JasonCeng/MultipartyPSI-Pro

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末傻盟,一起剝皮案震驚了整個(gè)濱河市速蕊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌莫杈,老刑警劉巖互例,帶你破解...
    沈念sama閱讀 212,029評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奢入,死亡現(xiàn)場(chǎng)離奇詭異筝闹,居然都是意外死亡媳叨,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門关顷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來糊秆,“玉大人,你說我怎么就攤上這事议双《环” “怎么了?”我有些...
    開封第一講書人閱讀 157,570評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵平痰,是天一觀的道長(zhǎng)汞舱。 經(jīng)常有香客問我,道長(zhǎng)宗雇,這世上最難降的妖魔是什么昂芜? 我笑而不...
    開封第一講書人閱讀 56,535評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮赔蒲,結(jié)果婚禮上泌神,老公的妹妹穿的比我還像新娘。我一直安慰自己舞虱,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,650評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著舶沿,像睡著了一般配并。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上畸冲,一...
    開封第一講書人閱讀 49,850評(píng)論 1 290
  • 那天邑闲,我揣著相機(jī)與錄音苫耸,去河邊找鬼儡陨。 笑死,一個(gè)胖子當(dāng)著我的面吹牛呀枢,可吹牛的內(nèi)容都是我干的笼痛。 我是一名探鬼主播,決...
    沈念sama閱讀 39,006評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼摘刑,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼刻坊!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起活尊,我...
    開封第一講書人閱讀 37,747評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤漏益,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后铜犬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體轻庆,經(jīng)...
    沈念sama閱讀 44,207評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纷宇,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,536評(píng)論 2 327
  • 正文 我和宋清朗相戀三年像捶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拓春。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片亚隅。...
    茶點(diǎn)故事閱讀 38,683評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡懂鸵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出矾瑰,到底是詐尸還是另有隱情隘擎,我是刑警寧澤殴穴,帶...
    沈念sama閱讀 34,342評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站采幌,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏震桶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,964評(píng)論 3 315
  • 文/蒙蒙 一蹲姐、第九天 我趴在偏房一處隱蔽的房頂上張望磨取。 院中可真熱鬧,春花似錦柴墩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至歼指,卻和暖如春爹土,著一層夾襖步出監(jiān)牢的瞬間踩身,已是汗流浹背胀茵。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工宰掉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人挪拟。 一個(gè)月前我還...
    沈念sama閱讀 46,401評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像玉组,于是被迫代替她去往敵國(guó)和親惯雳。 傳聞我的和親對(duì)象是個(gè)殘疾皇子朝巫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,566評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容