Bachelor's Thesis

Evaluation of Little Lies in Browser Fingerprinting

Final Thesis 1.76 MB

Author of thesis: Volodymyr Kaznacheiev

Acad. year: 2025/2026

Supervisor: Ing. Libor Polčák, Ph.D.

Reviewer: Ing. Jan Pluskal, Ph.D.

Abstract:

Online tracking has increasingly migrated toward browser fingerprinting, heavily relying on the HTML5 Canvas API. To defend user privacy, modern tools employ "Little Lies" (noise injection) to slightly spoof the extracted data. However, advanced trackers now use noise-reduction to bypass basic noise, forcing protections to balance between stealth, visual quality, and attack resistance. This thesis evaluates existing protections, specifically Brave Shields and JShelter, and introduces two alternative algorithms: Spatial Pixel Permutation and Perceptually-Adaptive Smart Pixel Permutation.
The evaluation reveals a strict trade-off: Brave maintains perfect visual quality but is easily reversed, whereas JShelter provides strong attack resistance at the cost of higher processing overhead. The proposed Smart Pixel Permutation successfully navigates this trade-off. By utilising the Oklab perceptual colour space, it preserves visual integrity and real-time performance while providing genuine structural resistance against reconstruction attacks, offering a balanced alternative to traditional noise injection.

Keywords:

Browser fingerprinting, fingerprint spoofing, little lies techniques, HTML5 Canvas, pixel permutation, privacy protection, evaluation framework, JShelter

Date of defence

16.06.2026

Result of the defence

Defended (thesis was successfully defended)

znamkaBznamka

Grading

B

Process of defence

Student nejprve prezentoval výsledky, kterých dosáhl v rámci své práce. Komise se poté seznámila s hodnocením vedoucího a posudkem oponenta práce. Student následně odpověděl na otázky oponenta a na další otázky přítomných. Komise se na základě posudku oponenta, hodnocení vedoucího, přednesené prezentace a odpovědí studenta na položené otázky rozhodla práci hodnotit stupněm B.

Topics for thesis defence

  1. RecoveryScore v Tab. 6.7 byl vypočten s váhami z Tab. 6.6 laděnými per-image. Reálný tracker typ vstupního obrázku ale nezná. Jak by se relativní pořadí protekcí (Brave, JShelter, Spatial, Smart) změnilo při jedné jednotné váhové konfiguraci přes všechny obrázky?
  2. V kapitole 4.1.4 přiznáváte, že v high-contrast oblastech Smart Permutation degraduje na LSB-flip fallback převzatý z JShelter. U datasetu T7, který mimickuje canvas-probe FingerprintJS, jaký podíl pixelů skutečně projde perceptual-swap cestou oproti fallback cestě? Má za těchto okolností doporučení "Smart Permutation jako primární layer" smysl, když typické fingerprintové canvasy obsahují právě hard-edge text?
  3. V bodě 5 zadání je explicitně uveden požadavek otestování účinnosti pomocí FingerprintJS. Provedl jste alespoň manuální ověření, že při aktivní Smart Permutation se výstupní visitorId při opakovaných načteních stránky liší mezi sessions, ale zůstává konzistentní v rámci jedné session? Jaký byl výsledek?
  4. Myslíte si že vaše práce může být nasazena v praxi? Jaké je její reálné využití?

Language of thesis

English

Faculty

Department

Study programme

Information Technology (BIT)

Composition of Committee

prof. Ing. Adam Herout, Ph.D. (předseda)
doc. Ing. Michal Bidlo, Ph.D. (místopředseda)
Ing. Jaroslav Dytrych, Ph.D. (člen)
Ing. Ivana Burgetová, Ph.D. (člen)
Dr. Ing. Petr Peringer (člen)

Supervisor’s report
Ing. Libor Polčák, Ph.D.

Pan Volodymyr Kaznacheiev pracoval průběžně a aktivně. V tématu práce se dobře orientuje. Téma považuji za náročné.

Evaluation criteria Verbal classification
Informace k zadání

Práce navazuje na projekty řešené mj. v rámci FIT týkající se rozšíření JShelter. Cílem práce bylo posoudit chování JShelteru z různých hledisek včetně detekovatelnosti, dopadů na výkon a reverzibility ochrany. Odevzdaný výsledek očekávání naplnil. Domnívám se, že by šlo pochopitelnost a přesnost práce (např. v jednom místě se píše "JShelter does not adapt its noise to the image content" a bylo myšleno "adapt the noise generation algorithm") vylepšit, ale na druhou stranu je třeba posoudit náročnost zadání, kdy student musel zkombinovat počítačovou grafiku, webové technologie, bezpečnost a ochranu soukromí. Student aktivně zkoumal zdrojové kódy JShelteru i prohlížeče Brave.

Práce s literaturou

Student využíval doporučené materiály a vlastními silami vyhledával další.

Aktivita během řešení, konzultace, komunikace

