{"id":24020770,"url":"https://github.com/ZcashFoundation/frost","last_synced_at":"2025-09-14T20:32:08.096Z","repository":{"id":37076855,"uuid":"437862440","full_name":"ZcashFoundation/frost","owner":"ZcashFoundation","description":"Rust implementation of FROST (Flexible Round-Optimised Schnorr Threshold signatures) by the Zcash Foundation","archived":false,"fork":false,"pushed_at":"2024-12-19T07:51:20.000Z","size":2381,"stargazers_count":156,"open_issues_count":35,"forks_count":66,"subscribers_count":11,"default_branch":"main","last_synced_at":"2024-12-25T12:18:59.691Z","etag":null,"topics":["cryptography","elliptic-curves","schnorr","schnorr-signatures","threshold-cryptography","threshold-signature"],"latest_commit_sha":null,"homepage":"https://frost.zfnd.org","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ZcashFoundation.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.Apache-2.0","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-12-13T12:22:51.000Z","updated_at":"2024-12-20T19:38:43.000Z","dependencies_parsed_at":"2023-10-10T16:52:52.922Z","dependency_job_id":"52273845-ed5e-4794-abdd-b4b1ff88718a","html_url":"https://github.com/ZcashFoundation/frost","commit_stats":{"total_commits":334,"total_committers":16,"mean_commits":20.875,"dds":0.7754491017964071,"last_synced_commit":"9985c9660e2f9487a820f222eb651ac6ee9749e5"},"previous_names":[],"tags_count":81,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZcashFoundation%2Ffrost","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZcashFoundation%2Ffrost/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZcashFoundation%2Ffrost/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZcashFoundation%2Ffrost/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ZcashFoundation","download_url":"https://codeload.github.com/ZcashFoundation/frost/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":233027294,"owners_count":18613630,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cryptography","elliptic-curves","schnorr","schnorr-signatures","threshold-cryptography","threshold-signature"],"created_at":"2025-01-08T12:18:25.525Z","updated_at":"2025-01-08T12:18:53.888Z","avatar_url":"https://github.com/ZcashFoundation.png","language":"Rust","funding_links":[],"categories":["Chronological Updates"],"sub_categories":[],"readme":"# ZF FROST (Flexible Round-Optimised Schnorr Threshold signatures)\n\n[![CI](https://github.com/ZcashFoundation/frost/actions/workflows/main.yml/badge.svg?branch=main)](https://github.com/ZcashFoundation/frost/actions/workflows/main.yml)\n\n| Crate                           |                        | Crates.io                                                                                                           | Documentation                                                                                        |\n| ------------------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |\n| Generic FROST implementation    | [`frost-core`]         | [![crates.io](https://img.shields.io/crates/v/frost-core.svg)](https://crates.io/crates/frost-core)                 | [![Documentation](https://docs.rs/frost-core/badge.svg)](https://docs.rs/frost-core)                 |\n| Ristretto255 ciphersuite        | [`frost-ristretto255`] | [![crates.io](https://img.shields.io/crates/v/frost-ristretto255.svg)](https://crates.io/crates/frost-ristretto255) | [![Documentation](https://docs.rs/frost-ristretto255/badge.svg)](https://docs.rs/frost-ristretto255) |\n| Ed25519 ciphersuite             | [`frost-ed25519`]      | [![crates.io](https://img.shields.io/crates/v/frost-ed25519.svg)](https://crates.io/crates/frost-ed25519)           | [![Documentation](https://docs.rs/frost-ed25519/badge.svg)](https://docs.rs/frost-ed25519)           |\n| Ed448 ciphersuite               | [`frost-ed448`]        | [![crates.io](https://img.shields.io/crates/v/frost-ed448.svg)](https://crates.io/crates/frost-ed448)               | [![Documentation](https://docs.rs/frost-ed448/badge.svg)](https://docs.rs/frost-ed448)               |\n| P-256 ciphersuite               | [`frost-p256`]         | [![crates.io](https://img.shields.io/crates/v/frost-p256.svg)](https://crates.io/crates/frost-p256)                 | [![Documentation](https://docs.rs/frost-p256/badge.svg)](https://docs.rs/frost-p256)                 |\n| secp256k1 ciphersuite           | [`frost-secp256k1`]    | [![crates.io](https://img.shields.io/crates/v/frost-secp256k1.svg)](https://crates.io/crates/frost-secp256k1)       | [![Documentation](https://docs.rs/frost-secp256k1/badge.svg)](https://docs.rs/frost-secp256k1)       |\n| secp256k1 ciphersuite (Taproot) | [`frost-secp256k1-tr`] | [![crates.io](https://img.shields.io/crates/v/frost-secp256k1-tr.svg)](https://crates.io/crates/frost-secp256k1-tr) | [![Documentation](https://docs.rs/frost-secp256k1-tr/badge.svg)](https://docs.rs/frost-secp256k1-tr) |\n| Generic Re-randomized FROST     | [`frost-rerandomized`] | [![crates.io](https://img.shields.io/crates/v/frost-rerandomized.svg)](https://crates.io/crates/frost-rerandomized) | [![Documentation](https://docs.rs/frost-rerandomized/badge.svg)](https://docs.rs/frost-rerandomized) |\n\nRust implementations of ['Two-Round Threshold Schnorr Signatures with FROST'](https://datatracker.ietf.org/doc/draft-irtf-cfrg-frost/).\n\nUnlike signatures in a single-party setting, threshold signatures require cooperation among a\nthreshold number of signers, each holding a share of a common private key. The security of threshold\nschemes in general assume that an adversary can corrupt strictly fewer than a threshold number of\nparticipants.\n\n['Two-Round Threshold Schnorr Signatures with\nFROST'](https://datatracker.ietf.org/doc/draft-irtf-cfrg-frost/) presents a variant of a Flexible\nRound-Optimized Schnorr Threshold (FROST) signature scheme originally defined in\n[FROST20](https://eprint.iacr.org/2020/852.pdf). FROST reduces network overhead during threshold\nsigning operations while employing a novel technique to protect against forgery attacks applicable\nto prior Schnorr-based threshold signature constructions.\n\nBesides FROST itself, this repository also provides:\n\n- Trusted dealer key generation as specified in the appendix of ['Two-Round Threshold Schnorr Signatures with FROST'](https://datatracker.ietf.org/doc/draft-irtf-cfrg-frost/);\n- Distributed key generation as specified in the original paper [FROST20](https://eprint.iacr.org/2020/852.pdf);\n- Repairable Threshold Scheme (RTS) from ['A Survey and Refinement of Repairable Threshold Schemes'](https://eprint.iacr.org/2017/1155) which allows a participant to recover a lost share with the help of a threshold of other participants;\n- Rerandomized FROST (paper under review).\n- Refresh Share functionality using a Trusted Dealer. This can be used to refresh the shares of the participants or to remove a participant.\n\n## Getting Started\n\nRefer to the [ZF FROST book](https://frost.zfnd.org/).\n\n## Status ⚠\n\nThe FROST specification is not yet finalized, though no significant changes are\nexpected at this point. This code base has been partially audited by NCC, see\nbelow for details. The APIs and types in the crates contained in this repository\nfollow SemVer guarantees.\n\n### NCC Audit\n\nNCC performed [an\naudit](https://research.nccgroup.com/2023/10/23/public-report-zcash-frost-security-assessment/)\nof the v0.6.0 release (corresponding to commit 5fa17ed) of the following crates:\n\n- frost-core\n- frost-ed25519\n- frost-ed448\n- frost-p256\n- frost-secp256k1\n- frost-ristretto255\n\nThis includes key generation (both trusted dealer and DKG) and FROST signing.\nThis does not include frost-secp256k1-tr and rerandomized FROST.\n\nThe parts of the\n[`Ed448-Goldilocks`](https://github.com/crate-crypto/Ed448-Goldilocks)\ndependency that are used by `frost-ed448` were also in scope, namely the\nelliptic curve operations.\n\nAll issues identified in the audit were addressed by us and reviewed by NCC.\n\n\n## Usage\n\n`frost-core` implements the base traits and types in a generic manner, to enable top-level\nimplementations for different ciphersuites / curves without having to implement all of FROST from\nscratch. End-users should not use `frost-core` if they want to sign and verify signatures, they\nshould use the crate specific to their ciphersuite/curve parameters that uses `frost-core` as a\ndependency.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FZcashFoundation%2Ffrost","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FZcashFoundation%2Ffrost","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FZcashFoundation%2Ffrost/lists"}