Fingerprinting WebGPU: următoarea generație după Canvas și WebGL
WebGPU expune capacități hardware mai profunde decât Canvas și WebGL la un loc — și este deja disponibil în Chrome, Edge și Firefox. Ce dezvăluie și de ce va înlocui tehnicile mai vechi de fingerprinting în 2–3 ani.
WebGPU a ajuns în Chrome 113 în 2023. Până în 2026 este disponibil în toate browserele majore, pe toate platformele majore. Spre deosebire de WebGL — un API de browser care împacheta OpenGL ES 2.0 — WebGPU este o interfață directă către API-urile grafice moderne: Vulkan pe Linux, Metal pe macOS, DirectX 12 pe Windows.
Asta schimbă ce poate afla un browser despre hardware-ul de dedesubt. Fingerprintingul prin Canvas și WebGL se baza pe rezultatele randării. WebGPU permite interogarea directă a capacităților plăcii video, expunând detalii de arhitectură pe care rezultatul randării abia le poate sugera.
Pentru fingerprinting, este un salt în calitatea semnalului.
Ce expune WebGPU și WebGL nu
Suprafața de diagnostic a WebGL este limitată. Cea mai utilă parte este extensia WEBGL_debug_renderer_info, care returnează șirurile de producător și de renderer — adesea falsificate de browserele antidetect sau eliminate de funcțiile de confidențialitate.
WebGPU oferă obiectele GPUAdapter și GPUAdapterInfo, cu date substanțial mai bogate:
- Vendor — identificatorul producătorului plăcii video (NVIDIA, AMD, Intel, Apple, Qualcomm).
- Architecture — familia de arhitectură a plăcii video (Ampere, RDNA 2, Xe-LP, Apple M2, Adreno).
- Device — modelul concret, acolo unde este disponibil.
- Description — un șir lizibil pentru om.
Dincolo de identificare, WebGPU expune limitele plăcii video — capacitățile numerice exacte ale hardware-ului. Pot fi interogate prin interfața GPUSupportedLimits și includ peste 30 de proprietăți numerice:
- Dimensiunile maxime ale texturilor —
maxTextureDimension2D - Dimensiunea maximă a bufferului —
maxBufferSize - Numărul maxim de bind groups —
maxBindGroups - Dimensiunile maxime ale compute workgroup
- Numărul maxim de atribute de vertex
- Cerințele de aliniere pentru storage buffers
Fiecare dintre aceste valori este stabilită de driverul plăcii video în funcție de capacitatea hardware-ului. Generații diferite de GPU, chiar de la același producător, au combinații diferite de limite. O placă video din 2019 are alte limite decât una din 2023 din aceeași familie.
De ce e mai greu de falsificat
Browserele antidetect falsifică Canvas și WebGL interceptând apelurile de API și modificând rezultatele. Canvas returnează hash-uri ale pixelilor randați — browserul poate randa, apoi schimbă hash-ul. WebGL este interogat pentru un număr mic de șiruri, care pot fi înlocuite în bloc.
WebGPU este altceva. Suprafața API-ului este mare — sute de metode și proprietăți. Fiecare apel are nevoie de o valoare returnată plauzibilă. Un strat de falsificare trebuie:
- Să prezinte o identitate coerentă pe toate limitele numerice — o placă video care pretinde a fi NVIDIA RTX 4090 trebuie să returneze fiecare valoare de limită potrivită acelui hardware.
- Să facă față execuției reale a calculelor. WebGPU permite rularea shaderelor de calcul. Dacă stratul de falsificare pretinde performanță ridicată, dar livrează calcule lente, nepotrivirea se vede din timpi.
- Să urmărească evoluția de la o versiune de driver la alta. Fiecare versiune de driver are limite ușor diferite. Tabelele statice de falsificare se învechesc odată cu apariția driverelor noi.
Hardware-ul real oferă toate acestea gratuit. Falsificarea hardware-ului presupune întreținerea unei baze de date cu combinațiile reale de limite pentru fiecare model de GPU și fiecare versiune de driver — o povară de mentenanță continuă pe care majoritatea browserelor antidetect nu și-au asumat-o încă.
Performanța de calcul ca amprentă
WebGPU permite rularea în browser a unor shadere de calcul arbitrare. Astfel, sistemele de detecție pot executa sarcini standardizate și pot măsura cât durează.
Un benchmark de spargere a hash-urilor, o înmulțire de matrice sau o sarcină de calcul apropiată de randare rulează toate cu viteze determinate de hardware. Doi vizitatori care pretind același model de GPU, dar livrează performanțe de calcul diferite, mint despre hardware.
Tehnica ocolește complet falsificarea statică a amprentei. Un vizitator poate pretinde orice șir de GPU dorește. Nu poate pretinde o performanță de calcul pe care nu o are.
Compromisul ține de experiența utilizatorului. Rularea unui shader de calcul în fundal consumă cicluri de GPU și poate fi percepută ca lentoare. Asta limitează cât de agresiv poate fi folosită tehnica — de obicei ca verificare unică pe sesiunile suspecte, nu ca monitorizare continuă.
Disponibilitatea funcțiilor ca semnal
WebGPU expune funcții opționale prin GPUAdapter.features. Unele plăci video acceptă extensii specifice:
timestamp-query— necesită o placă video modernă cu contoare de performanțăshader-f16— virgulă mobilă cu precizie înjumătățită, frecventă pe GPU-urile mobiletexture-compression-bc— Block Compression, standard pe desktoptexture-compression-etc2— format mobil de comprimare a texturilortexture-compression-astc— format mobil de comprimare a texturilor
Setul de funcții este determinist pentru fiecare model de GPU. O mașină Windows care pretinde funcții mobile Adreno este prinsă. Un dispozitiv mobil care pretinde formate de comprimare existente doar pe desktop este prins.
Coerența cu WebGL
Înainte de WebGPU, browserele aveau o singură suprafață principală de interogare a plăcii video: WebGL. Acum au două și trebuie să fie de acord.
WebGL și WebGPU expun aceeași placă video. Răspunsurile lor trebuie să fie coerente. Un browser care raportează NVIDIA RTX 4080 prin WebGL, dar returnează limite WebGPU potrivite unei plăci Intel integrate, este imposibil pe hardware real.
Coerența dintre API-uri este încă un semnal pentru detecție. Falsificarea unui singur API este simplă. Falsificarea a două API-uri într-un mod reciproc coerent este semnificativ mai grea — iar browserele antidetect actuale în mare parte nu o fac.
Ce dezvăluie WebGPU despre sistem și driver
Dincolo de identificarea plăcii video, WebGPU expune contextul stivei grafice:
- Pe Windows, WebGPU poate arăta dacă se folosește Direct3D 11 sau Direct3D 12, ceea ce se corelează cu versiunea sistemului și cu epoca driverului.
- Pe macOS, versiunea de Metal acceptată dezvăluie versiunea de macOS — pentru că versiunile de Metal vin odată cu actualizările sistemului.
- Pe Linux, nivelurile de suport Vulkan dezvăluie distribuția și originea driverului (de exemplu, NVIDIA proprietar față de Mesa open-source).
Niciunul dintre aceste semnale nu este direct — fiecare cere interpretare. Împreună însă construiesc o imagine a stivei software care ar trebui să se coreleze cu amprenta de browser raportată. Nepotrivirile indică falsificare.
Calendarul adopției în stivele de detecție
În 2026, fingerprintingul WebGPU nu este încă o tehnică de detecție de masă, din trei motive:
- Suportul din browsere încă se stabilizează. WebGPU în Firefox a apărut în 2024, dar cu acoperire limitată a funcțiilor. În Safari, WebGPU a apărut în 2024, dar cu alte limite decât în Chrome. Sistemele de detecție au nevoie de acoperire largă înainte să se bazeze pe semnalele WebGPU.
- Suportul real pentru WebGPU la utilizatori este încă incomplet. Dispozitivele mai vechi nu au plăci video care să accepte funcțiile WebGPU. Un sistem de detecție care penalizează vizitatorii fără WebGPU riscă să blocheze utilizatori legitimi aflați pe hardware de cinci ani.
- Browserele antidetect nu au construit încă falsificarea completă a WebGPU, ceea ce înseamnă că semnalele bazate pe WebGPU sunt acum eficiente împotriva atacatorilor sofisticați convinși că și-au ascuns urmele. Asta se va schimba pe măsură ce detecția se răspândește, iar uneltele de falsificare răspund.
Orizontul de adopție de 2–3 ani este realist. Până în 2027–2028, semnalele WebGPU vor fi la fel de centrale pentru detecția boților precum este WebGL astăzi. Întrebarea pentru echipele de detecție este când să înceapă colectarea datelor WebGPU — iar răspunsul este acum, ca baza istorică să existe în momentul în care aceste semnale devin principale.
Ce înseamnă asta pentru apărători
Fingerprintingul prin Canvas este o tehnică matură. Fingerprintingul prin WebGL este o tehnică matură. Ambele sunt falsificate activ de uneltele antidetect, cu un succes rezonabil.
Fingerprintingul prin WebGPU este o tehnică tânără. Uneltele de falsificare nu au ținut pasul. Asta creează o fereastră — probabil 18–36 de luni — în care semnalele WebGPU separă curat utilizatorii reali de boții sofisticați. Merită investit în acea fereastră.
Semnalele produse sunt, în plus, structural mai greu de falsificat decât Canvas sau WebGL. Randarea poate fi interceptată. Performanța de calcul, nu. Despre seturile de funcții se poate minți, dar nu coerent pe toată suprafața API-ului. Fiecare generație de tehnici de fingerprinting crește costul falsificării. WebGPU îl crește substanțial.
Pentru platformele care iau în serios detecția boților în 2026 și după, WebGPU este direcția în care se mută semnalul.