Especificações técnicas
Requisitos mínimos
SO
Linux x86_64 (Ubuntu 20.04+)
CPU
4 núcleos
Memória
4 GB RAM
Disco
1 GB de espaço livre
Recomendado para produção
SO
Ubuntu 24.04 LTS
CPU
8+ núcleos
Memória
8 GB+ RAM
Rede
Conexão de baixa latência
Armazenamento
SSD para logs
Requisitos de rede
Conectividade de saída
O serviço deve conseguir alcançar:
Os servidores de licença da Facephi (para a validação da licença)
Acesso ao servidor de licenças
IPs e portas requeridos:
52.223.22.71
443
TCP/IP
35.71.188.31
443
TCP/IP
75.2.113.112
443
TCP/IP
99.83.149.57
443
TCP/IP
URLs requeridas:
https://api.cryptlex.com:443https://api.eu.cryptlex.com:443
Configure as regras do firewall para permitir o tráfego HTTPS de saída para estes endpoints.
Arquitetura de implantação
IAD Service opera como uma API REST sem estado que avalia payloads de captura e retorna um contrato público de Facephi:
Podem ser executadas várias instâncias do serviço atrás de um balanceador de carga
Cada instância mantém os recursos internos necessários para o processamento de capturas
O serviço não armazena estado de sessão
Compatibilidade da API pública
Aviso de mudança incompatível (2.0.0) A API REST pública exposta pela versão 2.0.0 quebra a compatibilidade com a série 1.x.x. Isso afeta o contrato de comunicação, não apenas a documentação. As integrações devem migrar as rotas dos endpoints, os nomes dos campos multipart e as regras de análise das respostas corretas.
Endpoint de Liveness
/api/v1/iad/check-capture
/api/v1/iad/liveness/evaluate
Endpoint de extração
/api/v1/iad/extract-image
/api/v1/iad/extract
Campo da solicitação multipart
file
capture
Payload correto de Liveness
Campos privados herdados
Campos públicos de Facephi
Mitigação experimental de ataques de repetição (replay)
O serviço pode aplicar uma janela de vigência (freshness window) aos payloads de captura de entrada. Essa proteção experimental está desabilitada por padrão.
Ative-a com
FACEPHI_IAD_REPLAY_ATTACK_CHECKER_ENABLED=trueAjuste a janela de vigência com
FACEPHI_IAD_REPLAY_ATTACK_TOLERANCE_TIME=<seconds>Janela de vigência padrão:
300segundosAplica-se aos endpoints de processamento de capturas como
POST /api/v1/iad/liveness/evaluateePOST /api/v1/iad/extractQuando a janela de vigência é excedida, a API pública retorna HTTP
400commessageigual aReplay attack detected
Essa funcionalidade é configurada na inicialização por meio de variáveis de ambiente. Não faz parte de config.json nem é exposta por meio de GET|POST /api/v1/iad/config.
Autenticação JWT
A autenticação JWT pode ser habilitada na inicialização por meio de config.json ou por meio de variáveis de ambiente FACEPHI_IAD_REST_AUTH_*.
Chaves de inicialização suportadas:
auth_enabled,auth_jwt_secret,auth_accept_authorization_header,auth_accept_api_key_header,auth_api_key_header_nameGET /api/v1/iad/configomite essas chaves da visualização pública de configuraçãoPOST /api/v1/iad/configrejeita essas chaves e não pode ser usado para rotacionar a configuração de autenticação JWT em tempo de execução
Características de desempenho
Latência
< 100ms
Desempenho (throughput)
Depende do dimensionamento do serviço e da capacidade de processamento de capturas
Conexões simultâneas
Limitadas por number_of_threads e engine_pool_size
Tamanho máximo da solicitação
Configurável por meio de client_max_body_size
Considerações de segurança
Implante por trás de um proxy reverso ou de um gateway de API (API gateway)
Habilite SSL/TLS para todas as comunicações
Priorize injetar
auth_jwt_secretpor meio de variáveis de ambiente ou de um gerenciador de segredos em vez de incluí-lo em arquivosProteja o arquivo de licença com as permissões adequadas (chmod 644)
Use regras de firewall para restringir as conexões de entrada
Mensagens de erro normalizadas por Facephi
Para POST /api/v1/iad/liveness/evaluate, as falhas de validação de captura são normalizadas para valores públicos de message, incluindo:
NoneBecauseFaceTooCloseNoneBecauseFaceNotFoundNoneBecauseFaceCroppedNoneBecauseFaceOccludedNoneBecauseTooManyFacesNoneBecauseAngleTooLargeNoneBecauseFaceTooSmallNoneBecauseFaceTooCloseToBorderNoneBecauseEyesClosedNoneBecauseImageDataErrorNoneBecauseLicenseErrorReplay attack detectedErrorProcessing
Para POST /api/v1/iad/extract, as falhas de análise e desencriptação do payload são retornadas como NoneBecauseImageDataError; as capturas expiradas rejeitadas pela proteção contra repetições retornam Replay attack detected; as falhas de extração não classificadas são retornadas como ErrorFacialImage.
As respostas corretas de Liveness são mapeadas para os campos públicos diagnostic, reason, probability, score, faceProbability opcional, sdkDuration e queueDuration. Os campos privados herdados e os payloads brutos do engine não são expostos.
Os valores possíveis para reason em POST /api/v1/iad/liveness/evaluate são:
NoneUnknownUntrustedEnvironmentSuspiciousActivityUntrustedDeviceSdkIntegrityViolationUntrustedCorruptedPayloadUntrustedContentUntrustedContentLowConfidence
O significado de cada valor público de reason é:
reason
Significado
None
A captura foi aceita como Live e não se aplica nenhum motivo de rejeição.
Unknown
O serviço não conseguiu atribuir a resposta a um motivo de rejeição público documentado.
UntrustedEnvironment
A captura foi rejeitada porque o ambiente de execução não é considerado confiável.
SuspiciousActivity
A captura foi rejeitada porque o dispositivo apresentou padrões de atividade associados a um ataque.
UntrustedDevice
A captura foi rejeitada porque não foi possível confiar que o dispositivo fosse o que afirma ser.
SdkIntegrityViolation
A captura foi rejeitada porque o SDK de captura ou suas bibliotecas parecem ter sido alterados.
UntrustedCorruptedPayload
A captura foi rejeitada porque o payload parece estar corrompido ou manipulado.
UntrustedContent
A captura foi rejeitada porque foi detectado um ataque de injeção.
UntrustedContentLowConfidence
A captura foi rejeitada porque o serviço detectou indícios de um ataque de injeção com menor confiança; ainda assim, deve ser tratada como uma rejeição.
Atualizado