4 releases

new 0.1.3 Nov 26, 2024
0.1.2 Nov 25, 2024
0.1.1 Nov 23, 2024
0.1.0 Nov 23, 2024

#335 in Magic Beans

Download history 415/week @ 2024-11-21

415 downloads per month

Custom license

70KB
1K SLoC

Experimental Shamir's secret sharing algorithm implementation in Rust programming language.

Disclaimer

This is experimental implementation of Shamir Secret Sharing algorithm. This crate uses cryptographically safe libraries and dependencies and authors payed attention to make it secure. But it is not extensively tested for cybersecurity usage and it is recommended to not use this crate in cybersecurity projects or cryptographically secured applications. The subject of this crate is purely experimental.

The theory:

Shamir's secret sharing (SSS) is an efficient secret sharing algorithm for distributing private information (the "secret") among a group. The secret cannot be revealed unless a quorum of the group acts together to pool their knowledge.

Technology

This algorithm is implemented in Rust 2021 edition.

Dependencies

  • Random number generator is using vendored Openssl library v111.
  • Bignum calculations are using BigNum from vendored Openssl library v111.
  • Base64 encoding uses base64 crate.
  • Hex encoding uses hex crate.
  • Errors are in format of Thiserror crate.
  • Default prime number used for mod operations is: 115792089237316195423570985008687907853269984665640564039457584007913129639747

Usage:

Unit tests

To run unit test run in terminal:

cargo t --release -- --test-threads=1

Benchmarks

To run benchmarks of library exposed functions run in terminal:

cargo bench

Macbook M2 (ARM64) processor:

  • To create 100 shares with 50 minimum shares threshold of 512 bytes long key takes 25 [ ms ].
  • To recreate 512 bytes long key from 100 shares with min 50 shares threshold takes 140 [ ms ].

Documentation

Go to shamirss docs.rs

Dependencies

~2.3–6.5MB
~149K SLoC