novembro 30, 2018

[Segurança] Device Fingerprint

"Device Fingerprint" é o nome dado a técnica de criar uma identificação única (ou melhor, o mais única possível) para o dispositivo utilizado pelos usuários. Na área de segurança, essa identificação do dispositivo pode ser utilizada para associar um usuário ao dispositivo que ele normalmente utiliza para navegar na Internet, seja um computador, o browser ou o dispositivo mobile (smartphone). Assim, teremos uma informação a mais que pode ser usada para identificar um usuário no momento em que ele acessa o nosso site ou serviço.

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!
Diversos sites nos permitem testar o quanto nossos cesso a internet pode ser rastreável:
Referências bem interessantes:

Nenhum comentário:

Creative Commons License
Disclaimer: The views expressed on this blog are my own and do not necessarily reflect the views of my employee.