Skip to content

Bind security-v2 signing SSIDs to the immutable message context - #16

Merged
piotr-roslaniec merged 7 commits into
devfrom
codex/signing-context-binding
Sep 29, 2026
Merged

piotr-roslaniec merged 7 commits into
devfrom
codex/signing-context-binding

Conversation

@mswilkison

@mswilkison mswilkison commented Sep 14, 2026 •

Copy link
Copy Markdown

Depends on #9 and is stacked on codex/dual-mode-transcript.

Bind ECDSA security-v2 signing SSIDs to the message integer and fullBytesLen, retaining the fixed 32-byte SSID encoding. Copy the caller's message at party construction so later caller mutations cannot change the signing context. Legacy transcript bytes remain unchanged.

This changes the security-v2 transcript: all signers in a ceremony must deploy and activate this version together. Pre-change and post-change security-v2 parties cannot interoperate. Kept as a draft for coordinated transcript rollout.

Adapted from public upstream 71dad2229842cf296cfae00f8fd8c90d485107a0 and b73eea74beb0bf112d34bc67d30736edcd34632e, with local message-ownership coverage.

Validation: the full ecdsa/signing suite passed, including legacy/security-v2 and HD signing. Context-separation, leading-zero encoding, matching-peer, and constructor-ownership tests passed. The bidirectional historical transcript oracle passed on the final commit, with equal canonical legacy vectors and both verification directions successful. Repository-wide go vet, formatting, diff checks, and independent review plus correction verification passed. Tests used GOMAXPROCS=2 and -p 1.

Full test CI and formatting CI were dispatched for this branch because the automatic PR trigger only covers master.

lrsaturnino and others added 6 commits July 28, 2026 23:19
Include the message integer and fixed byte width in security-v2 signing
SSIDs. Preserve legacy transcript selection and the 32-byte SSID encoding.
Snapshot the caller's message when constructing a signing party so its
context remains stable. Add context separation, matching-peer, fixed-width,
message ownership, and legacy tests.

SSID binding adapted from the ECDSA signing changes in upstream commits
71dad22 and
b73eea7.
…binding

# Conflicts:
#	CHANGELOG.md
#	README.md
#	crypto/mta/proofs.go
#	crypto/schnorr/schnorr_proof.go
#	ecdsa/keygen/round_3.go
#	ecdsa/signing/round_3.go
#	ecdsa/signing/rounds.go
#	tss/params.go
#	tss/params_test.go
@piotr-roslaniec
piotr-roslaniec changed the base branch from codex/dual-mode-transcript to dev September 29, 2026 21:25
@piotr-roslaniec
piotr-roslaniec merged commit 2673c8c into dev Sep 29, 2026
4 checks passed
@piotr-roslaniec

Copy link
Copy Markdown

Integration verification completed before merge into dev at 2673c8c8555867b308ad64599bdf1aebf54ef1fa.

  • Final diff against dev is limited to the reviewed signing-context change, its tests, README warning, and an Unreleased changelog entry.
  • Security-v2 signing SSIDs now bind the immutable message value and fullBytesLen; constructors defensively copy the message. This intentionally breaks pre/post-change security-v2 interoperability and requires coordinated deploy-and-activate rollout.
  • Legacy mode does not use the security-v2 SSID path. The bidirectional historical oracle passed and reported canonical_legacy_vectors_equal=true.
  • Focused context-binding tests passed, including peer SSID agreement, message/width separation, nil rejection, fixed-width encoding, legacy behavior, and constructor ownership.
  • Standard and constant-time 11-party signing ceremonies passed on the final integrated head (190.216s combined).
  • GitHub Actions run 36633190960 passed vet/format, keygen units, full tests, and the bidirectional legacy transcript oracle.

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.

3 participants