Detecção de ataque por injeção (IAD)
Esta API, no contexto de captura e avaliação facial, permite a detecção de:
Vetores de ataque: câmeras virtuais, dispositivos externos, ataques de navegador, ataques de rede.
Conteúdo de ataque: renderização 3D, morphing facial, face swap, cheap fake, deep fake.
Esta API requer a Integração do lado do cliente das bibliotecas de captura IAD. A biblioteca de captura IAD (incluída em Selphi) controla o processo de captura no cliente e gera o IAD bundle (pacote criptografado de metadados e imagens).
A API sabe como descompactar o IAD bundle do cliente para realizar tanto a Detecção de Ataques de Injeção quanto a detecção de ataques de apresentação.
Endpoint
POST /iadCabeçalhos
x-api-key
string
Sim
API Key de autorização de acesso.
OperationId
string
Não
Identificador da operação na Plataforma V2. Se enviado junto com SessionId, é emitido um evento de Tracking na aba Segurança do detalhe da operação.
SessionId
string
Não
Identificador de sessão associado à operação. Obrigatório para ativar o Tracking, a menos que seja utilizado ExtraData.
ExtraData
string
Não
Token criptografado que empacota operationId e sessionId. Alternativa a enviá-los separadamente.
Família
string
Não
Família do evento de Tracking. Por padrão Onboarding.
Corpo da solicitação
Content-Type: application/octet-stream
Parâmetros
IAD_BUNDLE
binário
Sim
Pacote criptografado de metadados e imagens. O bundle deve ser enviado como uma solicitação application/octet-stream no body.
Exemplo de solicitação
Respostas
200 Sucesso
Parâmetros de resposta
attack
boolean
Valor booleano que indica se foi detectado um ataque. true: foi detectado um ataque, false: nenhum ataque foi detectado.
Exemplo de resposta
400 Solicitação inválida
Quando a solicitação é inválida, a resposta inclui um código de erro específico no campo errors que descreve o problema detectado. Veja Códigos de erro IAD.
Códigos de erro IAD
400
Rosto não encontrado
FACE_NOT_FOUND
Não foram detectados rostos na imagem.
400
Rosto cortado
FACE_CROPPED
O rosto está apenas parcialmente dentro da imagem.
400
Rosto ocluído
FACE_IS_OCCLUDED
O rosto está sendo parcialmente ocultado atrás de um objeto.
400
Muitos rostos detectados
TOO_MANY_FACES
Mais de um rosto está visível na imagem.
400
O ângulo de rotação facial fora do plano é extremamente grande
FACE_ANGLE_TOO_LARGE
O ângulo do rosto correspondente ao ponto de vista da câmera é grande demais.
400
O tamanho absoluto do rosto é muito pequeno
FACE_TOO_SMALL
A densidade de pixels do rosto é muito pequena; ele deveria estar mais perto da câmera ou a imagem deveria ter maior resolução.
400
O tamanho relativo do rosto é muito pequeno
FACE_TOO_SMALL
O rosto está muito pequeno; ele deveria estar mais perto da câmera para ocupar uma porção maior da imagem.
400
O rosto está muito próximo de uma ou mais bordas
FACE_CLOSE_TO_BORDER
O rosto está muito próximo do limite do ponto de vista da câmera; ele deveria estar centralizado em relação à vista da câmera.
400
Falha ao analisar o arquivo
UNKNOWN
O arquivo não é um payload de blob criptografado válido ou está corrompido.
400
Falha ao ler metadados
UNKNOWN
Os dados do blob criptografado não foram gerados com o formato correto.
400
Falha ao descriptografar a mensagem
UNKNOWN
O par de chaves pública-privada configurado no servidor e a biblioteca de captura não coincidem.
401 Não autorizado
403 Acesso negado
502 Gateway inválido
504 Gateway Timeout
Integração com a Plataforma V2 (opcional)
Se a operação estiver sendo rastreada na Plataforma V2 / IDV Suite, o Endpoint pode emitir um evento de Tracking por chamada ao IAD. Esta Integração é opcional e aditiva: não enviar os headers de Tracking deixa o comportamento do Endpoint idêntico ao das versões anteriores.
Ativação
Para ativar o Tracking em uma chamada específica, basta incluir os headers OperationId e SessionId (ou, alternativamente, um ExtraData Tokenizado que os contenha). Além disso, o tenant deve ter o Tracking habilitado em sua configuração interna; caso contrário, os headers são ignorados.
Informação publicada
Quando o evento é emitido, aparece na aba Segurança do detalhe da operação com os seguintes campos:
Diagnóstico IAD
Resultado de alto nível: Ataque não detectado, Ataque detectado, ou Erro: <detalhe> se a detecção não foi concluída.
ID da requisição
Identificador único da requisição, útil para correlacionar com logs.
Versão
Versão do motor de IAD utilizada. Só aparece se o tenant a tiver configurado.
O evento é emitido tanto em sucessos (Ataque detectado / Ataque não detectado) como em erros (falha do motor, Timeout, bundle inválido), de forma que qualquer invocação ao IAD fica registrada com seu resultado de alto nível. Não são expostos detalhes internos do motor nem do bundle: o evento contém apenas o resultado de alto nível e os identificadores necessários para auditoria.
Integração do lado do cliente
Para gerar o payload do blob criptografado, é necessário utilizar a Versão do Widget Selphi Antispoof e capturar o evento onExtractionFinished. O evento retornará um objeto com os resultados do processo de extração facial. Uma das propriedades desse objeto é encryptedLivenessRaw, que contém o payload do blob criptografado.
Uma vez obtido o payload, ele deve ser enviado ao servidor do cliente por meio de uma solicitação POST. Pode-se utilizar qualquer biblioteca cliente HTTP, como Axios ou Fetch.
O servidor do cliente deve receber esse payload e enviá-lo ao Endpoint IAD da Identity API. A API retornará os resultados em um objeto JSON indicando se passa nas validações.
Exemplo de Integração
Atualizado