Pensa numa palavra ao acaso. Agora mesmo, a primeira que te ocorrer.
Seja qual for, não era ao acaso. Era uma palavra tua: algo que leste esta semana, um objecto que tens à frente, a letra por que começa o teu nome. Quando se pede acaso a uma pessoa, o que ela produz é autobiografia. E a autobiografia adivinha-se.
Este é o problema inteiro das palavras-passe, resumido. Não é que as pessoas sejam preguiçosas — também são —, é que somos incapazes de gerar aleatoriedade. Gostamos de certas letras, evitamos as repetições porque «não parecem aleatórias», alternamos vogais e consoantes sem dar por isso e, se nos pedem um número, puxamos dos que temos à mão: datas, idades, algarismos com significado. Um atacante não precisa de saber quem tu és para explorar isso. Basta-lhe saber que és humano.
Um engenheiro, cinco dados e uma lista
Em 1995, Arnold G. Reinhold publicou na sua página web um método a que chamou Diceware. A ideia é tão simples que dá uma certa raiva ter de a explicar: se o problema é que o humano não sabe escolher ao acaso, tira ao humano a escolha.
O procedimento completo cabe em três linhas:
- Lanças cinco dados e anotas os resultados por ordem. Sai, digamos,
4-2-6-1-3. - Procuras
42613numa lista. - É essa a tua palavra. Repetes para a seguinte.
A lista tem 7.776 entradas, e esse número não é caprichoso: é 6⁵, todos os
resultados possíveis de cinco dados. Cada combinação — de 11111 a 66666 —
aponta para uma entrada diferente, e nenhuma fica de fora nem se repete. A lista
original mistura palavras curtas em inglês com algumas sílabas, algarismos e
sinais soltos, precisamente porque encontrar 7.776 palavras boas é mais
difícil do que parece.
O importante não é a lista. É o dado.
Porque é que 12,9 bits são 12,9 bits
Aqui está a parte que quase ninguém percebe, e é a única que importa.
A entropia de uma palavra de Diceware é log₂(7.776) = 12,9 bits. É aritmética, não é segurança: há 7.776 resultados e todos têm exactamente a mesma probabilidade.
Compara com o que acontece quando escolhes tu. Se te pedir uma palavra de um dicionário de 7.776 palavras, a conta parece a mesma — também há 7.776 opções — mas não é, porque tu não as escolhes com a mesma probabilidade. Vais escolher palavras comuns, palavras de que gostas, palavras que viste hoje. Esse dicionário tem 12,9 bits no papel e muitos menos na tua cabeça, e o atacante ordena a lista dele por frequência e experimenta primeiro as que as pessoas escolhem. A entropia não é quantas opções há: é quantas opções há depois de descontar aquilo que o atacante sabe sobre os teus gostos.
Os dados não têm gostos. Também não têm memória: o dado não sabe que no
lançamento anterior saiu floresta, por isso não evita repetir-se, não procura
variedade e não tem vergonha de que saiam duas palavras começadas da mesma
maneira. Por isso os 12,9 bits do Diceware são 12,9 bits a sério, e não um
número optimista de brochura.
E é por isso que as contas saem para cima. Cada palavra soma:
- Cinco palavras: uns 64 bits.
- Seis palavras: uns 77 bits.
- Sete palavras: uns 90 bits.
É soma limpa, não é multiplicação mágica, porque cada lançamento é independente dos outros. Reinhold recomenda não baixar das cinco palavras, e seis ou mais para o que importa mesmo. Podes ver o efeito no gerador: acrescentar uma palavra soma sempre o mesmo, e esse «sempre» é o invento todo.
O segredo não é a lista
A objecção chega sozinha: se a lista é pública, não é mais fácil de partir?
Não, e convém dizê-lo devagar. Os 12,9 bits já assumem que o atacante tem a lista. Assumem também que ele sabe que usas Diceware, que sabe quantas palavras tem a tua frase e que sabe a ordem por que as escreves. Está tudo isso descontado. A única coisa que ele não sabe é o que saiu nos teus dados, e é isso que estás a contar quando dizes «77 bits».
É o contrário do que fazemos com P@ssw0rd, em que toda a esperança está
depositada em que a ninguém ocorra substituir o a pelo @. Ocorre. É das
primeiras regras que qualquer ferramenta de ataque por dicionário aplica. Se
tiveres a tentação, experimenta-a no verificador e vê quanto
aguenta.
A EFF e as listas alternativas
Em 2016, a Electronic Frontier Foundation publicou as suas próprias listas de palavras para frases com dados. A lista longa mantém as 7.776 entradas — os mesmos cinco dados, os mesmos 12,9 bits — mas muda o conteúdo: fora sílabas estranhas e sinais, dentro palavras correntes, fáceis de escrever no teclado e de distinguir umas das outras. Publicaram também listas curtas, de 1.296 palavras (6⁴, quatro dados, 10,3 bits por palavra): uma com palavras mais curtas e memoráveis, e outra pensada para que cada palavra se distinga das restantes pelas primeiras letras e se possa completar automaticamente. Em troca, cada lançamento vale menos e é preciso lançar mais vezes.
O elegante disto é que a aritmética não muda com o gosto de ninguém. Manda o número de entradas. Podes fazer a tua própria lista em mirandês, em crioulo ou em klingon: desde que tenha 7.776 entradas diferentes e escolhas com dados, cada palavra vale 12,9 bits. A única coisa que estás a decidir ao mudar de lista é quão agradável achas o resultado, não quão seguro ele é.
As três maneiras de estragar tudo
O Diceware falha de três maneiras, e as três são o mesmo erro: o humano a voltar a meter a mão.
- Lançar outra vez porque «essa não me agrada». Se descartas resultados, já não estás a usar dados: estás a usar o teu critério com um dado a fazer de figurante. Sai o que sair.
- Reordenar as palavras para que soem a frase. A ordem também faz parte do lançamento.
- «Melhorá-la» com um
!no fim e uma maiúscula no início. Isso não acrescenta nada perante um atacante que sabe que as pessoas põem um!no fim e uma maiúscula no início. Se precisas de cumprir uma política estúpida, cumpre-a, mas não penses que ganhaste segurança: ganhaste-a foi a lançar mais uma vez.
E um aviso que Reinhold já dava: os dados vulgares chegam e sobram — os de casino são mais precisos, mas não fazem falta —, convém lançar sobre uma superfície lisa e o resultado anota-se como sai.
O resumo
Uma frase de seis palavras tirada aos dados é mais comprida de escrever do que
P@ssw0rd, mais fácil de decorar do que Tr0ub4dor&3 e muitas ordens de
grandeza mais cara de partir do que as duas. Não por ser mais rebuscada — não é,
são seis palavras normais — mas porque é a única coisa na tua palavra-passe
que não foste tu a decidir.
É esta a piada completa do Diceware: a melhor palavra-passe que podes ter é aquela em que a tua opinião não participa.
Fontes: Arnold G. Reinhold, «The Diceware Passphrase Home Page» e a sua lista de 7.776 palavras (1995) · Electronic Frontier Foundation, listas de palavras para frases de palavra-passe com dados (2016) · a aritmética é verificável: 6⁵ = 7.776 e log₂(7.776) ≈ 12,92 bits por palavra.