kryptology

module
v0.0.0-...-35ce414 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 28, 2023 License: Apache-2.0

README

We implement the efficient online-friendly two-party ECDSA signature of https://eprint.iacr.org/2022/318.pdf based on the library of Coinbase. And our contribution is in this subdirectory pkg/tecdsa/2ecdsa. Note that we split the signing process into two phases: the offline-sign phase and the online-sign phase.

Direct Deployment

Specifications

  • OS: Linux x64

  • Language: go1.19 linux/amd64

  • Requires: OpenSSL

  • The default elliptic curve is "secp256k1"

Installation

The current implementation is based on OpenSSL library. See the installment instructions of OpenSSL as below:

  1. Clone the code openssl-master
    git clone https://github.com/openssl/openssl.git
  1. install openssl on your machine
    ./config --prefix=/usr/local/ssl shared
    make 
    sudo make install
    export OPENSSL_ROOT_DIR=/usr/local/ssl/

OT-based 2-party ECDSA Benchmark

Run the benchmark of the system, you can

  1. Run the key generation benchmark for the OT-based 2-party ECDSA
    go test -benchmem -run=^$ -bench ^BenchmarkDkgOT$ github.com/The9born/kryptology/pkg/tecdsa/2ecdsa/dkg
  1. Run the offline-sign benchmark for the OT-based 2-party ECDSA
    go test -benchmem -run=^$ -bench ^BenchmarkOfflineOT$ github.com/The9born/kryptology/pkg/tecdsa/2ecdsa/sign_offline
  1. Run the online-sign benchmark for the OT-based 2-party ECDSA
    go test -benchmem -run=^$ -bench ^BenchmarkOnlineOT$ github.com/The9born/kryptology/pkg/tecdsa/2ecdsa/sign_online

Paillier-based 2-party ECDSA Benchmark

Run the benchmark of the system, you can

  1. Run the key generation benchmark for the Paillier-based 2-party ECDSA
    go test -benchmem -run=^$ -bench ^BenchmarkDkgPaillier$ github.com/The9born/kryptology/pkg/tecdsa/2ecdsa/dkg
  1. Run the offline-sign benchmark for the Paillier-based 2-party ECDSA
    go test -benchmem -run=^$ -bench ^BenchmarkOfflinePaillier$ github.com/The9born/kryptology/pkg/tecdsa/2ecdsa/sign_offline
  1. Run the online-sign benchmark for the Paillier-based 2-party ECDSA
    go test -benchmem -run=^$ -bench ^BenchmarkOnlinePaillier$ github.com/The9born/kryptology/pkg/tecdsa/2ecdsa/sign_online

Directories

