下载库压缩包
前往github下载自己需要的版本,今天是2022年12月19日,之前听师兄说0.3.3版本有bug不知道是否修复完毕,于是这里选择0.3.2版本
Releases · data61/MP-SPDZ (github.com)
拖进虚拟机
把下载好的压缩包拖进虚拟机里,这一步对于VMware来说需要额外安装VMware Tools,如下图
解压,填空文件夹
我是在桌面新建了个文件夹,解压完毕
解压后的文件夹里有多个是空文件夹,需要在SPDZ GitHub 官网里下载后填进去(这一步可以先不做,直接跳到下一个标题,跟着步骤走如果最后不能运行程序再做这步)
GitHub - data61/MP-SPDZ: Versatile framework for multi-party computation
目前是以下四个:(PS:Circuits在Programs文件夹里)
执行各种搭建命令
执行
sudo apt-get install automake build-essential cmake git libboost-dev libboost-thread-dev libntl-dev libsodium-dev libssl-dev libtool m4 python3 texinfo yasm
建议不要一溜烟全部执行,有可能会报错;执行期间若有报错则根据报错内容进行修改。最后实在报错改不了就暂时略过。
大约花个十几分钟,把上面的都装完
装完后,执行
Scripts/tldr.sh
效果如下
测试
到这里基本就搭完了,写个小程序试试
进入Programs/Source,gedit新建一个文件,后缀改成.mpc
代码就写个简单的两方求和计算
a = sint.get_input_from(0) #接收第0方的秘密输入
b = sint.get_input_from(1) #接收第1方的秘密输入
c = a + b
print_ln('%s', c.reveal()) #reveal重构得到原数据
保存后,回到spdz的根目录,编译
./compile.py -F 64 tt.mpc #tt.mpc 是我写的代码文件的名字
然后执行以下代码,用于生成证书(证书文件可以存在一个月,在此期间运行相关代码无需再次生成)
Scripts/setup-ssl.sh 2 #需要几方计算,就写几
全部完成后,就可以在两个终端内进行计算了。
在第一个终端执行:
./mascot-party.x -N 2 -I -p 0 tt #2:两方; 0:第0方
在第二个终端执行:
./mascot-party.x -N 2 -I -p 1 tt
如果这时候运行不了,显示阈值必须为正,则可能安装出了问题,建议删除mpir文件夹,并在根目录执行 make -j 8 tldr 命令,会重新编译环境
正确的执行结果如下
我们第一个输入11
第二个输入13,看看结果对不对
可以看到,两端分别输入后,都得到了结果24,且没有暴露对方的输入。简单的安全两方计算就完成了。