Înapoi la blog

Amprentarea Canvas și protecția: coerența este mai bună decât randomizarea

Amprentarea Canvas transformă diferențele de randare ale acelorași instrucțiuni grafice pe configurații hardware și software diferite într-un identificator și este rareori folosită singură. O abordare rezonabilă nu înseamnă schimbarea valorilor la fiecare acces, ci păstrarea coerenței dintre caracteristicile mediului.

Principiul amprentării Canvas nu este complicat, dar multe dintre metodele de protecție vehiculate fac exact opusul a ceea ce ar fi util.

Aceleași instrucțiuni, rezultate diferite pe dispozitive diferite

Canvas este o componentă de desen oferită de HTML5, pe care o pagină web poate desena forme și text prin scripturi. Aceleași instrucțiuni de desen pot produce mici diferențe de randare pe dispozitive diferite din cauza unor factori de nivel inferior precum sistemul de operare, versiunea browserului, biblioteca de fonturi și driverul grafic. Cu ochiul liber, diferențele aproape că nu se văd, dar după exportarea conținutului canvasului sub formă de date, ele devin valori care pot fi comparate.

Procesul arată aproximativ astfel: pagina desenează mai întâi elemente grafice și text, apoi folosește toDataURL() pentru a exporta rezultatul ca șir Base64. Acest șir poate fi folosit drept identificator. Dispozitivele diferite produc rezultate diferite, astfel că în multe cazuri valoarea este unică. Ștergerea cookie-urilor nu o afectează, iar golirea cache-ului nici atât.

Este rareori folosit singur

O singură valoare Canvas are utilitate limitată și se poate modifica după actualizarea browserului sau a driverului grafic. În practică, Canvas este de obicei combinat cu mai multe caracteristici pentru verificări reciproce:

  • Date grafice precum WebGL, lista de fonturi și modelul plăcii video
  • Date de mediu precum UA, fusul orar, limba și rezoluția ecranului
  • Date de sesiune precum cookie-uri, stocarea locală și ieșirea de rețea

Motivul combinării este verificarea coerenței. Fiecare element luat separat poate părea normal, dar contradicțiile ies în evidență atunci când sunt privite împreună: fusul orar este setat pe Statele Unite, lista de limbi conține doar chineză, iar valoarea Canvas corespunde unei plăci grafice integrate, în timp ce UA declară un dispozitiv nou de top. Platforma nu trebuie să demonstreze cine ești. Trebuie doar să observe că acest set de caracteristici nu seamănă cu o mașină reală.

Dezactivarea te face să ieși în evidență

Prima reacție a multor persoane este să dezactiveze Canvas, dar efectul poate fi exact opus.

Aproape toate browserele utilizatorilor obișnuiți acceptă Canvas. Un mediu care în mod clar nu îl acceptă este o minoritate statistică și practic anunță că a fost aplicat un tratament special. Există și o problemă practică: multe site-uri depind de Canvas pentru decuparea imaginilor, grafice și randarea CAPTCHA. Dacă este dezactivat, funcțiile paginii pot avea probleme și apare încă o anomalie.

O altă metodă este folosirea unui set nou de valori aleatorii la fiecare vizită. Și această direcție are o problemă: amprentele dispozitivelor reale sunt stabile. Un mediu care se schimbă de fiecare dată se comportă diferit de un dispozitiv obișnuit și poate fi mai ușor de izolat și marcat. Randomizarea însăși poate fi un semnal recognoscibil.

Direcția rezonabilă este coerența internă

Este mai apropiat de realitate să urmărești ca elementele din interiorul mediului să fie coerente între ele și ca ansamblul să nu fie anormal, decât să faci totul diferit la fiecare acces.

În practică, caracteristicile ar trebui să se susțină reciproc: fusul orar, limba și locația geografică a IP-ului de ieșire trebuie să se potrivească. Dispozitivul declarat de UA și capacitatea grafică indicată de Canvas și WebGL ar trebui să fie din aceeași categorie. Mediul aceluiași cont trebuie să rămână stabil pe termen lung, fără schimbări evidente la vizite repetate. Evită extensiile care doar dezactivează o anumită funcție, deoarece ele creează adesea caracteristici și mai vizibile. Atunci când este posibil, rularea unui număr mai mic de scripturi terțe reduce suprafața disponibilă pentru colectare.

Dacă mai multe medii trebuie să fie distincte între ele, aceasta este o problemă de izolare a mediilor. Instrumente precum PurpleMark, atunci când izolează medii pentru mai multe conturi, atribuie de obicei fiecărui cont un mediu fix în loc să facă parametrii să varieze aleatoriu, deoarece ceea ce contează pentru platforme este dacă setul de caracteristici rămâne stabil și are sens ca întreg.

Concluzie

Canvas poate fi folosit pentru urmărire deoarece transformă diferențe subtile de hardware și software într-un șir stabil și comparabil. O protecție eficientă nu înseamnă dezactivarea lui și nici schimbarea haotică a valorilor, ci alinierea lui cu celelalte caracteristici ale aceluiași mediu. A părea obișnuit este mai sigur decât a părea neobișnuit.