Ochrana proti sledování ve Firefoxu 42: jak přesně funguje?

30. 11. 2015
Doba čtení: 5 minut

Sdílet

Nedávno vydaný Firefox 42 přinesl novinku v podobě ochrany proti sledování, která je součástí anonymního režimu. Ta blokuje domény, které jsou využívány ke sledování uživatelů napříč webem. Automaticky tak dělá to, na co byla doposud potřeba rozšíření jako například Ghostery. Jak přesně ochrana funguje?

Nedávno vydaný Firefox 42 nabízí uživatelům dvě novinky, které se týkají soukromí a obtěžování některými weby: vypnutí zvuku v hlučných panelech a ochranu proti sledování v anonymním režimu. Zmíněná ochrana dělá alespoň částečně to, co od „anonymního režimu“ očekávají běžní uživatelé – anonymizaci.

Mnoho uživatelů si skutečně myslí, že anonymní režim nějakým způsobem na internetu zakryje jejich identitu a že tedy funguje podobně jako TOR. Pravdou ale je, že jen vytvoří nové sezení bez uložených cookies a neukládá historii. Nová ochrana proti sledování stále uživatele neanonymizuje před navštívenou službou, ale omezuje služby třetích stran, které sbírají informace napříč webem.

Z uživatelského hlediska je chování jednoduché: pokud se načtená stránka snaží získat další obsah z domény používané pro sledování uživatelů, je toto načítání zablokováno a v adresním řádku se objeví štít.

Pokud chcete zjistit, které položky byly zablokovány, navštivte konzoli a podívejte se na oznámení v panelu Bezpečnost.

Pokud chcete pro konkrétní web tuto ochranu vypnout, stačí kliknout v adresním řádku na ikonku štítu a klepnout na tlačítko „Zakázat ochranu pro tuto relaci“. Jelikož se v anonymním okně neukládá žádná historie, použije se volba jen pro tuto chvíli. Při novém otevření anonymního okna bude funkce zapnutá na všech webech.

Jednotlivé domény jsou blokovány na základě seznamu adres, které si prohlížeč pravidelně stahuje.

Obsah seznamů

Stahování seznamu blokovaných stránek je už ve Firefoxu implementováno v rámci ochrany proti phishingu a používá protokol Safe Browsing v2.2. Každá URL v seznamu je reprezentována hashem ( SHA-256) a jejich seznam je pravidelně stahován a ukládán v uživatelském profilu v adresáři

  • ~/.cache/mozilla/firefox/XXXX/safebrowsing/mozstd-track* na Linuxu
  • ~/Library/Caches/Firefox/Profiles/XXXX/safebrowsing/mozstd-track* na OS X
  • C:\Users\XXXX\AppData\Local\mozilla\firefox\profiles\XXXX\safebrowsing\mozstd-track* ve Windows

Pokud se chcete na hashe podívat, můžete použít sbdbdump script, jehož výstup vypadá takto:

$ ~/sbdbdump/dump.py -v .
- Reading sbstore: mozstd-track-digest256
[mozstd-track-digest256] magic 1231AF3B Version 3 NumAddChunk: 1 NumSubChunk: 0 NumAddPrefix: 0 NumSubPrefix: 0 NumAddComplete: 1696 NumSubComplete: 0
[mozstd-track-digest256] AddChunks: 1445465225
[mozstd-track-digest256] SubChunks:
...
[mozstd-track-digest256] addComplete[chunk:1445465225] e48768b0ce59561e5bc141a52061dd45524e75b66cad7d59dd92e4307625bdc5
...
[mozstd-track-digest256] MD5: 81a8becb0903de19351427b24921a772

Název celého seznamu ( mozstd-track-digest256) se používá v nastavení urlclassifier.trackingTable, které najdete v about:config. Nejdůležitější částí výpisu je pak řádek addComplete obsahující hash URL. Uvidíme ho ještě později.

Hledání v seznamech

Jakmile má Firefox načíst obsah z nového zdroje, zahashuje jeho URL a některé jeho další variace. Poté se pokusí tyto hashe vyhledat ve svých seznamech. Pokud shodu nenalezne, začne stahování. Pokud je ovšem hash nalezen, proběhne další kontrola proti párovacímu seznamu (pairwise allowlist).

