Giter VIP home page Giter VIP logo

cypherock / mpc-tss Goto Github PK

View Code? Open in Web Editor NEW
7.0 1.0 5.0 1.53 MB

MPC-TSS is a project to demonstrate the working of our threshold signature scheme leveraging the security of X1 hardware wallet

Home Page: https://cypherock.com/

License: GNU Affero General Public License v3.0

Python 100.00%
distributed-key-generation oblivious-transfer shamir-secret-sharing threshold-ecdsa trusted-execution-environment class-groups

mpc-tss's Introduction

MPC-TSS (Multi-Party Computation based Threshold Signature Scheme) with Cypherock X1

This repository contains a working implementation of MPC processes designed to run inside of a secure execution environment of Cypherock X1. Private and authenticated channels are set up between all devices in the group securely in the group setup phase. The architecture utilises hardware security and asset protection features offered by the Cypherock device and helps the group of users or an institution to own their assets completely. Further we have proposed an extension to the BIP32 protocol ("Extended BIP32") with which any group member will be able to generate child or receive addresses from the group public key without having everyone else in the group to come online. All the polynomials required in the signature phase are generated randomly and consumed within the signature phase itself.

The setting comprises of 3 sub-processes running independent MPC group sessions over the group of parties. These sub-process are:

  1. User group setup
    A trustless setup to create a group
  2. Distributed key generation
    Generates child public keys for the group
  3. Transaction signing
    Sign ECDSA based transactions

Watch demo

DEMO

Usage

To execute and test the code, you'll require Cypherock X1 development devices to be able to flash the custom MPC firmware, present in the vault submodule. The firmware can be compiled using the build script provided in the vault submodule and can be flashed using STM32_Programmer_CLI. The CLI can be found in the sdk submodule. To be more specific, the project in sdk/apps/node/ has to be executed. Before starting the program, make sure the flask communication server is running which can be found in the server directory. Watch the demo video to understand the usage of the CLI tool and its features.

Future Work

We are currently researching various modern cryptography schemes to make the institutional digital asset management work in a true self-custody setup with the access control policy enforced through a decentralised network. We are researching the usage of schemes like homomorphic encryption using class groups (the class-groups submodule) which do not require any range proofs but other ZKPs to verify the correctness of the encryption operation. We are currently testing the generation of zk-SNARK proofs on the Cypherock X1 device using the Groth-16 implementation in the zk-snark submodule.

mpc-tss's People

Contributors

appleswiggy avatar cypher-bash avatar ujjwal-cyph avatar ujjwal0501 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

mpc-tss's Issues

which code to run

image
"The code segments are not sequential; the 'dkg/ot' code is implemented separately and has not been integrated into the final main version. Within the main branch, there is only a 'server.py', which lacks the functionality to execute TSS."

Try to run the program while get failed


Correlated oblivious transfers between parties for multiplication between polynomials A and K

Oblivious transfers successfully completed

Broadcasting individual shares from previous OTs
Shares broadcasted successfully
Adding up all the shares
Successfully calculated w


Authenticator (W) verification

[10] MPC Signature phase failed

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.