OVELIYA · Scellé
Spécification de vérification — figée · version 2 · publiée le 29 juin 2026
Ce document décrit, de façon stable et autonome, comment vérifier l'authenticité d'un Scellé OVELIYA. Il est volontairement minimal : un tiers peut réimplémenter la vérification à partir de cette seule page, sans accès au code d'OVELIYA. Une version donnée du protocole ne change jamais ; toute évolution porte un nouveau numéro.
Un Scellé est une signature cryptographique apposée par OVELIYA sur trois éléments : un identifiant, une empreinte du contenu, et une date. La vérification établit deux choses : que la signature provient bien de la clé d'OVELIYA, et que ces trois éléments n'ont pas été modifiés depuis. Elle n'établit pas, à elle seule, l'identité du détenteur ni la valeur juridique du contenu.
Le message signé est une chaîne de caractères UTF-8, dont les champs sont séparés par une barre verticale | :
OVELIYA-SCELLE|v2|<proof_id>|<document_hash>|<signed_at>
proof_id — identifiant du Scellé, p. ex. OVL-2026-XXXXXX.document_hash — empreinte SHA-256 du contenu scellé, 64 caractères hexadécimaux minuscules.signed_at — instant de signature au format ISO 8601 UTC, millisecondes incluses (p. ex. 2026-06-29T08:42:11.123Z). Cette chaîne doit être reproduite à l'octet près : c'est exactement elle qui a été signée.À partir du protocole ovd-content-1, le document_hash est l'empreinte SHA-256 d'une forme canonique du contenu — sans aucun horodatage. N'importe qui possédant le contenu peut donc la recalculer à l'identique, sans dépendre d'OVELIYA. La recette :
{ v:"ovd-content-1", profile, tier, answers, decision } où answers est la liste ordonnée des réponses ; chaque texte (réponses et décision) est découpé de ses espaces de bord (trim).canonicalJSON du vérificateur hors-ligne).document_hash.Variante ovd-content-2 — ancrage d'identité (optionnel). Si le porteur a déclaré un ancrage d'identité, l'objet canonique devient { v:"ovd-content-2", identity, profile, tier, answers, decision }, où identity est l'identifiant déclaré, découpé de ses espaces de bord. L'ancrage est déclaratif : OVELIYA ne vérifie pas que le porteur contrôle cet identifiant ; il garantit seulement qu'il est inséparable du contenu scellé.
La date n'entre pas dans l'empreinte : elle est prouvée séparément par signed_at et la signature. Les Actes scellés avant l'introduction de ovd-content-1 restent vérifiables par leur signature, mais leur empreinte n'est pas recalculable. Le vérificateur hors-ligne intègre un outil de recalcul.
La signature est produite avec l'algorithme Ed25519 (RFC 8032) sur les octets UTF-8 du message ci-dessus, puis encodée en base64. C'est la valeur signature_b64.
La clé publique de vérification est au format SPKI (PEM ou DER). La clé en vigueur porte la référence ovd-ed25519-2026-01. Une empreinte SHA-256 de la clé permet de confirmer qu'on vérifie avec la bonne clé lorsque plusieurs coexistent au fil des années. La clé publique est, par nature, destinée à être partagée ; seule la clé privée reste secrète.
proof_id, document_hash, signed_at et signature_b64 depuis l'Acte (le PDF contient un bloc de vérification prêt à copier).signed_message fourni tel quel.Ed25519.verify(clé_publique, signature, message).Le vérificateur hors-ligne OVELIYA applique exactement cette procédure dans le navigateur, sans serveur. Il reste utilisable même si ce service disparaît, à condition d'en conserver une copie avec la clé publique.
Le numéro de version figure dans le message signé (v2). Une version publiée est figée : sa procédure de vérification ne change pas. Une évolution du protocole reçoit un nouveau numéro et sa propre spécification ; les anciens Scellés restent vérifiables selon la spécification de leur version.