Validação de Integração

Visão Geral

A validação de integridade é feita por três segredos criptográficos:

  • librarySecret (gerado pela Griaule e modificado a cada lançamento de face do BCC);

  • clientSecret (definido pelo cliente);

  • nonce, solicitação gerada Esses valores são usados ​​para gerar um HMAC, inserido no blob de atividade e transmitido ao backend, garantindo que nenhum dado seja alterado durante a transmissão.

Estrutura de Dados

FOOTER_VERSION 1

FOOTER_VERSION 2

  • libraryKeyId - Identifica a chave usada no cálculo do HMAC. Permite que o backend saiba qual segredo deve usar para validar a integridade naquela versão do SDK.

O blob é alterado somente quando a configuração fornecida possui parâmetros válidos. Caso a configuração não tenha parâmetros válidos ou não tenha sido aplicada, o blob não incluirá a validação de integridade (por exemplo, FOOTER_VERSION = 1).

Geração de HMAC

  1. Concatena librarySecret + clientSecret

  2. Deriva uma chave HMAC, com HKDF, usando nonce como salt

  3. Aplica HMAC<SHA256> em todos os bytes do blob gerados pelo SDK (imagens, JSON e metadados), gerando um código de autenticação

Comportamento de Endpoint

Se a versão mínima aceita for maior que a recebida no payload:

  • Um PROCESSING_ERROR (422) para versão não suportada é lançado.

Se a versão do payload for ≥ 2 e a validação de integridade estiver habilitada:

  • Se o librarySecret para o respectivo ID de chave não for encontrado:

  • Um PROCESSING_ERROR (422) genérico é lançado.

Se o HMAC calculado corresponder à secretKey do ID especificado e a qualquer segredo de cliente configurado:

  • O conteúdo está íntegro e o processo segue normalmente.

Caso contrário,

  • O conteúdo não está intacto e um PROCESSING_ERROR (422) genérico é lançado. Caso contrário, nada é validado.

Atualizado

Isto foi útil?