天天看點

安全多方計算之SPDZ執行個體初探(一)

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執行個體初探(一)

在下載下傳好源代碼後,切換到源代碼檔案夾。

下載下傳好基礎庫後,對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
           
安全多方計算之SPDZ執行個體初探(一)

3. 生成證書檔案,3代表三方計算。

Scripts/setup-ssl.sh 3
           
安全多方計算之SPDZ執行個體初探(一)

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
           
安全多方計算之SPDZ執行個體初探(一)

結束。

這個執行個體很簡單,這個執行程式是基于秘密分享技術進行運算的,實際他還有别技術運算,如混淆電路,HE。對應的不同地執行過程。還在一步一步探索,後續也會更新相關内容。

歡迎大家找我讨論交流各種關于SPDZ開源庫的問題。我明白的一定知無不言,我不會的,大家一起讨論讨論說不定就解決啦。

--------------分割線-----------------------------

看到大家有不少問題,評論區有時不能及時回複,可以加微信一起交流哦~~  在此說明:此微信号僅限交流mpc和spdz開源庫的技術或者知識交流,不發推廣,沒有公衆号,你不找我我絕不會找你,也希望大家加了以後不要給我發與之無關的消息。

安全多方計算之SPDZ執行個體初探(一)

繼續閱讀