Skip to content

security: sign registry registration (proof-of-possession) — PPA-003#38

Closed
TeoSlayer wants to merge 1 commit into
mainfrom
security/sign-registration
Closed

security: sign registry registration (proof-of-possession) — PPA-003#38
TeoSlayer wants to merge 1 commit into
mainfrom
security/sign-registration

Conversation

@TeoSlayer

Copy link
Copy Markdown
Contributor

PPA-003: the register op establishes the node_id↔pubkey↔endpoint binding but was the only signed-op sibling carrying no signature. The client now signs register:<listen_addr>:<public_key> and includes it as signature.

Additive + wire-compatible: old registries ignoring the field still accept the registration; a signature-verifying registry (rendezvous PPA-003) gets proof-of-possession. go test ./registry/... green.

🤖 Generated with Claude Code

RegisterWithKeyOpts (the single builder emitting a public_key; RegisterWithKey
funnels through it) now attaches a signature over "register:<listenAddr>:<publicKeyB64>",
proving the submitter holds the private key for the registered public_key —
matching the existing signed heartbeat/deregister/resolve operations.

The challenge binds the public_key (defeats key-directory poisoning) and the
listen_addr (hardens the re-registration endpoint-repoint vector), and is
verifiable by the server before node_id assignment (node_id is not an input).
Additive and backward-compatible: only an optional signature field is added,
best-effort when a signer is configured; keyless/anonymous registration is
unchanged. Server-side enforcement and registry-TLS-by-default are separate
coordinated changes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@TeoSlayer

Copy link
Copy Markdown
Contributor Author

Superseded — registration proof-of-possession signing is already on main and shipped in v0.5.8/v0.5.9.

@TeoSlayer TeoSlayer closed this Jul 25, 2026
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