← Retour à DVR Time Traveler English

Livre blanc — Méthodologie forensique

Référence technique pour les procureurs, avocats de la défense, témoins experts et responsables de la sécurité des informations des agences qui évaluent les rapports produits par DVR Time Traveler.

Version du document
1.2
Date d'entrée en vigueur
22 août 2026
Auteur
SDTech Mobile Application Inc.
Versions de l'application couvertes
11.0.0 et ultérieures
Version de l'API serveur de licences
v1
Audience
Public — non confidentiel

Table des matières

  1. Portée et utilisation prévue
  2. Énoncé du problème
  3. Les mathématiques
  4. Somme de contrôle anti-altération & propriétés PDF
  5. Horodatages fiables RFC 3161
  6. Attestation de la source de temps & EXIF des photos
  7. Procédure de vérification
  8. Limites et mises en garde honnêtes
  9. Questions et réponses anticipées au contre-interrogatoire
  10. Normes et références

1. Portée et utilisation prévue

DVR Time Traveler est un outil d'aide à l'enquête et un instrument de certification de la base de temps. Il effectue un calcul arithmétique déterministe sur des valeurs de temps fournies par un agent et produit un rapport PDF structuré documentant le calcul, les données d'entrée, l'appareil sur lequel le calcul a été effectué et le moment auquel il l'a été.

Utilisé ainsi, le rapport certifie la base de temps du DVR examiné — en établissant, au dossier, si l'horloge interne de cet enregistreur était en retard, exacte ou en avance par rapport à l'heure réelle au moment de l'examen. Cela s'applique à tout DVR doté d'une horloge interne, y compris les enregistreurs dont l'horloge est déjà correcte : le rapport documente que l'horloge a été vérifiée et jugée exacte, plutôt que de laisser cette hypothèse non exprimée.

L'application n'ingère pas de vidéo, ne décode pas les horodatages vidéo, n'établit pas de chaîne de possession pour les médias tiers (tels que l'enregistrement DVR sous-jacent) et n'affirme pas l'authenticité de l'enregistrement DVR sous-jacent. Ces déterminations demeurent la responsabilité de l'enquêteur, de l'agence saisissante et du juge des faits. L'application produit toutefois deux catégories d'artefacts générés par elle-même — les rapports PDF et les photos de dossier — qui portent chacun leur propre métadonnées de détection d'altération, d'attestation temporelle et de liaison au dispositif décrites dans le présent document (voir §4.5 pour les propriétés du document PDF et §6.5 pour l'attestation EXIF des photos).

Ce livre blanc décrit les contrôles qui permettent à un tiers de vérifier de façon indépendante, des semaines ou des années après les faits, que :

  1. Le PDF en question a bien été produit par DVR Time Traveler.
  2. Il n'a pas été modifié depuis l'instant de sa génération.
  3. Le hachage de son contenu existait à un instant précis ou avant cet instant, attesté par une Autorité d'horodatage indépendante.
  4. L'horloge de l'application utilisée pour effectuer le calcul était, dans une marge déclarée, exacte au moment de la génération.

2. Énoncé du problème

Les enregistreurs vidéo numériques de surveillance (DVR) fonctionnent couramment avec des horloges temps réel en roue libre qui ne sont pas synchronisées avec des sources de temps faisant autorité. Une dérive de quelques secondes par jour est normale ; une dérive de plusieurs heures ou jours n'est pas inhabituelle pour des DVR réinstallés sans reconfiguration, ayant subi une coupure d'alimentation prolongée, ou dont le fuseau horaire a été mal configuré à l'installation.

Les enquêteurs doivent donc effectuer une conversion entre deux horloges : l'horloge inexacte du DVR et une horloge fiable du « monde réel ». Les erreurs dans cette conversion se répercutent dans les rapports d'incident, les déclarations de cause probable, les entretiens avec les témoins et, en définitive, dans les pièces à conviction au procès.

DVR Time Traveler élimine l'arithmétique manuelle en calculant la conversion, en formalisant les données d'entrée et en produisant un artefact auto-descriptif (le rapport PDF) qui documente à la fois le résultat et les conditions dans lesquelles il a été produit. Lorsque l'horloge du DVR est jugée exacte, ce même artefact sert de certification de ce fait — un enregistrement documenté et vérifiable de façon indépendante attestant que la base de temps de l'enregistreur a été examinée et confirmée, et non simplement présumée.

3. Les mathématiques

En langage clair

L'application effectue le même calcul de temps qu'un agent ferait à la main — soustraire une horloge d'une autre — mais sans le risque d'une erreur manuelle. Elle travaille en interne dans un seul standard de temps universel, de sorte que l'heure d'été, les années bissextiles et le passage de minuit ou du Nouvel An sont tous traités automatiquement.

