Documentation / 08
Découvrez comment fonctionne la conservation des preuves
Un message peut être modifié. L'enregistrement de ce que vous avez observé doit rester vérifiable.
Découvrez ci-dessous deux petites expériences. Elles utilisent des messages fictifs, s'exécutent directement dans votre navigateur et ne se connectent jamais à Telegram.
Un message, trois observations
Lorsque Telegram transmet un nouveau message, une modification ou une notification de suppression, l’outil d’enregistrement ajoute trois observations distinctes. La modification ne remplace pas l’enregistrement initial. Une notification de suppression ne l’efface pas.
Le message a disparu de la vue de la conversation.
- 01✓
message.newRendez-vous à 10 h
- 02✓
message.editedRendez-vous à 11 h
- 03✓
message.deletedAvis de suppression n° 42
Les trois observations reçues sont conservées dans le journal.
Une notification de suppression ne fournit ni l’heure exacte de la suppression, ni l’identité de la personne ayant supprimé le message. Le fait de ne pas divulguer ces informations permet de préserver la distinction entre une observation et une supposition.
Modifier un enregistrement. Suivre le hachage.
Chaque enregistrement contient le hachage de l’enregistrement précédent. Son propre hachage couvre les champs d’événement, y compris ce lien. Un point de contrôle conservé en externe fixe une longueur spécifique du journal et le hachage de tête.
h₁ = SHA-256(e₁)Liens vers 64 zérosh₂ = SHA-256(e₂)Comprend h₁h₃ = SHA-256(e₃)Comprend h₂h₃Comparez cette limite fixe avec le journal fourni.La modification d’un événement modifie son hachage. La reconstruction de la chaîne modifie son début. La suppression de la fin rend la chaîne plus courte que le point de contrôle conservé.
Consultez l'enregistrement n° 2 et l'ensemble des hachages
Il s'agit ici du JSON UTF-8 exact soumis à un hachage dans cet exemple. Les valeurs sont fictives ; les neuf champs et la sérialisation correspondent au format du journal.
- Hachage de l'enregistrement n° 2
- Hash de l'enregistrement n° 2 recalculé
Les règles proprement dites, en quelques lignes
hi = hex(SHA-256(C(ei)))
σi = Ed25519.Sign(sk, unhex(hi))
C sérialise les neuf champs d’événement au format JSON UTF-8 : clés triées, sans espaces supplémentaires, sans échappement ASCII et sans NaN/infini. La valeur previous_hash de l’événement est hi−1. La valeur h0 affichée correspond à 64 caractères nuls ; les signatures couvrent les 32 octets bruts du résumé.
Les neuf champs sont seq, observed_at, source_at, kind, chat_id, message_id, actor_id, payload et previous_hash. Il s’agit du codage JSON documenté de TgWitness ; le hachage et la signature eux-mêmes ne constituent pas des champs de saisie de hachage.
hexport[Ncheckpoint] = Hcheckpoint
Vérifiez la signature du point de contrôle sous la clé de collecte épinglée, puis comparez ses limites avec celles du journal vérifié. Une exportation ultérieure peut contenir davantage d’enregistrements ; elle doit néanmoins correspondre au point de contrôle précédent.
Trois questions, trois vérifications différentes
Vérifiez les hachages et les signatures à l’aide d’une clé de confiance distincte.
02 / CONTINUITÉQu’est-ce qui a été conservé précédemment ?Comparez une exportation signée avec des points de contrôle conservés par un témoin distinct.
03 / LIVRAISONCes événements de test sont-ils bien arrivés ?Comparez les actions contrôlées d’envoi, de modification et de suppression avec le journal de chaque compte.
Une chaîne de hachages correspondante répond à une question d’intégrité. Elle ne prouve pas la livraison complète du message sur Telegram, la véracité d’un message ni l’heure d’observation de manière indépendante et fiable.
Suivez l'enquête complète sur le compte, de l'acquisition jusqu'au dossier d'affaire.