Skip to content

tl-signer: private keys out of the API process, per-node keys, key history (1.12.0) - #49

Merged
desiorac merged 4 commits into
mainfrom
p5a-signeur
Sep 24, 2026
Merged

desiorac merged 4 commits into
mainfrom
p5a-signeur

Conversation

@desiorac

@desiorac desiorac commented Sep 24, 2026 •

Copy link
Copy Markdown
Member
  • 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 .pem mode stays the default; TL_SIGNER_SOCKET enables 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/pubkey adds kid, rekor_kid, keys, rekor_keys; did.json lists every key, the node key first; /v1/health adds signing.
  • Proofs carry arkforge_kid (outside the chain hash); attestations and reputation scores signature_kid.
  • scripts/verify_proof.py selects 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.
  • Deploy canary requires a passing signing self-test on the standby and the primary.

Production behaviour is unchanged by default (legacy mode). Spec: ark-forge/proof-spec#7.

🤖 Generated with Claude Code

- 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>
@github-actions

Copy link
Copy Markdown

⚠️ Deprecation Warning: The deny-licenses option is deprecated for possible removal in the next major release. For more information, see issue 997.

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

desiorac and others added 2 commits September 24, 2026 11:46
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… du déploiement

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@desiorac desiorac changed the title P5a : tl-signer, mode signeur, historique des clés (1.12.0) tl-signer: private keys out of the API process, per-node keys, key history (1.12.0) Sep 24, 2026
…ès ; références internes retirées du code public

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@desiorac
desiorac merged commit d3e7a75 into main Sep 24, 2026
3 checks passed
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.

1 participant