Coder Social home page Coder Social logo

yiping106283 / libscapi Goto Github PK

View Code? Open in Web Editor NEW

This project forked from cryptobiu/libscapi

0.0 1.0 0.0 276.57 MB

Comprehensive Open Source Library for Secure Multiparty Computation

License: MIT License

CMake 0.05% Makefile 0.48% Shell 0.20% Dockerfile 0.01% C++ 47.81% C 4.87% Objective-C 0.02% Assembly 0.84% Python 0.39% HTML 44.19% M4 0.02% CSS 0.10% Perl 0.81% Batchfile 0.02% Max 0.01% XSLT 0.13% Cuda 0.01% TeX 0.01% CWeb 0.04% Tcl 0.01%

libscapi's Introduction

LIBSCAPI - The Secure Computation API

Build Status

Introduction

libscapi is the Open source C++ library for implementing high performance secure two-party and multiparty computation protocols (SCAPI stands for the "Secure Computation API"). It provides a reliable, efficient, and highly flexible cryptographic infrastructure.

Libscapi is developed by Bar Ilan University Cryptography Research Group. The goal of libscapi is to promote research by Academy and Industry practitioners in this field by providing:

  • A consistent API over Primitives, Mid-Layer Protocols, Interactive Mid-Layer Protocols and Communication Channels, simplifying the development and evaluation fo new protocols. We focus on keeping libscapi easy to build and use.
  • Integrating best performance open-source implementations by other Academy Research Institutes.
  • High Performance implementation on standard Linux & Intelx64 Architecture. We use modern techniques like Intel Intrinsics Instructions, Pipelining and TCP optimizations.

Publications using libscapi

  • Generalizing the SPDZ Compiler For Other Protocols. Accepted ACM-CCS 18 ABFKLOT18
  • An End-to-ent System for Large Scale P2P MPC as-a-Service and Low-Bandwidth MPC for Weak Participants. Includes HyperMPC protocol Accepted ACM-CCS 18 BHKL18
  • TinyKeys: A New Approach to Efficient Multi-Party Computation HOSSV18
  • Fast Large-Scale Honest-Majority MPC for Malicious Adversaries CGHIKLN18
  • A Framework for Constructing Fast MPC over Arithmetic Circuits with Malicious Adversaries LN17
  • Low Cost Constant Round MPC Combining BMR and Oblivious Transfer HSSV17

Benchmarking and Automation

Libscapi is integrated with MATRIX MPC Test Automation Framework. We use MATRIX to benchmark protocols on AWS cloud, including cross region experiments with up to 500 parties. MATRIX can easily run protocols that do not integrate libscapi as well, including for example the SPDZ-2 protocol implementation by Btistol University.

Protocol implementations

The MPC-Benchmark repository includes protocols implemented using libscapi, and integrated with the MATRIX benchmarking and automation platform. This includes implementations of the protocols listed above.

libscapi Modules

  • Primitives: Dlog, Cryptographic Hash Function, HMAC and KDF, Pseudorandom Functions and Permutations, Pseudo Random Generator, Trapdoor Permutation, Random Oracle etc.
  • Mid-layer protocols: Public Key Encryption Schemes: Cramer-Shoup, Damgard-Jurik, El-Gamal
  • Interactive Mid-layer protocols: Sigma Protocols, Zero Knowledge Proofs, Commitment Schemes
  • OT Extension : Wrappers for LibOTE and SimpleOT by OSU-Cypto and Bristol University
  • Circuits: Some commonly used circuits for AES etc
  • Communication Channel: TCP Peer-To-Peer communication setup and channel methods

Other Libscapi versions

  • ScapiLite is an experimental version used to develop MPC protocols on Android and Raspberry Pi. It has also been ported to Javascript using emscripten. ScapiLite currently supports secret-sharing protocols only (As no OT has been ported)
  • We have discontinued support for the Java Scapi library due to performance and portability issues. We would be happy to support anyone interested in developing new Java or Go bindings.

License

Libscapi is released under the MIT open source license. However, some of the libraries we use have different licenses. For further information please refer to LICENSE.md

Documentation

Go to http://biulibscapi.readthedocs.org/ for a detailed explanations of our implementation.

Installing libscapi

Libscapi runs on Linux, MacOS and ARM64 and has been tested on the following version:

  • Ubuntu 14.04/16.04/18.04 LTS
  • CentOS 7.3
  • Mac OS High Sierra 10.13
  • ARM64 - tested on Cortex A72 with Ubuntu 18.04 LTS (prior versions to 18.04 on ARM may run as well).

For detailed instructions, see INSTALL.md

Libraries used by libscapi

Implementations by other Academic Institutes

Cryptography Research at Oragon State University : LibOTE A fast, portable, and easy to use Oblivious Transfer Libary

https://github.com/osu-crypto/libOTe

This library provides several different classes of OT protocols. First is the base OT protocol of Naor Prinkas [NP00]. This protocol bootstraps all the other OT extension protocols. Within the OT extension protocols, we have 1-out-of-2, 1-out-of-N and ~K-out-of-N, both in the semi-honest and malicious settings. All implementations are highly optimized using fast SSE instructions and vectorization to obtain optimal performance both in the single and multi-threaded setting. See the Performance section for a comparison between protocols and to other libraries.Networking can be performed using both the sockets provided by the library and external socket classes.

University of Bristol: Advanced Protocols for Real-world Implementation of Computational Oblivious Transfers

https://github.com/bristolcrypto/apricot

Tung Chou and Claudio Orlandi: The Simplest Oblivious Transfer Protocol

http://users-cs.au.dk/orlandi/simpleOT/

Math and General Purpose Libraries

OpenSSL

https://www.openssl.org/

OpenSSL is an open source project that provides a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. It is also a general-purpose cryptography library. For more information about the team and community around the project, or to start making your own contributions, start with the community page. To get the latest news, download the source, and so on, please see the sidebar or the buttons at the top of every page.

The GNU Multiple Precision Arithmetic Library (GMP)

https://gmplib.org/

GMP is a free library for arbitrary precision arithmetic, operating on signed integers, rational numbers, and floating-point numbers. There is no practical limit to the precision except the ones implied by the available memory in the machine GMP runs on. GMP has a rich set of functions, and the functions have a regular interface. The main target applications for GMP are cryptography applications and research, Internet security applications, algebra systems, computational algebra research, etc.

NTL: A Library for doing Number Theory- Victor Shoup

ttp://www.shoup.net/ntl/

NTL is a high-performance, portable C++ library providing data structures and algorithms for manipulating signed, arbitrary length integers, and for vectors, matrices, and polynomials over the integers and over finite fields.On modern platforms supporting C++11, NTL can be compiled in thread safe and exception safe modes.

Boost 1.64

http://www.boost.org/

Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work well with the C++ Standard Library. Boost libraries are intended to be widely useful, and usable across a broad spectrum of applications

libscapi's People

Contributors

liorko87 avatar moriyaw avatar abarak-biu avatar asafkleinbort avatar levymeit avatar ran-proshan avatar fabrice102 avatar ishaq avatar schoppmp avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.