Pular para o conteúdo

Arquitetura real · Júnior

DICT: token bucket contra varredura de chaves Pix

Mostra parâmetros reais, publicados em norma. Pessoa física: 100 fichas, −1 por consulta válida, −20 por consulta inválida, +1 por Pix pago, +2 por minuto. Participantes: categorias A–H. A norma traz um exercício resolvido: um saldo devedor de 15 fichas leva a uma espera de 8 minutos.

12 min de leitura · Fonte: Banco Central do Brasil (Pix) · Conteúdo revisado em 23 de outubro de 2026

Resposta curta

Mostra parâmetros reais, publicados em norma. Pessoa física: 100 fichas, −1 por consulta válida, −20 por consulta inválida, +1 por Pix pago, +2 por minuto. Participantes: categorias A–H. A norma traz um exercício resolvido: um saldo devedor de 15 fichas leva a uma espera de 8 minutos.

01 · CONTEXTO

Quando consultar é o ataque

O DICT, o Diretório de Identificadores de Contas Transacionais, é a base das chaves Pix. O Banco Central é o mantenedor da base, e os participantes, com acesso direto ou indireto, são os requisitantes das consultas.

  1. O diagrama mostra a pessoa usuária, o app do participante e o DICT.

    Diagrama da arquitetura: DICT: quem consulta
    CLPessoa usuária
    CPApp do participante
    NWDICT
  2. Os participantes consultam o DICT como requisitantes, enquanto o Banco Central mantém a base.

    Diagrama da arquitetura: DICT: quem consulta
    CLPessoa usuária
    CPApp do participanterequisitante
    NWDICTbase do Banco Central
  3. Um ataque de leitura pode partir de um usuário ou de um invasor que usa a estrutura do participante.

    Diagrama da arquitetura: DICT: quem consulta
    CLPessoa usuária
    CPApp do participanteestrutura usada
    NWDICT

A norma define ataque de leitura como a captura de vínculos existentes no DICT para propósitos distintos de realizar pagamentos. Ele pode ser rápido e intenso, em poucas horas, ou lento, ao longo de dias ou meses.

Para conter esse abuso, o DICT limita as consultas de chave Pix com base em dois indicadores: as consultas sem ordem de pagamento e as consultas inválidas, isto é, feitas para chaves não registradas no DICT.

02 · O BALDE DE FICHAS

Como o DICT conta as consultas

O mecanismo de limitação usa o algoritmo Token Bucket, o balde de fichas. Para contar, o participante informa no header PI-PayerId quem origina a consulta, e todas as consultas de um mesmo usuário final por aquele participante levam o mesmo identificador. Assim, o DICT controla as consultas tanto por usuário final quanto por participante.

  1. O DICT controla as consultas por usuário final e por participante, cada um com o seu balde.

    Diagrama da arquitetura: DICT: baldes de fichas
    CLPessoa usuária
    CPApp do participante
    NWDICT (getEntry)
    CHBalde do usuáriobalde do usuário
    CHBalde do participantebalde do participante
    CPSPI
  2. Cada consulta válida de chave tira uma ficha do balde.

    Diagrama da arquitetura: DICT: baldes de fichas
    CLPessoa usuária
    CPApp do participante
    NWDICT (getEntry)
    CHBalde do usuáriouma ficha por consulta válida
    CHBalde do participante
    CPSPI
  3. Cada consulta inválida, a uma chave não registrada, tira vinte fichas do balde do usuário.

    Diagrama da arquitetura: DICT: baldes de fichas
    CLPessoa usuária
    CPApp do participante
    NWDICT (getEntry)
    CHBalde do usuáriodebita vinte fichas
    CHBalde do participante
    CPSPI
  4. Para o participante, a consulta válida tira uma ficha e a inválida tira três.

    Diagrama da arquitetura: DICT: baldes de fichas
    CLPessoa usuária
    CPApp do participante
    NWDICT (getEntry)
    CHBalde do usuário
    CHBalde do participantecusto menor por consulta inválida
    CPSPI
  5. Após o SPI receber a ordem de pagamento, o balde recebe de volta fichas por consulta de chave.

    Diagrama da arquitetura: DICT: baldes de fichas
    CLPessoa usuária
    CPApp do participante
    NWDICT (getEntry)
    CHBalde do usuáriofichas devolvidas
    CHBalde do participante
    CPSPIordem de pagamento
  6. Com o balde vazio, a consulta recebe erro de limitação, código HTTP 429, e fica bloqueada até a reposição de fichas.

    Diagrama da arquitetura: DICT: baldes de fichas
    CLPessoa usuáriabloqueada até a reposição
    CPApp do participante
    NWDICT (getEntry)
    CHBalde do usuário
    CHBalde do participante
    CPSPI

