tl-signer: private keys out of the API process, per-node keys, key history (1.12.0) - #49
Merged
Merged
Conversation
- signer/tl_signer.py : service à part qui détient les clés et signe par un socket Unix. Opérations fermées (chain hash, réputation, JWS construit par le signeur, artefact Rekor), entrées bornées, aucune opération ne rend une clé privée. - trust_layer/signing.py : couture unique vers les clés. Mode hérité (.pem) par défaut ; TL_SIGNER_SOCKET allume le mode signeur, qui ne lit ni ne crée aucun fichier de clé et refuse de démarrer si sa clé n'est pas dans l'historique. - trust_layer/published_keys.json : historique publié (key-1, rekor-1). /v1/pubkey ajoute kid, rekor_kid, keys, rekor_keys ; did.json liste toutes les clés, celle du nœud en tête. - Preuves : arkforge_kid ; attestations et réputation : signature_kid. - verify_proof.py : clé choisie par kid (ou par la clé portée pour les anciennes preuves), refus d'une clé retirée avant la date de la preuve ; attribution Rekor sur tout l'historique. Testé sur une preuve de juillet et sur la preuve du gel PROVE IT du 23/09. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Scanned FilesNone |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… du déploiement Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ès ; références internes retirées du code public Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
signer/tl_signer.py: a separate service that holds the private keys and signs over a Unix socket. Closed operations (chain hash, reputation statement, JWS built by the signer, Rekor artifact), bounded inputs, no operation returns key material.trust_layer/signing.py: single seam to the keys. Legacy.pemmode stays the default;TL_SIGNER_SOCKETenables signer mode, which reads and creates no key file and refuses to start if its key is not in the published history or fails a startup self-test.trust_layer/published_keys.json: published key history./v1/pubkeyaddskid,rekor_kid,keys,rekor_keys;did.jsonlists every key, the node key first;/v1/healthaddssigning.arkforge_kid(outside the chain hash); attestations and reputation scoressignature_kid.scripts/verify_proof.pyselects the key by kid (or by the embedded key for older proofs) and refuses a key retired before the proof's date; Rekor attribution covers the whole history. Tested on real proofs from March, July and September 2026.Production behaviour is unchanged by default (legacy mode). Spec: ark-forge/proof-spec#7.
🤖 Generated with Claude Code