Lei do Teto de Transferibilidade

O seu CAPTCHA já está no teto. Endurecê-lo não compra nada.

Toda a indústria mede a percentagem de bots bloqueados. Essa percentagem não diz se vale a pena atacá-lo — diz apenas quanto esforço custou a quem se defende. A pergunta que decide é outra: quantos dólares custa, ao atacante, cada ação que ele consegue passar?

E há uma razão estrutural, demonstrável em duas linhas, pela qual essa conta quase nunca melhora com um puzzle mais difícil.

Mef  ≤  log10( pmercado / A )  −  Λ A margem efetiva de qualquer desafio tem um teto que não é dele: é do mercado onde o resultado dele se revende. E desse teto ainda se subtrai Λ — o que a sua própria política de ligação oferece de borla.

Mede-se uma resolução. Mas o atacante não compra uma resolução: compra tudo o que ela autoriza. Se o token que o seu site valida dá origem a uma credencial ao portador válida durante horas, cada resolução comprada paga milhares de ações — e o custo por ação desmorona por um caminho onde nenhum desafio, por mais difícil, tem qualquer palavra a dizer.

Este instrumento põe as duas alavancas lado a lado, em ordens de grandeza, e diz qual delas ainda tem folga no seu caso. Nada do que escrever abaixo sai do seu browser — a lei corre localmente, e não há para onde enviar o que escrever: esta página não contacta servidor nenhum, nem o nosso.

O instrumento

Descreva o artefacto que o seu site emite

Não é preciso dado nenhum, nem credenciais, nem tráfego: só o que a sua equipa já sabe de cor sobre o token ou cookie que o site passa a aceitar depois de o desafio ser resolvido. É quase sempre no segundo artefacto — o que o seu servidor emite — que está o dinheiro, e não no token do fornecedor.

1. Que ligações é que o seu servidor verifica?

Sublinhe-se verifica: um campo que viaja dentro do artefacto mas que o servidor nunca compara não liga nada. É o erro mais comum, e é o que faz um número bonito valer zero.

Em segundos. A validade é o manípulo que toda a gente puxa primeiro — e é o que está mais perto de esgotado.

Ações por segundo aceites do mesmo token/cookie. Em branco = sem limite, que é o que quase toda a gente tem.

O preço de revenda de uma conta criada, a margem de um bilhete, o valor de um voto, o lucro de um cartão testado. É o denominador do M, e é o único número que só o senhor sabe — por isso este instrumento recusa-se a inventar um.

Define o preço a que o resultado dele se revende no mercado — que é o teto de que fala a lei. Cotação de ordem de grandeza, datada , discutível e substituível.

O preço acima é uma ordem de grandeza nossa: datada, sem fonte verificada nesta medição, e por isso a leitura vem com ressalva. Se tiver um preço que possa citar, ponha-o aqui com a data e com a proveniência — a ressalva desaparece e a conta passa a correr sobre um número seu. Preço sem data, ou sem dizer de onde veio, é recusado em vez de ser aceite em silêncio: é a mesma regra que o motor aplica desde que passou a exigir procedência às cotações.

Em USD por resolução — o V* do seu mecanismo. Em branco, assume-se que o atacante compra ao preço de mercado em vez de construir, que é o caso de quem usa um fornecedor. Preencher isto com um valor abaixo do preço de mercado é declarar que o seu desafio ainda tem folga para endurecer — e a lei vai dizer exatamente quanta.

A leitura

O que a lei diz sobre a sua política

— M efetivo · por ação admitida
—
−6−4−20+2
—
k · ações por resolução
—
—
Λ · ordens oferecidas
—
O que a transferibilidade do artefacto está a dar de borla ao atacante.
τ · transferibilidade
—
—
O que isto significa

—

As duas alavancas

Onde é que ainda há folga

Há exatamente dois sítios onde se pode ganhar margem. Um deles tem teto de mercado e o outro não. Este é o gráfico que a indústria nunca desenha.

Endurecer o desafio até ao limite absoluto —
Ligar o artefacto (levar k a 1) —

—

O outro prato da balança

O que a política custa a quem é legítimo

Uma recomendação de segurança que não traz o preço em utilizadores partidos não é uma recomendação, é uma opinião. Aqui está o preço.

Origem do atritoSessões partidasUSD/sessão
As ligações que escolheu——
A validade (quem é mais lento do que ela)——

As frações somam-se em vez de se combinarem por probabilidade, porque cada ligação parte um conjunto diferente de pessoas — quem muda de IP no metro não é quem tem a impressão digital instável por ter atualizado o browser. Somar sobrestima ligeiramente, que é o lado seguro de errar quando se recomenda a alguém que aperte o sistema.

O que isto não é

As ressalvas, à frente e não no rodapé

A parte que só se resolve medindo

Este instrumento dá-lhe o Λ e o teto. O que ele não lhe dá é o V* real do seu mecanismo — quanto custa, hoje, a via de ataque mais barata contra si — nem o atrito medido no seu tráfego em vez de assumido. Isso é uma auditoria, e é o que o Intruso faz. A escala está publicada, e o método também: quintas@intruso.org.

Porque é que pode confiar nesta página

A conta que corre aqui é a mesma que corre no motor

Esta página é uma segunda implementação da lei: a primeira vive no motor de auditoria, em Python. Duas implementações da mesma grandeza divergem sempre — e divergem em silêncio, que é a pior maneira de partir um instrumento.

Por isso o motor gera 260 casos de conformidade, que incluem os 64 subconjuntos possíveis de ligações e os dois ramos do teorema, e um teste compara o JavaScript desta página contra eles em 6760 verificações. O maior desvio permitido é o erro de representação em vírgula flutuante (4×10⁻¹⁶), não uma margem de conforto. Se a página se afastasse do motor, o teste falhava antes de a página ser publicada.

E porque uma afirmação de conformidade que ninguém pode re-executar é só uma afirmação, os ficheiros estão publicados. São estes, e não é preciso pedir licença a ninguém:

/lei.js — a lei que corre nesta página
/vetores_lei.json — os 260 casos, gerados pelo motor
/teste_lei.mjs — o teste que compara um com o outro
/recusa.mjs — a guarda que confere que as recusas do teste medem algo
$ node teste_lei.mjs

E a cotação de mercado, que é o numerador do teto e portanto o número que decide para que lado é que a leitura erra, tem um arnês só para ela: prende à regra do motor a validade de seis meses, a fonte obrigatória e a recusa de entradas sem procedência. São mais dois ficheiros, e correm da mesma maneira:

/lei.js — o mesmo de cima, se ainda o tiver
/vetores_cotacao.json — os casos da regra da cotação
/teste_cotacao.mjs — 6744 verificações contra o motor
$ node teste_cotacao.mjs

Nem tudo o que se mede é publicável — um corpus de CAPTCHAs resolvidos é o material mais sensível que esta ferramenta chega a tocar, e não sai de máquina nenhuma. Mas tudo o que se publica tem de ser verificável. É a mesma regra da Escala Intruso.