03 · PARÂMETROS PUBLICADOS

Pessoa natural, pessoa jurídica e participante

Para a pessoa natural, o balde de consultas por telefone celular ou e-mail tem tamanho máximo de cem fichas, e o tamanho do balde para consultas por CPF, CNPJ ou chave aleatória é definido em separado. Em cada balde, a consulta válida tira uma ficha e a inválida tira vinte.

Pessoa naturalPessoa jurídica
Reposição pelo tempo2 fichas a cada minuto20 fichas a cada minuto
Devolução por consulta após a ordem de pagamento1 ficha por consulta2 fichas por consulta
Custo da consulta inválida20 fichas20 fichas

Para o participante, o tamanho máximo do balde e o incremento por minuto dependem da categoria. O Banco Central enquadra cada participante em uma das categorias, de A a H. Cada consulta válida tira uma ficha do balde do participante e cada inválida tira três.

Tamanho máximo do baldeIncremento por minuto
Categoria A50.00025.000
Categoria B40.00020.000
Categoria C30.00015.000
Categoria D16.0008.000
Categoria E5.0002.500
Categoria F500250
Categoria G25025
Categoria H502

04 · O EXEMPLO DA NORMA

Quando uma consulta inválida cria dívida

Quando o balde já está vazio, quem consulta recebe o erro de limitação, com código HTTP 429, e fica sem poder consultar até a reposição de fichas. O próprio manual traz um exemplo resolvido para a pessoa natural.

  1. A pessoa natural do exemplo tem apenas cinco fichas no balde e faz uma consulta.

    Diagrama da arquitetura: DICT: baldes de fichas
    CLPessoa usuária
    CPApp do participante
    NWDICT (getEntry)
    CHBalde do usuáriopoucas fichas
    CHBalde do participante
    CPSPI
  2. A chave consultada não está registrada: o DICT responde NOT FOUND, código HTTP 404, com penalidade de vinte fichas.

    Diagrama da arquitetura: DICT: baldes de fichas
    CLPessoa usuária
    CPApp do participante
    NWDICT (getEntry)chave não registrada
    CHBalde do usuário
    CHBalde do participante
    CPSPI
  3. O balde passa a ter saldo devedor de quinze fichas.

    Diagrama da arquitetura: DICT: baldes de fichas
    CLPessoa usuária
    CPApp do participante
    NWDICT (getEntry)
    CHBalde do usuáriosaldo devedor
    CHBalde do participante
    CPSPI
  4. Novas consultas só terão sucesso após oito minutos, com a reposição de duas fichas por minuto.

    Diagrama da arquitetura: DICT: baldes de fichas
    CLPessoa usuária
    CPApp do participante
    NWDICT (getEntry)
    CHBalde do usuárioespera pela reposição
    CHBalde do participante
    CPSPI

O exemplo deixa visível a assimetria de custos: a consulta válida custa uma ficha e a inválida custa vinte.

05 · DEFESA EM CAMADAS

O que o participante faz antes de o DICT dizer não

