DEDA – boîte à outils d’extraction, de décodage et d’anonymisation des points de suivi
(github.com/dfd-tud)- DEDA est une boîte à outils permettant de lire, décoder et anonymiser les points de suivi couleur des documents, c’est-à-dire les points jaunes, présents dans les sorties d’imprimantes laser couleur
- Les points de suivi couleur des documents sont de petits motifs de points systématiques qui encodent des informations sur l’imprimante et l’impression, et sont intégrés à presque toutes les imprimantes laser couleur commerciales
- Il permet de lire ou comparer les données de suivi dans des images scannées, d’extraire des motifs inconnus et d’ajouter sa propre matrice de points de suivi à des PDF
- La fonction d’anonymisation fonctionne soit en supprimant la plupart des données de suivi des images scannées, soit en créant un masque d’anonymisation propre à une imprimante et en l’appliquant à des documents PDF
- Pour de bons résultats, il est recommandé d’utiliser des scans d’entrée avec compression sans perte, en 300 dpi et à contraste neutre ; les pages noir et blanc ou les impressions jet d’encre peuvent ne pas contenir de points de suivi
Le problème traité par DEDA
- Les Document Colour Tracking Dots, ou points jaunes, sont de petits points systématiques qui encodent des informations sur l’imprimante et sur l’impression elle-même
- Ce procédé est intégré à presque toutes les imprimantes laser couleur commerciales
- Presque toutes les impressions contiennent des informations codées sur l’appareil source, pouvant par exemple inclure le numéro de série
- DEDA fournit à la fois des fonctions de lecture et de décodage de cette caractéristique forensique, ainsi que des fonctions d’anonymisation pour empêcher un suivi arbitraire
- En cas d’utilisation du logiciel, il est demandé de citer l’article suivant
- Timo Richter, Stephan Escher, Dagmar Schönfeld, Thorsten Strufe. 2018. Forensic Analysis and Anonymisation of Printed Documents. IH&MMSec '18, 127-138. DOI : https://doi.org/10.1145/3206004.3206019
Installation et lancement de l’interface graphique
- Python 3 doit être installé
- Installation possible depuis PyPI
pip3 install --user deda
- Installation également possible depuis le répertoire courant
pip3 install --user .
- Comme dépendance optionnelle de
deda_anonmask_apply, Wand peut être installé sous Unix et GNU/Linuxpip3 install --user wand- Sans Wand, les pages comportant des zones blanches dans l’image ne peuvent pas être anonymisées
- L’interface graphique se lance avec la commande suivante
deda_gui
Ce que permettent les outils en terminal
-
Lire les données de suivi
- Il est possible de lire, et dans certains cas de décoder, les données de suivi d’une image scannée
- Pour de bons résultats, l’entrée doit utiliser une compression sans perte comme png, une résolution de 300 dpi et un contraste neutre
- Commande à exécuter :
deda_parse_print INPUTFILE
-
Trouver une autre imprimante dans un ensemble de documents scannés
- Il est possible de repérer, parmi plusieurs documents scannés, ceux qui ont été imprimés avec une autre imprimante
- Commande à exécuter :
deda_compare_prints INPUT1 INPUT2 [INPUT3] ...
-
Analyser des motifs de suivi inconnus
- Un nouveau motif peut ne pas être reconnu par
parse_print - Pour une analyse plus poussée, il est possible d’extraire les points jaunes
- Commande à exécuter :
deda_extract_yd INPUTFILE
- Un nouveau motif peut ne pas être reconnu par
-
Créer ses propres points de suivi
- Il est possible de créer sa propre matrice de points de suivi et de l’ajouter à un document PDF
- Le contenu est transmis sous forme de paramètres selon
deda_create_dots -h - Commande à exécuter :
deda_create_dots PDFINPUT
- Une page de calibration créée avec
deda_anonmask_create -wpeut être utilisée en entrée
Workflow d’anonymisation
-
Anonymiser une image scannée
- Supprime la plupart des données de suivi d’une image scannée
- Commande à exécuter :
deda_clean_document INPUTFILE OUTPUTFILE
-
Anonymiser un document destiné à l’impression
- Enregistrer le document au format PDF et le placer sous le nom
DOCUMENT.PDF - Imprimer sans marges le fichier
testpage.pdfcréé avec la commande suivantededa_anonmask_create -w
- Scanner ce document en 300 dpi et transmettre le fichier sans perte à la commande suivante
deda_anonmask_create -r INPUTFILE
- Ce processus génère
mask.json, le masque d’anonymisation propre à l’imprimante - Appliquer le masque généré au PDF
deda_anonmask_apply mask.json DOCUMENT.PDF
- Le résultat produit est un
masked.pdfanonymisé, imprimable avec des marges de page réglées à 0 - Il faut vérifier au microscope que le masque couvre les points de suivi de l’imprimante
- Le rayon des points du masque, le décalage x et le décalage y peuvent être ajustés via les paramètres de
deda_anonmask_apply - Si
DOCUMENT.PDFcontient des zones graphiques blanches ou claires, ces zones ne peuvent être masquées que si Wand est installé
- Enregistrer le document au format PDF et le placer sous le nom
Dépannage
- Si
deda_parse_print: command not foundapparaît, vérifier l’installation de DEDA ou ajouter au PATH le chemin du répertoire bin utilisateur de Pythonexport PATH="$PATH:$(python -c 'import site,os; print(os.path.join(site.USER_BASE, "bin"))')"
- Si DEDA ne reconnaît pas les points de suivi, configurer le programme de scan pour qu’il ne supprime pas la structure du papier ni les points de suivi par seuillage
- Les pages noir et blanc et les impressions jet d’encre peuvent ne pas contenir de points de suivi
- Si l’imprimante n’imprime pas de points de suivi, il est possible de créer ses propres points de suivi ou d’imprimer la page de calibration avec une autre imprimante pour l’utiliser comme masque pour sa propre imprimante
- Création de points de suivi personnalisés possible avec
deda_create_dots - Création d’une page de calibration possible avec
deda_anonmask_create -w - Il est possible d’utiliser une version anonymisée des points de suivi ou de la copier avec
deda_anonmask_create --copy
- Création de points de suivi personnalisés possible avec
- Les erreurs d’installation liées à
x86_64-linux-gnu-gccpeuvent être dues à la dépendance eel nécessaire à l’interface graphique- Commande proposée :
sudo apt-get install build-essential autoconf libtool pkg-config python3.6-dev gcc && pip3 install --user eel
- Commande proposée :
- Si
wand.exceptions.PolicyErrorbloque les opérations PDF en raison d’une politique de sécurité, la configuration d’ImageMagick en est la cause- Supprimer Wand ou ajouter la politique suivante dans
/etc/ImageMagick-*/policy.xml, juste avant</policymap><policy domain="coder" rights="read | write" pattern="PDF" />
- Lien de référence associé : ImageMagick security policy PDF blocking conversion
- Supprimer Wand ou ajouter la politique suivante dans
1 commentaires
Commentaires sur Hacker News
Notre équipe avait utilisé ces points de suivi jaunes il y a une dizaine d’années, lors du DARPA Shredder Challenge, pour reconstituer des documents déchiquetés.
On voit le programme mettre les points en évidence pendant l’assemblage des fragments : https://www.youtube.com/watch?v=uzZDhyrjdVo
Cela nous a permis de gagner avec une large avance.
Lire la suite de l’histoire a fait remonter ce souvenir oublié, c’est assez étonnant.
Cela mériterait presque un article à part autant que l’algorithme de résolution, et il faut sans doute un certain tempérament pour gérer un tel bazar.
Récemment, pour des raisons difficiles à expliquer ici, j’ai dû me pencher un peu sur les points de suivi.
Essayez d’éclairer une impression couleur avec une lampe torche à LED bleue. C’est sidérant : il y a une quantité énorme de points sur toute la page, comme si on y avait saupoudré du sable.
Si mon imprimante n’imprime pas de points de suivi, l’idée que je puisse contrefaire les points de suivi d’une autre imprimante est assez intéressante du point de vue du déni plausible.
Cela dit, même dans ce cas, il faudrait sans doute avoir accès à l’imprimante d’origine pour imprimer le masque anonyme.
De nos jours, il est même possible d’y accéder à distance via les paramètres de l’imprimante.
On pourrait tromper quelqu’un qui fait une analyse superficielle, mais un enquêteur expérimenté risque de se dire quelque chose comme : « les points de suivi correspondent clairement à la marque X, mais le raster utilisé pour les niveaux de gris vient manifestement de Y ».
Si vous avez manqué un article intéressant sur le sujet, il est ici : https://news.ycombinator.com/item?id=42880704
Le plus intéressant, c’est que la personne qui a publié la découverte et l’analyse avait déjà dépensé plusieurs milliers de dollars dans ces fausses cartes, et risquait donc d’y perdre personnellement, mais a tout de même rendu les résultats publics.
Je me demande ce qui se passe si l’on imprime la même page avec plusieurs imprimantes.
Si la première imprimante imprime le contenu réel et que les autres n’ajoutent que de minuscules marques dans les zones encore blanches, est-ce qu’une imprimante dégrade les points de suivi de l’autre ?
Cela dit, selon les conditions exactes, il pourrait rester possible d’en lire une partie, voire la totalité.
Je commence à me demander si les MIB ne vont pas débarquer chez les geeks qui lanceront un projet façon OpenWRT pour imprimantes.
On ne peut pas autoriser des moyens d’expression intraçables, et il faut pouvoir frapper chirurgicalement à la source des mèmes gênants. C’est pourquoi j’utilise une imprimante laser noir et blanc trouvée sur craigslist, placée sur un VLAN séparé, avec un serveur CUPS comme intermédiaire.
Personne n’a jamais donné un consentement suffisamment informé à ce que Niantic fait depuis plus de dix ans, et personne n’a consenti non plus à ce que tout document imprimé devienne traçable. Nulle part, ni dans le produit ni dans le processus, on ne prévient que « l’absence d’identifiant visible ne signifie pas qu’il n’y a pas d’identifiant ; il peut exister un identifiant stéganographique ».
Il en va de même pour les machines génériques intégrées aux produits que nous achetons, verrouillées au point que nous, leurs propriétaires, ne puissions pas les réutiliser comme nous le souhaitons. Nous avons fini par accepter les insultes lancées par les organisations commerciales et les agences d’État sous la forme : « mange ce sandwich à la merde, ou prends des coups sans sandwich », et la Consumer Action Taskforce (CAT) de Louis Rossmann est en train de devenir une bonne anthologie de ce genre de cas.
Il est temps de riposter. Il faut hacker des imprimantes correctes, remplacer leur firmware par quelque chose de pratique, et se débarrasser de ces conneries. Ces points de suivi et autres formes de traçage stéganographique existent pour suivre et faire taire des gens comme moi, ceux qui dénoncent les mécanismes de contrôle cachés et diffusent des mèmes que le gigantesque calmar d’obsidienne a étiquetés comme risque informationnel ou désinformation.
Imprimer sur du papier me semble idiot, puisque même une personne habituée à manipuler des billets le remarquerait facilement.
Cela risque de devenir assez important dans les prochaines années.
Si vous prévoyez d’imprimer des tracts ou des pamphlets pour une manifestation, mieux vaut passer par une imprimerie professionnelle si vous avez quelqu’un de confiance, ou au minimum acheter une imprimante en liquide, ne jamais la connecter à Internet, et la brancher uniquement en USB à un ordinateur Linux.
macOS et Windows peuvent installer automatiquement des pilotes d’imprimante, et ces pilotes pourraient contacter le siège pour associer l’ID de l’imprimante à une forme d’identifiant.
Vous pourrez aussi imprimer des t-shirts.
Je me demande vraiment quelle proportion d’imprimantes peut être déchiffrée avec des outils publics.
Existe-t-il des statistiques sur les codes de quels fabricants ont été cassés ?
Une copie se trouve ici : https://ericbalawejder.com/assets/hexview/Forensic-Analysis-...
Le tableau 1 récapitule les fabricants, le nombre d’imprimantes analysées et la présence ou non de points : Brother 1 modèle, non ; Canon 10 modèles, oui ; Dell 4 modèles, oui ; Epson 8 modèles, certains modèles ; Hewlett-Packard 43 modèles, certains modèles ; IBM 1 modèle, oui ; KonicaMinolta 21 modèles, certains modèles ; Kyocera 4 modèles, oui ; Lanier 1 modèle, oui ; Lexmark 6 modèles, certains modèles ; NRG 1 modèle, oui ; Okidata 9 modèles, certains modèles ; Ricoh 6 modèles, oui ; Samsung 5 modèles, non ; Savin 1 modèle, oui ; Tektronix 4 modèles, non ; Unknown 1 modèle, oui ; Xerox 15 modèles, certains modèles.
Hormis quelques indices décrits dans l’article, lorsqu’un motif de points est détecté, il semble généralement compris.
Les imprimantes laser noir et blanc produisent-elles aussi des points de traçage ?
Et quel est le sens de ce type de traçage ? Par principe, chaque recoin de notre vie doit-il forcément être traçable ?
Parsemer partout des informations de provenance a trop de valeur pour la sécurité nationale. On invoque toujours la sûreté ou la sécurité, puis vient aussitôt le « mais où est le mal, vous ne faites rien que vous ne devriez pas faire… n’est-ce pas ? »
Si l’usage principal est de traquer les faux-monnayeurs, les imprimantes noir et blanc n’en ont pas besoin, et c’est pourquoi elles n’en seraient pas équipées.
Cette liste n’a pas été mise à jour depuis 2017, et il est très probable qu’elle soit le résultat de déductions faites par une seule personne à partir de demandes FOIA. Il faudra sans doute attendre la prochaine fois qu’une université chinoise publiera des secrets du gouvernement américain.
Il y a des décennies, j’ai travaillé sur un logiciel qui cachait des informations en ajustant le crénage des caractères ; à ma connaissance, ce projet n’a pas vraiment abouti.
Ceci peut aussi vous intéresser : https://en.wikipedia.org/wiki/EURion_constellation
Malheureusement, il y a très peu d’informations publiques à son sujet : http://www.cl.cam.ac.uk/users/sjm217/projects/currency/