Uma percentagem de robustez é uma opinião com duas casas decimais.
Quando um site te diz que a tua palavra-passe está «92 % segura», a pergunta óbvia é: 92 % de quê? Onde está o 100 %? Não existe. Ninguém publicou a palavra-passe perfeita contra a qual se mede o resto. Aquele número sai de uma regra de três que alguém improvisou numa terça-feira — tantos pontos pela maiúscula, tantos pelo símbolo — e a sua única função verdadeira é pôr-te a barrinha verde para que sigas em frente.
Os bits, esses, significam sempre exactamente a mesma coisa. E significam uma coisa que podes usar.
Um bit é uma pergunta de sim ou não
A ideia toda cabe numa frase: cada bit duplica o número de tentativas de que precisa alguém que não sabe nada de ti.
Um bit são duas hipóteses. Dois bits são quatro. Três, oito. Dez bits são 1024 e vinte bits são pouco mais de um milhão. A conta não sobe, duplica, e duplicar é o que faz a intuição cair pela ravina abaixo.
Por isso a frase «40 bits é o dobro de 20» é falsa de uma maneira quase engraçada. Entre 20 e 40 bits há vinte duplicações, ou seja, um factor de 2²⁰: 40 bits não é o dobro de 20, é um milhão de vezes mais. E 60 bits não é o triplo de 20: é um milhão de vezes mais do que 40. A nossa cabeça lê aquela escala como se fosse uma fita métrica, e não é. É uma escala como a dos sismos ou a dos decibéis, onde um passinho pequeno no número é um salto brutal na realidade.
É essa toda a vantagem do bit sobre a percentagem. A percentagem dá-te uma sensação. O bit dá-te uma quantidade de trabalho.
De onde vem a palavra
A palavra entropia aplicada à informação vem de um artigo de 1948: A Mathematical Theory of Communication, de Claude Shannon.
Convém dizê-lo com precisão, porque se cita mal muitas vezes: Shannon não estava a pensar em palavras-passe. Não havia palavras-passe de computador que valesse a pena mencionar. Estava nos Bell Labs a trabalhar num problema muito diferente — quanta informação transporta mesmo uma mensagem, e quanto se pode comprimir antes de a estragar — e precisava de medir uma coisa escorregadia: a incerteza de quem está do outro lado.
A sua descoberta, dita à bruta, é que a informação e a surpresa são a mesma coisa. Uma mensagem que já sabias não te informa de nada. Uma mensagem impossível de antecipar informa-te imenso. A entropia mede quanta surpresa há na fonte que produz as mensagens, e mede-se em bits.
Que isso sirva para palavras-passe é quase um acidente feliz. Uma palavra-passe é, exactamente, uma mensagem que tem de ser impossível de antecipar.
O cadeado de rodinhas
Aqui está a única fórmula do artigo, e prometo que sai de graça:
H = L × log₂(N)
Esquece o logaritmo por um momento e pensa num daqueles cadeados de bicicleta com rodinhas. Tens duas maneiras de complicar a vida a quem o quiser abrir:
- Pôr mais rodinhas. Isso é o comprimento (
L): quantos caracteres tem a tua palavra-passe. - Pôr mais símbolos em cada rodinha. Isso é o alfabeto (
N): se cada roda leva só os dez algarismos, ou as 26 letras, ou letras e números e sinais.
O logaritmo só faz uma coisa: traduzir «quantos símbolos leva uma roda» para «quantos bits dá essa roda». Uma roda de 26 letras dá uns 4,7 bits. Uma roda com os 95 caracteres imprimíveis do teclado dá uns 6,6.
E é aí que está a piada. Repara onde está cada coisa na fórmula. O alfabeto está dentro do logaritmo, esmagado; o comprimento está fora, a multiplicar.
Quase quadruplicar os símbolos de cada roda — de 26 letras para 95 caracteres —
compra-te menos de dois bits por roda. Acrescentar mais uma roda compra-te um
log₂(N) inteiro, outra vez, e outra, e outra. Por isso é que doze letras
minúsculas e mais nada (uns 56 bits) ganham a oito caracteres com maiúsculas,
números e daqueles símbolos que os formulários exigem (uns 53). O P@ssw0rd
perde contra cavalocorrectobateriaagrafo e nem sequer chega perto.
O NIST, no seu SP 800-63B, chegou ao mesmo sítio por outro caminho: deitou fora as regras de composição — uma maiúscula, um número, um símbolo — e ficou-se pelo comprimento e por verificar a palavra-passe contra listas de fugas. Convém não lhe pôr na boca o que ele não diz: o argumento dele não é este da fórmula, mas sim que obrigar as pessoas a meter um símbolo não as torna imprevisíveis, só as torna previsíveis de outra maneira. Aliás, o próprio documento desconfia de estimar a entropia de uma palavra-passe escolhida por uma pessoa. Dois raciocínios diferentes, a mesma conclusão. A complexidade obrigatória trabalha dentro do logaritmo. O comprimento trabalha fora.
A letra pequena que quase ninguém conta
Há uma armadilha, e é a parte honesta disto tudo: a entropia não mede a tua palavra-passe, mede o processo que a criou.
4$Kp!9zQ não tem aqueles 53 bits por parecer difícil. Tem-nos se — e só se —
saiu de um sorteio verdadeiramente ao acaso entre as 95 teclas. Se foste tu a
escrevê-la a tentar parecer aleatório, a fórmula não se aplica: tu não és um
sorteio. Pões a maiúscula à cabeça, o número no fim e o símbolo é um !. Quem te
ataca não experimenta as 95 opções de cada posição: experimenta primeiro as que
as pessoas fazem.
Daí sai a assimetria incómoda da segurança das palavras-passe. A entropia é um tecto, não um chão. Se for uma máquina a gerá-la, o tecto é real. Se fores tu a escolhê-la, a única coisa que sabes é que estás abaixo dele, e não sabes quanto.
Por isso é que há duas ferramentas e não uma. O gerador sorteia a sério e
por isso pode mostrar-te os bits com cara séria: sabe quantas rodinhas tem (L),
sabe quantos símbolos leva cada uma (N) e faz a multiplicação à tua frente. Se
mexeres no cursor e vires o número subir, estás a ver o L a empurrar. O
verificador, esse, não pode fazer o mesmo com uma
palavra-passe que já existe: não faz ideia de como ela nasceu, por isso faz a
única coisa sensata, que é procurá-la em dicionários, nomes e padrões de teclado
e supor o pior.
O que há a levar daqui
Três frases:
- Um bit é uma duplicação. Mais dez bits é mil vezes mais trabalho; mais vinte bits, um milhão.
- O comprimento multiplica, o alfabeto mal soma. Acrescentar uma palavra vale mais do que acrescentar um ponto de exclamação.
- Os bits só valem se o acaso for a sério. Uma máquina pode prometê-los. Tu, a escrever à mão, não.
Shannon procurava quanta surpresa cabe numa mensagem. Setenta e tantos anos depois, acontece que essa era precisamente a pergunta certa para uma palavra-passe: não se parece complicada, mas quanta surpresa leva lá dentro para quem não te conhece de lado nenhum.
Fontes: C. E. Shannon, «A Mathematical Theory of Communication», Bell System Technical Journal, 1948 · NIST SP 800-63B, Digital Identity Guidelines (Authentication and Lifecycle Management) · o gerador de password.es, que calcula H = L × log₂(N) e mostra L, N e os bits resultantes.