SPDZ是一個安全多方計算的開源庫。裡面包含了各種技術實作的安全多方計算,例如混淆電路、秘密分享、OT、同态。功能比較全,而且是持續維護的開源庫。主體語言是python,衆所周知,python是世界最好的語言。在此基礎上定義了很多新的關于MPC的類和庫,具體可檢視使用者手冊。
官方文檔是:https://github.com/data61/MP-SPDZ 對spdz庫進行了詳細介紹,以及一些基礎的安裝編譯指令
官方源代碼:https://github.com/data61/MP-SPDZ/releases
官方使用者手冊:Welcome to MP-SPDZ’s documentation! — MP-SPDZ documentation 詳細記錄了spdz提供的各種類,函數,變量等。
大家可以參照這三個網址進行學習。
本篇博文想要實作一個簡單的三方求和程式,來展示一個SPDZ的多方計算使用流程。
首先要安裝所依賴的工具庫
apt-get install automake build-essential git libboost-dev libboost-thread-dev libntl-dev libsodium-dev libssl-dev libtool m4 python3 texinfo yasm
這個是官方提供的指令,一次性安裝幾乎所有需要的工具庫。所有的工具庫在官方文檔也有列出:
在下載下傳好源代碼後,切換到源代碼檔案夾。
下載下傳好基礎庫後,對spdz庫進行編譯:
Scripts/tldr.sh
官方提供了一個測試程式,可以跑一跑試一試:這個代碼内容就是各種運算的小測試。
./compile.py tutorial
echo 1 2 3 4 > Player-Data/Input-P0-0
echo 1 2 3 4 > Player-Data/Input-P1-0
Scripts/mascot.sh tutorial
實作簡單的三方求和:
1.在Programs/Source檔案夾内建立一個源代碼檔案testgp.mpc(字尾名是.mpc):我用的sublime text進行編輯,用vim也行
subl Programs/Source/testgp.mpc
編輯内容:
a = sint.get_input_from(0)
b = sint.get_input_from(1)
c = sint.get_input_from(2)
sum = a + b + c
print_ln('Results =%s',sum.reveal())
儲存退出。
2. 編譯程式:testgp是你的程式檔案名
./compile.py -B 32 testgp
3. 生成證書檔案,3代表三方計算。
Scripts/setup-ssl.sh 3
4. 寫入三方資料
echo 11 > Player-Data/Input-P0-0
echo 12 > Player-Data/Input-P1-0
echo 13 > Player-Data/Input-P2-0
5.開三個新終端模拟三方計算,進行運算,得到結果:
./shamir-bmr-party.x -N 3 0 testgp
./shamir-bmr-party.x -N 3 1 testgp
./shamir-bmr-party.x -N 3 2 testgp
結束。
這個執行個體很簡單,這個執行程式是基于秘密分享技術進行運算的,實際他還有别技術運算,如混淆電路,HE。對應的不同地執行過程。還在一步一步探索,後續也會更新相關内容。
歡迎大家找我讨論交流各種關于SPDZ開源庫的問題。我明白的一定知無不言,我不會的,大家一起讨論讨論說不定就解決啦。
--------------分割線-----------------------------
看到大家有不少問題,評論區有時不能及時回複,可以加微信一起交流哦~~ 在此說明:此微信号僅限交流mpc和spdz開源庫的技術或者知識交流,不發推廣,沒有公衆号,你不找我我絕不會找你,也希望大家加了以後不要給我發與之無關的消息。