- DEDA es un kit de herramientas para leer, decodificar y anonimizar los puntos de rastreo de color en documentos impresos por impresoras láser a color, es decir, los puntos amarillos
- Los puntos de rastreo de color en documentos son pequeños patrones sistemáticos de puntos que codifican información sobre la impresora y la impresión, y están integrados en casi todas las impresoras láser a color comerciales
- Puede leer o comparar datos de rastreo desde imágenes escaneadas, extraer patrones desconocidos y agregar su propia matriz de puntos de rastreo a un PDF
- La función de anonimización funciona eliminando la mayor parte de los datos de rastreo de una imagen escaneada o creando una máscara de anonimización específica por impresora para aplicarla a documentos PDF
- Para obtener buenos resultados, se recomienda que el escaneo de entrada use compresión sin pérdidas, 300 dpi y contraste neutro; las páginas en blanco y negro o las impresiones de inyección de tinta pueden no tener puntos de rastreo
El problema que aborda DEDA
- Document Colour Tracking Dots o puntos amarillos son pequeños puntos sistemáticos que codifican información sobre la impresora y sobre la propia impresión
- Este proceso está integrado en casi todas las impresoras láser a color comerciales
- Casi toda impresión contiene información codificada sobre el dispositivo de origen, por ejemplo un número de serie
- DEDA ofrece tanto funciones para leer y decodificar esta característica forense como funciones de anonimización para evitar rastreos arbitrarios
- Al usar el software, se solicita citar el siguiente artículo
- 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
Instalación y ejecución de la GUI
- Se requiere tener instalado Python 3
- Se puede instalar desde PyPI
pip3 install --user deda
- También se puede instalar desde el directorio actual
pip3 install --user .
- Como dependencia opcional de
deda_anonmask_apply, se puede instalar Wand en Unix y GNU/Linuxpip3 install --user wand- Si Wand no está instalado, no se podrán anonimizar páginas que contengan áreas blancas dentro de la imagen
- La GUI se ejecuta con el siguiente comando
deda_gui
Tareas posibles con las herramientas de terminal
-
Leer datos de rastreo
- Se pueden leer y, en algunos casos, decodificar datos de rastreo desde una imagen escaneada
- Para obtener buenos resultados, la entrada debe usar compresión sin pérdidas como png, 300 dpi y contraste neutro
- Comando de ejecución:
deda_parse_print INPUTFILE
-
Encontrar impresoras distintas en un conjunto de documentos escaneados
- Se pueden encontrar documentos impresos con impresoras diferentes entre varios documentos escaneados
- Comando de ejecución:
deda_compare_prints INPUT1 INPUT2 [INPUT3] ...
-
Analizar patrones de rastreo desconocidos
- Es posible que un patrón nuevo no sea reconocido por
parse_print - Se pueden extraer los puntos amarillos para análisis adicional
- Comando de ejecución:
deda_extract_yd INPUTFILE
- Es posible que un patrón nuevo no sea reconocido por
-
Crear tus propios puntos de rastreo
- Puedes crear tu propia matriz de puntos de rastreo y agregarla a un documento PDF
- El contenido se pasa como parámetro según
deda_create_dots -h - Comando de ejecución:
deda_create_dots PDFINPUT
- Se puede usar como entrada una página de calibración creada con
deda_anonmask_create -w
Flujo de trabajo de anonimización
-
Anonimizar una imagen escaneada
- Elimina la mayor parte de los datos de rastreo de una imagen escaneada
- Comando de ejecución:
deda_clean_document INPUTFILE OUTPUTFILE
-
Anonimizar un documento para impresión
- Guarda el documento como PDF y déjalo como
DOCUMENT.PDF - Imprime sin márgenes el
testpage.pdfcreado con el siguiente comandodeda_anonmask_create -w
- Escanea ese documento a 300 dpi y pasa el archivo sin pérdidas al siguiente comando
deda_anonmask_create -r INPUTFILE
- Este proceso genera
mask.json, que es la máscara de anonimización de la impresora individual - Aplica la máscara generada al PDF
deda_anonmask_apply mask.json DOCUMENT.PDF
- Como resultado se genera
masked.pdf, que puede imprimirse con el margen de página configurado en 0 - Debes verificar con un microscopio que la máscara cubra los puntos de rastreo de la impresora
- El radio de los puntos de la máscara, el desplazamiento x y el desplazamiento y pueden ajustarse con parámetros de
deda_anonmask_apply - Si
DOCUMENT.PDFtiene áreas gráficas blancas o claras, esas áreas solo podrán enmascararse si Wand está instalado
- Guarda el documento como PDF y déjalo como
Solución de problemas
- Si aparece
deda_parse_print: command not found, verifica la instalación de DEDA o agrega al PATH la ruta bin del usuario de Pythonexport PATH="$PATH:$(python -c 'import site,os; print(os.path.join(site.USER_BASE, "bin"))')"
- Si DEDA no reconoce los puntos de rastreo, debes configurar el programa de escaneo para que no elimine mediante umbral la textura del papel o los puntos de rastreo
- Las páginas en blanco y negro y las impresiones de inyección de tinta pueden no tener puntos de rastreo
- Si la impresora no imprime puntos de rastreo, puedes crear tus propios puntos de rastreo o imprimir una página de calibración con otra impresora y usarla como máscara para tu propia impresora
- Se pueden crear puntos de rastreo propios con
deda_create_dots - Se puede crear una página de calibración con
deda_anonmask_create -w - Se puede usar una versión anonimizada de los puntos de rastreo o copiarla con
deda_anonmask_create --copy
- Se pueden crear puntos de rastreo propios con
- Un error de instalación relacionado con
x86_64-linux-gnu-gccpuede deberse a la dependencia eel necesaria para la GUI- Comando sugerido:
sudo apt-get install build-essential autoconf libtool pkg-config python3.6-dev gcc && pip3 install --user eel
- Comando sugerido:
- Si las operaciones con PDF se bloquean por la política de seguridad con
wand.exceptions.PolicyError, la causa puede ser la configuración de ImageMagick- Elimina Wand o agrega la siguiente política justo antes de
</policymap>en/etc/ImageMagick-*/policy.xml<policy domain="coder" rights="read | write" pattern="PDF" />
- Enlace de referencia relacionado: ImageMagick security policy PDF blocking conversion
- Elimina Wand o agrega la siguiente política justo antes de
1 comentarios
Opiniones en Hacker News
Nuestro equipo usó estos puntos amarillos de rastreo hace más de 10 años en el DARPA Shredder Challenge para reconstruir documentos triturados.
Se puede ver cómo el programa resalta los puntos mientras va encajando los documentos triturados: https://www.youtube.com/watch?v=uzZDhyrjdVo
Gracias a eso pudimos ganar por un amplio margen.
Ver la historia posterior me hizo recordar algo que tenía olvidado, y fue bastante curioso.
Parece algo que merecería su propio artículo tanto como el algoritmo de resolución, y supongo que hace falta cierto tipo de personalidad para aguantar semejante desastre.
Hace poco, por razones que no puedo detallar aquí, tuve que mirar un poco los puntos de rastreo.
Conviene iluminar impresiones a color con una linterna LED azul. Es impactante ver la enorme cantidad de puntos repartidos por toda la página, como si hubieran esparcido arena sobre ella.
Si mi impresora no imprime puntos de rastreo, la idea de poder falsificar los puntos de rastreo de otra impresora resulta bastante interesante desde el punto de vista de la negación plausible.
Aunque, incluso en ese caso, parece que haría falta acceso a la impresora original para imprimir la máscara anónima.
Hoy en día quizá se pueda acceder a eso de forma remota mediante la configuración de la impresora.
Tal vez puedas engañar a alguien que haga un análisis superficial, pero un investigador experto probablemente notaría algo como: “los puntos de rastreo claramente son de la marca X, pero el ráster usado en la escala de grises es obviamente de Y”.
Si se perdieron un artículo interesante relacionado, está aquí: https://news.ycombinator.com/item?id=42880704
Lo más interesante es que la persona que publicó el hallazgo y el análisis ya había gastado miles de dólares en cartas falsas, así que aun pudiendo salir perjudicada personalmente, hizo públicos los resultados.
Me pregunto qué pasa si se imprime la misma página en varias impresoras.
Si la primera impresora imprime el contenido real y las otras solo agregan cantidades mínimas en las zonas que siguen blancas, ¿una impresora estropearía los puntos de rastreo de la otra?
Aunque, según las condiciones concretas, quizá todavía se puedan leer algunos o todos.
Empiezo a pensar que a la casa del nerd que inicie un proyecto tipo OpenWRT para impresoras le va a caer el MIB.
La idea sería que no se puede permitir una expresión no rastreable y que hay que poder atacar quirúrgicamente el origen de los memes incómodos. Por eso uso una impresora láser monocromática comprada en craigslist, en una VLAN separada, con un servidor CUPS de por medio.
Nadie dio un consentimiento suficientemente informado sobre lo que Niantic ha hecho durante más de la última década, y nadie consintió que todos los impresos se vuelvan rastreables. En ninguna parte del producto ni del proceso se advierte: “que no haya un identificador visible no significa que no haya identificador; podría haber un identificador esteganográfico”.
Lo mismo ocurre con que las máquinas de propósito general dentro de los productos que compramos estén tan bloqueadas que sus dueños no podamos reutilizarlas como queramos. Hemos llegado a aceptar los insultos de organizaciones comerciales y agencias estatales como “cómete el sándwich de mierda, o no hay sándwich y además te golpean”, y el Consumer Action Taskforce (CAT) de Louis Rossmann se está convirtiendo en una buena antología de estos casos.
Ya es hora de contraatacar. Hay que hackear impresoras decentes, reemplazar el firmware por algo práctico y liberarnos de estas tonterías. Estos puntos de rastreo y otros métodos de rastreo esteganográfico existen para rastrear y silenciar a gente como yo: personas que señalan mecanismos de control ocultos y difunden memes que el enorme calamar de obsidiana ha etiquetado como riesgo informativo o desinformación.
Imprimirlo en papel parece una tontería, porque hasta un operador común de billetes podría detectarlo fácilmente.
Creo que esto va a volverse bastante importante en los próximos años.
Si planeas imprimir volantes o panfletos para una protesta, conviene encargarlo a una imprenta profesional si tienes a alguien de confianza, o como mínimo comprar una impresora en efectivo, no conectarla jamás a Internet y usarla solo por USB con una computadora Linux.
macOS y Windows pueden instalar drivers de impresora automáticamente, y esos drivers podrían comunicarse con la sede central y asociar el ID de la impresora con algún identificador.
También puedes imprimir camisetas.
De verdad me da curiosidad qué proporción de impresoras se puede descifrar con herramientas públicas.
¿Habrá estadísticas sobre los códigos de qué fabricantes ya fueron descifrados?
Hay una copia aquí: https://ericbalawejder.com/assets/hexview/Forensic-Analysis-...
La tabla 1 resume el fabricante, la cantidad de impresoras analizadas y si se encontraron puntos: Brother, 1, no; Canon, 10, sí; Dell, 4, sí; Epson, 8, algunos modelos; Hewlett-Packard, 43, algunos modelos; IBM, 1, sí; KonicaMinolta, 21, algunos modelos; Kyocera, 4, sí; Lanier, 1, sí; Lexmark, 6, algunos modelos; NRG, 1, sí; Okidata, 9, algunos modelos; Ricoh, 6, sí; Samsung, 5, no; Savin, 1, sí; Tektronix, 4, no; Unknown, 1, sí; Xerox, 15, algunos modelos.
Salvo por algunas pistas que describe el artículo, parece que, cuando se encontró un patrón de puntos, en general lo entienden.
¿Las impresoras láser monocromáticas también generan puntos de rastreo?
¿Y cuál es el sentido de este tipo de rastreo? ¿En principio tienen que rastrearse todos los rincones de nuestra vida?
Es demasiado valioso para la seguridad nacional esparcir información de procedencia en todo. Siempre se invoca la seguridad, e inmediatamente viene el “pero ¿qué daño hace?, si no estás haciendo nada que no debas… ¿verdad?”.
Si el uso principal es rastrear falsificadores de billetes, entonces no hace falta en impresoras monocromáticas y por eso no se incluye.
Esta lista no se actualiza desde 2017 y probablemente haya sido una deducción de una persona a partir de solicitudes FOIA. Parece que habrá que esperar hasta la próxima vez que una universidad china publique secretos del gobierno estadounidense.
Hace décadas trabajé en software que ocultaba información ajustando el kerning de los caracteres, pero, hasta donde sé, ese proyecto no llegó a nada relevante.
Esto también puede interesar: https://en.wikipedia.org/wiki/EURion_constellation
Lamentablemente hay muy poca información pública al respecto: http://www.cl.cam.ac.uk/users/sjm217/projects/currency/