Pesquisadores da Universidade Ben-Gurion (Israel), da Universidade de Lille (França) e da Universidade da Austrália desenvolveram uma nova técnica para identificar dispositivos do usuário através da análise do desempenho da GPU em navegadores web. O método, chamado "Drawn Apart", é baseado no uso de WebGL para criar um perfil de desempenho da GPU, permitindo aumentar significativamente a precisão de métodos de rastreamento passivos que funcionam sem cookies e sem a necessidade de armazenar identificadores no sistema do usuário.
Métodos que consideravam as características de renderização, GPU, pilha gráfica e drivers já foram utilizados anteriormente, mas esses eram limitados à distinção de dispositivos apenas entre diferentes modelos de placas gráficas e GPUs, ou seja, podiam ser aplicados apenas como um fator adicional para aumentar a probabilidade de identificação. A característica fundamental do novo método "Drawn Apart" é que ele não se limita a distinguir entre diferentes modelos de GPUs, mas tenta identificar variações entre GPUs idênticas do mesmo modelo, resultantes da heterogeneidade no processo de fabricação de chips projetados para computação paralela massiva. Observa-se que as variações ocorridas durante a fabricação permitem criar moldes únicos para os mesmos modelos de dispositivos.

Foi descoberto que essas diferenças podem ser detectadas através da contagem de blocos de execução e da análise de seu desempenho na GPU. Como primitivos para identificar diferentes modelos de GPUs, foram utilizados testes baseados em um conjunto de funções trigonométricas, operações lógicas e cálculos de ponto flutuante. Para identificar diferenças em GPUs idênticas, foi avaliado o número de threads executadas simultaneamente durante a execução de shaders de vértices. Supõe-se que o efeito identificado é causado por diferenças nas temperaturas e no consumo de energia entre os diferentes exemplares de chips (anteriormente, um efeito semelhante foi demonstrado para CPUs — processadores idênticos executando o mesmo código mostraram diferentes consumos de energia).
Como as operações via WebGL são executadas de forma assíncrona, não é possível usar diretamente a API JavaScript performance.now() para medir o tempo de execução, portanto foram sugeridos três truques para medir o tempo:
- onscreen — renderização da cena em um canvas HTML com medição do tempo de disparo da função de callback, definida através da API Window.requestAnimationFrame e chamada após a conclusão da renderização.
- offscreen — utilização de um worker e renderização da cena em um objeto OffscreenCanvas com medição do tempo da execução do comando convertToBlob.
- GPU — renderização em um objeto OffscreenCanvas, mas usando o timer disponível no WebGL para medir o tempo, que considera a duração da execução do conjunto de comandos do lado da GPU.
No processo de criação do identificador em cada dispositivo, são realizadas 50 verificações, cada uma cobrindo 176 medições de 16 características diferentes. Um experimento, onde foram coletadas informações sobre 2500 dispositivos com 1605 GPUs diferentes, mostrou um aumento na eficácia dos métodos combinados de identificação em 67% ao adicionar suporte ao Drawn Apart. Em particular, o método combinado FP-STALKER, em média, proporcionou identificação por 17,5 dias, enquanto que, em combinação com o Drawn Apart, a duração da identificação aumentou para 28 dias.

- A precisão na separação de 10 sistemas com chips Intel i5-3470 (GEN 3 Ivy Bridge) e GPU Intel HD Graphics 2500 no teste onscreen foi de 93%, enquanto que no offscreen foi de 36,3%.
- Para 10 sistemas Intel i5-10500 (GEN 10 Comet Lake) com placa de vídeo NVIDIA GTX1650, a precisão foi de 70% e 95,8%.
- Para 15 sistemas Intel i5-8500 (GEN 8 Coffee Lake) com GPU Intel UHD Graphics 630, a precisão foi de 42% e 55%.
- Para 23 sistemas Intel i5-4590 (GEN 4 Haswell) com GPU Intel HD Graphics 4600, a precisão foi de 32,7% e 63,7%.
- Para seis smartphones Samsung Galaxy S20/S20 Ultra com GPU Mali-G77 MP11, a precisão de identificação no teste de exibição foi de 92,7%, enquanto para os smartphones Samsung Galaxy S9/S9+ com Mali-G72 MP18 foi de 54,3%.

Observa-se que a precisão foi influenciada pela temperatura da GPU, e em alguns dispositivos, a reinicialização do sistema levou à distorção do identificador. Ao utilizar o método em combinação com outros métodos de identificação indireta, a precisão pode ser significativamente aumentada. A precisão também está prevista para ser elevada através do uso de shaders computacionais após a estabilização da nova API WebGPU.
As empresas Intel, ARM, Google, Khronos, Mozilla e Brave foram notificadas sobre o problema em 2020, mas os detalhes do método foram revelados apenas agora. Os pesquisadores também publicaram exemplos funcionais escritos em JavaScript e GLSL, que podem funcionar com e sem exibição de informações na tela. Conjuntos de dados para classificação das informações extraídas em sistemas de aprendizado de máquina foram publicados para sistemas baseados em GPU Intel GEN 3/4/8/10.
Fonte: opennet.ru
