Voltar ao blog Qualidade e confiança

Circuit breaker em OTP por SMS: limiares, estados e recuperação segura

Guia operacional para limitar de forma reversível o envio de OTP por SMS quando a aceitação, os estados de entrega ou a latência se degradam, sem transformar a proteção num bloqueio para utilizadores legítimos.

Painel operacional que mostra estados de um circuit breaker para OTP por SMS

Que problema resolve um circuit breaker em fluxos de OTP por SMS

Um circuit breaker para OTP por SMS é um controlo operacional que reduz ou modifica temporariamente os envios quando surgem sinais de degradação num segmento específico. O seu objetivo é proteger a continuidade do fluxo de autenticação, limitar o impacto de uma rota ou destino afetado e evitar que um incidente amplifique novas tentativas, duplicados e expirações de códigos.

Não substitui os controlos de segurança do OTP. O limite de tentativas de validação do código, a validade do segredo, a utilização única e as defesas contra abusos são controlos distintos. O circuit breaker atua sobre a decisão de enviar ou tratar pedidos de mensagens; não deve repor limites de autenticação apenas porque é emitido um novo código.

Num fluxo fora de banda por SMS, o segredo de curta duração é gerado para uma operação de autenticação e transportado por um canal secundário. Por isso, um problema de entrega pode impedir a conclusão de uma autenticação legítima, mas a solução não consiste necessariamente em interromper todo o tráfego. O segmento afetado deve ser isolado e deve ser aplicada uma resposta proporcional.

  • Objetivo: limitar o raio de impacto da degradação.
  • Âmbito: decisões de envio, fila, débito, rota ou autenticador alternativo permitido.
  • Não é: uma prova de fraude, um substituto da limitação de tentativas de verificação nem uma garantia de entrega.
  • Princípio operacional: decisões reversíveis, segmentadas e auditáveis.
Que problema resolve um circuit breaker em fluxos de OTP por SMS

Porque um aumento de DLR negativos não basta para bloquear automaticamente os envios

Um identificador devolvido ao submeter uma mensagem a uma API, fornecedor ou SMSC confirma a aceitação dessa submissão de acordo com o protocolo ou a integração; não confirma que o telemóvel recebeu o OTP. A entrega é uma fase posterior e deve ser observada separadamente através dos estados disponíveis.

Também não é aconselhável tratar qualquer DLR negativo como motivo suficiente para abrir um circuito global. Em SMPP existem estados intermédios, como ENROUTE, e estados finais como DELIVERED, EXPIRED, DELETED ou UNDELIVERABLE. Uma mensagem num estado intermédio pode continuar em processamento ou em nova tentativa antes de atingir um estado final.

A ausência de DLR também não equivale automaticamente a não entrega. A devolução de recibos depende da configuração de registered_delivery e da implementação do centro de mensagens ou do fornecedor. Uma política sólida define qual a ausência de estado final relevante, durante quanto tempo e para que coortes, em vez de assumir que todo o silêncio é uma falha.

  • Separar a aceitação do envio, o estado de entrega e a validação bem-sucedida do OTP.
  • Classificar ENROUTE como estado intermédio, não como resultado final.
  • Avaliar DLR negativos no contexto de volume, tempo, destino e rota.
  • Tratar a falta de DLR como incerteza de observabilidade, não como prova de não receção.
  • Não assumir que um DLR DELIVERED comprova de forma independente a receção ou leitura pelo utilizador.
Porque um aumento de DLR negativos não basta para bloquear automaticamente os envios

Os sinais que convém separar

O circuito não deve ser alimentado por uma única métrica combinada. Cada sinal descreve uma fase diferente e pode exigir uma ação distinta. Combinar falhas de API com DLR tardios, por exemplo, pode ocultar se o incidente está na integração, antes da aceitação, na observabilidade dos estados ou numa rota de entrega.

Defina eventos normalizados e uma taxonomia estável antes de estabelecer limiares. O valor do mecanismo depende de a mesma condição produzir a mesma classificação, mesmo quando muda a equipa de prevenção ou a implementação de uma rota.

  • Erros de integração ou transporte: falhas de autenticação, conectividade, timeouts e erros de protocolo entre a aplicação e o ponto de envio.
  • Rejeições prévias: pedidos não aceites pela interface de envio. Devem ser distinguidos de uma mensagem aceite que depois não atinge um estado final favorável.
  • Estados finais negativos: resultados finais comunicados posteriormente para mensagens aceites.
  • Estados intermédios: mensagens ainda em processamento; não devem ser simplesmente somadas às falhas finais.
  • Latência: tempo desde a submissão aceite até ao estado final disponível, analisado por coorte.
  • Ausência de estado final: mensagens sem estado final dentro do prazo definido pela política.
  • Comportamento de reenvio: pedidos repetidos, potenciais duplicados, novos OTP emitidos e validações posteriores.

Modelo de três estados: fechado, aberto e teste controlado de recuperação

