Pular para o conteúdo

Liveness Advanced

A TechTrue® oferece duas soluções de detecção de vivacidade para atender diferentes necessidades de segurança:

Comparação das Soluções de Liveness

Liveness Essencial

O Liveness Essencial é nossa solução integrada ao serviço de reconhecimento facial, disponível sem custo adicional. Ele fornece detecção de ataques de apresentação (PAD) através de algoritmos avançados de análise facial, sendo indispensável para aplicações que utilizam nosso serviço de reconhecimento facial.

Este serviço é ativado através do parâmetro doLivenessCheck nas requisições de cadastro e verificação facial. Quando habilitado, o sistema avalia automaticamente se a imagem enviada corresponde a uma pessoa real ou a uma tentativa de fraude por apresentação (foto de foto, vídeo, máscara, etc.).

Exemplo de Uso - Cadastrar uma Face com Liveness

Terminal window
curl "https://api.techtrue.com.br/api/v1/services/face/enroll/{ext_id}" \
-X POST --data "@images.json" \
-H "Authorization: Bearer {{token}}"

O comando acima retorna o seguinte JSON em caso de sucesso:

{
"result": {
"code": 1000,
"message": "ENROLLED_SUCCESSFULLY"
}
}

Retorno em caso de falha no Liveness Check:

{
"result": {
"code": 1013,
"message": "LIVENESS_CHECK_FAILED",
"detail": "liveness check failed"
}
}

Parâmetro doLivenessCheck:

O parâmetro doLivenessCheck, quando definido como true, informa o serviço que deve executar o processo de avaliação de vivacidade sobre as imagens enviadas. Caso a avaliação indique uma tentativa de ataque de apresentação, a requisição retorna erro no JSON.

Liveness Advanced

O Liveness Advanced é nossa solução especializada de detecção de vivacidade, desenvolvida para ambientes controlados que exigem proteção contra ataques sofisticados. Este serviço opera de forma integrada e complementar ao reconhecimento facial, oferecendo uma camada avançada de segurança.

A principal característica desta solução está na sua capacidade de detectar e prevenir ataques de injeção digital, que representam a nova geração de tentativas de fraude e são particularmente relevantes em aplicações web, desktop e ambientes de alto risco:

  • Câmeras virtuais: Detecção de software que simula dispositivos de captura
  • Injeção de dispositivos externos: Identificação de conteúdo injetado através de dispositivos físicos
  • Ataques baseados em navegador: Proteção contra manipulações no ambiente do navegador
  • Ataques em nível de rede: Detecção de interceptação e modificação de dados em trânsito
  • Manipulação avançada de conteúdo: Identificação de deepfakes, face swap, morphing facial e renderização 3D

Visão Geral da Arquitetura

Para utilizar o serviço de Liveness Advanced, é necessário integrar a Web Capture Library em sua aplicação web. Esta biblioteca JavaScript é fornecida pela TechTrue® e desempenha um papel essencial no processo de segurança, sendo obrigatória para o funcionamento do serviço.

A biblioteca controla todo o processo de captura no lado do cliente, coleta metadados críticos de segurança do ambiente de execução e criptografa o payload de forma segura antes de enviá-lo para validação através da API da TechTrue®. Sem esta biblioteca, o endpoint de liveness não pode validar a autenticidade da captura.

Web Capture Library

A Web Capture Library é fornecida pela TechTrue® junto com sua documentação técnica completa. A biblioteca é essencial para garantir a integridade do processo de detecção de ataques de injeção e seu uso é obrigatório para acessar o endpoint do Liveness Advanced.

Requisitos do Sistema

Requisitos da Câmera

  • Resolução mínima: 640x480 pixels
  • Resoluções abaixo desse limite irão disparar o erro “Resolução da câmera muito baixa”

Requisitos do Servidor Web

  • Protocolo HTTPS (obrigatório para permissões de câmera)
  • Suporte para contextos seguros (localhost é aceitável para desenvolvimento)

Requisitos do Navegador

  • Suporte à API MediaStream
  • Suporte a WebAssembly
  • Suporte a WebGL (necessário para o recurso de captura automática)
NavegadorVersão Mínima
Chrome Desktopv103
Chrome (Android)v112
Firefox Desktopv103
Firefox (Android)v110
Microsoft Edgev103
Safari Desktopv15.1
Safari (iOS)v15.0
Opera Desktopv86
Opera Mobilev73
Samsung Internetv11.1

Endpoint da API

Verificar Liveness

Para verificar a vivacidade, use o código abaixo:

Terminal window
curl -X POST "https://api.techtrue.com.br/api/v1/services/liveness/check" \
-H "Authorization: Bearer {{token}}" \
-H "Content-Type: application/octet-stream" \
--data-binary @payload_criptografado.bin

Endpoint que verifica a vivacidade de uma selfie capturada usando a Web Capture Library. O payload criptografado contém tanto a imagem quanto os metadados necessários para detecção abrangente de fraudes.

Requisição HTTP

POST /api/v1/services/liveness/check

Headers

NomeDescriçãoObrigatórioTipo
AuthorizationToken Bearer obtido através da autenticaçãoSimstring
Content-TypeDeve ser application/octet-streamSimstring

Corpo da Requisição

O corpo da requisição deve ser o payload binário criptografado bruto gerado pela Web Capture Library. Isso não é JSON - é um blob binário que deve ser enviado como application/octet-stream.

Resposta - Sucesso

Estrutura da resposta quando a verificação de liveness é aprovada:

{
"success": true,
"data": {
"face_liveness": {
"probability": 0.9969119
},
"capture_liveness": {
"probability": 1.0,
"score": 1.0,
"rejection": []
}
}
}