Path Synopsis
cmd
benchcomp
benchcomp implements a command that receives two benchmarks files as input and flags the benchmarks that have degraded by more than a threshold amount.
benchcomp implements a command that receives two benchmarks files as input and flags the benchmarks that have degraded by more than a threshold amount.
pkg
accumulator
Package accumulator implements the cryptographic accumulator as described in https://eprint.iacr.org/2020/777.pdf It also implements the zero knowledge proof of knowledge protocol described in section 7 of the paper.
Package accumulator implements the cryptographic accumulator as described in https://eprint.iacr.org/2020/777.pdf It also implements the zero knowledge proof of knowledge protocol described in section 7 of the paper.
bulletproof
Package bulletproof implements the zero knowledge protocol bulletproofs as defined in https://eprint.iacr.org/2017/1066.pdf
Package bulletproof implements the zero knowledge protocol bulletproofs as defined in https://eprint.iacr.org/2017/1066.pdf
core
Package core contains a set of primitives, including but not limited to various elliptic curves, hashes, and commitment schemes.
Package core contains a set of primitives, including but not limited to various elliptic curves, hashes, and commitment schemes.
core/curves
Package curves: Field implementation IS NOT constant time as it leverages math/big for big number operations.
Package curves: Field implementation IS NOT constant time as it leverages math/big for big number operations.
core/curves/native/k256/fp
Autogenerated: 'src/ExtractionOCaml/word_by_word_montgomery' --lang Go --no-wide-int --relax-primitive-carry-to-bitwidth 32,64 --cmovznz-by-mul --internal-static --package-case flatcase --public-function-case UpperCamelCase --private-function-case camelCase --public-type-case UpperCamelCase --private-type-case camelCase --no-prefix-fiat --doc-newline-in-typedef-bounds --doc-prepend-header 'Code generated by Fiat Cryptography.
Autogenerated: 'src/ExtractionOCaml/word_by_word_montgomery' --lang Go --no-wide-int --relax-primitive-carry-to-bitwidth 32,64 --cmovznz-by-mul --internal-static --package-case flatcase --public-function-case UpperCamelCase --private-function-case camelCase --public-type-case UpperCamelCase --private-type-case camelCase --no-prefix-fiat --doc-newline-in-typedef-bounds --doc-prepend-header 'Code generated by Fiat Cryptography.
core/curves/native/k256/fq
Autogenerated: 'src/ExtractionOCaml/word_by_word_montgomery' --lang Go --no-wide-int --relax-primitive-carry-to-bitwidth 32,64 --cmovznz-by-mul --internal-static --package-case flatcase --public-function-case UpperCamelCase --private-function-case camelCase --public-type-case UpperCamelCase --private-type-case camelCase --no-prefix-fiat --doc-newline-in-typedef-bounds --doc-prepend-header 'Code generated by Fiat Cryptography.
Autogenerated: 'src/ExtractionOCaml/word_by_word_montgomery' --lang Go --no-wide-int --relax-primitive-carry-to-bitwidth 32,64 --cmovznz-by-mul --internal-static --package-case flatcase --public-function-case UpperCamelCase --private-function-case camelCase --public-type-case UpperCamelCase --private-type-case camelCase --no-prefix-fiat --doc-newline-in-typedef-bounds --doc-prepend-header 'Code generated by Fiat Cryptography.
core/curves/native/p256/fp
Code generated by Fiat Cryptography.
Code generated by Fiat Cryptography.
core/curves/native/p256/fq
Code generated by Fiat Cryptography.
Code generated by Fiat Cryptography.
dkg/frost
Package frost is an implementation of the DKG part of https://eprint.iacr.org/2020/852.pdf
Package frost is an implementation of the DKG part of https://eprint.iacr.org/2020/852.pdf
dkg/gennaro
Package gennaro is an implementation of the DKG part of https://eprint.iacr.org/2020/540.pdf
Package gennaro is an implementation of the DKG part of https://eprint.iacr.org/2020/540.pdf
dkg/gennaro2p
Package gennaro2p wraps dkg/genarro and specializes it for the 2-party case.
Package gennaro2p wraps dkg/genarro and specializes it for the 2-party case.
ot/base/simplest
Package simplest implements the "Verified Simplest OT", as defined in "protocol 7" of [DKLs18](https://eprint.iacr.org/2018/499.pdf).
Package simplest implements the "Verified Simplest OT", as defined in "protocol 7" of [DKLs18](https://eprint.iacr.org/2018/499.pdf).
ot/extension/kos
Package kos in an implementation of maliciously secure OT extension protocol defined in "Protocol 9" of [DKLs18](https://eprint.iacr.org/2018/499.pdf).
Package kos in an implementation of maliciously secure OT extension protocol defined in "Protocol 9" of [DKLs18](https://eprint.iacr.org/2018/499.pdf).
ot/ottest
Package ottest contains some utilities to test ot functions.
Package ottest contains some utilities to test ot functions.
paillier
Package paillier contains Paillier's cryptosystem (1999) [P99].
Package paillier contains Paillier's cryptosystem (1999) [P99].
sharing
Package sharing is an implementation of shamir secret sharing and implements the following papers.
Package sharing is an implementation of shamir secret sharing and implements the following papers.
signatures/bbs
Package bbs is an implementation of BBS+ signature of https://eprint.iacr.org/2016/663.pdf
Package bbs is an implementation of BBS+ signature of https://eprint.iacr.org/2016/663.pdf
signatures/bls/bls_sig
Package bls_sig is an implementation of the BLS signature defined in https://tools.ietf.org/html/draft-irtf-cfrg-bls-signature-03
Package bls_sig is an implementation of the BLS signature defined in https://tools.ietf.org/html/draft-irtf-cfrg-bls-signature-03
tecdsa/dkls/v0
Package v0 implements the 2-of-2 threshold ECDSA signing algorithm of [Doerner, Kondi, Lee, and shelat](https://eprint.iacr.org/2018/499).
Package v0 implements the 2-of-2 threshold ECDSA signing algorithm of [Doerner, Kondi, Lee, and shelat](https://eprint.iacr.org/2018/499).
tecdsa/dkls/v1
Package v1 provides a wrapper around the [DKLs18](https://eprint.iacr.org/2018/499.pdf) sign and dkg and provides serialization, serialization, and versioning for the serialized data.
Package v1 provides a wrapper around the [DKLs18](https://eprint.iacr.org/2018/499.pdf) sign and dkg and provides serialization, serialization, and versioning for the serialized data.
tecdsa/dkls/v1/dealer
Package dealer implements key generation via a trusted dealer for the protocol [DKLs18](https://eprint.iacr.org/2018/499.pdf).
Package dealer implements key generation via a trusted dealer for the protocol [DKLs18](https://eprint.iacr.org/2018/499.pdf).
tecdsa/dkls/v1/dkg
Package dkg implements the Distributed Key Generation (DKG) protocol of [DKLs18](https://eprint.iacr.org/2018/499.pdf).
Package dkg implements the Distributed Key Generation (DKG) protocol of [DKLs18](https://eprint.iacr.org/2018/499.pdf).
tecdsa/dkls/v1/refresh
This file implements the key refresh protocol of [DKLs18](https://eprint.iacr.org/2018/499.pdf).
This file implements the key refresh protocol of [DKLs18](https://eprint.iacr.org/2018/499.pdf).
tecdsa/dkls/v1/sign
Package sign implements the 2-2 threshold signature protocol of [DKLs18](https://eprint.iacr.org/2018/499.pdf).
Package sign implements the 2-2 threshold signature protocol of [DKLs18](https://eprint.iacr.org/2018/499.pdf).
tecdsa/gg20/dealer
Package dealer is an implementation of the `dealer` mode of https://eprint.iacr.org/2020/540.pdf
Package dealer is an implementation of the `dealer` mode of https://eprint.iacr.org/2020/540.pdf
tecdsa/gg20/participant
Package participant is an implementation of a `participant` in the t-of-n threshold signature of https://eprint.iacr.org/2020/540.pdf
Package participant is an implementation of a `participant` in the t-of-n threshold signature of https://eprint.iacr.org/2020/540.pdf
tecdsa/gg20/proof
Package proof contains the following implementations
Package proof contains the following implementations
ted25519/frost
Package frost is an implementation of t-of-n threshold signature of https://eprint.iacr.org/2020/852.pdf
Package frost is an implementation of t-of-n threshold signature of https://eprint.iacr.org/2020/852.pdf
ted25519/ted25519
Package ted25519 implements the Ed25519 signature algorithm.
Package ted25519 implements the Ed25519 signature algorithm.
verenc/camshoup
Package camshoup Verifiable encryption
Package camshoup Verifiable encryption
zkp/schnorr
Package schnorr implements a Schnorr proof, as described and used in Doerner, et al.
Package schnorr implements a Schnorr proof, as described and used in Doerner, et al.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL