Por Izabella Melo

Sistemas baseados em biometria facial se tornaram extremamente comuns durante a pandemia, período em que o distanciamento social se fez necessário e, o ato de ir presencialmente até determinados ambientes, como medida de segurança, tornou-se impraticável. Com isso, o mercado de reconhecimento facial atingiu valores perto de 3,7 bilhões de dólares em 2020, com uma expectativa de crescimento de mais de 21% até 2026. Como para toda grande novidade no mercado de segurança, essa explosão de sistemas baseados em biometria facial veio acompanhada de novas fraudes, cada vez mais sofisticadas. Para entendermos um pouco mais sobre esse problema, vamos primeiro entender como funciona um sistema de reconhecimento facial tradicional.

Como funciona?

O fluxo comum de um sistema de reconhecimento facial pode ser dividido em duas etapas: o liveness e o face match. A primeira etapa, o liveness ou, em português, a prova de vida, foi descrita pela primeira vez por Dorothy E. Denning, em 2001, em um artigo em que afirmava que o mais importante para os sistemas biométricos “é a vivacidade (liveness), e não o sigilo”. Em outras palavras, Dorothy aponta que o usuário não deve se preocupar em manter suas informações biométricas em sigilo, pois, qualquer um pode ver nosso rosto na rua ou ter acesso as nossas fotos em redes sociais. Na verdade, é o sistema que deve ser capaz de reconhecer e validar aquela informação como sendo verdadeira ou não. Foi assim que o liveness se tornou o principal detector de fraude em sistemas biométricos, responsável por identificar tentativas de falsificação em qualquer tipo de sistema biométrico, desde os mais antigos sistemas de reconhecimento de impressão digital até os novos sistemas de reconhecimento facial.

Fonte: O Autor (2021)

Mas o processo não termina no liveness: depois que a foto é validada e aceita como verdadeira, ela é encaminhada para o face match. O objetivo do face match é somente responder se aquele rosto é da pessoa que diz ser e ele fará isso independente do modo como a foto foi obtida. Assim, um sistema considerado seguro deve possuir uma etapa de liveness que faça as validações corretas e que não aponte falsificações como fotos de pessoas reais.

Então quais as vulnerabilidades do liveness?

Existem diversas técnicas desenvolvidas, das mais simples até as mais complexas, para burlar a detecção de liveness e fazer o sistema acreditar que aquela foto foi retirada de uma pessoa real e não se trata de uma falsificação. Outras funcionam muito mais como um meio para utilização de outras técnicas e há, ainda, estratégias de engenharia social que pouco tem a ver com enganar o sistema em si, e sim manipular os procedimentos.

Fotos e vídeos impressos ou digitais

Uma das formas mais simples de fraudar um sistema de biometria facial é usando a aplicação para tirar fotos de outras fotos ou extrair imagens a partir de vídeos. Em geral, os sistemas tentam lidar com esse tipo de situação provocando a criação de reflexos que sejam facilmente identificáveis nas imagens, a partir da utilização de flash ou aumento do brilho do celular. Essa, porém, não é uma estratégia extremamente eficaz, já que o brilho do dispositivo pode ser manualmente controlado pelo fraudador e, sem esse brilho, dificilmente algum reflexo será notado.

Além disso, fotos tiradas de um monitor, com resolução alta, por um dispositivo que possui uma baixa resolução de câmera provavelmente nunca serão identificadas como uma tentativa de falsificação.

Fonte: Porta dos Fundos – Youtube (2021)

Máscara 2D impressa

Outra forma extremamente simples, mas que pode ser surpreendentemente eficaz, é o uso de máscaras impressas em 2D com buracos nos olhos e boca. Muitos sistemas de liveness se baseiam em desafios como piscar ou sorrir e consideram o simples ato de cumprir corretamente esses desafios uma prova de vida válida. Assim, os buracos permitem que os desafios executados pelo fraudador sejam percebidos e validados pelo sistema de forma correta e, com a máscara, o rosto da vítima, muito provavelmente, será reconhecido com sucesso na próxima etapa: o chamado face match.

Máscara Obama à venda na internet. Fonte: Google Images (2021) face liveness detection

Máscara 3D hiper-realista