Komunikace probíhala průběžně, student byl vždy připraven, v tématu se orientoval a na rady a doporučení dbal.

Aktivita při dokončování

Technickou část zprávy jsem viděl dopředu, zaslal jsem poznámky, na které student reagoval a zejména evaluační část značně vylepšil. I tak se domnívám, že by se text a provedené pokusy daly ještě vylepšit.

Publikační činnost, ocenění

Smyslem práce bylo dodat podklady k zamyšlení. což se podařilo.

Points proposed by supervisor: 95

Grade proposed by supervisor: A

Reviewer’s report
Ing. Jan Pluskal, Ph.D.

Student se úspěšně vypořádal s obtížnějším úkolem vyhodnotit účinnost technik drobných lží při ochraně proti otisku prohlížeče. Navrhl dva alternativní algoritmy založené na permutaci pixelů, z nichž Smart Permutation s využitím perceptuálně uniformního barevného prostoru Oklab představuje skutečný vlastní přínos. Vytvořil funkční evaluační framework měřící detectability, reversibility, visual quality a performance, výsledky interpretuje s pochopením trade-offů. Doporučení pro vývoj JShelter (sekce 6.4) je konkrétní a zaslouží si pozornost vývojářů. Realizační výstup hodnotím jako velmi dobrý, k formální úpravě (chybějící povinný rozšířený abstrakt a příloha s obsahem média) a k práci s literaturou (nekonzistentní citační norma, chybějící bibliografické údaje) mám výhrady, k čemuž se přidává jen částečné splnění bodů 2 a 5 zadání. Práci doporučuji hodnotit stupněm C jako dobrou.

Evaluation criteria Verbal classification Points
Náročnost zadání

Evaluation level: obtížnější zadání

Cílem práce bylo zhodnotit účinnost technik drobných lží (noise injection, "farbling") při obraně proti otisku prohlížeče založenému na Canvas API, navrhnout alternativní algoritmy a porovnat je s existujícími řešeními JShelter a Brave Shields. Zadání vyžaduje kombinaci znalostí z oblasti soukromí na webu, interních mechanismů prohlížečů (Canvas, WebGL, Web Audio API), zpracování obrazu (SSIM, MSE, PSNR, perceptuální barevné prostory typu Oklab) a inženýrského návrhu evaluačního prostředí. Vzhledem k výzkumné povaze tématu, nutnosti samostatně navrhnout vlastní protekční algoritmy a návaznosti na probíhající projekt JShelter považuji zadání za obtížnější.

Prezentační úroveň technické zprávy

Kapitoly logicky navazují: teorie - existující řešení - návrh - implementace - vyhodnocení. Velmi kladně hodnotím, že student v kapitole 6 čísla nejen prezentuje, ale i vysvětluje, proč se algoritmy chovají jinak na různých typech vstupů (Tab. 6.3, 6.5, 6.10), a v sekci 6.4 explicitně pojmenovává trade-offy vůči JShelter. Výhrady mám k následujícím aspektům. Jednotlivé úvody kapitol a sekcí neobsahují stručný popis obsahu, což znesnadňuje čtení - např. kapitola 2 skáče přímo do sekce 2.1 bez návětí, sekce 5.5 (Data Persistence) obsahuje jedinou podsekci 5.5.1 a žádný úvodní text, což odporuje základnímu typografickému pravidlu (členit do podsekcí jen při dvou a více). Postrádám jasnější oddělení kapitoly 4 (Design) od kapitoly 5 (Implementation) - sekce 5.3 a 4.1.3 se v popisu Smart Permutation částečně překrývají. Poměr rozsahu kapitol je nestandardní: kapitola 6 (Evaluation) o rozsahu 13 stran převažuje nad kapitolami 4 (Design, 7 stran) a 5 (Implementation, 9 stran) dohromady, což pro bakalářskou práci nepovažuji za vyvážené. Návrh i implementaci by bylo vhodné rozšířit zejména o popis pracovního postupu, alternativ, které autor zvažoval a zamítl, a o detail integrace čtyř extraction cest do jednotného Promise rozhraní.

65
Formální úprava technické zprávy

Práce je psána v anglickém jazyce, což podporuje diseminaci výsledků, leč místy je možné spatřit drobnou těžkopádnost v použití cizího jazyka (např. úvody kap. 4.1.2 a 4.1.3). Díky LaTeXové šablonce je práce typograficky korektní až na drobnosti: absence nezlomitelných mezer před citacemi a u jednotek (např. str. 35, 41), nekonzistentní notace bloku N v matematickém režimu vs. textu. Z formálních náležitostí předepsaných směrnicí děkana č. 7/2018 v práci chybí povinný rozšířený abstrakt, dále chybí příloha s popisem obsahu přiloženého média a struktury odevzdaného repozitáře. Velmi kladně hodnotím transparentnost při použití AI nástrojů: student v prohlášení i v poznámce pod čarou v sekci 4.1.3 přiznává využití modelu Gemini při formalizaci kroků navrhovaného algoritmu.