Campos da Resposta

CampoTipoDescrição
successbooleanIndica se a requisição foi processada com sucesso
data.face_liveness.probabilitynumberProbabilidade de que a face seja de uma pessoa viva (0.0 a 1.0)
data.capture_liveness.probabilitynumberProbabilidade de que a captura seja legítima (0.0 a 1.0)
data.capture_liveness.scorenumberPontuação geral de vivacidade (0.0 a 1.0)
data.capture_liveness.rejectionstring[]Array de motivos de rejeição (vazio se nenhum problema detectado)

Interpretando os Resultados

  • probability >= 0.5: A imagem é considerada legítima (VIVA)
  • probability < 0.5: A imagem é rejeitada como potencialmente fraudulenta (FALSA)

Resposta - Rejeitada (Fraude Detectada)

Resposta quando ataque de injeção ou ataque de apresentação é detectado:

{
"success": true,
"data": {
"face_liveness": {
"probability": 0.1234
},
"capture_liveness": {
"probability": 0.0,
"score": 0.0,
"rejection": [
"UNTRUSTED_CONTENT",
"SUSPICIOUS_ACTIVITY"
]
}
}
}

Motivos de Rejeição

Quando probability < 0.5, o array rejection pode conter um ou mais dos seguintes valores:

Código de RejeiçãoDescrição
UNTRUSTED_ENVIRONMENTO ambiente da aplicação não é confiável para ser seguro
SUSPICIOUS_ACTIVITYAtividade suspeita detectada no dispositivo, potencialmente associada a um ataque
UNTRUSTED_DEVICEO dispositivo não é confiável ou está se representando incorretamente
SDK_INTEGRITY_VIOLATIONA biblioteca de captura foi adulterada ou modificada
UNTRUSTED_CORRUPTED_PAYLOADO payload está corrompido ou foi modificado em trânsito
UNTRUSTED_CONTENTAtaque de injeção detectado na imagem
UNTRUSTED_CONTENT_LOW_CONFIDENCEIndicadores de injeção detectados mas com menor confiança

Resposta - Erro

Estrutura de resposta de erro:

{
"timestamp": "2025-11-10T14:30:00.000+00:00",
"status": 400,
"error": "Bad Request",
"message": "Face not found",
"path": "/api/v1/services/liveness/check",
"error_code": "FACE_NOT_FOUND"
}

Códigos de Erro

Código HTTPMensagemCódigo de ErroDescrição
400Face not foundFACE_NOT_FOUNDNenhuma face detectada na imagem
400Face is croppedFACE_CROPPEDFace está apenas parcialmente visível na imagem
400Face is occludedFACE_IS_OCCLUDEDFace está parcialmente escondida atrás de um objeto
400Too many faces detectedTOO_MANY_FACESMais de uma face está visível na imagem
400Facial out-of-plane rotation angle is extremely largeFACE_ANGLE_TOO_LARGEÂngulo da face relativo à câmera é muito extremo
400Absolute face size is too smallFACE_TOO_SMALLResolução da face é insuficiente (deve estar mais próxima da câmera ou usar maior resolução)
400Relative face size is too smallFACE_TOO_SMALLFace ocupa muito pouco da imagem (deve estar mais próxima ou mais centralizada)
400Face is too close to one or more bordersFACE_CLOSE_TO_BORDERFace está muito próxima das bordas da imagem (deve estar centralizada)
400Image too small to be processedIMAGE_TOO_SMALLResolução da imagem está abaixo do mínimo de 480p
400Failed to parse fileUNKNOWNArquivo não é um payload criptografado válido ou está corrompido
400Failed to read metadataUNKNOWNFormato do payload criptografado é inválido
400Failed to decrypt messageUNKNOWNIncompatibilidade de chave de criptografia entre cliente e servidor
401Unauthorized-Token de autenticação inválido ou ausente
500Internal Server ErrorUNKNOWNErro inesperado do servidor

Códigos de Resposta HTTP

CódigoDescrição
200OK - Requisição processada com sucesso (verifique os campos probability e rejection para determinar se o liveness passou)
400Bad Request - Payload inválido ou problemas de qualidade da imagem
401Unauthorized - Token de autenticação inválido ou ausente
500Internal Server Error - Erro inesperado do servidor

Melhores Práticas

Dicas de Integração

  1. Forneça instruções claras ao usuário: Oriente os usuários a posicionar o rosto corretamente dentro do quadro de captura.

  2. Trate erros graciosamente: Forneça mensagens de erro úteis quando a captura falhar (ex: “Por favor, certifique-se de que seu rosto está totalmente visível e bem iluminado”).

  3. Considere condições de iluminação: Incentive os usuários a usar o serviço em ambientes bem iluminados para melhores resultados.

  4. Otimização mobile: Embora a biblioteca funcione em navegadores mobile, considere SDKs nativos para aplicativos móveis quando disponíveis.

  5. Teste exaustivamente: Teste em diferentes dispositivos, navegadores e condições de iluminação antes da implantação em produção.

Otimização de Performance

  1. Tamanho do payload: A Web Capture Library oferece configurações de tamanho de payload. Consulte a documentação técnica da biblioteca para opções de otimização.

  2. Considerações de rede: O payload criptografado pode ter vários megabytes. Certifique-se de que sua configuração de rede pode lidar com isso.

  3. Tratamento de timeout: Implemente valores de timeout apropriados para requisições à API (recomendado: mínimo de 30 segundos).

Suporte

Para dúvidas, problemas ou para obter o pacote da Web Capture Library e sua documentação técnica completa, entre em contato com o suporte da TechTrue®.