Seguindo a mesma ideia do método anterior, mas com um nível de sofisticação muito maior, as máscaras 3D realistas e hiper-realistas podem chegar a custar valores altíssimos e são usadas, principalmente, para ataques direcionados para um alvo especial. Essas máscaras permitem a execução de desafios como piscar os olhos e sorrir, mas, também, são capazes de imitar a textura da pele e passar por sistemas ainda mais robustos.

The Old man silicone mask by Metamorphose masks Making and Unmasking

Deepfake

Com o avanço da inteligência artificial, especialmente na área de Machine Learning e Deep Learning, surgiram as chamadas deepfakes. Essa técnica utiliza redes neurais capazes de combinar falas e rostos com vídeos pré-existentes, resultando em vídeos de pessoas realizando coisas que nunca fizeram ou falando coisas que nunca falaram.

Como tudo na tecnologia, a popularidade veio acompanhada de avanços na área que, não só melhoraram os resultados, mas, também, facilitaram o uso por meio de softwares open-source como o Faceswap. Assim, o uso de deepfakes se tornou um problema em muitas áreas e os vídeos falsos passaram a ser usados para atacar, principalmente, políticos e celebridades. No mundo das fraudes, essa técnica é especialmente usada para falsificar vídeos inteiros de vítimas executando os desafios propostos por sistemas de liveness, a partir de uma única foto, que pode ser conseguida facilmente por meio de redes sociais.

You Won’t Believe What Obama Says In This Video! 😉

Comprometimento do dispositivo

O comprometimento do dispositivo embora não seja uma forma de burlar a liveness por si só, serve como um meio para a utilização de outras técnicas que possam fazê-lo. Em dispositivos Android, por exemplo, há a possibilidade de injetar quadros de vídeos na câmera do aparelho usando aplicativos como Fake Camera ou Forgery Camera. Algumas técnicas de detecção de comprometimento do dispositivo, verificando a presença de aplicativos suspeitos, tentando detectar se o acesso root está habilitado ou se o aplicativo está sendo analisado por meio de técnicas de hook, podem ajudar a avaliar os riscos de uma foto ter sido realizada de maneira ilegítima.

Engenharia Social

Há ainda fraudes que não envolvem muitos conhecimentos técnicos e focam muito mais em formas de fraudar os procedimentos de retirada de fotos por meio de engenharia social. Para isso, fraudadores entram em contato com as vítimas confirmando seus dados e dizendo ser de alguma empresa interessada em enviar brindes. Com os dados confirmados, que provavelmente têm como fonte os grandes vazamentos, os golpistas levam os brindes até a vítima e dizem precisar do reconhecimento facial para confirmar o recebimento. O reconhecimento usado, obviamente, não tem nada a ver com os brindes e geralmente serve para liberar financiamentos ou conseguir acesso a alguma conta do usuário.

Ok! E como mitigar?

Além das mitigações mais simples já presentes em quase todos os sistemas de liveness existentes, como a mudança no índice de brilho ou a implementação de desafios padrões, há outras menos comuns com potencial para impedir ainda mais fraudes.

Análise de Dispositivo

A análise de dispositivo tem como objetivo detectar padrões que podem indicar dispositivos potencialmente perigosos independente da biometria em si. Essa técnica verifica diversas características para identificar se o dispositivo que está executando a transação é conhecido e confiável ou se é um dispositivo nunca visto antes e que possui características de potencial fraude, como aplicativos suspeitos, acesso root liberado etc.

Para dispositivos móveis existem algumas boas alternativas de bibliotecas de terceiros e até API’s nativas que ajudam nessa análise. No Android, a biblioteca open-source RootBeer é capaz de identificar dispositivos que possuem acesso root autorizado, permitindo que fraudadores tenham mais liberdade para manipular dados internos no dispositivo.

Código Java para chamada do RootBeer

Além disso, a Google disponibiliza a API SafetyNet, a qual oferece formas de identificar se o dispositivo possui aplicativos potencialmente nocivos (API SafetyNet Verify Apps), além de testar se ele é um dispositivo genuíno, vasculhando o software e hardware em busca de problemas de integridade e o comparando com os dispositivos de referência já aprovados (API SafetyNet Attestation).

