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)化?
5、揭秘北京冬奧會(huì)開幕式“數(shù)字雪花”背后的區(qū)塊鏈技術(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