Skip to content

Add immutable per-party GG20 transcript modes - #9

Open
lrsaturnino wants to merge 5 commits into
devfrom
codex/dual-mode-transcript
Open

lrsaturnino wants to merge 5 commits into
devfrom
codex/dual-mode-transcript

Conversation

@lrsaturnino

Copy link
Copy Markdown
Member

Summary

  • require an explicit legacy or security-v2 transcript mode for every ECDSA keygen/signing party
  • freeze the selected mode at local-party construction
  • reproduce the historical untagged DLN, range, Bob, factor, modulus, and Schnorr proof transcripts in legacy mode
  • retain session-bound/domain-tagged challenges and the per-ceremony nonce requirement in security-v2 mode
  • keep validation and memory-safety hardening active in both modes
  • add exact historical-challenge regressions and homogeneous keygen/signing coverage for both modes

This is a draft because the transcript boundary needs independent cryptographic review before release use.

Verification

  • go test ./...
  • go test -race ./tss ./crypto/dlnproof ./crypto/mta ./crypto/paillier ./crypto/schnorr ./ecdsa/keygen ./ecdsa/signing
  • go vet ./...

@piotr-roslaniec
piotr-roslaniec changed the base branch from master to dev September 14, 2026 11:49
@lrsaturnino
lrsaturnino marked this pull request as ready for review September 18, 2026 12:12

@mswilkison mswilkison left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Found one P1 compatibility regression in the legacy T1 bound; see the inline comment.

Comment thread crypto/mta/proofs.go
Comment on lines +261 to +262
q6 := new(big.Int).Mul(q3, q3)
maxT1 = new(big.Int).Add(pk.N, q6)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P1] Account for the historical witness range in the legacy T1 bound

PR #9 breaks mixed-version legacy signing because historical BobMid and BobMidWC sample betaPrm (the proof’s y) below pkA.N, not q^5 (see the historical implementation). Consequently, honest T1 = e*y + gamma almost always exceeds N + q^6, causing AliceEnd/AliceEndWC to reject historical proofs and abort signing. Derive the finite legacy bound from the historical witness range and add coverage using historical BobMid output; the current compatibility vectors fix y = 11 and miss this failure.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants