Resumo

  • Em dezembro de 1994, o RFC 1751 propôs uma representação legível para chaves de 128 bits. Reaproveitou a conversão de S/Key, baseada em 2.048 palavras inglesas curtas, duas vezes: seis palavras para cada metade de 64 bits.
  • A lista comum mantinha a conversão igual entre implementações. O RFC alertou que frases inventadas pelas pessoas produziam chaves mais fáceis de adivinhar; as palavras serviam para expressar uma chave já escolhida.

O operador tinha dedos, não uma calculadora na cabeça

Um dispositivo de rede lida sem dificuldade com uma sequência de 128 bits. Uma pessoa tem de enxergar, copiar, falar e digitar essa sequência. O RFC 1751 nasceu nesse atrito. O trabalho de segurança do SNMPv2 oferecia um exemplo de autenticação com chave desse tamanho. McDonald voltou a atenção para o gesto seguinte: passar a chave de uma máquina ou de uma anotação para quem opera o sistema sem transformar cada caractere parecido em uma aposta.

S/Key já havia tratado uma versão menor do problema. Seu valor de 64 bits podia ser escrito como seis palavras de um vocabulário fixo de 2.048 termos ingleses, cada um com um a quatro caracteres. Seis escolhas cobriam 66 bits, deixando margem para paridade. O conjunto soava mais humano do que um bloco hexadecimal e ainda tinha uma volta exata: o programa convertia os termos para o valor que os originou.

O RFC 1751 não pedia que o operador aprendesse um novo truque matemático. As rotinas key2eng e eng2key faziam a operação conhecida duas vezes, uma em cada metade de uma chave de 128 bits. O resultado eram doze palavras, organizadas em dois grupos de seis. Uma amostra do RFC começa com “RASH BUSH MILK LOOK BAD BRIM”. Como frase, é um desastre delicioso. Como recibo de uma transformação determinística, cumpre seu papel.

O vocabulário único era a peça mais rígida da proposta. McDonald explicou que dicionários diferentes para línguas diferentes impediriam duas implementações de obter a mesma sequência a partir dos mesmos bits. O dicionário em uso ficava na porção invariável de ISO-646 e já tinha aplicações instaladas. A pessoa que lia português recebia palavras inglesas porque o acordo comum sobre a tabela vinha antes do conforto de uma lista local. A interface humana ficou mais simples para digitar, embora mantivesse o inglês como idioma de troca.

O perigo surgia quando alguém invertia a ideia. Uma chave suficientemente obscura poderia ser convertida em palavras para facilitar a operação. Uma pessoa também poderia pensar numa frase de que gostasse e usar aquelas palavras como chave. O texto advertia para a busca por frases previsíveis, uma espécie de ataque de dicionário em forma de sentença. A aparência verbal não acrescentava força à escolha humana. O código de conversão fazia uma coisa; a origem do segredo era outra decisão.

O RFC publicou as rotinas de referência e as 2.048 entradas do vocabulário. Isso permitia que programas diferentes executassem a mesma ida e a mesma volta. Uma convenção destinada a reduzir erro humano não podia trocar um erro de digitação por duas traduções incompatíveis. Os 128 bits precisavam ressurgir intactos quando as doze palavras fossem lidas em outra máquina.

No fundo, McDonald não estava tentando tornar criptografia agradável como um poema. Ele criou uma ponte estreita entre o material que um protocolo exige e o formato que mãos humanas conseguem manusear. As palavras eram alças para carregar o valor. Se a pessoa começasse pelas alças e inventasse o valor depois, o atacante também ganharia um mapa da mala.