wqruan / aby3

A Three Party MPC framework for Machine learning and Databases

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ABY 3 and Applications

Introduction

This library provides the semi-honest implementation of ABY 3 and Fast Database Joins for Secret Shared Data.

The repo includes the following application:

  • Linear Regression (training/inference)
  • Logistic Regression (training/inference)
  • Database Inner, Left and Full Joins
  • Database Union
  • Set Cardinality
  • Threat Log Comparison (see Section 5)
  • ERIC Application (see Section 5)

A tutorial can be found here. It includes a description of how to use the API and a discussion at the end on how the framework is implemented.

Warning

This codebase should NOT be considered fully secure. It has not had a security review and there are still several security related issues that have not been fully implemented. Only use this casebase as a proof-of-concept or to benchmark the perfromance. Future work is required for this implementation to be considered secure.

Moreover, some features have not been fully developed and contains bugs. For example, the task scheduler sometime fails. This is a known issue.

Install

The library is cross platform and has been tested on Windows and Linux. The dependencies are:

Windows

  1. Clone and build libOTe via cmake . -DENABLE_CIRCUITS=ON.
  2. git clone https://github.com/ladnir/aby3.git
  3. cd C:\
  4. mkdir libs
  5. Download Eigen to C:\libs\eigen.
  6. git clone https://github.com/Naios/function2.git to C:\libs\function2.

Open aby3 folder in visual studio and build it (via cmake). Note, you can place Eigen and function2 in a different location and update the aby3 cmake files to reference this location.

To see all the command line options, execute the program

frontend

Linux / Mac

In short, this will build the project

git clone --recursive https://github.com/osu-crypto/libOTe.git
cd libOTe/cryptoTools/thirdparty/
python3 getBoost.py
cd ../../..
cmake . -DENABLE_CIRCUITS=ON
make -j
cd ../
git clone https://github.com/ladnir/aby3.git
cd aby3/thirdparty/linux
bash eigen.get
bash function2.get
cd ../..
cmake .
make -j

To see all the command line options, execute the program

frontend

Note: On windows the linking paths follow a similar pattern.

Help

Contact Peter Rindal peterrindal@gmail.com for any assistance on building or running the library.

Citing

Spread the word!

@misc{aby3,
    author = {Peter Rindal},
    title = {{The ABY3 Framework for Machine Learning and Database Operations.}},
    howpublished = {\url{https://github.com/ladnir/aby3}},
}

About

A Three Party MPC framework for Machine learning and Databases

License:MIT License


Languages

Language:TeX 97.2%Language:C++ 2.7%Language:Perl 0.1%Language:HTML 0.0%Language:CMake 0.0%Language:C 0.0%Language:Makefile 0.0%Language:Shell 0.0%