A norma exige que cada participante tenha uma política interna de limitação de consultas igual ou mais restritiva que o Token Bucket do DICT. Essa política é uma camada de proteção anterior, que limita o envio excessivo de requisições, e o controle pode ficar na aplicação ou na infraestrutura.

  1. O diagrama mostra o caminho da consulta no participante: limitação interna, cache, checkKeys, DICT e monitoramento.

    Diagrama da arquitetura: Participante: defesa em camadas
    CLPessoa usuária
    CPConsulta de chaves
    NWLimitação interna
    CHCache de chaves de empresas
    CPcheckKeys
    NWDICT
    NWMonitoramento
  2. A política interna do participante é igual ou mais restritiva que o balde do DICT.

    Diagrama da arquitetura: Participante: defesa em camadas
    CLPessoa usuária
    CPConsulta de chaves
    NWLimitação internalimite interno
    CHCache de chaves de empresas
    CPcheckKeys
    NWDICT
    NWMonitoramento
  3. O participante não repassa ao DICT a consulta que ultrapassaria o limite do usuário ou do participante, o que previne o erro de limitação.

    Diagrama da arquitetura: Participante: defesa em camadas
    CLPessoa usuária
    CPConsulta de chaves
    NWLimitação internaretém o excesso
    CHCache de chaves de empresas
    CPcheckKeys
    NWDICT
    NWMonitoramento
  4. Consultas a chaves de pessoa jurídica podem ter a resposta cacheada, por no máximo cento e oitenta segundos, para diminuir a carga no DICT.

    Diagrama da arquitetura: Participante: defesa em camadas
    CLPessoa usuária
    CPConsulta de chaves
    NWLimitação interna
    CHCache de chaves de empresascache de chaves de empresas
    CPcheckKeys
    NWDICT
    NWMonitoramento
  5. Sugere-se usar o checkKeys para confirmar a existência de chaves antes das requisições, o que evita altas quantidades de consultas inválidas.

    Diagrama da arquitetura: Participante: defesa em camadas
    CLPessoa usuária
    CPConsulta de chaves
    NWLimitação interna
    CHCache de chaves de empresas
    CPcheckKeysconfirma existência
    NWDICT
    NWMonitoramento
  6. O monitoramento acompanha as requisições dos usuários, e verificada fundada suspeita de uso indevido o participante deve bloquear de imediato o usuário.

    Diagrama da arquitetura: Participante: defesa em camadas
    CLPessoa usuária
    CPConsulta de chaves
    NWLimitação interna
    CHCache de chaves de empresas
    CPcheckKeys
    NWDICT
    NWMonitoramentorazões de consulta

O monitoramento tem duas razões. A primeira compara as consultas ao DICT com as ordens enviadas ao SPI: espera-se um valor ligeiramente acima de um, e valores próximos de dois ou maiores são tipicamente indicativos de anomalia, embora o limiar possa variar. A segunda compara as chaves não registradas com as encontradas, e a norma observa que essa relação é afetada pela jornada e pelo comportamento dos usuários.

A norma dá, usualmente, referências para suspeita: percentuais de chaves não registradas acima de sete por cento para o participante e acima de vinte por cento para usuários que tenham feito no mínimo cem consultas nas últimas vinte e quatro horas.

06 · LEITURAS PARA O DESENHO

O que levar para uma entrevista

Três ideias resumem o caso. O custo de uma consulta depende do resultado dela, pois a inválida custa muito mais que a válida. O crédito de fichas depende do pagamento, já que a ordem recebida pelo SPI devolve fichas ao balde. E a defesa tem camadas, porque o participante limita antes do DICT.

Perguntas frequentes

O que é DICT: token bucket contra varredura de chaves Pix?

Mostra parâmetros reais, publicados em norma. Pessoa física: 100 fichas, −1 por consulta válida, −20 por consulta inválida, +1 por Pix pago, +2 por minuto. Participantes: categorias A–H. A norma traz um exercício resolvido: um saldo devedor de 15 fichas leva a uma espera de 8 minutos.

O que o design de DICT: token bucket contra varredura de chaves Pix cobre?

Ele está organizado nestas seções: Quando consultar é o ataque, Como o DICT conta as consultas, Pessoa natural, pessoa jurídica e participante, Quando uma consulta inválida cria dívida, O que o participante faz antes de o DICT dizer não e O que levar para uma entrevista.

Quanto tempo leva DICT: token bucket contra varredura de chaves Pix e qual é o nível?

Leva cerca de 12 minutos para ler e tem nível Júnior.

Agora projete você mesmo

Rode este caso como uma entrevista na escola de System Design: você toma as decisões, o tutor as questiona e você vê a nota do seu desenho.