O modelo mais simples e rastreável utiliza três estados. No estado fechado, o segmento funciona com a política normal e os sinais são observados. No estado aberto, é aplicada a ação de proteção definida para esse segmento. No teste controlado de recuperação, é libertada uma parcela limitada e explicitamente controlada do tráfego para verificar se a degradação desapareceu.

Não existe uma percentagem, duração ou taxa de erro universal adequada para todos os destinos. Esses valores devem ser parâmetros de política aprovados pela equipa responsável, ajustados ao volume, à validade do OTP, às alternativas disponíveis e ao risco de afetar utilizadores legítimos.

A transição deve ser determinística. Especifique quais os sinais que abrem o circuito, durante quanto tempo permanece inicialmente aberto, quando pode entrar em teste e qual a condição que o devolve ao estado aberto. Evite alterações manuais sem registo, pois impedem a reconstrução do motivo de uma decisão.

  • Fechado: envio normal e recolha de sinais por segmento.
  • Aberto: pausa, limitação, fila condicionada ou alternativa permitida de acordo com a política.
  • Teste controlado: libertação limitada e observada antes de restaurar o funcionamento normal.
  • Reabertura: retorno imediato ao estado aberto se os sinais definidos voltarem a surgir.
  • Fecho: restabelecimento apenas após cumprir critérios de estabilidade e volume suficiente.

Como definir limiares com volume mínimo, janela temporal e segmentação

Calcule os limiares sobre coortes operacionais coerentes. No mínimo, segmente por país ou plano de numeração. Quando a telemetria for fiável, acrescente operador de destino e rota. Uma média global pode ocultar uma degradação localizada ou, pelo contrário, abrir um bloqueio alargado devido ao comportamento de uma pequena parte do tráfego.

Todos os limiares devem declarar três elementos: uma janela temporal, um volume mínimo de observações e uma condição de degradação. Sem volume mínimo, uma amostra pequena pode gerar uma taxa extrema e instável. Sem janela, um evento antigo pode influenciar durante demasiado tempo ou uma breve vaga pode provocar uma reação excessiva.

Mantenha separados os limiares de integração, rejeição, resultado final, latência e ausência de estado final. Também é aconselhável estabelecer uma política para segmentos novos ou de baixo volume: em vez de inferir uma taxa conclusiva, pode ser exigida uma revisão operacional ou aplicada uma ação mais conservadora e reversível.

  • Segmento recomendado: destino de numeração; ampliar por operador e rota quando existirem dados fiáveis.
  • Janela: expressar o período exato de cálculo e o respetivo método de atualização.
  • Volume mínimo: não avaliar taxas de abertura antes de atingir o mínimo aprovado.
  • Condição: definir que combinação de sinal, proporção e persistência ativa a transição.
  • Exclusões: documentar manutenções, alterações planeadas ou eventos de instrumentação que invalidem a leitura.
  • Versão: atribuir uma versão a cada conjunto de limiares e conservar o seu histórico.

Que ações aplicar ao abrir o circuito

Abrir um circuito não implica necessariamente descartar todos os pedidos. A ação deve respeitar a validade do OTP e o impacto no utilizador. Uma fila só é útil se o código continuar válido e se o atraso não levar a pessoa a pedir repetidamente novas mensagens. Se já não tiver utilidade, é preferível não reativar o pedido antigo.

As alternativas de autenticação devem estar ativadas e aprovadas antes de um incidente. Não improvise um canal alternativo cuja utilização não seja autorizada pela política de autenticação. Em particular, o correio eletrónico não deve ser utilizado como autenticação fora de banda segundo o NIST, embora possa ter outras utilizações, como confirmação de endereço ou recuperação, ao abrigo da respetiva política.

A decisão pode variar conforme a gravidade. Uma falha completa de integração pode exigir uma pausa imediata no âmbito afetado. Um aumento de latência ou de incerteza de DLR pode justificar a limitação de débito ou o teste de rotas autorizadas, desde que a organização disponha dessas opções e consiga observar os seus resultados.

  • Pausar novos envios para o segmento afetado.
  • Limitar o débito para reduzir a amplificação de uma degradação.
  • Colocar em fila apenas pedidos que possam ser concluídos dentro da validade útil do OTP.
  • Encaminhar, de acordo com uma política previamente aprovada, para uma alternativa ou rota disponível.
  • Apresentar ao utilizador um método de autenticação alternativo já permitido e configurado.
  • Não reutilizar OTP consumidos nem reativar indiscriminadamente pedidos antigos.

Como evitar um bloqueio para utilizadores legítimos

Um circuit breaker mal segmentado pode transformar uma degradação localizada numa negação de acesso para utilizadores legítimos. Para reduzir esse risco, limite o alcance inicial, privilegie ações reversíveis e avalie os efeitos negativos do controlo juntamente com a sua eficácia operacional.

