spec 3.1 : le bloc d'identité entre dans les champs engagés - #4
Merged
Merged
Conversation
Jusqu a 3.0 agent_identity, agent_identity_verified et did_resolution_status etaient servis dans les reponses publiques et engages nulle part : hors racine Merkle, donc hors hashes.chain, hors signature Ed25519, donc hors jeton RFC 3161 et hors Rekor. L emetteur pouvait les reecrire apres ancrage sans qu aucun temoin externe ne bouge, et tout classement lisant agent_identity_verified lisait sa parole. 3.1 les engage inconditionnellement, une identite absente etant engagee a null, et publie leurs nonces dans la preuve (disclosed) pour que la valeur servie soit ouvrable par n importe qui. Le masquage est abandonne sur ces trois champs et sur aucun autre. Ce que ca etablit : la non-repudiation. Ce que ca n etablit pas : la verification du binding lui-meme par un tiers, aucun artefact public ne prouve le challenge-response. Vecteurs 13-14 generes par une reimplementation independante et recoupes avec trust_layer ; check_consistency.py verifie que les nonces publies ouvrent bien leurs engagements. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CzXFq94XGK7vcDgoSRsPFp
Un jugement SUR l identite, servi publiquement, engage nulle part. Ancrer ses trois voisins en le laissant dehors reconstruit le meme trou un champ plus a gauche. Vecteurs 13-14 regeneres et recoupes par reimplementation independante. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CzXFq94XGK7vcDgoSRsPFp
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.
Le défaut
Jusqu'à 3.0 inclus,
agent_identity,agent_identity_verified,did_resolution_statusetidentity_consistentétaient servis dans les réponses publiques (§9) et engagés nulle part : hors racine Merkle, donc horshashes.chain, hors signature Ed25519, donc hors jeton RFC 3161 et hors entrée Rekor.Mesuré par exécution sur une preuve 3.0 : passer
agent_identity_verifieddefalseàtrueetagent_identitydedid:web:evil.exampleàdid:web:trust.arkforge.techlaisse la vérification d'intégrité àtrueet le chain hash inchangé au bit près. Tout lecteur qui prenaitagent_identity_verifiedpour une preuve prenait la parole de l'émetteur.Ce que fait 3.1
null. Les engager seulement quand ils sont présents laisserait un émetteur les omettre et un vérificateur sans engagement à refuser.disclosed. Un engagement à nonce secret est non falsifiable mais illisible ; ces quatre valeurs doivent rester lisibles par un tiers, donc le masquage est abandonné sur elles et sur aucune autre.agent_identity_verifiedvauttrueounull, jamaisfalse: une seule normalisation à la source, pour que la valeur engagée et la valeur servie ne puissent pas diverger.identity_consistentfait partie du lot : c'est un jugement sur l'identité. Engager ses trois voisins en le laissant dehors reconstruirait le même trou un champ plus à gauche.Ce que ça établit, et ce que ça n'établit pas
Ça rend l'affirmation d'identité non répudiable : l'émetteur s'y est engagé avant l'ancrage et ne peut plus se dédire. Ça ne rend pas le binding lui-même vérifiable par un tiers : aucun artefact public ne prouve que le challenge-response Ed25519 a eu lieu. C'est écrit tel quel dans la §2.
Une preuve en
spec_versioninférieur à"3.1"ne porte aucune identité ancrée, et un vérificateur ne doit pas la traiter comme une preuve d'identité.Mesure
check_consistency.pyétendu : il vérifie que les nonces publiés ouvrent bien leurs engagements, et non seulement que la racine tombe juste.ALL CHECKS PASSED, 14 vecteurs, compte aligné avec le README.Les preuves en 3.0 et antérieures gardent leur algorithme et restent vérifiables.
test-vectors.jsondepuis le clone proof-spec de VPS1.🤖 Generated with Claude Code
https://claude.ai/code/session_01CzXFq94XGK7vcDgoSRsPFp