Export juridique
L'export produit une archive qu'un tiers (avocat, juge, journaliste) peut vérifier seul, sans passer par ripoux.fr et sans nous faire confiance.
Depuis une session, choisissez Export juridique, puis Préparer l'archive. L'archive est assemblée dans votre navigateur : les segments sont téléchargés chiffrés et déchiffrés sur place. Prévoyez de l'espace disque : une heure en 1080p représente environ 1,8 Go.
Contenu de l'archive
| Fichier | Contenu |
|---|---|
segments/<prise>/<numéro>.<ext> |
Les originaux non ré-encodés, déchiffrés, tels que produits par le téléphone (.mp4, .webm, .jpg, audio) |
prises/<prise>.webm |
Chaque prise assemblée en un seul fichier, vidéo ou audio seul, pour la regarder d'une traite (voir ci-dessous) |
manifest.json |
Le manifeste : liste des segments, empreinte de chaque fichier déchiffré (plainHash) et du chiffré reçu (hash), heures du téléphone et du serveur, trous déclarés, journal |
manifest.sig |
La signature du manifeste par le serveur (Ed25519) |
timestamp.tsr |
La preuve d'horodatage (norme RFC 3161) émise par une autorité tierce |
journal.json |
Le journal de chaîne de conservation, signé entrée par entrée |
journal.txt |
Le même journal, en version lisible |
track.geojson |
Les positions, si elles étaient activées |
server-public-key.pem, server-public-key.txt |
La clé publique de signature du serveur, au format PEM et en base64url |
VERIFICATION.md |
La notice de vérification, avec les commandes exactes |
temoignages/<n>.json, .recu.json, .recu.sig, .recu.tsr |
Les témoignages déchiffrés, avec le reçu signé par le serveur et son horodatage |
chiffre/<prise>/<numéro>.bin, chiffre.sha256 |
Avec l'option ci-dessous : les mêmes segments tels que le serveur les a reçus, chiffrés |
cle-de-session.txt |
Avec l'option ci-dessous : la clé privée de cette session seule |
Les segments chiffrés et la clé de session
L'option Inclure aussi les segments chiffrés, cochée par défaut, double la taille de l'archive. Elle ajoute les segments tels que le serveur les stocke et la clé privée de cette seule session (cle-de-session.txt). Avec eux, un tiers recalcule hash sur chaque fichier de chiffre/, retrouve la chaîne reçue par le serveur, puis redéchiffre lui-même chaque segment avec la clé et compare le résultat au fichier en clair : il ne dépend plus de la parole du téléphone pour relier les deux.
Cette clé ne donne accès à rien d'autre : ni à vos autres sessions, ni à votre compte. Mais qui reçoit l'archive peut relire toute cette session, ce qui est déjà le cas avec les fichiers en clair. Décochez l'option si le destinataire n'a besoin que des originaux.
Les prises assemblées
Les segments de 2 à 3 secondes sont la preuve, mais ils se regardent mal un par un. Pour chaque prise en WebM (Android, Chrome, Firefox), l'archive contient aussi prises/<prise>.webm : les segments mis bout à bout sans ré-encodage. Les données vidéo et audio sont recopiées telles quelles, seuls les repères de temps sont décalés pour que les morceaux s'enchaînent. Un trou déclaré dans la prise reste un saut dans le fichier assemblé, jamais comblé.
Ce fichier est une commodité de lecture. Il ne figure pas dans le manifeste et n'a pas d'empreinte signée : la vérification porte sur les segments et le manifeste.
Les prises enregistrées en MP4 (Safari sur iPhone) ne sont pas assemblées dans cette version : seuls leurs segments sont fournis.
Destinataire
Télécharger sur cet appareil enregistre l'archive en clair sur votre ordinateur. Protégez-la en conséquence (disque chiffré, support amovible). Pour la confier à un contact de confiance, partagez-lui plutôt la session : il prépare lui-même l'archive depuis son compte, et rien ne transite en clair.
Un lien protégé à usage unique destiné à un avocat n'existe pas encore.
Notez l'empreinte de l'archive
À la fin, l'écran affiche l'empreinte SHA-256 de l'archive. Notez-la et transmettez-la par un autre canal que l'archive. Elle permet au destinataire de vérifier que rien n'a changé en route :
sha256sum ripoux-export.zip # le nom exact du fichier peut varier
Le résultat doit être identique à l'empreinte notée.
Comment un tiers vérifie
Le plus simple : déposer l'archive sur la page publique Vérifier une preuve, qui refait tous ces contrôles dans le navigateur, sans rien envoyer. Pour une vérification indépendante de ripoux.fr, la notice VERIFICATION.md incluse fait foi. Le principe, avec des outils libres (coreutils, OpenSSL 3) :
1. Chaque fichier contre le manifeste
Pour chaque segment, manifest.json donne plainHash : l'empreinte SHA-256 du fichier déchiffré, déclarée par le téléphone au moment de l'envoi, puis consignée par le serveur avec l'heure de réception.
sha256sum segments/01/0001.mp4
Le résultat doit être égal au plainHash du segment correspondant dans manifest.json. Un fichier modifié, même d'un octet, donne une autre empreinte.
2. La signature du serveur sur le manifeste
La clé publique du serveur est fournie au format PEM dans l'archive, et publiée sur https://ripoux.fr/.well-known/ripoux.json. Le tiers peut comparer les deux.
openssl pkeyutl -verify -pubin -inkey server-public-key.pem -rawin \
-in manifest.json -sigfile manifest.sig
Signature Verified Successfully : le manifeste, et donc chaque plainHash qu'il contient, n'a pas été modifié depuis sa signature.
3. L'horodatage tiers
openssl ts -reply -in timestamp.tsr -text # date et autorité
openssl ts -verify -in timestamp.tsr -data manifest.json \
-CAfile cacert.pem -untrusted tsa.crt
cacert.pem et tsa.crt sont les certificats publics de l'autorité d'horodatage, à télécharger sur son site (par défaut freetsa.org). Verification: OK : ce manifeste, avec ses empreintes, existait à la date indiquée.
4. La chaîne
Dans manifest.json, chaque segment porte aussi hash (empreinte du segment chiffré, tel que reçu) et prevHash (celle du segment précédent de la même prise). Le tiers vérifie que chaque prevHash égale le hash du segment précédent, et que les seuls trous sont ceux déclarés. Ces empreintes prouvent la continuité de la réception côté serveur ; elles se recalculent sur les fichiers de chiffre/ (avec l'option des segments chiffrés), pas sur les fichiers déchiffrés.
5. Le journal
Chaque entrée de journal.json contient l'empreinte de l'entrée précédente et une signature du serveur, vérifiable avec la même clé publique.
Ce que les empreintes prouvent
plainHash relie chaque fichier de l'archive au manifeste signé et horodaté : personne ne peut produire après coup un autre fichier de même empreinte. Sa limite : il est déclaré par le téléphone. Le serveur ne voit que du chiffré et ne peut pas vérifier qu'il correspond au contenu ; il atteste seulement qu'il a reçu cette empreinte à cette heure-là, avec ce segment.
hash et prevHash prouvent que le serveur a reçu ces segments chiffrés, dans cet ordre, avec ces trous.
Voir aussi Limites connues.
Floutage des visages
Les images contiennent souvent des visages de personnes qui n'ont rien demandé. L'export juridique n'est jamais flouté : il contient les originaux, et seuls eux font foi.
Pour montrer un passage au public, un collectif peut publier une copie floutée : visages masqués dans le navigateur, page publique sur ripoux.fr, avec une fiche signée qui la relie aux segments d'origine. Pour un autre usage (une projection, un dossier de presse), floutez une copie avec un outil de montage et gardez l'archive d'origine intacte.