No mundo tecnológico de hoje, os sistemas antifraude utilizam métodos cada vez mais sofisticados para detetar actividades fraudulentas. Um dos parâmetros importantes para identificar os utilizadores e analisar os seus dispositivos são os tipos de letra instalados no sistema. Vejamos como os tipos de letra podem ser utilizados na luta antifraude, o seu papel na identificação de dispositivos, técnicas de falsificação e métodos de deteção de contrafacções. ###### História e papel dos tipos de letra nos browsers Os tipos de letra utilizados pelos dispositivos são uma caraterística fundamental que afecta a apresentação das páginas Web. Os navegadores fornecem informações sobre os tipos de letra disponíveis através de APIs CSS e JavaScript, permitindo que os sítios Web adaptem a apresentação do conteúdo ao sistema do utilizador. Nos sistemas antifraude, os tipos de letra são utilizados para fins de exclusividade, uma vez que o conjunto de tipos de letra instalados pode variar significativamente em função do dispositivo, do sistema operativo, da versão e das aplicações instaladas. ###### Métodos de obtenção de dados de tipos de letra 1. **CSS Font-Family Fallback**. Utiliza o estilo da família de tipo de letra para determinar se o texto é apresentado utilizando o tipo de letra especificado. Se o browser não suportar o tipo de letra, utiliza o tipo de letra predefinido. 2. **Impressão digital de tela**. Utiliza a API CanvasRenderingContext2D para processar texto e medir as suas dimensões para determinar se existe um tipo de letra. Este é um método popular para criar uma “impressão digital” de um dispositivo. 3. **CSS Queries for Font Support**. Utilizando [@font-face](# “@font-face”) e propriedades CSS, pode verificar a disponibilidade do tipo de letra. 4. **Enumeração de tipos de letra baseada em JavaScript** O JavaScript permite-lhe verificar a disponibilidade do tipo de letra medindo a largura e a altura do texto utilizando diferentes tipos de letra. ###### Como são utilizados os tipos de letra no antiface 1. **Uniqueização do utilizador** Os tipos de letra instalados podem variar consoante o sistema operativo, o software instalado e as definições do utilizador. Isto cria uma “impressão digital” única do dispositivo. 2. **Deteção de contrafacções** Se os autores de fraudes estiverem a utilizar navegadores anti-deteção, o conjunto de tipos de letra disponíveis pode não corresponder à plataforma declarada no User-Agent. 3. **Comparação com outros parâmetros** Por exemplo, os sistemas antifraude podem verificar o conjunto de tipos de letra disponíveis em relação aos dados Canvas ou WebGL para encontrar inconsistências. ###### Métodos de falsificação de fontes e deteção 1. **Emulação ou falsificação de conjunto de fontes** Os atacantes podem utilizar software para alterar a lista de tipos de letra disponíveis. No entanto, essas substituições podem ser detectadas através da análise do tamanho do texto apresentado ou do comportamento de outras API. 2. **Bloqueio de fontes** Alguns browsers ou plugins podem ocultar a lista de tipos de letra para dificultar a identificação. Mas essas tentativas também criam padrões suspeitos. 3. **Deteção de substituição** Os sistemas antifraude utilizam correlações entre conjuntos de tipos de letra e outras caraterísticas do sistema, como a plataforma ou a arquitetura do processador. Vejamos exemplos de como os sistemas obtêm informações sobre os tipos de letra. Vamos abrir a página browserleaks.com/fonts  Em Font Metrics: Fingerprint, o site mostra o hash MD5 das métricas de todas as fontes encontradas no nosso browser. O site encontrou 146 tipos de letra, dos quais 112 contêm tamanhos únicos. In the Report section, we can see the dimensions, width and height of the checked string with characters “mmmMMMMMMMMMMMMmmmlllllmmmLLL₹▁₺₸ẞॿmmmiiimmmIIImmmwwwmmmWWW” for each of the fonts. O site verifica mais de 1.400 fontes conhecidas e procura-as no browser do utilizador. Na secção Unicode Glyphs: Fingerprints (Glifos Unicode: Impressões Digitais), o site mostra um hash MD5 derivado dos resultados de renderização de caracteres especiais Unicode. Abaixo encontram-se informações detalhadas sobre o tamanho de cada um dos caracteres verificados para diferentes famílias de tipos de letra. Vejamos um exemplo de recuperação de fonte na nossa página de teste test-webapi.tech/glyph abra a página no navegador Chrome e aguarde os resultados do teste:  Esta página desenha um grande número de caracteres e símbolos para cada uma das fontes e gera um hash MD5 para cada uma das fontes detectadas, após o que é gerado um hash MD5 total a partir do hash de todas as fontes e do número de fontes encontradas no navegador do utilizador. Também na página de exemplo há uma variante de teste da deteção do sistema e do navegador do utilizador, que consiste na estimativa dos valores de hash MD5 de algumas fontes. No nosso exemplo, o site detectou não 146 mas 227 tipos de letra e determinou que estamos a utilizar o sistema operativo Windows e um navegador com o motor Chromium. Vamos repetir o teste no nosso navegador anti-deteção sem substituição de fontes:  Como resultado, obtivemos um hash MD5 diferente do browser real, menos tipos de letra, o site identificou o nosso sistema como Windows Server e um browser com o motor Chromium. Vamos tentar trocar o conjunto de fontes no navegador anti-deteção e repetir o teste:  Neste teste, o navegador anti-deteção substituiu um conjunto de tipos de letra, o número de tipos de letra é o mesmo que no navegador Chrome original, mas o hash MD5 global é diferente do navegador original, o que significa que os tamanhos das sílabas de alguns tipos de letra são diferentes. Desta forma, podemos identificar os utilizadores com bastante precisão pelo conjunto de fontes e respectivas métricas. Vamos tentar abrir a nossa página no browser Firefox:  A nossa página de teste identificou, pelo tipo de letra, que estamos a utilizar o browser Firefox. Note-se que os tamanhos dos caracteres da fonte Arial no browser Firefox são diferentes dos tamanhos dos caracteres da mesma fonte no browser Chrome. Vamos repetir o teste em dispositivos móveis:  Repare que o navegador Chrome para dispositivos móveis devolve os mesmos valores para a maioria dos tipos de letra. Note-se também que a renderização dos tipos de letra é diferente nos mesmos dispositivos e na mesma versão dos navegadores, o que nos permite distinguir os visitantes com bastante precisão, especialmente utilizando os dados adicionais de que falámos nos nossos artigos anteriores. Vamos tentar testar o navegador anti-deteção utilizando um perfil de dispositivo móvel:  Como resultado deste teste, vemos que o browser anti-deteção adiciona tipos de letra que correspondem aos tipos de letra do dispositivo móvel, mas os valores métricos de alguns tipos de letra correspondem à versão desktop do browser. O site determinou que estamos a utilizar o Windows Server, o que não corresponde de forma alguma a um dispositivo móvel Android. É também desta forma que os sistemas antifraude podem obter informações sobre as fontes do sistema no navegador. Vejamos exemplos dos navegadores Chrome e Firefox em computadores de secretária e dispositivos móveis: **Cromo para computador**  **Firefox no ambiente de trabalho**  **Android Chrome**  **Android Firefox**  Como resultado deste teste, podemos ver que as famílias e os tamanhos dos tipos de letra do sistema do navegador são diferentes em diferentes dispositivos e em diferentes navegadores. É assim que os sítios podem determinar o tipo de dispositivo e o motor de navegação utilizados. ###### Conclusão Os tipos de letra do navegador são uma ferramenta poderosa para os sistemas antifraude. São utilizadas para criar “impressões digitais” únicas dos dispositivos e detetar actividades fraudulentas. A sua análise em combinação com outros parâmetros, como o Canvas e o WebGL, torna os algoritmos dos sistemas antifraude mais fiáveis. *Bannykh M.V.*