Git Product home page Git Product logo

tiresias's Introduction

Tiresias: Scalable, Maliciously Secure Threshold Paillier

A pure-Rust implementation of the UC-secure "Tiresias: Large Scale, Maliciously Secure Threshold Paillier" paper by:

  • Offir Friedman (dWallet Labs)
  • Avichai Marmor (dWallet Labs)
  • Dolev Mutzari (dWallet Labs)
  • Yehonatan Cohen Scaly (dWallet Labs)
  • Yuval Spiizer (dWallet Labs)
  • Avishay Yanai

This is an implementation of the threshold decryption protocol only. For distributed key generation, a protocol like Diogenes (paper, implementation) should be used.

It is worth mentioning that we also support the trusted dealer setting for which one can see examples in our testing & benchmarking code that uses secret_sharing/shamir to deal a secret.

Security

This implementation relies on crypto_bigint for constant-time big integer arithmetics whenever dealing with key material or any other secret information.

We have gone through a rigorous internal auditing process throughout development, requiring the approval of two additional cryptographers and one additional programmer in every pull request. That being said, this code has not been audited by a third party yet; use it at your own risk.

Releases

This code has no official releases yet, and we reserve the right to change some of the public API until then.

Performance & Benchmarking

Our code achieves unprecedented scale & performance, with a throughput of about 50 and 3.6 decryptions per second, when run over a network of 100 and 1000 parties, respectively.

We have set up an automated GitHub action for benchmarking over an EC2 C6i machine, the result of which could be viewed here.

With the parallel feature, we rely on rayon for data parallelism, which, as shown theoretically in the paper and experimentally, works extremely well in this scheme.

Setup & Running

See Makefile

tiresias's People

Contributors

ycscaly avatar zeevmoney avatar dependabot[bot] avatar fadude avatar

Stargazers

 avatar Riccardo Taiello avatar Piotr Piech avatar muji avatar  avatar 0xShack avatar  avatar Ertemann avatar  avatar Justin avatar  avatar Pavel Kerbel avatar Omer Sadika avatar Giau. Tran Minh avatar  avatar Brian Spector avatar Cheng Guan avatar  avatar  avatar

Watchers

Franco Catena avatar  avatar  avatar  avatar Omer Sadika avatar  avatar Justin avatar

tiresias's Issues

Zeroize secrets

Use the zeroize crate to zeroize structs that contain secrets, e.g. decryption_key

Possible optimizations

There are several optimizations we need to dig into, this issue compiles them:

  1. use non-constant-time code for decryption_key_share::combine_decryption_shares() - factor 2
  2. use multi-exponentiations for decryption_key_share::combine_decryption_shares()- factor 4
  3. Optimize multiplication (crypto_bigint::Uint::mul_wide()) - 25% improvement

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.