A identificação de dispositivos permite melhorar a assertividade da autenticação, ao tentar associar um dispositivo "único" a um determinado usuário. Por isso, ela é muito utilizado para detecção e prevenção de fraudes, quando ocorrer um acesso originário de um dispositivo desconhecido, e também é usado para monitoramento e espionagem de usuários, rastreando o acesso do dispositivo que a vítima utiliza.
Esse "fingerprint" deve identificar um equipamento da fora mais única possível, de modo que hajam poucos dispositivos semelhantes. Quanto mais único, mais preciso. A impressão digital de um navegador pode ser criada a partir da coleta de dados sobre a configuração do navegador e do sistema operacional de um usuário quando esse usuário visita um web site. Diversas informações podem ser coletadas sem necessidade de intervenção ou aprovação do usuário, e assim são correlacionadas na tentativa de criar o fingerprint do dispositivo como. Além das informações enviadas no cabeçalho HTTP, várias outras também podem ser utilizadas para este fim, como dados do computador do usuário e até mesmo a lista de plugins utilizados.
O site AmIunique.org, por exemplo, nos permite testar o quanto nosso browser fornece de informação e o quanto isso favorece a nossa identificação.
Esse paper, por exemplo, lista 38 identificadores implícitos que podem ser obtidos dos aparelhos Android que cobrem informações sobre características físicas, da camada de aplicação e da camada de usuário que podem ser utilizados para formar a impressão digital do dispositivo. O interessante é que essas informações podem ser coletadas sem solicitar qualquer permissão.
Um bom sistema para fingerprint de dispositivos deve possuir as características abaixo:
- Diversidade: o principal critério para um algoritmo de impressão digital é saber quantos atributos ele necessita para gerar um fingerprint único. Ele deve aceitar um conjunto de atributos e calcular o fingerprint com uma entropia aceitável. Ou seja, o algoritmo deve aceitar um conjunto de dados diversos o suficiente para prover uma quantidade aceitável de identificações com alta probabilidade de serem únicas;
- Estabilidade: indica quantas vezes uma impressão digital pode alterar seu valor ao longo do tempo. Devemos considerar o número total de mudanças durante a vida do dispositivo, o tempo médio entre as mudanças, uma razão percentual média de quantas amostras foram modificadas para esses dispositivos, etc;
- Tamanho do código - à medida que o número de impressões digitais coletadas aumenta, assim como as bibliotecas necessárias para processamento, o tamanho do código do algoritmo se torna uma limitação - podendo causar impacto na capacidade de incluir esse código em uma aplicação existente (o overload causado), ou até problemas de performance. Impressões digitais podem depender de um processamento demorado, inviabilizando o seu uso;
- Comprimento da impressão digital - quanto maior o tamanho da impressão (em termos de números de caracteres), menor a chance de gerar colisão, porém, haverá a demanda por maior capacidade de armazenamento desses dados!
Referências bem interessantes:
- Device Fingerprinting and Targeted Marketing: The Next Digital Privacy Battleground?
- Device Fingerprinting: Analysis of Chosen Fingerprinting Methods
- Do you know how much the browser knows about you?
- Fingerprinting mobile devices: A short analysis
- Beauty and the Beast: Diverting modern web browsers to build unique browser fingerprints
- On the Robustness of Mobile Device Fingerprinting
- Efficient Fingerprinting-Based Android Device - Identification With Zero-Permission Identifiers