一個好用的多方隱私求交算法庫JasonCeng/MultipartyPSI-Pro

Github鏈接傳送:JasonCeng/MultipartyPSI-Pro

大家好,我是阿創,這是我的第29篇原創文章。

今天是一篇純技術性文章,希望對工程獅們🦁有所幫助。

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

主要涉及隱私計算、聯邦學習領域,是一個支持多方的隱私求交算法庫,主要是是基於osu-crypto/MultipartyPSI****的增強實現。

詳細介紹就是下方的README啦~

基於可編程不經意僞隨機數的多方隱私求交算法庫

Programmable Oblivious PRF & multi-party PSI

📣 簡介

本算法庫是基於osu-crypto/MultipartyPSI的增強實現。

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

✨ 特性

  • 簡潔的 API 設計,使用如絲滑般流暢
  • 支持多方隱私求交
  • 支持讀取文件數據
  • 支持多機通信
  • 增強半誠實模型標準半誠實模型中實現了多方PSI(nPSI),安全性有保障
  • 核心算法可編程OPRF(Programmable Oblivious PRF),包含以下多種實現:
    • Table-based OPPRF
    • Polynomial-based OPPRF
    • BloomFilter-based OPPRF
  • 詳細的文檔和示例,幫助開發者更快的上手項目

🛠️ 驗證情況

  • 機器配置: 1C 2G (Intel(R) Core(TM) i7-8665U CPU @ 1.90GHz)
  • 數量:3臺(3方)
  • 數據集大小:8條
  • 數據長度:128bit
  • 3方求交耗時:1.035 s

📝 使用

依賴庫

注:對於libOTe,它需要支持PCLMULAES-NISSE4.1的CPU。 可選:nasm 用於改進 SHA1 性能。

1. 克隆代碼

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

2. 安裝依賴

代碼已經在 Windows (Microsoft Visual Studio) 和 Linux 上進行了測試。安裝所需的庫:

  • windows:
  1. 打開 PowerShell
  2. cd ./thirdparty
  3. .\all_win.ps1 (該腳本適用於 Visual Studio 2015。對於其他版本,您應該修改 MSBuild 腳本中的幾個地方。)
  • linux:
  1. cd ./thirdparty
  2. bash .\all_linux.get.

注意:如果您遇到構建 boost、miracl 和 libOTe 的 all_win.ps1all_linux.get 的問題,請按照 libOTe 上的更多手動說明進行操作)

3. 編譯

  • Windows:
  1. 按順序構建 cryptoTools、libOTelibOPRF項目。
  2. bOPRFmain項目添加參數(例如:-u)
  3. 運行bOPRFmain
  • Linux:
  1. make (依賴: CMake, Make, g++)
  2. 單元測試: ./bin/frontend.exe -u

4. 運行

輸出包括online/offline/total平均運行時長。

參數列表:

-u		單元測試:computes PSI of 5 paries, 2 dishonestly colluding, each with set size 2^12 in semihonest setting
-n		參與方數量
-p		參與方ID,ID最大的參與方爲結果接收方
-m		set size
-t		惡意參與方數量(在不誠實模型設置中生效)
-a		以增強半誠實模型模式運行。默認使用Table-based OPPRF算法。
			0: Table-based; 1: POLY-seperated; 2-POLY-combined; 3-BloomFilter
-r		當 r = 1 時使用優化的3方PSI算法
-f		輸入數據的文本文件(絕對路徑或相對路徑均可以)
-ip		其他參與方ip,且相對順序需與-p的編號保持一致。比如-p 0所帶的-ip的順序需爲<-p 1 ip>,<-p 2 ip>

示例:

1. 單元測試
./bin/frontend.exe -u
2. nPSI

在半誠實模型設置中,計算3方的PSI,其中包含2個不誠實方,數據存儲在data.bin中。

三臺機器的ip分別是:192.168.1.10,192.168.1.11,192.168.1.12

# 機器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

# 機器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

# 機器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,且相對順序需與-p的編號保持一致。比如-p 0所帶的-ip的順序需爲<-p 1 ip>,<-p 2 ip>

5. 總結

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. 在三臺機器上執行:
# 機器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

# 機器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

# 機器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

💡 後續工作

  • [ ] 移除運行時非必要參數,如-m
  • [ ] 所有分支均支持-f傳入文本文件數據
  • [ ] 所有分支均支持-ip進行多機通信
  • [ ] 輸出求交結果到指定路徑,由leader傳入指定路徑
  • [ ] 對小樣本、大樣本數據進行測試

📃 幫助

有關構建或運行該算法庫的任何問題,請聯繫 JasonCeng by email: [email protected]

如果你覺得寫得不錯

麻煩給個贊~

關注我,帶你瞭解區塊鏈行業

推薦閱讀:

1、《區塊鏈是構建產業互聯網的可信基礎設施》

2、《隱私計算佈局思考》

3、讀書 |《數據資產論》:數據如何資產化?

4、區塊鏈產業發展五大趨勢:數據安全、科技監管、自主可控、雙碳戰略、數字經濟

5、揭祕北京冬奧會開幕式“數字雪花”背後的區塊鏈技術

6、Web3對於我們普通人意味着什麼?

7、最近火爆的數字藏品究竟是什麼?


提前看到未來的人,
和花一輩子都看不清的人,
註定是截然不同的命運。

點擊下方卡片關注101鏈視界,和1000+讀者**一起**

洞察技術本質

101鏈視界

區塊鏈、隱私計算與金融科技領域的專業知識分享者。

29篇原創內容

公衆號

▲ 點擊上方卡片關注101鏈視界,洞察技術本質

技術交流 | 行業研報 | 前沿洞察 | 轉載開白 | 加入社羣

請在公衆號後臺回覆 合作

歡迎把文章分享到朋友圈

圖片點擊JasonCeng/MultipartyPSI-Pro直達Github****鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章