TinyGarble 开源项目使用教程
1. 项目介绍
TinyGarble 是一个完整的 Yao's Garbled Circuit (GC) 协议实现,用于两方安全函数评估 (Secure Function Evaluation, SFE)。该项目旨在提供高度压缩和可扩展的顺序混淆电路,支持双方在保护输入隐私的前提下执行任意函数并获取输出。
TinyGarble 包含两个主要部分:
- 电路合成:基于硬件合成和顺序电路概念,输出一个网表 Verilog 文件。
- 安全函数评估:基于 JustGarble 项目实现的 GC 框架,支持 Free-XOR、Row-reduction、OT 扩展和固定密钥块密码等功能。
2. 项目快速启动
2.1 安装依赖
在 Ubuntu 系统上,首先需要安装以下依赖:
sudo apt-get install g++
sudo apt-get install libssl-dev
sudo apt-get install libboost-all-dev
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:george-edison55/cmake-3.x
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install cmake
2.2 编译项目
克隆项目仓库并编译:
git clone https://github.com/esonghori/TinyGarble.git
cd TinyGarble
./configure
cd bin
make
2.3 运行示例
在 Alice 的终端上运行以下命令,计算两个 32 位私有输入的汉明距离:
./TinyGarble --alice --input FF55AA77
在 Bob 的终端上运行以下命令:
./TinyGarble --bob --input 12345678
3. 应用案例和最佳实践
3.1 应用案例
TinyGarble 可用于各种需要保护隐私的计算场景,例如:
- 隐私保护数据分析:在多方数据分析中,确保数据输入的隐私不被泄露。
- 安全多方计算:在多方参与的计算中,确保每一方的输入不被其他方获取。
3.2 最佳实践
- 优化电路:使用 TinyGarble 提供的电路合成工具,优化电路以减少通信开销。
- 安全通信:确保在执行 TinyGarble 时,使用安全的通信通道,以防止中间人攻击。
4. 典型生态项目
- JustGarble:TinyGarble 基于 JustGarble 项目实现,提供了更高级的功能和优化。
- Verilog 工具链:TinyGarble 依赖于 Verilog 工具链进行电路合成,建议使用最新版本的工具链以获得最佳性能。
通过以上步骤,您可以快速上手 TinyGarble 项目,并在实际应用中保护数据隐私。