Clés publiques de vérification
Chaque enregistrement de caisse produit par Tattooed — ticket, clôture, archive, événement — porte une signature électronique. Les clés ci-dessous permettent de la vérifier, sans nous, et au besoin contre nous.
Pourquoi ces clés sont publiques
La signature est asymétrique : la clé qui signe n’est pas celle qui vérifie. Nous seuls détenons la clé privée ; n’importe qui peut détenir la clé publique. C’est ce qui donne sa valeur à la signature — avec un mécanisme symétrique, nous pourrions refabriquer n’importe quelle chaîne, et elle ne prouverait rien à un tiers.
Les clés
Chaque enregistrement porte un identifiant de clé (keyId). Prenez celui
du ticket que vous vérifiez, pas nécessairement la clé courante : un
enregistrement de 2026 se vérifie avec la clé de 2026, même si elle a été remplacée
depuis.
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAETjFpAl8BKKBPFlyAGGRuXs0+2fLa PSfe2v5U/30RN94vVUvspUJhcpeIuWGPD6uacib3ralpzarJSJQXYurSYg== -----END PUBLIC KEY-----
Comment vérifier un enregistrement
L’algorithme est ECDSA P-256, signature SHA-256 sur la représentation hexadécimale de l'empreinte. Il tient en trois étapes, et chacune se refait avec les outils standard d’un poste de travail.
-
Récupérez l’export des données de caisse du professionnel (produit depuis son
espace, il contient
tickets.csv,clotures.csv,evenements.csvet une notice explicative). Chaque ligne porte sonhash, sasignature, sonparentHashet sonkeyId. -
Rejouez la chaîne. L’empreinte d’un enregistrement est
SHA-256(canonicalJson • parentHash)— la concaténation des octets du JSON canonique stocké tel quel, puis des 64 caractères hexadécimaux de l’empreinte précédente. Le premier enregistrement d’une chaîne a pourparentHashsoixante-quatre zéros. - Vérifiez la signature. Elle porte sur la représentation hexadécimale de l’empreinte, pas sur ses octets bruts — c’est ce que vous lisez dans l’export, sans avoir à le reconvertir. Elle est encodée en base64.
En ligne de commande, une fois la clé enregistrée dans cle.pem et la
signature décodée dans signature.bin :
printf '%s' "$HASH" > empreinte.txt openssl dgst -sha256 -verify cle.pem -signature signature.bin empreinte.txt
La réponse attendue est Verified OK. Toute autre réponse signifie que
l’enregistrement, sa signature ou la clé ne se correspondent pas.
Ce que ces clés ne disent pas
Une signature valide établit qu’un enregistrement n’a pas été modifié depuis son émission, et qu’il a bien été produit par le logiciel. Elle n’établit pas que son contenu est exact : le libellé d’une prestation, le montant saisi et le taux de taxe appliqué relèvent du professionnel, pas de l’éditeur.
Aller plus loin
- Les mêmes données au format JSON, pour un contrôle automatisé : https://tattooed.fr/caisse/cles-publiques.json.
- Ce que le logiciel garantit, et ce qu’il ne garantit pas : attestation individuelle de l’éditeur.