wangxueli1993 / CG-MPC-ECDSA-1

Multi-Party ECDSA from Class Group

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CG-MPC-ECDSA

github license

This project aims to implement two-party and multi-party ECDSA protocols based on class group with Rust. It currently includes schemes described in [DMZ+21] (published in Asiacrypt 2021) and [XAX+21] (published in CCS 2021).

  • Descriptions of the protocols are as follows:
Protocol Introduction
[DMZ+21] This paper proposes efficient two-party and multi-party threshold ECDSA protocols from CL encryptions based on class groups. This protocol avoids the low order assumption, which is a strong and non-standard assumption, and reduces the communication cost in keygen.
[XAX+21] This paper proposes a framework of two-party ECDSA protocols. It seperates the signing part into online and offline phases. The online phase is non-interactive and somehow optimal, and the offline phase only needs a single call of MtA.
  • We adopt CL-based MtA in [CCL+19] when implementing [XAX+21].
  • We implement the refresh function. This function allows key shares to be refreshed while keeping the whole secret key (then the public key) unchanged.
  • Class group library used in this project supports multi-threaded execution.

How to use

$ cargo run --bin mpc-ecdsa

USAGE:
    mpc-ecdsa <SUBCOMMAND>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

SUBCOMMANDS:
    dmz-multi-keygen    
    dmz-multi-sign      
    dmz-party-one       
    dmz-party-two       
    help                Prints this message or the help of the given subcommand(s)
    key-refresh         
    xax-party-one       
    xax-party-two

Details in: cli/README.md

Performance

Running with Intel® Core™ i7-10510U CPU @ 1.80GHz × 8.

P2P network

  • Two-Party ECDSA
Protocols KeyGen Sign-Offline Sign-Online
[DMZ+21] 1276ms 384ms 169ms
[XAX+21] 12ms 1698ms 1.5ms
  • Multi-Party ECDSA
(t, n) KeyGen Sign-Offline Sign-Online
(1,3) 371ms 1593ms 6.1ms
(2, 4) 426ms 4318ms 14ms
(3, 5) 510ms 5065ms 19ms

Local

  • Two-Party ECDSA
Protocols KeyGen Sign-Offline Sign-Online
[DMZ+21] 1260 ms 357ms 142ms
[XAX+21] 11 ms 1797ms 0.1ms
  • Multi-Party ECDSA
(t, n) KeyGen Sign-Offline Sign-Online
(1,3) 289ms 1503ms 0.8ms
(2, 4) 345ms 3590ms 1.2ms
(3, 5) 382ms 4681ms 1.6ms

References

[DMZ+21] https://eprint.iacr.org/2022/297

[XAX+21] https://eprint.iacr.org/2022/318

[CCL+19] https://eprint.iacr.org/2019/503

About

Multi-Party ECDSA from Class Group

License:GNU Lesser General Public License v3.0


Languages

Language:Rust 100.0%