/ice-frost

A modular Rust implementation of the static version of the ICE-FROST signature scheme.

Primary LanguageRustApache License 2.0Apache-2.0

ICE-FROST

codecov example workflow

A modular Rust implementation of ICE-FROST: Identifiable Cheating Entity Flexible Round-Optimised Schnorr Threshold signatures supporting static group keys.

Usage

Please see the documentation for usage examples.

Modular Backend

This library has a modular backend supporting

  • arbitrary curves defined with the arkworks library suite;
  • arbitrary hash functions for the internal random oracles of the ICE-FROST ciphersuite.

Note however that two parameters are not modular, at least in the current version:

  • the hash function targeted security parameter: this crate assumes 128 bits of collision security for the ciphersuite's internal hashers. One MUST provide a hasher with at least 128 bits of collision security when instantiating an ICE-FROST ciphersuite.
  • the secret share encryption mechanism: this part of the distributed key generation currently relies on AES128-CTR with HKDF instantiated from SHA-256.

This library also provides by default an example instantiation over the Secp256k1 curve with SHA-256, to be used in tests and benchmarks.

Note on no_std usage

This crate can be made no_std compliant, by relying on the alloc crate instead.

WARNING

This codebase is under development and is at an academic proof-of-concept prototype level. In particular, this implementation has not received careful code review yet, and hence is NOT ready for production use.

License

Licensed under either of

at your option.