Política de controle de consultas ao DICT — passo a passo
Este guia descreve, de forma operacional, como é controlada as consultas de chaves Pix ao DICT (Diretório de Identificadores de Contas Transacionais), atendendo integralmente ao item 13 do Manual Operacional do DICT (v8.2) — Mecanismos de prevenção a ataques de leitura.
A política é organizada em quatro camadas que atuam em sequência, antes do envio da consulta ou antes da efetivação da transação Pix.
Base regulatória: Regulamento do Pix (art. 84-B, inciso II) e Manual Operacional do DICT v8.2, seções 13.1, 13.2.1, 13.2.2, 13.2.3, 13.2.4 e 13.2.5.
Contexto — o que é um ataque de leitura
Conforme o Manual, ataques de leitura ocorrem quando alguém — usuário ou invasor utilizando a estrutura do participante — captura vínculos do DICT para finalidades distintas da realização de pagamentos. Podem ser concentrados e de alta intensidade (elevado volume de consultas em poucas horas) ou distribuídos no tempo (ao longo de dias ou meses).
A proteção exige atuação conjunta entre o Banco Central (mantenedor da base) e os participantes (responsáveis por suas requisições).
Visão geral — quatro camadas de segurança
| Camada | Função | Quando atua | Item do Manual |
|---|---|---|---|
| 1. Balde de Fichas (Token Bucket) | Limita a taxa de consultas por CPF/CNPJ pagador | Antes do envio ao DICT | 13.1 e 13.2.2 |
| 2. Monitoramento comportamental | Identifica padrões anômalos em janelas curtas e longas | Após cada consulta | 13.2.3 |
| 3. Resposta automática ao ANTISCAN | Reage à sinalização de esgotamento retornada pelo DICT | Imediatamente após o retorno | Camada complementar |
| 4. Antifraude do destinatário | Cruza dados do DICT com listas internas e Receita Federal | Antes da efetivação da transação | Camada complementar |
Passo a passo — o que acontece a cada consulta
Passo 1 — Usuário inicia a consulta em ambiente autenticado (item 13.2.1)
Toda consulta exige usuário logado em ambiente autorizado, com:
- Login e senha (mínimo);
- MFA na efetivação da transação;
- Validação de dispositivo (token embarcado);
- Biometria/reconhecimento facial quando aplicável.
Consultas a partir de sessões não autenticadas ou de dispositivos não reconhecidos são bloqueadas antes de qualquer outra etapa.
Passo 2 — Sistema verifica o saldo do balde do usuário (item 13.2.2)
Antes de qualquer comunicação com o DICT:
- Verifica se há bloqueio temporário ativo para o CPF/CNPJ;
- Lê o saldo atual do balde individual do usuário;
- Debita 1 ficha para autorizar a consulta.
Se o saldo ficar negativo, a consulta é interrompida internamente — não é repassada ao DICT — e o usuário recebe a mensagem "Limite de consultas atingido". Esse comportamento atende textualmente à exigência do item 13.2.2: o participante não deve enviar ao DICT consultas que excederiam os limites internos.
Passo 3 — Consulta é enviada ao DICT
Se autorizada, a consulta é enviada com o CPF/CNPJ pagador no campo PI-PayerId, identificando individualmente o usuário final conforme exige o item 13.1.
Passo 4 — Sistema trata a resposta do DICT
| Resposta do DICT | Ação aplicada |
|---|---|
| Chave encontrada (FOUND) | Segue para a Camada 4 (antifraude do destinatário) |
| Chave não encontrada (NOT FOUND) | Penalidade adicional: 3 fichas (PF) ou 19 fichas (PJ) |
| ANTISCAN do usuário | Zera o balde do usuário e instaura bloqueio temporário (default: 10s) |
| ANTISCAN do participante | Bloqueio coletivo nas contas marcadas como alto volume (default: 30s) |
| Outros erros | Registro em log + mensagem genérica ao usuário |
Passo 5 — Usuário recebe apenas os dados permitidos (item 13.2.5)
Em consultas bem-sucedidas, apenas as informações permitidas pelo Manual são exibidas ao pagador:
- Nome completo ou nome empresarial;
- Título do estabelecimento (nome fantasia), quando aplicável;
- CPF mascarado (formato
***.777.888-**) ou CNPJ; - Chave consultada;
- Nome do PSP recebedor (opcional).
Demais dados retornados pelo DICT são de uso exclusivo do PSP e nunca são exibidos ao usuário.
Passo 6 — Sistema valida o destinatário (antifraude)
Toda consulta bem-sucedida é cruzada com:
- Lista interna de contas-laranja confirmadas;
- Lista interna de contas envolvidas em fraudes confirmadas;
- Lista interna de fraudes de aplicação;
- Base da Receita Federal (situação cadastral).
Se houver qualquer marcação positiva, a transação é interrompida antes da efetivação do pagamento.
Passo 7 — Toda consulta é registrada
Bem-sucedida ou não, a consulta é persistida em base permanente, com chave consultada, CPF/CNPJ, código de retorno e identificadores da conta e da transação. Esses dados alimentam dashboards e a análise comportamental.
Passo 8 — Após a transação liquidar, o usuário recebe ficha de volta
Quando a consulta origina um Pix efetivamente liquidado no SPI, 1 ficha é devolvida ao balde, em linha com o item 13.1.
Passo 9 — Análise comportamental roda em paralelo (item 13.2.3)
Em paralelo a tudo, uma rotina assíncrona avalia o histórico do usuário e dispara restrições automáticas se detectar padrões suspeitos (ver Camada 2 a seguir).
Camada 1 — Balde de Fichas (item 13.2.2)
Para cada CPF ou CNPJ pagador, o sistema mantém um saldo individual de fichas.
Dinâmica do balde
| Evento | Efeito no saldo |
|---|---|
| Solicitação de consulta a uma chave Pix | −1 ficha |
| Consulta retorna NOT FOUND | −3 fichas (PF) ou −19 fichas (PJ) adicionais |
| Pix efetivamente liquidado no SPI | +1 ficha (devolução) |
| Reabastecimento periódico | +2 fichas a cada execução (tipicamente a cada minuto) |
| Saldo ultrapassa o teto | Saldo redefinido para o teto |
| Saldo fica negativo | Balde zerado + bloqueio temporário |
Segmentação automática PF × PJ
- CPF (11 dígitos) → tratado como Pessoa Física
- CNPJ (14 dígitos) → tratado como Pessoa Jurídica
Parâmetros — política mais restritiva que o DICT
| Parâmetro | ONZ — PF | ONZ — PJ | DICT — PF | DICT — PJ | Aderência |
|---|---|---|---|---|---|
| Tamanho máximo do balde | 10 | 100 | 100 | 1.000 | Mais restritivo |
| Penalidade NOT FOUND | 3 | 19 | 20 | 20 | Mais restritivo na prática |
| Devolução após Pix no SPI | 1 | 1 | 1 | 2 | Mais restritivo p/ PJ |
| Reabastecimento periódico | +2/min | +2/min | 2/min | 20/min | Mais restritivo p/ PJ |
| Bloqueio individual após violação | 10s | 10s | n/a | n/a | Camada extra |
| Bloqueio coletivo | 30s | 30s | n/a | n/a | Camada extra |
| Pausa por concentração de consultas | 5s | 5s | n/a | n/a | Camada extra |
O Manual exige (item 13.2.2) política interna igual ou mais restritiva que a do DICT — requisito plenamente atendido.
Aderência à Categoria E do participante
A ONZ está enquadrada na categoria E: balde do participante de 5.000 fichas e reposição de 2.500/min. Como o controle da ONZ é feito por usuário pagador (granularidade superior à exigida), o consumo agregado do participante permanece muito abaixo desse teto em condições normais. Para chegar perto, seria necessário que mais de 2.500 PFs distintas apresentassem volume elevado de consultas simultaneamente — cenário que dispararia, antes disso, as defesas comportamentais da Camada 2.
Camada 2 — Monitoramento comportamental (item 13.2.3)
Rotina assíncrona avalia, na janela das últimas 1 hora e em janelas longas (até 30 dias), quatro regras aplicadas individualmente a cada CPF/CNPJ pagador:
| # | Regra | Condição | Volume mínimo | Bloqueio |
|---|---|---|---|---|
| 1 | Consultas inválidas repetidas para a mesma chave | 5+ NOT FOUND para a mesma chave | 1 consulta | 30 min |
| 2 | Excesso absoluto de consultas inválidas | NOT FOUND > FOUND e mais de 10 inválidas no período | 10 inválidas | 60 min |
| 3 | Baixa taxa de transações (VDC/EOS) | Razão Pix efetivados / total de consultas < 50% | 10 transações ou 10 consultas | 30 min |
| 4 | Baixa taxa de sucesso das consultas | Razão consultas com sucesso / total < 50% (proxy direto de NOT FOUND/(NOT FOUND+FOUND)) | 10 consultas | 30 min |
Aderência aos indicadores exigidos pelo Manual
| Exigência do item 13.2.3 | Como é atendida |
|---|---|
| Razão VDC/EOS | Regra 3 |
| Razão NOT FOUND/(NOT FOUND+FOUND) | Regras 2 e 4 |
| Períodos curtos (horas) | Janela de 60 min em todas as regras |
| Períodos longos (dias / meses) | Tabelas de agregação por minuto, hora e dia, com retenção configurável |
| Monitoramento por usuário e por PSP | Tabelas de agregação dedicadas |
| Bloqueio imediato em caso de suspeita | Gatilhos automáticos, sem intervenção humana |
Funcionalidade checkKeys para pagamentos em lote
Conforme recomendado pelo Manual, em casos de pagamentos em grande volume ou em lote, o time de risco utiliza a funcionalidade checkKeys (de uso exclusivo do PSP, não disponibilizada aos usuários) para confirmar previamente a existência de chaves antes do envio massivo de requisições. Isso evita altas quantidades de consultas inválidas e o consequente esgotamento dos baldes.
Os parâmetros das regras (percentuais e janelas) são ajustáveis pela equipe de risco por meio de tabela de configuração centralizada, permitindo resposta rápida à evolução da telemetria.
Camada 3 — Resposta automática ao ANTISCAN do DICT
Quando o DICT retorna sinalização de esgotamento de balde do participante, o sistema:
- Zera os baldes de todas as contas marcadas como alto volume;
- Bloqueia novas consultas dessas contas pelo período configurado (default: 30 segundos);
- Restabelece automaticamente o serviço quando o bloqueio expira.
Quando a sinalização é específica de um usuário, o procedimento é equivalente, porém aplicado apenas àquele usuário (default: 10 segundos).
Camada 4 — Antifraude do destinatário
Toda consulta DICT bem-sucedida é cruzada com listas internas de risco (contas-laranja, fraudadores identificados, fraudes de aplicação) e com a base da Receita Federal (situação cadastral).
Em caso de marcação positiva, a transação é interrompida antes da efetivação do pagamento.
Plano de ação para casos suspeitos (item 13.2.4)
Gatilhos automáticos
Toda violação dispara, sem intervenção humana, três ações em cascata:
- Aplicação imediata de marcador de bloqueio com prazo determinado (5 segundos a 60 minutos, conforme a regra violada);
- Persistência da restrição em base permanente, criando trilha de auditoria;
- Notificação automática ao usuário (mensagem no app + e-mail).
| Gatilho | Duração do bloqueio | Notificação |
|---|---|---|
| Saldo do balde negativo (Camada 1) | 5 segundos | Mensagem no app |
| Consultas inválidas repetidas (Regra 1) | 30 minutos | E-mail ao último contato cadastrado |
| Excesso absoluto de inválidas (Regra 2) | 60 minutos | |
| Baixa taxa de transações (Regra 3) | 30 minutos | |
| Baixa taxa de sucesso (Regra 4) | 30 minutos | |
| ANTISCAN do usuário (Camada 3) | 10 segundos (default) | Mensagem no app |
| ANTISCAN do participante (Camada 3) | 30 segundos (default) | Mensagem padrão |
Esse fluxo cumpre os três objetivos do item 13.2.4:
- Cessação imediata do comportamento anômalo;
- Preservação dos dados vinculados às chaves;
- Prevenção de reincidência por meio de bloqueios escalonados e marcadores persistentes.
Mensagens exibidas ao usuário
| Motivo interno | Mensagem ao usuário |
|---|---|
| Balde esgotado | "Limite de consultas atingido" |
| Restrição ANTISCAN do DICT | "Restrição temporária por política de segurança" |
| Bloqueio comportamental — limite genérico | "Limite de consultas atingido" |
| Consultas inválidas repetidas para a mesma chave | "Consultas repetidas para chave inválida" |
| Excesso de consultas sem resultado | "Excesso de consultas sem resultado" |
| Baixa taxa de transações | "Padrão de consultas identificado como incomum" |
| Baixa taxa de sucesso | "Muitas consultas sem resultado" |
Quando o tempo restante é conhecido, a mensagem inclui essa informação (ex.: "Tente novamente em 30 minutos").
Notificação por e-mail
Sempre que uma restrição comportamental é aplicada, o usuário recebe um e-mail automático com saudação personalizada, identificação institucional, motivo da restrição e duração em minutos.
Comunicação ao Banco Central em caso de ataque confirmado
Em caso de confirmação de ataque de leitura, o time de risco:
- Aciona o plano de contenção emergencial (zeragem de baldes afetados + bloqueio coletivo via painel administrativo);
- Comunica imediatamente o Banco Central pelo endereço
[email protected], descrevendo as medidas adotadas para contenção e prevenção de reincidência; - Avalia obrigações adicionais previstas pela LGPD, em especial quanto a comunicação de incidente à ANPD e aos titulares afetados.
Painel administrativo de gerenciamento dos baldes
Disponível para o time de risco e prevenção a fraudes, em tempo real:
- Listar todos os baldes ativos com saldo atual;
- Recompor manualmente o balde de um usuário, após investigação documentada;
- Zerar o balde como medida de contenção em incidente;
- Liberar bloqueios temporários após análise.
Toda ação no painel é registrada em logs estruturados permanentes (operador, CPF/CNPJ afetado, saldo anterior, saldo posterior, origem). Compõe a trilha de auditoria à disposição do Banco Central.
Trilha de auditoria — evidências sistêmicas permanentes
| Evidência | Conteúdo | Granularidade |
|---|---|---|
| Log bruto de consultas ao DICT | Cada consulta com chave, CPF/CNPJ, código de retorno, IDs de conta e transação, data/hora | Por consulta |
| Agregações por usuário pagador | Totais de consultas válidas, inválidas e bloqueadas | Minuto / hora / dia |
| Agregações por chave consultada | Permite identificar varredura específica de chaves | Minuto / hora / dia |
| Snapshots do saldo dos baldes | Saldo de cada CPF/CNPJ a cada execução do reabastecedor | Por execução |
| Histórico de restrições aplicadas | Cada restrição com motivo, duração, datas de aplicação e remoção | Por restrição |
| Logs de operações administrativas | Operador, CPF/CNPJ afetado, saldo anterior/posterior, origem | Por ação |
| Notificações por e-mail | Trilha de envio com data/hora e destinatário | Por envio |
Todos os registros são permanentes e podem ser disponibilizados ao Banco Central, sob demanda, em formato analítico ou em base bruta.
Dashboards operacionais em tempo real
- Linha do tempo de consultas (válidas, inválidas e bloqueadas) por hora, dia ou mês;
- Comparativo entre Volume de Consultas ao DICT (VDC) × Envio de Ordens ao SPI (EOS);
- Listagem dos usuários com maior volume de consultas falhadas nas últimas 24 horas;
- Detalhamento de picos de consultas inválidas (5+ consultas inválidas por minuto na mesma chave);
- Distribuição percentual por status em qualquer janela temporal.