L'application prend en charge trois calculs fondamentaux, tous effectués en temps universel coordonné (UTC) en interne :

3.1 Différence de temps

Étant donné un temps réel T_reel et l'heure affichée par le DVR T_dvr au même instant physique :

delta = T_reel − T_dvr

delta peut être positif (le DVR est en retard) ou négatif (le DVR est en avance). La valeur absolue est décomposée en jours, heures, minutes et secondes pour l'affichage.

3.2 Heure DVR cible pour un événement

Étant donné le delta calculé et l'heure réelle de l'événement d'intérêt T_evenement :

T_dvr_cible = T_evenement − delta

On obtient ainsi l'heure que l'enquêteur doit chercher sur le DVR pour visualiser l'événement.

3.3 Horizon de rétention

Étant donné une date réelle actuelle T_maintenant et la période de rétention configurée R (en jours) :

T_fin_retention = T_maintenant + R jours

La date la plus ancienne encore récupérable est T_maintenant − R jours.

3.4 Cas limites traités

4. Somme de contrôle anti-altération

En langage clair

Voyez ceci comme un sceau de sécurité qui révèle toute altération. L'application transforme chaque valeur du rapport — les heures et les nombres, ainsi que les informations du dossier comme le numéro de dossier, l'adresse du DVR, l'identification du DVR et le nom de l'agent — en une empreinte unique. Si quelqu'un modifie ne serait-ce qu'un seul caractère de l'un de ces champs, l'empreinte ne correspond plus — une altération est donc facile à détecter. (La preuve de qui a créé le rapport, et quand, provient de l'horodatage indépendant de la section 5.)

Chaque rapport PDF contient une Somme de contrôle anti-altération, une valeur hexadécimale de 64 caractères dérivée d'un code d'authentification de message à clé HMAC-SHA256 (RFC 2104) calculé sur la représentation canonique de chaque champ numérique affiché dans le rapport, plus le numéro de matricule de l'agent, l'identifiant de l'appareil, la date du rapport, la version de l'application et les champs administratifs du dossier (numéro de dossier, adresse du DVR, identification du DVR, nom de l'agent, département et unité).

4.1 Données d'entrée

Les champs suivants sont sérialisés, par ordre alphabétique de clé, sous forme de chaîne JSON déterministe. Cette chaîne est le message HMAC; un secret d'application fixe est la clé HMAC :

Les champs numériques et de date/heure sont réduits à leurs chiffres (normalisés selon l'ordre ISO 8601) avant le hachage, de sorte que le code est indépendant de la langue d'affichage et du format régional de l'appareil. Les champs administratifs du dossier sont normalisés comme du texte — les espaces superflus sont réduits et la valeur est mise en majuscules — afin que des différences d'espacement ou de casse n'affectent pas le code, tandis que toute modification substantielle le change.

4.2 Algorithme

code = HMAC-SHA256( clé = secret_d_application, message = JSON(champs, clés_triées) )

HMAC-SHA256 est le code d'authentification de message à clé standard défini par la RFC 2104 et la norme FIPS 198-1. Les 12 premiers caractères hexadécimaux du code forment l'identifiant de document lisible par l'humain, préfixé DVRTT-. La valeur complète de 64 caractères est affichée dans le PDF pour une vérification byte à byte.

4.3 Propriétés et assurance visée

4.4 Service de vérification des rapports

SDTech offre un Service professionnel de vérification des rapports destiné aux agences et aux professionnels du droit qui requièrent une confirmation formelle qu'un rapport DVR Time Traveler n'a pas été altéré. Sur demande, SDTech recalcule la somme de contrôle anti-altération à partir des champs visibles sur le rapport et confirme si le code correspond — fournissant une attestation signée pouvant être soumise en procédure judiciaire. Comme SDTech développe l'application, il s'agit d'une vérification d'expert par la première partie et non d'une vérification indépendante ; pour une vérification entièrement indépendante, tout tiers peut recalculer la méthode HMAC-SHA256 ouverte décrite ci-dessus, et l'horodatage de confiance RFC 3161 de la §5 est émis par une autorité indépendante.

Pour demander une vérification ou en savoir plus sur ce service, utilisez notre page sécurisée de demande de certificat.

4.5 Propriétés du document PDF

En langage clair

Chaque rapport PDF contient des « propriétés du document » intégrées — les champs que tout lecteur PDF affiche dans son panneau de propriétés — qui identifient l'application qui l'a produit, le type de rapport et le moment exact de sa création. Cela rend la provenance du document évidente avant même qu'on en examine le contenu.

En plus de la somme de contrôle anti-altération décrite ci-dessus, chaque rapport PDF porte un dictionnaire Info PDF structuré, rempli au moment de la génération. Ces champs sont consultables dans le panneau de propriétés de tout lecteur PDF et fournissent une couche d'attestation indépendante et facile à inspecter concernant l'origine du document :

Propriété PDFValeur
TitleDVRTT Report - <Nom de l'agent> - Case <Numéro>
AuthorDVR Time Traveler
SubjectDVR Time Correlation Report - Law Enforcement ou DVR Time Correlation Report - Private Investigation (selon le mode)
CreatorDVR Time Traveler v<version>
ProducerDVR Time Traveler v<version>
KeywordsDVR, time correlation, forensic
CreationDateHeure vérifiée et verrouillée pour la session, issue de la même horloge utilisée ailleurs dans le rapport (voir §6)
ModDateMême instant vérifié et verrouillé que CreationDate

Les champs CreationDate et ModDate sont renseignés à partir de timeService.getNowSync() — la même horloge verrouillée pour la session et ancrée sur un compteur monotone qui pilote tous les autres horodatages du rapport — plutôt que par la valeur par défaut du système d'exploitation (qui relirait l'horloge de l'appareil au moment où le moteur de rendu PDF écrit le fichier, sans l'ancrage qui protège contre les modifications d'horloge en cours de session). Cet alignement fait en sorte que la CreationDate interne du PDF correspond à l'horodatage « Corrélation effectuée à » imprimé sur le rapport ainsi qu'au nom de fichier de toute photo prise dans la même session, fournissant un enregistrement temporel cohérent entre tous les artefacts générés par l'application.

Ces propriétés ne sont pas couvertes par la somme de contrôle anti-altération (qui ne hache que les données du rapport affichées). Un examinateur de la défense peut librement modifier le dictionnaire Info à l'aide d'outils standards ; s'il le fait, l'horodatage de confiance de la §5 continuera de lier le hachage original à l'instant original d'émission. Le dictionnaire Info est présenté ici comme métadonnée informative rendant la provenance immédiatement visible, non comme une garantie cryptographique.

5. Horodatages de confiance RFC 3161

En langage clair

Une entreprise indépendante et extérieure (une autorité d'horodatage) certifie le moment exact où le rapport existait — comme un sceau daté de notaire que personne, pas même SDTech, ne peut falsifier ou antidater. Seule une empreinte respectueuse de la vie privée du rapport est transmise; le contenu du rapport ne quitte jamais l'appareil.

À partir de la version 10.2.5, chaque rapport PDF inclut optionnellement un horodatage de confiance conforme à la RFC 3161 (Protocole d'horodatage de la clé publique Internet X.509).

5.1 Conception préservant la confidentialité

L'application calcule un hachage SHA-256 du contenu canonique décrit à la §4 et ne transmet que ce hachage au serveur de licences SDTech. Le serveur transmet une TimeStampReq RFC 3161 contenant le hachage à une Autorité d'horodatage (AHO) configurée. L'AHO ne voit pas le contenu original. Le contenu original ne quitte jamais l'appareil.

5.2 Chaîne de confiance

  1. L'AHO émet un TimeStampToken, structure CMS SignedData contenant un champ TSTInfo qui atteste le hachage, la politique sous laquelle l'horodatage a été émis et un temps de confiance. Le jeton est signé avec la clé privée de l'AHO.
  2. Le certificat de signature de l'AHO est enchaîné à une Autorité de certification racine approuvée publiquement.
  3. Le serveur de licences stocke le jeton, le hachage original, le nom de l'AHO, l'heure d'émission et le contexte de la demande dans un enregistrement Cloudflare D1 à l'épreuve des altérations. Chaque enregistrement reçoit un identifiant de jeton stable et sécurisé pour les URL.
  4. Le PDF intègre l'identifiant du jeton, l'heure d'émission, le nom de l'AHO, le hachage du contenu et une URL de vérification publique.
  5. Quiconque peut ultérieurement accéder à l'URL de vérification pour récupérer les métadonnées et (avec ?include_raw=1) le TimeStampToken encodé en DER original, pour une vérification cryptographique avec des outils standard (OpenSSL ts -verify, bibliothèques conformes RFC 3161, etc.).

5.3 Autorités d'horodatage configurées

FournisseurPar défautAuditéUtilisé pour
FreeTSA.orgOuiNon (communautaire, CA publique)Comptes standard
DigiCertOptionnelOui (audité WebTrust)Niveau agence
SectigoOptionnelOuiConfigurable par déploiement

5.4 Ce que prouve un horodatage de confiance

5.5 Ce que ne prouve pas un horodatage de confiance

6. Attestation de la source de temps

En langage clair

Au moment où le rapport est produit, l'application compare sa propre horloge à plusieurs sources de temps internet indépendantes (Cloudflare, Google, Apple, Microsoft, Amazon) et enregistre l'écart constaté. Un résultat proche de zéro constitue une preuve contemporaine que l'horloge était exacte. Si l'appareil est hors ligne, l'application l'indique clairement et l'agent confirme d'abord l'horloge à l'aide d'une référence externe.

L'application utilise une horloge d'appareil vérifiée pour tous les horodatages et calculs des rapports. Sur la page d'avertissement au début de la session, l'horloge de l'appareil est comparée à un consensus temps Internet multi-sources (voir §6.1–§6.2). Lorsque la dérive mesurée est dans une marge de ±2 secondes du consensus — le plancher de bruit de la mesure par en-tête HTTP Date, et plus fin que la précision que l'application peut revendiquer de manière significative — l'horloge de l'appareil est acceptée telle quelle : aucun décalage n'est appliqué, car à cette résolution la propre source de temps du système d'exploitation (NITZ / GNSS / NTP) est plus précise qu'une correction HTTP calculée par l'application. L'horloge acceptée est ensuite verrouillée pour la session et accédée exclusivement via timeService.getNowSync(), qui l'ancre à performance.now() (un compteur monotone) de sorte que les modifications d'horloge en cours de session soient détectées et traitées — voir §6.6 pour le comportement précis en cas de manipulations arrière et avant, et pour la façon dont l'application distingue un sommeil légitime de l'appareil d'un saut avant malveillant. Cette horloge vérifiée et verrouillée pilote la CreationDate interne du PDF (§4.5), l'horodatage « Corrélation effectuée à » imprimé au recto, et l'heure de capture de toute photo prise dans l'application (§6.5). Si la dérive mesurée est ≥ 2 secondes, l'utilisateur ne peut procéder tant qu'il n'a pas re-vérifié, corrigé l'horloge de l'appareil ou explicitement reconnu la situation et procédé sur la propre attestation de l'agent. Lors de la génération du rapport, l'application effectue une seconde attestation de la source de temps indépendante — elle interroge à nouveau les mêmes sources de temps Internet non corrélées, calcule un consensus et enregistre la dérive entre l'horloge d'application verrouillée et ce consensus — fournissant une preuve contemporaine, vérifiable par un tiers, de l'exactitude de l'horloge de l'application au moment de la génération du rapport.

Si l'appareil est hors ligne au moment de la génération, aucune source de temps externe ne peut être interrogée et l'attestation est marquée INDISPONIBLE — l'application se rabat sur l'horloge de l'appareil pour les calculs et affiche de façon visible une icône cloud-off sur le rapport. Dans ce scénario, l'agent a déjà confirmé sur la page d'avertissement — en cochant la case libellée « J'ai vérifié que l'heure automatique est activée et j'accepte les conditions ci-dessus » — que le réglage « Heure automatique » de l'appareil est actif et que les trois conditions d'intégrité temporelle énoncées sur la même page ont été lues et acceptées. La bonne pratique consiste à recouper en outre l'horloge de l'appareil avec une référence temporelle externe indépendante (montre radio-pilotée, second appareil, horodatage de la répartition ou signal horaire diffusé) et à photographier cette référence avec la caméra intégrée afin que le JPEG résultant porte, dans ses métadonnées EXIF, le même temps vérifié et verrouillé pour la session (étiqueté « NTP-verified » ou « device clock » selon §6.5) (§6.5). La page hors ligne du rapport documente explicitement cet état, fournissant une chaîne de responsabilité documentée pour l'exactitude de l'horloge même sans attestation automatisée. Le résultat de l'attestation est inclus textuellement dans le PDF.

Pourquoi l'heure automatique est physiquement nécessaire. Sur iOS comme sur Android, l'interface de réglage manuel de l'heure ne propose que les heures et les minutes — il n'existe aucun sélecteur de secondes. Lorsqu'un utilisateur règle l'horloge manuellement, la composante des secondes est soit réinitialisée à :00, soit laissée à sa valeur arbitraire actuelle, selon la version du système. Un réglage manuel entraîne donc toujours un décalage incontrôlable pouvant atteindre 59 secondes par rapport à l'heure réelle. Seule la synchronisation automatique du système d'exploitation (via NITZ, GNSS ou NTP) peut régler les secondes avec précision. C'est pourquoi la première condition de la page d'avertissement de l'application est la confirmation que l'heure automatique est activée : il ne s'agit pas d'une simple recommandation mais d'un prérequis physique pour une précision à la seconde.

6.1 Sources interrogées

La liste actuelle des sources (sujette à évolution) est :

Ces sources sont exploitées par des organisations indépendantes dans plusieurs juridictions. Une seule source compromise ne peut pas induire le consensus en erreur.

6.2 Méthode

Pour chaque source, l'application enregistre :

Elle applique ensuite la correction SNTP standard à demi-RTT :

t_corrigee  = t_rapportee − (t_fin − t_debut) / 2
point_med   = (t_debut + t_fin) / 2
derive      = t_corrigee − point_med

Le décalage de consensus est la médiane de tous les échantillons réussis ; l'écart est l'écart-type des échantillons.

6.3 Ce qui est rapporté dans le PDF

Le bloc d'attestation imprimé sur le rapport contient :

6.4 Résolution et aptitude à l'usage

L'en-tête HTTP Date a une résolution à la seconde entière selon la RFC 7231. Un seul échantillon comporte donc de l'ordre de ±1 à 2 secondes d'erreur de mesure (quantification à la seconde plus asymétrie de l'aller-retour réseau) ; la prise de la médiane sur plusieurs opérateurs indépendants élimine la gigue propre à chaque source, tandis que le plancher absolu reste d'environ ±1 seconde. C'est suffisant pour l'utilisation prévue : confirmer que l'horloge de l'appareil utilisée pour calculer les horodatages du rapport était, au moment de la génération, exacte à la seconde, et non à la microseconde. L'utilisation de NTP via UDP pour une précision supérieure est réservée à de futurs travaux sur les modules natifs et n'est pas requise pour cet usage.

6.5 Capture de photos et attestation EXIF

En langage clair

Lorsqu'une photo est prise avec l'application, celle-ci inscrit le même temps vérifié et verrouillé pour la session et le même identifiant d'appareil dans les métadonnées propres de la photo. Ainsi, une photo de l'écran d'un DVR, une photo d'une horloge externe utilisée pour confirmer l'heure de l'appareil et le rapport PDF de la même session peuvent tous être rattachés au même appareil et au même instant vérifié.

Les photos de dossier prises avec la caméra intégrée à l'application sont traitées comme des artefacts de preuve de premier plan. À l'instant où le déclencheur est activé — avant que le système d'exploitation ne termine l'encodage du JPEG — l'application lit l'heure courante depuis timeService.getNowSync() (la même horloge verrouillée pour la session et ancrée sur un compteur monotone utilisée partout ailleurs dans le rapport). Cette valeur d'heure de capture pilote à la fois le nom de fichier de la photo et les balises EXIF suivantes, écrites in-place après la capture :

Balise EXIFValeur
Software (IFD 0)DVR Time Traveler v<version>
ImageDescription (IFD 0)DVR Time Traveler ou DVR Time Traveler - Case <Numéro>
DateTime (IFD 0)Heure de capture vérifiée et verrouillée pour la session (YYYY:MM:DD HH:MM:SS)
DateTimeOriginal (Exif IFD)Même heure de capture vérifiée et verrouillée
DateTimeDigitized (Exif IFD)Même heure de capture vérifiée et verrouillée
UserComment (Exif IFD)DVR Time Traveler | Time: <source> | <horodatage>[ - Case <Numéro>] | Device: <ID appareil>

Le statut de la source de temps inscrit dans UserComment est l'une des trois valeurs littérales suivantes :

L'identifiant d'appareil inscrit dans UserComment est le même identifiant dérivé du matériel qui est inclus parmi les 17 champs couverts par la somme de contrôle anti-altération sur tout rapport PDF généré sur le même appareil (§4.1). C'est le mécanisme qui lie une photo au(x) rapport(s) PDF produit(s) sur le même appareil : un examinateur qui compare la valeur Device dans le UserComment d'une photo à la ligne Identifiant d'appareil imprimée sur un rapport PDF peut confirmer que les deux artefacts proviennent de la même installation de DVR Time Traveler.

Les champs EXIF sont lisibles par tout outil standard — exiftool, la plupart des éditeurs d'images, et la boîte de dialogue des propriétés de fichiers de chaque système d'exploitation — sans nécessiter de coopération de SDTech. L'horodatage du nom de fichier et le DateTimeOriginal EXIF sont renseignés à partir de la même valeur, de sorte qu'un décalage entre les deux est un indicateur positif de manipulation a posteriori.

Horodatage incrusté. En plus des métadonnées EXIF lisibles par machine, un horodatage visible est rendu directement dans les pixels de l'image à la résolution native du capteur (coin inférieur droit, police monospace sur un fond semi-transparent). Le texte incrusté affiche DVR Time Traveler (jaune) sur une ligne et l'heure de capture au format ISO AAAA-MM-JJ  HH:MM:SS (blanc) sur la ligne suivante. Cela garantit que l'heure de capture vérifiée est visible lorsque la photo est imprimée, projetée ou consultée comme fichier autonome sans logiciel compatible EXIF. Le format ISO 8601 est utilisé quel que soit le paramètre régional de l'agent afin que la date soit non ambiguë dans les procédures inter-juridictionnelles.

Précision infra-seconde. L'horodatage de capture est lu depuis l'horloge vérifiée à l'instant où le bouton de déclenchement est pressé, avant que le capteur de la caméra ne commence l'exposition. Les trois représentations — nom de fichier, EXIF et texte incrusté — tronquent aux secondes entières et sont dérivées de la même valeur. Sur la plupart des appareils, l'horodatage incrusté correspond exactement au contenu de la scène. Sur du matériel plus ancien ou plus lent, l'exposition du capteur et l'encodage JPEG peuvent prendre légèrement plus de temps, et dans de rares cas une horloge visible dans la scène pourrait différer d'une seconde de l'horodatage incrusté (p. ex., l'horodatage affiche 14:35:01 tandis que la scène montre 14:35:02). Il s'agit d'un cas limite dépendant du matériel, pas d'un décalage systématique ; l'horodatage enregistre toujours la décision de capturer.

Les métadonnées EXIF ne sont pas couvertes par la somme de contrôle anti-altération (qui ne sécurise que les champs du rapport PDF). Si le fichier JPEG est modifié après la capture, les défenses standard sont (i) le hachage SHA-256 du fichier original, calculé lors du transfert vers le système de gestion des dossiers, et (ii) le nom de fichier vérifié et verrouillé qui est fixé à la capture et ne peut être falsifié sans modifier le fichier écrit par le système d'exploitation. Si la photo est ensuite jointe à un rapport PDF, l'horodatage de confiance du rapport (§5) lie le contenu du rapport, mais pas les fichiers photo joints — c'est le DateTimeOriginal EXIF propre de la photo qui porte le registre temporel contemporain de l'image elle-même.

6.6 Détection des modifications d'horloge en cours de session

En langage clair

Pour changer l'horloge du téléphone, l'utilisateur doit quitter l'application et ouvrir les Réglages. Chaque fois que l'application revient au premier plan, elle exécute automatiquement une nouvelle vérification de l'heure réseau. Si l'horloge a été modifiée pendant que l'application était en arrière-plan, la vérification la détecte et en informe l'agent. Il n'y a aucun contournement silencieux — l'agent doit compléter une re-vérification complète avant de continuer. Le sommeil légitime de l'appareil (poche, écran éteint) passe la vérification silencieusement car le réseau confirme que l'heure correcte n'a pas changé.

Une fois la session verrouillée (§6), chaque transition AppState → 'active' (l'application revenant au premier plan après avoir été mise en arrière-plan ou après que l'appareil se réveille du sommeil) déclenche un point de contrôle au premier plan :

  1. Un drapeau checkpoint-pending est défini immédiatement. Toute photo ou PDF sauvegardé pendant cette brève fenêtre (~2 secondes) porte le suffixe (checkpoint pending) dans ses métadonnées (§6.5).
  2. Le verrou de session est temporairement libéré et une nouvelle synchronisation NTP s'exécute contre le même consensus multi-sources utilisé au démarrage de la session (§6.1–§6.4). La synchronisation écrit un nouvel offset et ré-ancre l'horloge monotone.
  3. La session est re-verrouillée et le drapeau checkpoint-pending est effacé.
  4. La dérive — la différence entre l'avance de l'horloge murale de l'appareil pendant la fenêtre d'arrière-plan et l'avance de la réalité réseau pendant la même fenêtre — est calculée.
    • Si la dérive est < 2 secondes (dans le bruit de mesure des en-têtes Date HTTP), le rafraîchissement de l'ancrage est silencieux. C'est le cas courant : l'appareil dormait, sa synchronisation au niveau OS maintenait l'horloge exacte, et aucune invite n'est nécessaire.
    • Si la dérive est ≥ 2 secondes, un modal Vérification au retour en avant-plan est présenté avec le nombre exact de secondes de divergence. La seule option est Re-vérification complète — l'agent est renvoyé à la page d'avertissement pour relire les trois conditions et re-attester formellement via la case à cocher. Il n'y a pas de raccourci ; chaque modification d'horloge détectée exige le même engagement que le démarrage d'une nouvelle session.
    • Si l'appareil est hors ligne et que la synchronisation NTP échoue, le point de contrôle est un no-op : l'ancrage n'est pas modifié, le verrou de session reste en place, et le prochain point de contrôle réussi (quand la connectivité revient) révélera toute divergence.

Pourquoi cela suffit. Sur iOS et Android, les paramètres de date/heure se trouvent dans Réglages / Paramètres système, qui est une application séparée. L'ouvrir met DVR Time Traveler en arrière-plan. Revenir à DVR Time Traveler produit un événement AppState → 'active'. Par conséquent, chaque opportunité de manipulation est encadrée par exactement un point de contrôle. Aucun réglage de seuil, heuristique de direction ou désambiguation sommeil/manipulation n'est nécessaire.

Protection en ligne pendant que l'application est au premier plan. Pendant que l'application est au premier plan, getNowSync() lit toujours performance.now() en parallèle avec Date.now() à chaque appel. Si l'horloge de l'appareil dévie de plus de 5 secondes de l'estimation monotone, le timeOffset interne est silencieusement corrigé pour que les horodatages continuent d'avancer de façon monotone à partir de l'ancrage verrouillé de la session.

Combiné à l'horodatage de confiance RFC 3161 (§5), qui est émis par une AHO tierce qu'aucune manipulation d'horloge d'appareil ne peut affecter, la chaîne forensique est complète :

7. Procédure de vérification

Toute partie peut vérifier indépendamment un PDF de DVR Time Traveler en utilisant uniquement des outils standard disponibles publiquement.

7.1 Vérifier la somme de contrôle anti-altération

  1. Lire tous les champs numériques du PDF tels qu'affichés.
  2. Recalculer le code HMAC-SHA256 en utilisant la construction d'entrée canonique décrite à la §4 et la clé HMAC documentée dans le code source de l'application. (SDTech offre aussi un service payant de vérification de première partie — voir §4.4 — mais aucune coopération de SDTech n'est requise pour la vérification par un tiers.)
  3. Comparer à la valeur imprimée sur le PDF. Toute divergence indique une altération.

7.2 Vérifier les métadonnées de l'horodatage de confiance

curl https://verify.sdtech.app/api/v1/timestamp/verify/<TOKEN_ID>

La réponse inclut le hachage original, l'AHO, l'heure d'émission et le contexte de la demande. Comparer le hachage à celui imprimé sur le PDF.

7.3 Vérifier cryptographiquement le jeton d'horodatage de confiance

# 1. Récupérer le jeton RFC 3161 brut (base64)
curl 'https://verify.sdtech.app/api/v1/timestamp/verify/<TOKEN_ID>?include_raw=1' \
  | jq -r .tokenB64 | base64 -d > jeton.tsr

# 2. Vérifier par rapport au hachage du document (certificat racine de l'AHO FreeTSA / DigiCert selon le cas)
openssl ts -verify -in jeton.tsr -digest <HASH_HEX> \
  -CAfile tsa-ca.pem

Un résultat OK confirme que le hachage attesté existait à l'heure d'émission ou avant, et que le jeton a bien été émis par l'AHO nommée.

7.4 Vérifier l'attestation de la source de temps

L'attestation est reproductible en principe mais pas en pratique (les sources interrogées ne conservent pas les réponses historiques). Le bloc d'attestation dans le PDF est donc évalué comme preuve contemporaine de l'exactitude de l'horloge au moment de la génération du rapport, et non comme un test ré-exécutable.

7.5 Portail de vérification et horodatage des rapports hors ligne

SDTech fournit un portail de vérification public à l'adresse verify.sdtech.app. Toute partie peut y coller un identifiant de jeton (ts_...) ou une URL de vérification complète pour consulter un enregistrement d'horodatage.

Pour les rapports générés hors ligne (aucun horodatage de confiance n'a pu être obtenu au moment de la génération), un outil d'horodatage pour rapports hors ligne est disponible à l'adresse verify.sdtech.app/api/v1/timestamp/offline. L'outil accepte l'empreinte SHA-256 du document (imprimée sur la page d'attestation hors ligne) et la soumet à la même Autorité d'horodatage tierce indépendante utilisée pour les rapports en ligne. Le jeton RFC 3161 résultant lie cryptographiquement l'empreinte du document au moment de la soumission, produisant un certificat de vérification imprimable identique à celui fourni automatiquement lorsque l'appareil est en ligne. Un lien pré-rempli vers cet outil est intégré directement dans la page d'attestation forensique de chaque rapport hors ligne.

7.6 Vérifier les propriétés du document PDF

Le dictionnaire Info (§4.5) est consultable dans tout lecteur PDF (Adobe Acrobat, Aperçu macOS, lecteurs PDF Windows) via Fichier → Propriétés, ou depuis la ligne de commande :

exiftool -PDF:all rapport.pdf
# ou
pdfinfo rapport.pdf

Valeurs attendues : Author = DVR Time Traveler, Creator/Producer = DVR Time Traveler v<version>, Subject correspondant au type de rapport (Law Enforcement ou Private Investigation). La CreationDate doit correspondre à l'horodatage « Corrélation effectuée à » imprimé sur le recto du rapport. Un décalage n'est pas une preuve d'altération (le dictionnaire Info n'est pas signé), mais mérite d'être étudié conjointement avec la somme de contrôle anti-altération.

7.7 Vérifier les métadonnées EXIF des photos

Pour tout JPEG capturé avec la caméra intégrée à l'application (§6.5), les balises EXIF peuvent être inspectées avec exiftool :

exiftool -Software -ImageDescription -DateTimeOriginal \
         -DateTimeDigitized -UserComment photo.jpg

Valeurs attendues :

La vérification EXIF est complémentaire, non un substitut, à la somme de contrôle anti-altération et à l'horodatage de confiance du rapport PDF. Elle est particulièrement utile pour déterminer si une photo jointe à un rapport a bien été prise par le même appareil que celui qui a généré le rapport, ou pour authentifier une photo partagée séparément de son rapport.

8. Limites et mises en garde honnêtes

9. Questions et réponses anticipées au contre-interrogatoire

Q. « L'agent aurait-il pu manipuler ce rapport ? »

Un agent qui modifie les champs affichés sans régénérer le rapport invalidera la somme de contrôle anti-altération ; la modification sera détectable par recalcul. Un agent qui régénère le rapport après modification produira un nouvel horodatage RFC 3161 avec une heure d'émission ultérieure, ce qui sera visible à la face même du document.

Q. « Comment sait-on que l'horloge de l'application était exacte lors de la génération ? »

Le bloc d'attestation de la source de temps dans le PDF enregistre la dérive entre l'horloge verrouillée de l'application et la médiane de plusieurs sources de temps Internet indépendantes au moment de la génération. Une valeur de dérive de quelques secondes proche de zéro est une preuve contemporaine d'une horloge exacte. Puisque l'application ancre son heure verrouillée à performance.now() (un compteur monotone), l'attestation reste significative même si l'horloge système de l'appareil est modifiée en cours de session — l'ancrage rend le changement détectable.

Q. « Comment sait-on que SDTech n'a pas fabriqué cet horodatage ? »

L'horodatage de confiance est signé par une Autorité d'horodatage externe — FreeTSA, DigiCert ou Sectigo selon la configuration — avec une clé que SDTech ne possède pas. SDTech ne peut pas forger de jeton valide. Le jeton est vérifiable de façon indépendante en utilisant OpenSSL ou toute bibliothèque conforme RFC 3161.

Q. « Et si l'AHO était compromise ? »

La compromission d'une AHO publique constituerait un incident majeur touchant l'ensemble du secteur. SDTech surveille les avis de sécurité des AHO publiques et émettrait un avis correspondant affectant les rapports générés durant toute fenêtre concernée. Des rapports peuvent être ré-ancrés sur une AHO alternative sur demande.

Q. « Cette application est-elle certifiée pour un usage judiciaire ? »

Aucun logiciel n'est « certifié » pour un usage judiciaire au sens général; la recevabilité est tranchée au cas par cas par le tribunal compétent. Ce que l'application fournit, c'est un solide fondement technique à cette détermination : chaque rapport porte une somme de contrôle anti-altération (§4), un horodatage de confiance RFC 3161 indépendant émis par une autorité externe (§5) et un relevé contemporain de l'exactitude de l'horloge (§6) — tous vérifiables par tout tiers à l'aide d'outils standard et accessibles au public. Les tribunaux de diverses juridictions acceptent couramment les preuves numériques horodatées et à détection d'altération lorsqu'elles sont correctement présentées et appuyées par un témoignage. Ce livre blanc et la procédure de vérification ouverte visent à soutenir cette présentation.

Q. « L'agent aurait-il pu fabriquer l'ensemble du scénario ? »

L'application ne peut pas, et ne prétend pas pouvoir, défendre contre un agent qui saisit délibérément de fausses données d'entrée. Ce scénario est identique à un calcul manuscrit contenant délibérément de faux chiffres. Le rôle de l'application est de s'assurer que, compte tenu des données d'entrée telles qu'elles sont enregistrées, l'arithmétique est correcte, le résultat est préservé sans altération et l'événement de génération est indépendamment ancré dans le temps.

10. Normes et références