Código Kotlin para pedido do atestado do dispositivo para o Google

No iOS, a biblioteca IOSSecuritySuite oferece formas de detectar jailbreak, tentativas de debugger, engenharia reversa, quebra de integridade e hook de função. Além disso, o framework nativo DeviceCheck tem duas funções interessantes para esse tipo de situação:

1. a função de identificação do dispositivo permite que desenvolvedores armazenem até dois bits de dados por dispositivo, ou seja, é possível marcar um dispositivo como potencialmente perigoso e recuperar essa marcação mesmo em caso de reset de fábrica;

Código Swift para criação de um token usado para salvar os dois bits de dados por conta Apple por dispositivo

2. o App Attest tem um objetivo parecido com o SafetyNet Attestation, mas faz isso criando um par de chaves criptográficas baseadas em hardware e certificadas pelos servidores da Apple. Com as chaves geradas e certificadas como provenientes de um aplicativo e dispositivo confiáveis, é possível assinar as requests enviadas para o servidor e garantir que elas vieram de instâncias legítimas da aplicação.

Esquema explicativo de funcionamento do DeviceCheck App Attest no iOS

Além das opções acima, ainda há frameworks proprietários como o AllowMe, que combinam essas e muitas outras práticas de segurança e análise contextual para garantir que o dispositivo é legítimo. Esse tipo de análise, embora não tenha como foco impedir fraudes no liveness, é capaz de identificar ações fraudulentas nos mais diversos tipos de transações e pode ser interessante para evitar golpes baseados em engenharia social ou comprometimento do dispositivo.

Desafios

Os desafios são comuns em sistemas de liveness e funcionam como uma camada a mais de dificuldade, evitando que fotos estáticas sejam usadas para falsificação. Em sistemas móveis, as principais plataformas (Android e iOS) oferecem soluções prontas para identificar movimentos como piscar, sorrir ou virar a cabeça.

Código Kotlin para detecção de movimentos no rosto
Código Swift para detecção de movimentos no rosto

Além disso, para desafios ainda mais complexos, há bibliotecas como OpenCV, que são especializadas em tratamento de imagem e vídeo.

Vale observar, porém, que o maior problema associado a essa técnica de prova de vida é confiar que apenas o ato de cumprir o desafio é suficiente para validar aquele usuário como uma pessoa real, já que aquela imagem pode vir de um vídeo onde a pessoa executa movimentos simples com o rosto.  Uma forma de dificultar essa prática é gerando desafios de forma dinâmica, ou seja, a partir de um conjunto de desafios específicos podemos pedir sempre um desafio diferente em cada momento. Esse tipo de conduta evita que fraudadores usem vídeos pré-gravados de vítimas, por exemplo.

Detecção de deepfakes

Por se tratar de uma técnica ainda muito nova, é comum que vídeos criados a partir de deepfakes possuam pequenas inconsistências que, muitas vezes, passam despercebidas por olhos humanos, mas que podem ser facilmente detectadas por computadores treinados ou, em outras palavras, por técnicas de Machine Learning. Há alguns pontos principais que sistemas de liveness costumam analisar para barrar vídeos criados por deepfakes: piscar de olhos ou movimentos dos lábios inconsistentes ou desordenados; vídeos em baixa resolução ou com espaços com diferentes resoluções; bochechas e testa com pele muito lisa ou enrugada, incompatíveis com o resto do rosto; sombras em posições incomuns entre outros.

Por se tratar de uma tecnologia muito nova e em ascensão, os algoritmos de detecção ainda estão sendo ativamente construídos. Recentemente o Deepfake Detection Challenge, um desafio que uniu AWS, Facebook, Microsoft, AI’s Media Integrity Steering Committee e acadêmicos do mundo todo, pagou 1 milhões de dólares para o algoritmo que fosse capaz de detectar esse tipo de falsificação com maior acurácia. O modelo vencedor está disponível no Github.

Embora não sejamos tão eficientes na detecção de fraudes quanto os computadores, o MIT construiu um site onde humanos podem testar sua capacidade de identificar deepfakes: DeepFakes, Can You Spot Them?

Análise de Texturas

