Diceware: como uns dados fan mellor contrasinal ca ti

Publicado o por David Carrero

Pensa unha palabra ao azar. Agora mesmo, a primeira que se che ocorra.

Sexa cal sexa, non era ao azar. Era unha palabra túa: algo que liches esta semana, un obxecto que tes diante, a letra pola que empeza o teu nome. Cando a unha persoa se lle pide azar, o que produce é autobiografía. E a autobiografía adivíñase.

Este é o problema enteiro dos contrasinais, resumido. Non é que a xente sexa preguiceira —que tamén—, é que somos incapaces de xerar aleatoriedade. Gústannos certas letras, evitamos as repeticións porque «non parecen aleatorias», alternamos vogais e consoantes sen darnos conta e, se nos piden un número, tiramos dos que temos á man: datas, idades, cifras con significado. Un atacante non precisa saber quen es para explotar iso. Abóndalle con saber que es humano.

Un enxeñeiro, cinco dados e unha lista

En 1995, Arnold G. Reinhold publicou na súa páxina web un método que chamou Diceware. A idea é tan simple que dá un pouco de rabia que haxa que explicala: se o problema é que o humano non sabe elixir ao azar, quítalle ao humano a elección.

O procedemento enteiro cabe en tres liñas:

  1. Tiras cinco dados e anotas os resultados por orde. Sae, poñamos, 4-2-6-1-3.
  2. Buscas 42613 nunha lista.
  3. Esa é a túa palabra. Repites para a seguinte.

A lista ten 7.776 entradas, e ese número non é caprichoso: é 6⁵, todos os resultados posibles de cinco dados. Cada combinación —de 11111 a 66666— apunta a unha entrada distinta, e ningunha queda fóra nin se repite. A lista orixinal mestura palabras curtas en inglés con algunhas sílabas, cifras e signos soltos, precisamente porque atopar 7.776 palabras boas é máis difícil do que parece.

O importante non é a lista. É o dado.

Por que 12,9 bits son 12,9 bits

Aquí está a parte que case ninguén entende, e é a única que importa.

A entropía dunha palabra de Diceware é log₂(7.776) = 12,9 bits. É aritmética, non seguridade: hai 7.776 resultados e todos teñen exactamente a mesma probabilidade.

Compárao co que pasa cando elixes ti. Se che pido unha palabra dun dicionario de 7.776 palabras, a conta parece a mesma —tamén hai 7.776 opcións— pero non o é, porque ti non as elixes coa mesma probabilidade. Vas elixir palabras comúns, palabras que che gustan, palabras que viches hoxe. Ese dicionario ten 12,9 bits sobre o papel e moitos menos na túa cabeza, e o atacante ordena a súa lista por frecuencia e proba primeiro as que a xente elixe. A entropía non é cantas opcións hai: é cantas opcións quedan unha vez descontado o que o atacante sabe dos teus gustos.

Os dados non teñen gustos. Tampouco teñen memoria: o dado non sabe que na tirada anterior saíu fraga, así que non evita repetirse, non busca variedade e non lle dá vergoña que saian dúas palabras que empezan igual. Por iso os 12,9 bits de Diceware son 12,9 bits de verdade, e non unha cifra optimista de folleto.

E por iso saen as contas cara arriba. Cada palabra suma:

  • Cinco palabras: uns 64 bits.
  • Seis palabras: uns 77 bits.
  • Sete palabras: uns 90 bits.

É suma limpa, non multiplicación máxica, porque cada tirada é independente das demais. Reinhold recomenda non baixar de cinco palabras, e seis ou máis para o que importa de verdade. Podes ver o efecto no xerador: engadir unha palabra sempre suma o mesmo, e ese «sempre» é todo o invento.

O segredo non é a lista

A obxección chega soa: se a lista é pública, non é máis doado rompelo?

Non, e convén dicilo amodo. Os 12,9 bits xa asumen que o atacante ten a lista. Tamén asumen que sabe que usas Diceware, que sabe cantas palabras ten a túa frase e que sabe a orde na que as escribes. Todo iso está descontado. O único que non sabe é que saíu nos teus dados, e iso é o que estás contando cando dis «77 bits».

É o contrario do que facemos con P@ssw0rd, onde toda a esperanza está depositada en que a ninguén se lle ocorra substituír a a polo @. Ocórreselle. É das primeiras regras que aplica calquera ferramenta de ataque por dicionario. Se tes a tentación, próbaa no comprobador e mira canto aguanta.

A EFF e as listas alternativas

En 2016, a Electronic Frontier Foundation publicou as súas propias listas de palabras para frases con dados. A lista longa mantén as 7.776 entradas —os mesmos cinco dados, os mesmos 12,9 bits— pero cambia o contido: fóra sílabas raras e signos, dentro palabras correntes, doadas de teclear e de distinguir unhas doutras. Tamén publicaron listas curtas, de 1.296 palabras (6⁴, catro dados, 10,3 bits por palabra): unha con palabras máis curtas e memorables, e outra pensada para que cada palabra se distinga das demais polas súas primeiras letras e se poida autocompletar. A cambio, cada tirada vale menos e hai que tirar máis veces.

O elegante do asunto é que a aritmética non cambia co gusto de ninguén. O número de entradas manda. Podes facer a túa propia lista en galego, en éuscaro ou en klingon: mentres teña 7.776 entradas distintas e elixas con dados, cada palabra vale 12,9 bits. O único que estás decidindo ao cambiar de lista é o agradable que che resulta o resultado, non o seguro que é.

As tres formas de estragalo

Diceware falla de tres maneiras, e as tres son o mesmo erro: o humano volvendo meter a man.

  • Tirar e repetir porque «esa non me gusta». Se descartas resultados, xa non estás a usar dados: estás a usar o teu criterio cun dado de atrezzo. Sae o que sae.
  • Reordenar as palabras para que soen a frase. A orde tamén é parte da tirada.
  • «Melloralo» cun ! ao final e unha maiúscula ao principio. Iso non engade nada fronte a un atacante que sabe que a xente pon un ! ao final e unha maiúscula ao principio. Se precisas cumprir unha política estúpida, faino, pero non creas que gañaches seguridade: gañáchela tirando outra vez.

E unha advertencia que Reinhold xa daba: os dados correntes chegan de sobra —os de casino son máis precisos, pero non fan falta—, convén tirar sobre unha superficie lisa e o resultado anótase segundo sae.

O resumo

Unha frase de seis palabras sacadas a dados é máis longa de escribir que P@ssw0rd, máis doada de lembrar que Tr0ub4dor&3 e moitas ordes de magnitude máis cara de romper cás dúas. Non porque sexa máis rebuscada —non o é, son seis palabras normais— senón porque é o único do teu contrasinal que non decidiches ti.

Ese é o chiste enteiro de Diceware: o mellor contrasinal que podes ter é aquel no que a túa opinión non participa.


Fontes: Arnold G. Reinhold, «The Diceware Passphrase Home Page» e a súa lista de 7.776 palabras (1995) · Electronic Frontier Foundation, listas de palabras para frases de contrasinal con dados (2016) · a aritmética é comprobable: 6⁵ = 7.776 e log₂(7.776) ≈ 12,92 bits por palabra.

← Volver ao blog