feat: Implement CGGMP24 key share refresh protocol (#162)#178
Open
gyanranjanpanda wants to merge 1 commit intoLFDT-Lockness:cggmp24/mfrom
Open
feat: Implement CGGMP24 key share refresh protocol (#162)#178gyanranjanpanda wants to merge 1 commit intoLFDT-Lockness:cggmp24/mfrom
gyanranjanpanda wants to merge 1 commit intoLFDT-Lockness:cggmp24/mfrom
Conversation
- Implements Figure 7 for non-threshold refresh (n-of-n) using zero-share vectors - Implements Appendix F.1.1 for threshold refresh (t-of-n) using zero-sharing polynomials - Introduces RefreshBug and RefreshAborted enums to isolate refresh failures and prevent pollution of keygen error definitions - Re-exports key_refresh entry point from cggmp24 crate - Includes full integration tests verifying secret preservation and cross-epoch shard independence Signed-off-by: Gyan Ranjan Panda <gyanranjanpanda@gmail.com>
1c96b60 to
6219524
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implement Key Refresh protocol (Fixes #162)
Description
This PR implements the Key Share Refresh protocol as requested in #162, ensuring the long-term security of the secret key by updating individual key shares without changing the underlying secret key.
The implementation covers:
Key Changes
cggmp24-keygen/src/key_refresh_non_threshold.rsandcggmp24-keygen/src/key_refresh_threshold.rs.Bug/KeygenErrorvia separateRefreshBugandRefreshAbortedenums to keep upstream Keygen cleaner.generic-ec0.5 primitives (e.g., using*secret_scalar.as_ref()for Scalar bounds and.value(&Scalar::zero())without trait ambiguity).cggmp24crate alongside Keygen variants.tests/tests/it/key_share_refresh.rschecking validity mapping across multiple rounds, unaltered secrets with altered shares, threshold min-signer limits, and cross-epoch share incompatibility.This provides the core
cggmp24::keygen::key_refreshfunctionality as requested, without the legacy aux info elements intermingled into these modules.