Não permita que o reenvio seja uma saída sem limites. Quando o utilizador não recebe um OTP, as novas tentativas podem aumentar o volume, provocar duplicados e gerar códigos com períodos de validade sobrepostos. O fluxo deve ter regras claras para relacionar pedidos, manter os limites de autenticação e decidir qual o segredo que continua válido de acordo com a política.

SMS/PSTN tem limitações e riscos próprios, incluindo phishing, troca de SIM, portabilidade e redirecionamento do serviço. O circuit breaker pode melhorar a continuidade do envio, mas não elimina esses riscos. As decisões de autenticação devem manter os seus controlos de risco e autenticadores alternativos, independentemente do estado de entrega.

  • Aplicar o circuito ao segmento mais restrito explicado pelos sinais.
  • Medir abandonos, novas tentativas e falhas de verificação após cada ativação.
  • Não repor limites de falhas de autenticação ao emitir um novo segredo.
  • Oferecer vias de recuperação e autenticadores alternativos a quem não possa utilizar PSTN.
  • Distinguir um problema de mensagens de um sinal de fraude ou de uma falha de verificação.

Conceção da recuperação: testes graduais, fecho e reversão

A recuperação deve ser tão explícita como a abertura. Após o período inicial no estado aberto, o sistema pode passar para teste controlado se cumprir os requisitos da política. Esse teste deve ter alcance limitado, observação reforçada e critérios de interrupção imediatos caso os sinais de degradação voltem a surgir.

Não feche o circuito apenas porque passou algum tempo. Exija evidência na mesma coorte afetada: volume suficiente, comportamento de aceitação esperado, resultados de entrega disponíveis dentro do prazo aplicável e ausência da condição que provocou a abertura. Se a observabilidade de DLR for incompleta, não declare uma recuperação de entrega com base apenas na ausência de erros.

Uma reversão segura evita que um incidente oscilante transforme o sistema numa sequência de aberturas e fechos difíceis de explicar. Mantenha uma duração inicial de abertura, regras de reentrada em teste e uma condição clara de reabertura. Registe cada transição.

  • Entrar em teste apenas com critérios prévios e documentados.
  • Libertar tráfego limitado na coorte exata que está a ser verificada.
  • Observar os mesmos sinais que motivaram a abertura, não apenas uma métrica favorável.
  • Fechar após estabilidade e volume suficiente definidos pela política.
  • Voltar ao estado aberto se a condição de degradação reaparecer.
  • Rever a configuração se o circuito oscilar repetidamente.
FAQ

Perguntas frequentes

Um submit_sm_resp bem-sucedido confirma que o utilizador recebeu o OTP?

Não. Confirma que o SMSC devolveu um identificador para a mensagem submetida de acordo com SMPP. A entrega é comunicada posteriormente, quando disponível, através de eventos de estado. Mesmo um DLR deve ser interpretado como evidência do estado das mensagens, não como prova independente de leitura pelo utilizador.

A ausência de DLR significa que o SMS não foi entregue?

Não necessariamente. A devolução de recibos depende de registered_delivery e da implementação do centro de mensagens ou do fornecedor. A ausência deve ser classificada como falta de estado final dentro do prazo definido pela política, e não como prova automática de não receção.

Deve ser aberto um circuit breaker global quando aumentam os DLR negativos?

Não como regra automática. Avalie o volume mínimo, a janela temporal e a coorte afetada. Segmente, no mínimo, por destino de numeração e, se a informação for fiável, por operador e rota. Uma média global pode ocultar ou ampliar indevidamente o problema.

O correio eletrónico pode ser usado como alternativa imediata para autenticação fora de banda?

Não deve ser utilizado para autenticação fora de banda segundo o NIST. As alternativas devem ser aprovadas, implementadas e avaliadas no âmbito da política de autenticação antes de ocorrer uma degradação.

O que acontece aos OTP em fila quando o circuito abre?

Só devem ser mantidos se ainda puderem ser úteis dentro do respetivo período de validade e se a política permitir o seu processamento. Não é aconselhável reativar indiscriminadamente pedidos antigos nem reutilizar segredos consumidos. Os OTP devem ser de utilização única.

O que deve ficar registado em cada alteração de estado?

No mínimo, o identificador de correlação, o segmento afetado, o estado anterior e o novo, os sinais e fontes que motivaram a decisão, a versão dos limiares, a ação aplicada, os responsáveis e o resultado dos testes de recuperação.

Fontes consultadas

  1. NIST SP 800-63B — autenticación fuera de banda y uso de PSTNNational Institute of Standards and Technology (NIST)
  2. SMPP Protocol Specification v3.4 — Appendix B, Delivery Receipt FormatSMPP Developers Forum
  3. SMPP Delivery Receipts — estados finales e intermediosSMPP Developers Forum
  4. TS 23.040 — Technical realization of the Short Message Service3GPP / ETSI
  5. ITU-T Recommendation E.164 — plan internacional de numeración públicaInternational Telecommunication Union (ITU)
  6. OWASP Authentication Cheat Sheet — registro y supervisión de autenticaciónOpen Worldwide Application Security Project (OWASP)