Váš prohlížeč je identifikovatelný i bez cookies

2. 3. 2010
Doba čtení: 7 minut

Sdílet

Hlídáte si na internetu soukromí? Používáte TOR, anonymní VPN nebo anonymní proxy? Promazáváte nebo vůbec nepoužíváte cookies a vyřadili jste Flash s jeho „supercookie“? Vypínáte javascript? V tom případě by vás mohlo zajímat, že existuje způsob, jak identifikovat váš prohlížeč pomocí dalších informací.

Při každém požadavku na webovou stránku odesílá prohlížeč celou řadu údajů, které mají stránce pomoci k nalezení optimálního kódu pro odeslání prohlížeči. Web například může použít informaci o tom, že uživatel používá Internet Explorer 6, k tomu, aby místo průhledných PNG obrázků poslal obrázek obyčejný neprůhledný a průhlednost zajistil pomocí ActiveX. Nebo se může podívat, jestli uživatelův prohlížeč podporuje javascript, a když ne, zobrazí mu stránku, ať si jde jinam. Nebo se může rozhodnout, jestli má uživateli poslat hodně animovanou stránku ve Flashi nebo jen základní v HTML. Možností je celá řada a není pochyb, že při vhodném použití budou pro uživatele přínosem. Lidé z EFF (Eletronic Frontier Foundation) se ovšem zaměřili na méně přínosné použití – zkoumali, jestli lze tyto informace („uživatel používá prohlížeč X“, „Uživatel preferuje češtinu, ale přijme i anglický dokument“ nebo „Uživatel používá rozlišení obrazovky 1600×1200 bodů“) použít k identifikování konkrétního prohlížeče. A došli k poměrně nepříjemným zjištěním.

Začnu dobrou zprávou: Zcela jednoznačně prohlížeč jen na základě těchto údajů identifikovat nelze. Dál už to ovšem bude horší: Standardní HTTP hlavičky nesou tolik informací, že lze často drasticky omezit množinu, do které prohlížeč patří, a pokud se podaří získat nějaký další doplňující údaj (třeba se podle IP adresy zjistí, že ke stránce přistupujete z malé obce), už to může stačit na jednoznačnou identifikaci. Mám dost velké pochybnosti o závěru EFF, že „v průměru jen 1 člověk z 1500 (210,5) bude mít stejnou identifikaci prohlížeče jako vy“ (nelíbí se mi ten logický pochod, že když „User-agent v průměru nese 10,5 bitů informace“, tak „210,5 lidí používá stejný prohlížeč“), ale faktem je, že co jsem si tak zkoušel, dá se pomocí základních HTTP hlaviček identifikovat poměrně hodně.

Na nově zřízené službě Panopti­click si můžete sami zkusit, jak moc dobře vás může prohlížeč identifikovat. Tohle je třeba výsledek nijak nechráněného Internet Exploreru 6, který mám nainstalovaný ve virtuálním počítači za účelem psaní příspěvků do diskusních fór Lucasarts (kde se každých pár dní snažím dostat k informaci, jestli tedy vyjde nebo nevyjde soundtrack k Monkey Islandu SE):

ID prohlížeče

Z obrazovky je vidět několik nepříjemných zjištění – zejména to, že z více než 580 000 testovaných prohlížečů je tento můj IE6 jedinečně identifikovatelný. To mimo jiné znamená, že i kdybych použil síť TOR nebo anonymizační VPNstejně by mě Panopticlick mohl identifikovat! Ja­ko smrtící se projevuje zejména informace o Flashi – jeho verzí je spousta, takže pokud, tak jako já u tohoto konkrétního prohlížeče, nainstalujete nějakou tehdy dostupnou verzi a pak už ji neaktualizujete, velice rychle se stane výborným identifikačním prostředkem. Následuje seznam systémových fontů (také výsledek práce Flashe – dobrá práce, Adobe!) a HTTP_ACCEPT hlavičky, kde bude zřejmě klíčové hlavně to „cs“ – vzhledem k rozsahu, jakým o webu informovala česká média, se dá očekávat, že návštěvníků z ČR bude dost málo.