70
Realizační výstup

Realizovaný výstup je rozdělen na frontend (Vue 3 SPA) a backend (Python FastAPI s SQLite), přičemž výpočetní logika je oddělena do src/libs/ (canvas-utils.js, image-metrics.js, protection-logic.js). Toto oddělení je odůvodněné a usnadňuje opakované měření odstíněné od DOM redraws (sekce 5.1.3). Oceňuji návrhovou volbu Source vs. Environment protection mode (sekce 4.2.1), která čistě odděluje protekce pracující nad raw pixelovým bufferem od protekcí zachytávajících na úrovni browser API. Vlastní algoritmus Smart Permutation s využitím Oklab metriky a dvouúrovňového prahu (epsilon_max, epsilon_safe) považuji za netriviální přínos.

Výhrady mám k následujícím aspektům. Jednotkové testy evaluačního frameworku a image-metrics.js v odevzdané práci nejsou přiloženy. Váhy pro RecoveryScore (Tab. 6.6) jsou laděny per-image, což činí čísla v Tab. 6.7 silně závislá na předznalosti vstupu, kterou reálný tracker nemá. Worst-case 16.1 ms Smart Permutace u canvasu 200 x 200 px nedává prostor pro větší canvasy ani pro aplikační logiku stránky, a sample size 25 opakování pro p95 odhad je dolní hranicí toho, co lze považovat za statisticky stabilní.

88
Využitelnost výsledků

Výsledky práce jsou přímo použitelné pro výzkumnou skupinu kolem projektu JShelter (UIFS FIT VUT), kde mohou sloužit jako podklad pro návrh hybridního modelu (Smart Permutation pro vícebarevné scény, LSB pro text a high-contrast bloky), jak student navrhuje v sekci 6.4. Evaluační framework je dále použitelný pro budoucí experimenty s alternativními canvas-protekcemi.

Rozsah splnění požadavků zadání

Evaluation level: zadání téměř splněno s drobnými výhradami

Student vypracoval funkční evaluační framework, navrhl dva alternativní protekční algoritmy (Spatial a Smart Pixel Permutation) a porovnal je s nástroji Brave Shields a JShelter ve čtyřech dimenzích. Body 1, 3, 4 a 6 zadání považuji za splněné. K bodu 2 mám výhradu: PriVaricator a FPRandom jsou v kapitole 3 popsané pouze teoreticky, do experimentálního srovnání nevstoupily. K bodu 5 mám výhradu: práce používá pouze repliku canvas-probe knihovny FingerprintJS v datasetu T7, vlastní FingerprintJS a její visitorId hash v evaluaci použity nejsou. Zadání bylo splněno s drobnými výhradami.

Rozsah technické zprávy

Evaluation level: je v obvyklém rozmezí

Hlavní text práce činí cca 57 normostran, což je v obvyklém rozsahu pro bakalářskou práci.

Práce s literaturou

Bibliografie obsahuje 24 zdrojů, které pokrývají problematiku od základních prací (Eckersley, Mowery a Shacham, Wang et al. k SSIM) až po recentní zdroje (Snyder et al. k Brave, Polčák et al. k JShelter, Vastel et al. k FP-STALKER, W3C Mitigating Browser Fingerprinting). Oceňuji, že student v textu rozlišuje, které algoritmické detaily JShelter přebírá z konkrétních částí zdrojového kódu (poznámky pod čarou na str. 12, 41). Výhrady mám k citační normě: formát zdrojů označených přípiskem "online" není konzistentní s ČSN ISO 690, knižní zdroj [11] postrádá ISBN, zdroj [3] nemá autora ani datum vydání.

65
Topics for thesis defence:
  1. V bodě 5 zadání je explicitně uveden požadavek otestování účinnosti pomocí FingerprintJS. Provedl jste alespoň manuální ověření, že při aktivní Smart Permutation se výstupní visitorId při opakovaných načteních stránky liší mezi sessions, ale zůstává konzistentní v rámci jedné session? Jaký byl výsledek?
  2. RecoveryScore v Tab. 6.7 byl vypočten s váhami z Tab. 6.6 laděnými per-image. Reálný tracker typ vstupního obrázku ale nezná. Jak by se relativní pořadí protekcí (Brave, JShelter, Spatial, Smart) změnilo při jedné jednotné váhové konfiguraci přes všechny obrázky?
  3. V kapitole 4.1.4 přiznáváte, že v high-contrast oblastech Smart Permutation degraduje na LSB-flip fallback převzatý z JShelter. U datasetu T7, který mimickuje canvas-probe FingerprintJS, jaký podíl pixelů skutečně projde perceptual-swap cestou oproti fallback cestě? Má za těchto okolností doporučení "Smart Permutation jako primární layer" smysl, když typické fingerprintové canvasy obsahují právě hard-edge text?
Points proposed by reviewer: 78

Grade proposed by reviewer: C

Responsibility: Mgr. et Mgr. Hana Odstrčilová