O blog da AWS
Prova de vida para melhorar a prevenção de fraudes em instituições financeiras com o Amazon Rekognition
Por Rafael Werneck, Arquiteto de Soluções de R&D na AWS Brasil
Henrique Fugita, Arquiteto de Soluções de P&D na AWS Brasil
João Paulo Aragão Pereira, Arquiteto de Soluções na AWS LATAM
O reconhecimento facial é uma das formas comuns de biometria empregadas em todos os setores para a prevenção de fraudes. Fundamentalmente, o reconhecimento facial usa algoritmos para distinguir os recursos exclusivos de um usuário individual daqueles de rostos semelhantes em uma linha de “galeria”. A biometria facial é cada vez mais popular entre as instituições financeiras que estão tentando equilibrar a prevenção aprimorada contra fraudes e uma experiência de usuário de alta qualidade. Por exemplo, o Banco Central do Brasil (BACEN) autoriza a utilização de reconhecimento biométrico para autorização de transações, no novo Sistema de Pagamento Instantâneo brasileiro (PIX).
No blog post anterior, esboçamos uma arquitetura de referência para melhorar a prevenção de fraude; registrar novos clientes; autorizar pagamentos. A arquitetura é centrada na detecção de vida, que usa tecnologia anti-falsificação para validar se um usuário é uma pessoa viva, e pode ser utilizada em aplicativos móveis e da web.
Este blog post descreve, passo a passo, como as instituições financeiras podem construir uma solução de detecção de vida para melhorar a prevenção de fraudes em sistemas de autorização de pagamento. Inclui também o código de implementação para facilitar a implantação.
A abordagem central da arquitetura solicita que os usuários realizem um desafio. Por exemplo, os usuários devem mover o nariz para uma posição de destino, definida aleatoriamente, exibida na tela. Isso aciona uma série de processos de verificação que validam se:
- Há a imagem de um – e apenas um – rosto capturado;
- Um usuário manteve seu rosto no centro da imagem e a uma distância adequada;
- Um usuário moveu seu nariz para a posição alvo;
- Um usuário realizou um movimento de rotação da cabeça, imitando um sistema tridimensional.
Vantagens
Esta versão da arquitetura de detecção de vida permite que as instituições financeiras aproveitem as seguintes características:
- Verificação de proximidade facial;
- Uma nova API para fazer upload de imagens de usuário (frames) diretamente, em vez de carregá-los primeiro para um bucket do Amazon S3;
- Verificação do JSON Web Token (JWT) em todo o desafio assinado com um segredo armazenado no AWS Secrets Manager;
- Definição aleatória da posição alvo do nariz, sendo fácil de alcançar;
- Utilização da distância euclidiana e rotação da cabeça para verificar o desafio;
- Upload de frames em segundo plano pelo cliente (aplicativo API) durante o desafio (para otimização);
- Rastreamento de rosto que verifica a posição dentro da caixa delimitadora.
Arquitetura
Nós usamos o Amazon Rekognition para detectar detalhes faciais que verificam o desafio. A arquitetura é sem servidor e composta pelos seguintes serviços: Amazon API Gateway, AWS Lambda, Amazon DynamoDB, Amazon Simple Storage Service (S3), e AWS Secrets Manager.
A verificação de desafio final é executada na nuvem. A arquitetura também permite que você execute o desafio localmente, no lado do cliente, para que possa fornecer feedback em tempo real para seus usuários finais, enquanto eles interagem com a câmera do dispositivo.
O diagrama abaixo é da arquitetura com a descrição dos seus componentes:
- Client:O aplicativo API designado captura imagens do usuário (frames), executa o desafio localmente e invoca o Amazon API Gateway para verificar o desafio na nuvem;
- Amazon API Gateway: REST HTTP API invocado pelo cliente;
- AWS Lambda: Função, invocada pelo Amazon API Gateway, que implementa a verificação de desafio na nuvem;
- Amazon DynamoDB: banco de dados que armazena dados de desafio;
- Amazon S3: armazena imagens do usuário;
- Amazon Rekognition: serviço de reconhecimento de imagem baseado em aprendizado profundo que analisa as imagens do usuário;
- AWS Secrets Manager: serviço que armazena o segredo usado para assinar tokens.
Fluxo de trabalho do desafio de detecção de vida
Aqui estão detalhes adicionais do fluxo de trabalho do desafio:
Iniciando um novo desafio
Quando o usuário inicia uma nova ação que requer um desafio, esse desafio é iniciado pelo client. O client invoca a API, passando o ID do usuário e as dimensões da imagem da câmera do dispositivo. A API então retorna os parâmetros de desafio, para que o client possa solicitar ao usuário instruções sobre como realizar o desafio. Veja os detalhes abaixo:
- O usuário inicia o desafio no cliente;
- O client emite uma solicitação POST HTTP para o endpoint da API /start, passando o ID do usuário e as dimensões da imagem da câmera do dispositivo. O API Gateway encaminha a solicitação para a função de desafio;
- A função challenge recebe a solicitação e gera coordenadas para a área do rosto e a posição aleatória do nariz-alvo e analisa as dimensões da imagem. Ele também gera um ID de desafio e um token de segurança, assinado com um segredo armazenado no AWS Secrets Manager. A função challenge armazena os parâmetros de desafio na tabela de desafios (Amazon DynamoDB) e os retorna para o client.
- O client recebe os parâmetros de desafio e exibe a visualização da câmera do dispositivo para o usuário, junto com instruções sobre como realizar o desafio.
Realizando o desafio
Conforme os usuários interagem com a câmera do dispositivo, o client executa o desafio localmente, fazendo upload de frames, um por um, limitados por uma taxa configurável. Veja os detalhes abaixo:
- O usuário interage com a câmera do dispositivo, uma vez que captura imagens;
- O client emite uma solicitação PUT HTTP para o endpoint da API /{challengeId}/frames, passando a imagem e o token. O API Gateway encaminha a solicitação para a função challenge;
- A função challenge valida o token. Se for válido, ele armazena a imagem no bucket de frames (Amazon S3). Ele também atualiza o registro de desafio na tabela de desafios (Amazon DynamoDB) com a URL da imagem.
Essas etapas são repetidas para as outras imagens, até que o desafio termine localmente (o usuário move o nariz para a área alvo ou o tempo do desafio expira).
Verificando o desafio
Depois que os usuários concluem os desafios com sucesso localmente, o client chama a API para a verificação final na nuvem. Veja os detalhes abaixo:
- O usuário segue as instruções e conclui o desafio (ou seja, o usuário move o nariz para a área alvo). No entanto, neste ponto, o desafio é concluído apenas no client.
- O client emite uma solicitação POST HTTP para o endpoint da API /{challengeId}/verify, passando o token, para iniciar a verificação do desafio na nuvem. O API Gateway encaminha a solicitação para a função challenge.
- A função challenge valida o token. Se for válido, ele procura os dados de desafio na tabela de desafios (Amazon DynamoDB) e invoca o Amazon Rekognition para analisar as imagens armazenadas no bucket de frames (Amazon S3). A função challenge verifica então o desafio. O resultado final (sucesso ou falha) é devolvido ao client.
- O client exibe o resultado final para o usuário.
Durante a verificação final, a função challenge chama, para cada imagem de quadro, a operação DetectFaces do Amazon Rekognition. Para cada face detectada, a operação retorna os detalhes faciais. De todos os detalhes capturados na operação DetectFaces, usamos as coordenadas da caixa delimitadora do rosto, marcos faciais (coordenadas do nariz) e pose (rotação do rosto).
A função challenge precisa desses detalhes para detectar algumas tentativas de falsificação, como fotos, máscaras 2D e vídeos, seguindo o fluxo de trabalho descrito abaixo. As instituições financeiras também podem fazer a verificação usando outros detalhes capturados, como expressões emocionais; atributos gerais (por exemplo: sorrisos, olhos abertos); qualidade da imagem; e dados demográficos. Esta arquitetura de referência para detecção de vida ainda não pode detectar máscaras 3D ou identificar a textura.
Aqui estão algumas capturas de tela de um usuário realizando o desafio:
Esteja ciente de algumas considerações sobre este exemplo de implementação:
- A solução fornecida aqui não é segura contra todos as falsificações. Portanto, antes de implantar para produção, teste-o completamente para validar se ele atende aos seus requisitos de segurança;
- Você pode aprimorar a lógica de verificação para tornar sua solução mais robusta contra falsificação. Por exemplo, você pode verificar se as posições do marco do nariz mudam de maneira contínua e linear de um quadro para o outro;
- A arquitetura não inclui autenticação do usuário, pois considera o usuário como já conectado antes de iniciar o desafio de detecção de atividade. Se necessário, você pode adicionar autenticação facial ao fluxo de trabalho de autenticação do usuário, usando Amazon Cognito e Amazon Rekognition. Para mais informação, por favor, verifique este outro blog post;
- Dependendo dos seus requisitos, você pode remover o bucket S3 da arquitetura e, em vez de armazenar as imagens do usuário, chame o Amazon Rekognition assim que o cliente enviar uma imagem. Você pode então armazenar o resultado na tabela do DynamoDB e usá-lo durante a etapa de verificação. Outra opção é usar a operação IndexFaces, do Amazon Rekognition, para detectar rostos em uma imagem e manter as informações sobre características faciais detectadas em uma collection.
Artefatos
Fornecemos uma implementação funcional da arquitetura de referência, escrita em Python, junto com um aplicativo cliente da Web em JavaScript. Graças à natureza desacoplada dessa arquitetura, você pode facilmente aplicar a mesma lógica para criar outros clientes, incluindo aplicativos móveis nativos.
Para o código completo, consulte o repositório GitHub. Você pode clonar, alterar, implantar e executá-lo sozinho.
Pré-requisitos
A implementação é fornecida na forma de um modelo de pilha AWS Serverless Application Model (SAM). Para implantá-lo em sua conta AWS, você precisa instalar e configurar o AWS CLI e o AWS SAM CLI. O processo de construção do aplicativo também requer a instalação de Docker e Node.js.
Cleanup
Se você não quiser continuar usando o aplicativo, execute as etapas a seguir para limpar seus recursos e evitar mais cobranças:
- Esvazie os buckets Amazon S3 criados pela pilha, excluindo todos os objetos contidos;
- Exclua o stack de SAM no console AWS CloudFormation.
Conclusão
Neste blog post (parte 2 de 2), mostramos uma arquitetura de detecção de vida com o Amazon Rekognition e outros componentes sem servidor. As instituições financeiras podem usá-lo para adicionar reconhecimento facial a sistemas que exigem autenticação mais forte, como o PIX. A arquitetura também pode ser ampliada e aprimorada, com a integração de outros serviços AWS.
Vale destacar algumas recomendações e características dessa arquitetura:
- 1–2 segundos para o tempo de resposta (percepção do cliente);
- 5–15 FPS (frames por segundo) capturados é suficiente para detectar vida;
- O tamanho de cada quadro é de aproximadamente 15-20 KB;
- Possível evitar falsificações vinculadas a fotos, fotos móveis, vídeos, IDs e máscaras 2D;
- Capaz de detectar vida mesmo ao usar máscaras médicas e óculos de sol;
- Uma arquitetura sem servidor, e o processamento de cada frame custa menos de US$ 0,01.
O ponto de partida para a construção da solução foi atender a uma demanda crescente por prevenção de fraudes, por parte da maioria das instituições financeiras latino-americanas. Entregamos essa arquitetura por meio do trabalho transversal da equipe AWS R&D e Inovação LATAM e do arquiteto de soluções com foco em serviços financeiros (LATAM).
Sobre os autores
Rafael Werneck é arquiteto de soluções de R&D na AWS, com sede no Brasil. Anteriormente, ele trabalhou como engenheiro de desenvolvimento de software na Amazon.com.br e no Amazon RDS Performance Insights.
Henrique Fugita é arquiteto de soluções de P&D na AWS no Brasil. Ele ajuda os clientes a imaginar a arte do possível na AWS, trabalhando com eles em projetos de prototipagem inovadores. Com mais de 15 anos de experiência em desenvolvimento de software e arquitetura de soluções, ele atualmente se concentra em inteligência artificial e aprendizado de máquina.
João Paulo Aragão Pereira é arquiteto de soluções da AWS com foco no setor de serviços financeiros para a região LATAM. Ele é especialista em prevenção e detecção de fraudes, banco aberto, modernização legada e sistemas de pagamento. Ele trabalha com arquitetura em bancos e seguradoras há mais de 15 anos.
|
Se você tem perguntas sobre a AWS ou algum projeto que queira discutir, preencha este formulário e um representante entrará em contato com você. |