Forenzní analýza: identifikace tiskárny

Zdroj: SOOM.cz [ISSN 1804-7270]
Autor: infinity :)
Datum: 7.8.2013
Hodnocení/Hlasovalo: 1.36/39

Představte si, že pokaždé, když vytisknete dokument, automaticky je jeho součástí tajný kód, který by mohl být použit k identifikaci tiskárny - a případně k určení osoby, která jí použila. Zní Vám to jako epizoda seriálu CSI: Kriminálka Las Vegas?

Bohužel, tento scénář není smyšlený. V údajné snaze identifikovat padělatele, vyděrače apod., se americké vládě podařilo přesvědčit mnoho největších výrobců barevných laserových tiskáren k použití technologie, která na každou vytisknutou stránku zakóduje identifikační údaje. To znamená, že bez vašeho vědomí, se může tiskárna, kterou používáte v každodenním životě, stát nástrojem pro vládní dohled.

Obecné povědomí je takové, že pod pojmem cybercrime se skrývají zločiny, které se odehrávají ve virtuálním prostoru počítačů a počítačových sítí (tzv. „cyberspace“). Ale pojem cybercrime zahrnuje více než tento prostor.

American Civil Liberties Union v roce 2005 vydala zprávu, odhalující, že FBI od roku 2001 nashromáždila 1,173 stránek z dokumentů různých organizací k širší analýze, včetně identifikace tiskáren. Mezi ně patřily různé nenásilné skupiny, které nejsou vedeny jako teroristické hrozby, mimo jiné například Greenpeace.

A co je horší, nejsou žádné zákony, které by tuto možnost nějakým způsobem regulovaly. Tajné služby mohou sledovat kódy tiskáren a původ dokumentů jak se jim zachce. Domácí nebo zahraniční agentury tak mohou tuto metodu používat bez jakéhokoliv povolení, díky tomu je požadavek na umístění forenzních nástrojů do tiskáren na prvním místě. Bez žádných právních předpisů o shromažďování informací z tiskáren nemohou být u případného soudu vzneseny námitky na ochranu vašeho soukromí. V dnešní době tedy počítejte s možností, že někde existuje databáze tiskáren, kde mohou být obsaženy všechny veřejné tiskárny například v knihovnách, internetových kavárnách, ale i ty z neveřejného sektoru.

Naskýtá se otázka, kam až se dá s touto technologií zajít, kde by například s propojením na Google Book Search mohla mít vláda USA další drahocený zdroj informací o tiskárnách z celého světa.

Tento článek vysvětluje, jak číst datum, čas a sériové číslo z laserového tisku. Tyto informace jsou výsledkem reverzního inženýrství výzkumné organizace EEF.

Informace jsou zakódovány v obdélníkové mřížce tvořené z 15 x 8 miniaturních žlutých teček. Mřížka se vytiskne opakovaně po celé stránce, rovnoběžně s okraji. Odsazení se liší v závislosti na tisknutém textu. Tyto tečky mohou nést informaci o velikosti až 14 7-bitových bajtů + řádek a sloupec na kontrolu chyb. Typicky jsou čtyři z těchto bajtů nepoužity (v závislosti na modelu tiskárny), přičemž zbývajících 10 bajtů obsahuje užitečná data.


Žluté tečky, 60x zvětšeno

Vzhledem k jejich omezenému kontrastu s podkladem, tyto body nejsou viditelné pouhým okem. Mohou být vidět po zvětšení pomocí mikroskopu, nebo při osvětlení stránky modrým světlem. Čistě modré světlo způsobí, že se žluté tečky zobrazí jako černé a lépe viditelné pouhým okem.


Modré světlo, 10x zvětšeno

Na dalším obrázku jsou tečky graficky zvýrazněny většími žlutými tečkami pro lepší viditelnost a schematické znázornění jednotlivých bodů. Vrchní řádek a levý krajní sloupec jsou parity pro korekci chyb. Pomáhají ověřit, že forenzní informace byly přeneseny správně. Jednotlivé bajty (v binární podobě), jsou pak čteny zprava doleva. Očíslované sloupce mají tento význam:



Sériové číslo tiskárny většinou obsahuje šest nebo osm číslic.

Jak otestovat svojí tiskárnu?

Naskenujte vytisknutou stránku minimálně s rozlišením 600dpi. Tečky by jste měli vidět po pouhém zvětšení, ale je lepší provést softwarově separaci barev. Možnosti pomocí free/open source software:


1. V Gimpu jednoduše na kartě kanály vybereme pouze modrou.


2. V Linuxu s programem ImageMagick, pomocí příkazu v konzoli:
$ convert -channel RG -fx 0 scan.png blue.png


3. V Pythonu, pokud máte nainstalovánu Python Imagining Library (PIL):

Image.open(scan.png).split()[2].show()

blue = Image.open(scan.png).split()[2]

blue.point(lambda x: (256-x)**2).show()



Jaké tiskárny jsou takto sledovány?

Seznam tiskáren, kde bylo používání "žlutých teček" potvrzeno, můžete najít zde: www.eff.org