Dobře, to byl zastaralý IE6 ve výchozí konfiguraci a se zastaralým Flashem. Moderní prohlížeče si povedou lépe, ne? Jak se to vezme – tady máme český Firefox 3.6 ve standardní konfiguraci na čistých Windows XP SP2:

ID prohlížeče

Nemám pocit, že bych si nějak zásadně pomohl – pořád jsem jedinečně identifikovatelný. Pravda, změnila se struktura informací – teď už mě neprozrazuje Flash, který v tomto prohlížeči nainstalován nemám, ale zase zapracovali pánové od Mozilly s publikováním seznamu pluginů. Všimněte si také, jak pěkně detailní jsou Accept hlavičky. Na srovnání s Firefoxem ve stejné verzi a na stejném počítači, ale v anglickém jazyce, je vidět určité zlepšení, zejména dramaticky poklesla identifikovatelnost pomocí hlavičky User-agent – to „cs“ je proklatě zrádné, pokud cestujete po zahraničních webech. Potěšující je, že se stejně anglickým Firefoxem jsme na webu Panopticlicku dva různí uživatelé. Méně potěšující je, že pro jednoznačnou identifikaci by patrně stačilo přiřadit IP adresu ke kontinentu…

ID prohlížeče

Pro příznivce vysloveně menšinových řešení ještě Opera 10.10. Ani poté, co jsem odstranil to prozrazující „cs“, to nedopadlo zrovna slavně:

ID prohlížeče

Jen tak pro zajímavost, zkusil jsem identifikovat i svůj hlavní prohlížeč, ve kterém si dávám na bezpečnosti a soukromí zatraceně záležet – mimo jiné nepřijímám cookies na webech, které jsem si neprověřil, nemám zapnutý javascript, nemám nainstalované žádné pluginy, kterým jsem se mohl vyhnout, prostřednictvím Privoxy falšuji některé HTTP hlavičky včetně User-agent (s odůvodněním, že když už mi někdo má posílat exploity, ať je posílá pro jiný prohlížeč, než používám) atd. Výsledek se dostavil, to musím připustit – se stejně nastaveným prohlížečem jsme z půl milionu uživatelů hned čtyři, to je dvou- až čtyřnásobek čísel zjištěných u standardního nastavení prohlížečů. Že by mě to zrovna naplňovalo nadšením, to tedy říci nemůžu.

Samozřejmě lze argumentovat tím, že na „skutečných“ webech bude složení uživatelů odlišné – speciálně, že dokud se budu s českým prohlížečem držet na českém internetu, budu mnohem anonymnější. Něco na tom je. Jenže za prvé, já se nechci pohybovat jen na českém internetu, a za druhé – ani na českém internetu mi mírně zvýšená anonymita nemusí být moc platná. Jen tak pro legraci jsem se podíval do databáze svého blogu a nechal si vypsat jednotlivé User-agenty (jenom user-agenty, žádnou jinou podpůrnou informaci jsem nezkoumal – ani IP adresu, dokonce ani Accept hlavičky, o kterých už vím, jak moc jsou smrtící) seřazené podle četnosti (příkazem SELECT agent, COUNT(*) FROM wp_wassup GROUP BY 1 ORDER BY 2 DESC). V necelých 160 000 záznamů, které mi WassUp nashromáždil, byl jediný User-agent s více než 10 000 přístupy, a jen čtyři měli přístupů víc než 5 000. Všechna první místa byla ostatně obsazena roboty vyhledávacích enginů; první „opravdový uživatel“ je až na 15. místě s pouhými 1300 přístupy. Hodně? Tak počítejte – 1300 přístupů je 0,8 procenta všech přístupů. WassUp mi hlásí nějakých 300 až 400 unikátních návštěvníků denně (podle toho, jak senzační článek zrovna napíšu), dejme tomu, že relativně pravidelně chodí dvakrát tolik lidí (ha ha, to určitě; ale dejme tomu). 0,8 procenta z 800 lidí je 6,4 člověka. Co to znamená? I když použijete vůbec nejčastější prohlížeč, a i když se spokojím s identifikací pou­ze na základě prohlížeče, dokážu vás zařadit do skupinky o ani ne sedmi lidech. Stačí mi další tři bity informace, abych vás identifikoval jednoznačně. Samozřejmě, pokud budete tak neopatrní a použijete méně častý prohlížeč, budu to mít jednodušší – pokud například nepoužijete prohlížeč v české verzi, tak už se neschováte.

