Diceware: como uns dados fazem melhor palavra-passe do que tu

Publicado a por David Carrero

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:

  1. Lanças cinco dados e anotas os resultados por ordem. Sai, digamos, 4-2-6-1-3.
  2. Procuras 42613 numa lista.
  3. É 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.

← Voltar ao blog