# mpc-platform **Repository Path**: ma--ming/mpc-platform ## Basic Information - **Project Name**: mpc-platform - **Description**: 一个多方安全计算平台 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-10-16 - **Last Updated**: 2022-06-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # mpc-platform ## 介绍 一个多方安全计算平台,利用混乱电路,GVM,BGW等技术实现两方或多方安全计算任意Function。 ## 目前进度 该软件尚处于开发阶段,目前并不能进入实用阶段。 * 将函数生成布尔电路 * 将函数生成数字电路(未完成) * 使用混乱电路进行计算 * 使用GVM进行计算(未完成) * 使用BGW进行计算(未完成) ## 软件架构 * /aes:aes方案源代码及电路文件,明文长度为128位,密钥128位 * /sm4:sm4方案源代码及电路文件,明文长度和密钥都是128位 * /CBMC-GC-2:cbmc-gc项目源码 * /GrableCircuit:混乱电路部分 ## 安装教程 1.cbmc-gc需要依赖两个软件,bison和flex,在ubuntu系统下可以使用 ``` apt-get install bison apt-get install flex ``` 直接安装。 2.混乱电路部分需要安装openssl1.1或以上版本。可以使用apt下载,如果apt版本不对只能去官网下载。 ## 使用说明 **现阶段仅可使用混乱电路进行一些计算,而且难免有bug,之后会进行优化处理** 首先进入CBMC-GC-2目录下,输入 ``` make minisat2-download make ``` 等待编译完成。 ### 混乱电路计算说明 1. 进入GrableCircuit目录中:`cd GrableCircuit` 2. 输入`make` 等待编译完成,会生成一个可执行程序test 3. 根据cmbc-gc的规则编写一个c程序(目录中有一个示例程序main.c),用`../CBMC-GC-2/bin/cbmc-gc 你的c程序位置 //例:../CBMC-GC-2/bin/cbmc-gc main.c` 等待电路生成完成后会在目录中多出以output开头的多个电路文件 4. 新建两个文件分别为Alice和Bob的输入,内容要求为以每个`变量名 变量值 //例:INPUT_A 12345` 为一行,变量名要与要实现的c程序中使用的一致,当前位置里有两个示例文件 input_A.txt 和 input_B.txt 5. 打开两个控制台,分别输入 ``` ./test --alice -i alice输入文件的位置 ./test --bob -i bob输入文件的位置 ``` bob终端最后会打印出计算结果。 #### 使用混乱电路计算aes与sm4 sm4电路目前存在一些问题不能正常使用!!! 在上面第5步中使用aes与sm4电路,进入aes或sm4文件夹下,选择加密或解密文件夹,其中有加解密源码文件和编译好的电路文件,可以直接使用电路文件也可以使用cbmc-gc重新生成。 随后返回GrableCircuit文件夹中,打开两个控制台,分别输入(以aes加密为例): ``` ./test --alice --circuit_file ../aes/aes_encrypt -i input_A.txt ./test --bob --circuit_file ../aes/aes_encrypt -i input_B.txt ``` 注意input_A.txt 与 input_B.txt 中写入的变量的变量名为INPUT_A和INPUT_B(电路使用的变量名保存在output.inputs.partyA.txt与output.inputs.partyB.txt中),其中INPUT_A为明文,INPUT_B为密钥(项目当前仅使用128位aes和sm4,在之后会进行改进),解密同理。 _该项目尚处于开发阶段,安全计算aes与sm4只能保证正确性,但其运行时间令人难以忍受(没有进行优化以及有着大量输出的原因),这之后会进行适量修改 :sob: _