Jak se bránit?

Informace bychom měli. Teď je otázka, co s nimi – jak se bránit? Otázka jednoduchá, odpověď složitá – obecně vzato by mělo být mou snahou skrýt se v davu, to je ale už samo o sobě dost složité a navíc to má nepříjemné bezpečnostní dopady. Proč je to složité? Protože ten dav je na každém webu jiný. Když půjdu na Panopticlick, měl bych se vydávat za uživatele Firefoxu v angličtině (protože to je podle jejich zjištění nejčas­tější prohlížeč); když půjdu kamkoliv v ČR, určitě bych v hlavičkách měl zobrazovat, že jazykem prohlížeče je čeština. Zřejmě bych tedy měl používat nějaký filtr, který hlavičky upraví podle webu, na který směřují, jenže žádný takový neznám. Špatným řešením by každopádně bylo hlavičky mazat úplně (protože prakticky každý prohlížeč je posílá, takže neposlat nic automaticky znamená stát se bílou vránou) a ještě horším je jen pročistit o „kritické položky“ jako to „cz“ (protože když už někdo Agenta falšuje, tak celého, ne jen kousky – tím bych se stal vránou žluto-zelenou). Nadějně vypadalo maskování se za GoogleBota, až na to, že spousta webů GoogleBotovi podstrkává upravený obsah, ve kterém se nedá pořádně číst. EFF doporučuje mas­kovat se za některého z mobilních klientů (třeba za Safari na iPhone) – ne snad, že by jich bylo tolik, ale vyskytují se jen v několika málo verzích, takže se mezi nimi špatně rozlišuje. Uvidím, vyzkouším…

Druhá nepříjemnost obrany je to, že má negativní dopady na bezpečnost. Flash, javascript a cookies vypínají podle statistik maximálně jednotky procent uživatelů, které se tím automaticky zařazují do určité skupiny. Pokud se chci skrýt v davu, měl bych jít s většinou a mít tyto technologie povolené – stačí pohled na Secunii a každý správný paranoik ví, že tudy cesta nevede (pro představu: asi před dvěma lety jsem si dělal průzkum mezi tehdy dostupnými závažnými a kritickými chybami ve Firefoxu; skoro 90 % z nich by s vypnutým javascriptem nemohly fungovat. Jestli si myslíte, že se situace od té doby zlepšila, klidně si to myslete dál…). Nehledě na to, že povolením javascriptu zase dovolím prohlížeči, aby o mně prozrazoval instalované pluginy a jejich verze.

bitcoin_skoleni

Momentálně mi jako nejlepší cesta připadá upravit si Privoxy tak, aby mělo nadefinovaných pár desítek až stovek platných kombinací hlaviček a každou hodinu nebo dvě si náhodně vybíralo, kterou použije – díky tomu sice budu identifikovatelný, ale jen pár minut. A nebo že bych se na soukromí vykašlal úplně? To bude možná vůbec nejlepší cesta – stejně se skrývat nepotřebuju, je to čistě akademický problém, jak moc paranoidním se člověk může stát, aniž by skončil na psychiatrii…


Článek byl původně napsán pro blog Pepak.net.