Diversos algoritmos de análise de textura são capazes de, em certo grau, diferenciar texturas de pele da textura de imagens retiradas de uma foto, vídeo ou máscaras. Uma evolução dessa mitigação descrita em alguns artigos científicos é a análise de fluxo sanguíneo com base nas pequenas variações de cor na pele geradas pelo batimento cardíaco, capazes de identificar, inclusive, ataques com máscaras 3D hiper realistas que conseguem imitar a textura da pele.

Detection of Blood Flow

Embora a análise de fluxo sanguíneo ainda seja bastante complexa, diversos algoritmos mais simples já conseguem diferenciar texturas básicas inviabilizando ataques mais comuns como os realizados com máscaras de papel. Geralmente o ponto de partida da maioria desses algoritmos é a Transformada de Fourier, que permite passar imagens do domínio espacial para o domínio da frequência, ou seja, é possível analisar a imagem de acordo com sua taxa de mudança de cor dos pixels. A partir da Transformada de Fourier podemos dizer, por exemplo, que imagens que possuem muitos componentes de alta frequência possuem bordas mais bem definidas, já que esse tipo de componente está ligado a uma maior variação de cor de pixels em um menor espaço. Os resultados da remoção de componentes de baixa frequência mostram que, ao manter só os componentes de alta frequência em uma imagem, conservamos apenas as bordas, conforme podemos atestas nas imagens abaixo.

Esse tipo de interpretação, que pode ser realizada em imagens no domínio da frequência, é a base de muitos algoritmos de processamento de imagem e análise de texturas, como o HFD, proposto num artigo chamado Live face detection based on the analysis of Fourier spectra. Segundo o artigo, a forma como a luz se distribui em superfícies 2D, geralmente usadas para spoof, faz com que essas imagens possuam menos componentes de alta frequência que as imagens reais. A partir dessa observação, surgiu a equação para o cálculo do high frequency descriptor (HFD):

Código Python para cálculo da HFD a partir da equação do artigo

Embora o HFD seja um cálculo extremamente simples, ele é capaz de identificar tentativas de spoof mais grosseiras e não possui grande complexidade, podendo ser realizado até em dispositivos móveis, diferentemente de algoritmos de deep learning e machine learning que necessitam de grande poder de processamento. Há também algoritmos ainda mais eficientes que, assim como o HFD, fazem uso da Transformada de Fourier. Vale observar, porém, que esses algoritmos geralmente trabalham a nível de pixel e, por isso, são fortemente influenciados pela qualidade da imagem e condições de iluminação.

Análise de Estrutura

O maior objetivo da análise de estrutura é tentar diferenciar imagens retiradas de pessoas reais em 3D e tentativas de spoof com fotos retiradas de mídias 2D. Essa análise é tipicamente utilizada por sistemas como o Face ID que utilizam câmeras e sensores especiais para criar um mapa 3D detalhado do rosto de uma pessoa.

Em dispositivos móveis iOS, é possível a utilização do ARKit, framework frequentemente usado no desenvolvimento de aplicativos e jogos de realidade aumentada. O ARKit é capaz de identificar estruturas em 3D, como um rosto humano, embora ainda possa ser facilmente enganado por uma máscara de silicone ultrarrealista. No Android, o ARCore Augmented Faces tem função semelhante e também é uma alternativa nativa para essa tarefa.

Essas tecnologias, no entanto, não estão disponíveis facilmente em todos os celulares e, por isso, alguns algoritmos tentam lidar com essa limitação tecnológica para extrair diferenças de estruturas nesses dois tipos de imagem. Métodos como o proposto no artigo Face Spoof Detection with Image Distortion Analysis usam um algoritmo para extração do componente especular da imagem, ou seja, o componente de reflexos da imagem. Segundo esse artigo, é esperado que imagens capturadas de mídias 2D apresentem um padrão de reflexos diferente daqueles obtidos por uma foto legítima capturada de um rosto real em 3D. Já em Face Liveness Detection From a Single Image via Diffusion Speed Model é usado o diffusion speed com a premissa de que a iluminação em superfícies 2D é distribuída uniformemente e, portanto, deve se difundir lentamente com a aplicação do algoritmo, enquanto superfícies 3D possuem uma “velocidade de difusão” maior, uma vez que a iluminação nessas superfícies não é uniforme.