Odkaz na tento seznam je nastaven v urlclassifier.trackingWhitelistTable  a obsahuje něco, čemu Mozilla říká „vztahy entit“. Párují se tu jednotlivé domény, které patří logicky k sobě. Podle tohoto seznamu prohlížeč zjistí, zda jde o načítání obsahu z vlastního zdroje nebo zdroje třetí strany. Například se tu může dozvědět, že twitter.com a twimg.com jsou stejná entita.

Záznamy v tomto seznamu nazvaném mozstd-trackwhite-digest256 vypadají takto:

twitter.com/?resource=twimg.com

To můžeme přeložit jako: „Pokud jsi na twitter.com, neblokuj obsah z twimg.com. Pokud se na tomto druhém listu příslušný záznam nachází, není stahování zablokováno. Jen v případě, že se URL nachází na prvním seznamu a není na druhém, pak je nahrávání zastaveno.

Můžete si to ověřit na testovací stránce. Pokud máte Firefox 42, je aktivní ochrana zobrazena pomocí už zmíněného štítu v adresním řádku. Pokud si otevřete konzoli, uvidíte zablokovanou URL i důvod této blokace.

The resource at "https://trackertest.org/tracker.js" was blocked because tracking protection is enabled.

Vytváření seznamů

Seznamy vytváří Disconnect na základě své definice sledování:

Sledování je sběr, zadržování či sdílení dat týkajících se uživatelské aktivity napříč různými weby či aplikacemi, které nejsou vlastněny sběračem těchto dat.

Celý seznam je k dispozici na GitHubu, ale ve Firefoxu se používá kopie z vlastního repozitáře Mozilly. Podobně také páry entit jsou veřejně ke stažení, ale Mozilla udržuje vlastní kopii. Pokud chcete být informováni o nových položkách, přidejte si do čtečky Atom feed.

Seznamy jsou uloženy ve formátu JSON a pro převod do binární podoby pro prohlížeč je používán vlastní generátor napsaný v Pythonu, který se spouští při každé změně. Pokud jej spustíte lokálně za použití stejné konfigurace, jakou používá Mozilla, můžete si takto vygenerovat vlastní seznamy pro svůj prohlížeč a doplnit si je například o své položky.

Takto vypadá příklad ze záznamu z převodu seznamu mozstd-track-digest256.log:

[m] twimg.com >> twimg.com/
[canonicalized] twimg.com/
[hash] e48768b0ce59561e5bc141a52061dd45524e75b66cad7d59dd92e4307625bdc5

Následuje výstup z generování druhého seznamu mozstd-trackwhite-digest256.log:

[entity] Twitter >> (canonicalized) twitter.com/?resource=twimg.com, hash a8e9e3456f46dbe49551c7da3860f64393d8f9d96f42b5ae86927722467577df

To vám v kombinaci se zmíněným skriptem sbdbdump umožňuje ověřit autenticitu obou seznamů.

Stahování seznamů

Seznamy jsou distribuovány v binární podobě a používá se k tomu serverová komponenta shavar, kterou si Mozilla také sama napsala. Firefox si každou hodinu požádá o aktualizaci na serveru shavar.services.mozilla.com. Pokud jsou k dispozici nová data, je znovu stažen celý binární soubor. V opačném případě server vrací prázdnou odpověď s HTTP kódem 204 (No Content).

Kód serveru je samozřejmě otevřený, takže si jej můžete spustit lokálně podle instalačních instrukcí a poté v prohlížeči v about:config  změnit nastavení tak, aby příslušné položky mířily na vaši instanci:

bitcoin_skoleni

browser.trackingprotection.gethashURL
browser.trackingprotection.updateURL

Ve Firefoxu 43 a pozdějším budou tyto položky přejmenovány:

browser.safebrowsing.provider.mozilla.gethashURL
browser.safebrowsing.provider.mozilla.updateURL

Další čtení

Článek vychází především ze zápisku vývojáře vývojáře Mozilly: François Marier: How Tracking Protection works in Firefox zveřejněném pod CC by-sa. Další podrobnosti naleznete na Mozilla wiki nebo na mailing listu.

Autor článku

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Studoval počítače a média, takže je rozpolcen mezi dva obory. Snaží se dělat obojí, jak nejlépe umí.