Repository navigation
feat(tsa-server): contreseing du journal par des TSA tierces (constat J-1) - #102
Open
PhilippeVienne wants to merge 1 commit into
Open
PhilippeVienne wants to merge 1 commit into
PhilippeVienne wants to merge 1 commit into
Conversation
… J-1) Le sceau que la TSU pose sur son propre journal est auto-référentiel : il ne prouve rien à qui ne lui fait pas déjà confiance. `oe-crosstsa` était écrit et testé, aucun binaire ne l'appelait. - À chaque passe, la tête de chaîne que la TSU vient de sceller est aussi horodatée par chaque autorité d'OPENEIDAS_CROSS_TSA_URLS. Chaque réponse est consignée (`log.cross_sealed`) avec le nom de l'autorité, la date, la série et le jeton RFC 3161, vérifiable par `openssl ts -verify`. Seule l'empreinte de la tête de chaîne sort du service. - Une autorité injoignable n'empêche pas les autres de compter. Trois passes sans aucun contreseing dégradent `/healthz`, qui rend aussi le nombre d'autorités configurées et de réponses à la dernière passe. - Posée à vide, OPENEIDAS_CROSS_TSA_URLS désactive le contreseing au lieu de retomber sur les deux autorités par défaut. Les démonstrations de la CI et le test du binaire l'utilisent pour ne solliciter aucune TSA publique. - Le service contrôle que le jeton porte l'empreinte soumise ; il n'en vérifie pas la signature, faute d'ancres de confiance pour ces autorités. Cinq mutations tuées : autre empreinte que la tête scellée, absence de contreseing non comptée, jamais signalée, comptée comme un succès, contreseings surcomptés. Co-authored-by: Claude <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.
Objet
Deuxième tranche du constat J-1 (EN 319 401
REQ-7.10-02,REQ-7.10-08), après #101. Basedev, PR indépendante. Le sceau que la TSU pose sur son propre journal est auto-référentiel : il ne prouve rien à qui ne lui fait pas déjà confiance.oe-crosstsaétait écrit et testé, aucun binaire ne l'appelait.OPENEIDAS_CROSS_TSA_URLS. Chaque réponse est consignée (log.cross_sealed) avec le nom de l'autorité, la date, la série et le jeton RFC 3161./healthzrendcross_tsas,last_cross_seal,last_cross_seal_countetcross_seal_failures; trois passes sans aucun contreseing le dégradent.OPENEIDAS_CROSS_TSA_URLSdésactive le contreseing au lieu de retomber sur les deux autorités par défaut.Points d'attention pour la revue :
tsa.crossTSA.urls: ""dansvalues-staging.yaml. C'était la configuration prévue depuis l'origine, mais elle devient effective avec cette PR.openssl ts -verifyet leur certificat. Un tiers qui répondrait un jeton à la bonne empreinte mais mal signé serait donc compté.last_cross_seal_countdit combien ont répondu. Le contreseing en échec attend l'intervalle normal, pour ne pas solliciter les tiers plus que de raison.docker-compose.ymlpasse de${VAR:-défaut}à${VAR-défaut}pour qu'une valeur vide reste vide.ca-serveret dera-consolen'étant ni scellés ni contresignés (tranche suivante).Vérifications
cargo fmt --check,cargo clippy --workspace --all-targets -- -D warnings(toolchain locale et 1.98.1) : verts.cargo test --workspace --features oe-castore/postgres -- --nocaptureavec PostgreSQL et SoftHSM : vert, 96 suites, aucun test ignoré.bin/tsa-server/tests/serve.rs, token SoftHSM) : une seconde instance detsa-serverprend la première pour TSA tierce ; son journal porte unlog.cross_sealedsur la même tête que sonlog.sealed, le jeton est vérifié paropenssl ts -verify -digest <tête>, et la première instance a journalisé ce jeton.cargo audit --ignore RUSTSEC-2023-0071,cargo deny check licenses,helm lint,docker compose config: verts.docs/CONFORMITE-ETSI.mdrégénéré.the_sealed_head_is_countersigned_by_each_reachable_third_partythree_passes_without_any_countersignature_degrade_healthNon vérifié : un contreseing réel par FreeTSA ou DigiCert. Les tests n'utilisent que des autorités locales, à dessein.
Revue humaine obligatoire
Voir PROVENANCE.md. Chaque case est cochée par le
contributeur humain qui valide la PR, après l'avoir fait lui-même.
make licenses)Assistance par IA
Co-authored-by: Claude <noreply@anthropic.com>, auteur et committer restent humains, etscripts/provenance.py archivea été lancéhttps://claude.ai/code/session_01YRg8X9dbmth9GXcR9hP4QQ