Conclusão

Por fim, vale lembrar que, assim como tudo no mundo da cibersegurança e antifraude, não há “bala de prata” que possa acabar com os problemas que envolvam biometria facial. No entanto, considerando os custos de implementação e os recursos disponíveis, o ideal é mesclar o máximo de técnicas de mitigação possíveis para criar um produto robusto e seguro o suficiente para o sistema em que ele será aplicado.

A tabela abaixo foi baseada no resumo existente no artigo Face Liveness Detection Using a Flash against 2D Spoofing Attack e reúne os métodos aqui apresentados, seus principais algoritmos, frameworks e APIs e os prós e contras de cada um deles.

Categoria Descrição Algoritmos, Frameworks e APIs Prós Contras
Análise de dispositivo Identifica dispositivos fraudulentos ou confiáveis SafetyNet, DeviceCheck, AllowMe by Tempest Identifica fraudes que possuem como base comprometimento do dispositivo ou engenharia social Não resolve ataques ao liveness em si, mas ajuda na identificação de casos suspeitos
Desafios Captura movimentos humanos Algoritmos de Machine Learning para detecção de piscada, sorriso ou movimentos da cabeça É útil para barrar ataques baseados em fotos estáticas Pode ser facilmente burlado por ataques baseados em vídeos pré-gravados ou máscaras
Análise de Texturas Captura diferenças entre imagens retiradas de pessoas reais e imagens fakes Análise de Fourier, Local Binary Patterns, etc Baixo custo de implementação e complexidade de tempo, capazes de diferenciar ataques mais grosseiros como máscaras de papel 2D São muito afetados pela qualidade da imagem e condições de iluminação
Análise de Estrutura Busca diferenças de estruturas entre imagens tiradas de pessoas reais (3D) e imagens tiradas de objetos 2D Analysis of image specularity distribution, image distortion, diffusion speed, etc Boa capacidade de identificação Pode não identificar imagens retiradas de mídias com alta resolução, como monitores 4K

Referências

AllowMe, Análise de dispositivos: por que ela é mais eficiente do que dados cadastrais, disponível em https://www.allowme.cloud/conteudoallowme-analise-de-dispositivos-por-que-ela-e-mais-eficiente-do-que-dados-cadastrais/index.html, acesso em 04 de abril de 2022

Apple Docs, DeviceCheck, disponível em https://developer.apple.com/documentation/devicecheck, acesso em 04 de abril de 2022

Dorothy E. Denning, Why I Love Biometrics – It’s “liveness”, not secrecy, that counts.

Google Docs, Proteger-se contra ameaças de segurança com SafetyNet, disponível em https://developer.android.com/training/safetynet, acesso em 04 de abril de 2022

iOSSecuritySuite, https://github.com/securing/IOSSecuritySuite, acesso em 04 de abril de 2022

Jiangwei Li, Yunhong Wang, Tieniu Tan, and Anil K. Jain “Live face detection based on the analysis of Fourier spectra”, Proc. SPIE 5404, Biometric Technology for Human Identification, 2004

Kevin Tussy, John Wojewidka, and Josh Rose, https://liveness.com/, acesso em 04 de abril de 2022

MIT Media Lab, DeepFakes, Can You Spot Them?, disponível em https://detectfakes.media.mit.edu, acesso em 04 de abril de 2022

P. K. Chan et al., “Face Liveness Detection Using a Flash Against 2D Spoofing Attack,” in IEEE Transactions on Information Forensics and Security, 2018

Rootbeer, https://github.com/scottyab/rootbeer, acesso em 04 de abril e 2022

S. Unnikrishnan and A. Eshack, “Face spoof detection using image distortion analysis and image quality assessment,” 2016 International Conference on Emerging Technological Trends (ICETT), 2016

Seferbekov and E. Lee, DeepFake Detection (DFDC) Solution by @selimsef, disponível em https://github.com/selimsef/dfdc_deepfake_challenge, acesso em 04 de abril de 2022

W. Kim, S. Suh, and J. -J. Han, “Face Liveness Detection From a Single Image via Diffusion Speed Model,” in IEEE Transactions on Image Processing, 2015