#!/intro
As frases-passe aleatórias são uma alternativa prática às palavras-passe escolhidas por pessoas. A diferença não está na estética. Está na previsibilidade.
Quando a escolha é humana, surgem padrões recorrentes. Mesmo quando existem regras de composição, os utilizadores tendem a produzir combinações previsíveis: palavras comuns com substituições óbvias, maiúsculas no início, algarismos no fim, símbolos repetidos ou variações incrementais de credenciais anteriores.
Quando a escolha é aleatória, a resistência pode ser estimada com muito mais rigor. A segurança deixa de depender da criatividade do utilizador e passa a depender do tamanho do espaço de pesquisa, da qualidade da aleatoriedade e da forma como o sistema aceita, armazena e protege a frase-passe.
O método mais simples consiste em escolher várias palavras ao acaso, a partir de uma lista. A robustez cresce com o número de palavras e com o tamanho da lista. A lista, contudo, não é um detalhe secundário. Define a fricção de escrita, a probabilidade de erro, a facilidade de memorização e a adesão prática dos utilizadores.
Uma frase-passe aleatória só é boa se for difícil de adivinhar e possível de utilizar.
> modelo
A discussão sobre frases-passe deve começar pelo modelo de ameaça.
Uma palavra-passe pode ser comprometida de várias formas: phishing, reutilização noutro serviço, observação direta, malware, fuga de uma base de dados, ataques online contra o serviço ou ataques offline contra hashes previamente obtidos.
Nem todos estes cenários são resolvidos pela qualidade da palavra-passe. Uma frase-passe muito robusta pode ser capturada por phishing. Pode ser introduzida num sítio falso. Pode ser roubada por malware no equipamento do utilizador. Pode ser exposta se for reutilizada num serviço comprometido.
Ainda assim, a robustez continua a ser relevante. Quando um atacante tenta adivinhar credenciais, seja contra um serviço, seja contra hashes obtidos numa fuga de informação, o espaço de pesquisa passa a determinar o custo do ataque.
É neste contexto que as frases-passe aleatórias têm valor. Não tornam a autenticação perfeita. Não substituem autenticação multifator. Não eliminam a necessidade de bom armazenamento no servidor. Mas reduzem a previsibilidade do segredo e aumentam o custo de ataques de força bruta ou de dicionário.
Uma frase-passe gerada por palavras aleatórias tem uma propriedade útil: a dificuldade de ataque está diretamente ligada ao espaço de pesquisa.
Se forem escolhidas k palavras de uma lista com n entradas, existem n^k combinações possíveis.
combinações = n^k
Em termos de entropia, isto corresponde a:
H = k × log₂(n)
O valor de n é decidido pela lista. O valor de k é decidido pela política, pela ferramenta ou pelo utilizador.
Esta distinção é importante. Uma lista maior aumenta a entropia por palavra. Mais palavras aumentam a entropia total. O resultado final depende das duas escolhas.
Mas há ainda outra distinção, muitas vezes ignorada. Numa frase-passe há duas leituras de entropia a considerar.
A primeira é a entropia conservadora. Assume que o atacante conhece o método usado, conhece a lista, conhece o número de palavras e conhece a forma de separação. Neste cenário, a segurança depende apenas da sequência aleatória escolhida. Se foram escolhidas seis palavras a partir de uma lista pública com 7 776 entradas, o espaço de pesquisa relevante é 7776^6. A lista não é secreta. O método não é secreto. O segredo está na combinação escolhida.
Esta é a entropia que deve ser usada para avaliar a robustez real da frase-passe.
A segunda é a entropia prática perante desconhecimento do método. Se o atacante não souber como a frase-passe foi gerada, terá de decidir que estratégia de ataque seguir. Pode testar palavras-passe humanas comuns, frases naturais, padrões pessoais, combinações de palavras, listas Diceware, listas da EFF, separadores, maiúsculas, números acrescentados ou variações híbridas. Essa incerteza pode aumentar o esforço prático, porque o atacante não sabe qual é o espaço de pesquisa mais promissor.
Contudo, esta segunda vantagem não deve ser usada como fundamento principal da segurança. Um atacante competente pode assumir que foram usadas listas públicas conhecidas e incluir esses modelos na sua estratégia. Por isso, a frase-passe deve continuar robusta mesmo quando o atacante conhece a lista, o método e a política de geração.
A segurança não deve depender de o atacante ignorar como o segredo foi criado.
O comprimento também é relevante, mas só é útil quando não resulta de uma frase previsível. Uma frase longa retirada de uma citação, de uma música, de um livro, de uma expressão conhecida ou de uma construção pessoal previsível pode parecer forte, mas pode estar dentro do espaço de pesquisa de um atacante.
As frases-passe aleatórias resolvem esse problema de forma mais limpa. Em vez de confiar numa frase inventada pelo utilizador, escolhem palavras independentes a partir de uma lista conhecida. A segurança não está nas palavras em si. Está na seleção aleatória.
> listas
A lista de palavras define mais do que a entropia por palavra. Define também a usabilidade da frase-passe.
Uma lista com 7 776 palavras fornece cerca de 12,9 bits por palavra, porque log₂(7776) é aproximadamente 12,9. Se forem escolhidas seis palavras, a frase-passe terá cerca de 77 bits de entropia. Se forem escolhidas sete, terá cerca de 90 bits.
Uma lista com 1 296 palavras fornece cerca de 10,3 bits por palavra. Para alcançar um nível semelhante ao de seis palavras numa lista de 7 776 entradas, é necessário usar mais palavras. Por exemplo, oito palavras numa lista de 1 296 entradas fornecem cerca de 82 bits.
Esta relação tem também uma vantagem operacional. Muitas pessoas preferem gerar a frase-passe offline, sem depender de um serviço. Dados físicos fornecem aleatoriedade suficiente para este propósito, desde que sejam lançados corretamente e sem escolha humana posterior.
Uma lista com 7 776 entradas encaixa naturalmente em cinco lançamentos de um dado de seis faces, porque 6^5 = 7776. Uma lista com 1 296 entradas encaixa em quatro lançamentos, porque 6^4 = 1296.
A lista Diceware popularizou este modelo. É funcional e oferece segurança por palavra comparável a outras listas do mesmo tamanho. O problema é a usabilidade. Uma lista pode ser matematicamente sólida e, ainda assim, induzir erros.
Quando a lista contém palavras raras, nomes próprios, pontuação, sequências estranhas, letras isoladas ou entradas que não são palavras, a experiência degrada-se. A degradação aumenta em teclados virtuais, em equipamentos móveis e em sistemas que tentam corrigir automaticamente aquilo que o utilizador escreve.
Também existem ambiguidades práticas relacionadas com a separação entre palavras. Uma entrada pode ser confundida com a junção de outras. Uma palavra pode ser difícil de recordar com a grafia exata. Um termo pode ser pronunciado de forma semelhante a outro. Uma entrada pode ser tecnicamente válida, mas pouco adequada para utilização real.
Este é o ponto em que a segurança deixa de ser apenas cálculo. Se a frase-passe for difícil de introduzir, aumenta a probabilidade de o utilizador a guardar em local inseguro, reutilizar uma versão mais simples ou optar por um método menos robusto.
Uma boa lista reduz erro sem reduzir indevidamente o espaço de pesquisa.
A EFF publicou um conjunto de listas com esse objetivo: reduzir atrito sem perder segurança quando o tamanho se mantém.
A lista longa mantém 7 776 palavras, tal como a Diceware. A diferença está nos critérios de seleção e filtragem. Foram privilegiadas palavras mais familiares, com apoio em dados de reconhecimento lexical, e foi usado um critério adicional de concretude para favorecer termos mais fáceis de visualizar e recordar.
Foram removidos termos ofensivos ou emocionalmente carregados. Foram removidas palavras difíceis de soletrar e homófonas, para reduzir confusão na recordação. Foi ainda assegurado que nenhuma palavra é prefixo exato de outra, para evitar ambiguidades.
A recomendação prática associada a esta lista é clara: seis palavras fornecem cerca de 77 bits de entropia. Cada palavra adicional acrescenta cerca de 12,9 bits.
Este detalhe é importante porque mostra que a lista não precisa de ser desagradável para ser segura. Se o número de entradas se mantém, a entropia por palavra mantém-se. A melhoria está na seleção das palavras, não na redução do espaço de pesquisa.
A EFF publicou também listas curtas com 1 296 palavras. O objetivo é reduzir o número de caracteres por palavra, com palavras de comprimento máximo mais baixo. Isto pode ser vantajoso quando a frase-passe é introduzida com frequência ou em dispositivos menos confortáveis.
A consequência é inevitável. A entropia por palavra desce. Para recuperar níveis semelhantes, é necessário aumentar o número de palavras. Seis palavras da lista longa fornecem cerca de 77 bits. Oito palavras da lista curta fornecem cerca de 82 bits.
Não existe uma lista universalmente melhor. Existe uma escolha entre entropia por palavra, comprimento total, facilidade de escrita e tolerância a erro.
A terceira lista curta introduz propriedades adicionais, pensadas para software. Cada palavra tem um prefixo único de três caracteres. Isto permite, em teoria, autocompletar após três letras, desde que a aplicação suporte essa funcionalidade.
Além disso, as palavras foram escolhidas para manter distância de edição mínima, com o objetivo de permitir correção de um erro de escrita em cenários futuros.
Estas propriedades não resolvem um problema criptográfico. Atacam um problema de usabilidade. A ideia é tornar a experiência menos propensa a erro, sem alterar a propriedade essencial: a escolha aleatória dentro de um conjunto conhecido.
Isto exige cuidado. Um verificador de palavras-passe não deve aceitar aproximações de forma permissiva sem compreender as consequências. A tolerância a erro deve ser desenhada no lado da ferramenta de geração ou de introdução, não como enfraquecimento arbitrário da verificação do segredo.
> verificação
Uma lista bem desenhada é inútil se o sistema rejeitar a frase-passe.
O suporte do verificador conta. Comprimentos elevados têm de ser aceites. A introdução tem de ser facilitada. A aceitação de caracteres ASCII imprimíveis e do espaço é relevante para frases-passe. A imposição de regras rígidas de composição também é um erro comum, porque induz padrões e não acrescenta segurança quando existe comprimento e aleatoriedade.
Se um sistema exige uma maiúscula, um algarismo e um símbolo, mas limita a palavra-passe a 16 caracteres, está a privilegiar aparência de complexidade em vez de resistência real. Se impede espaços, pode tornar mais difícil a utilização natural de frases-passe. Se corta silenciosamente a palavra-passe após determinado número de caracteres, cria um risco grave e invisível.
O verificador deve aceitar palavras-passe longas. Deve tratar todos os caracteres introduzidos como parte do segredo. Deve evitar truncagem silenciosa. Deve permitir colagem, porque impedir colagem prejudica a utilização de gestores de palavras-passe e incentiva escolhas mais fracas.
Também deve evitar alterações periódicas sem motivo. A rotação forçada tende a produzir padrões previsíveis, como incrementos numéricos ou pequenas variações. A alteração deve ser exigida quando existe suspeita de compromisso, exposição conhecida ou necessidade operacional concreta.
Do lado do armazenamento, a resistência a ataque offline é decisiva.
Uma frase-passe robusta pode perder grande parte da sua vantagem se o serviço armazenar credenciais de forma inadequada. Se uma base de dados for comprometida e os segredos estiverem protegidos apenas por hashes rápidos, o atacante pode testar grandes volumes de candidatos por segundo.
A frase-passe deve ser armazenada com sal único por credencial e com uma função de derivação apropriada para palavras-passe. O objetivo é tornar cada tentativa mais cara e impedir que o mesmo valor produza o mesmo resultado em múltiplas contas.
O sal não torna uma palavra-passe fraca forte. A função de derivação não elimina a necessidade de bons segredos. Mas ambos são essenciais para que o custo de ataque offline não seja reduzido ao ponto de tornar irrelevante parte da entropia disponível.
A análise de segurança deve, por isso, separar duas questões.
A primeira é a qualidade da frase-passe escolhida pelo utilizador ou gerada pela ferramenta. A segunda é a qualidade do armazenamento feito pelo serviço. Uma organização não controla totalmente a primeira, mas controla a segunda quando desenvolve ou administra o sistema.
Quando ambas falham, o atacante beneficia duas vezes: encontra segredos previsíveis e consegue testá-los rapidamente.
A política de autenticação deve proteger o utilizador sem o empurrar para comportamentos piores.
> operação
As frases-passe devem ser únicas por serviço.
A reutilização destrói a separação entre domínios de confiança. Se a mesma frase-passe for usada em vários serviços, o compromisso de um deles passa a ameaçar todos os outros. Isto é especialmente crítico quando a mesma credencial é usada em contas pessoais, serviços profissionais, correio eletrónico, plataformas administrativas ou acessos privilegiados.
Para serviços frequentes e numerosos, um gestor de palavras-passe continua a ser a solução mais realista. As frases-passe aleatórias são particularmente úteis em contextos onde o segredo tem de ser memorizado ou introduzido manualmente: palavra-passe mestra de um gestor, cifra de um volume local, recuperação de uma chave, acesso administrativo ocasional ou credencial de emergência.
Mesmo nesses casos, a frase-passe não deve ser a única camada de defesa quando existe alternativa. A autenticação multifator reduz o impacto de captura ou reutilização. O bloqueio contra tentativas sucessivas reduz ataques online. A monitorização ajuda a detetar abuso. A limitação de privilégios reduz o impacto de uma conta comprometida.
A geração também deve ser protegida. Se a frase-passe for criada com dados físicos, o processo deve ser seguido sem escolha manual de palavras mais agradáveis. Se for criada por software, a ferramenta deve usar aleatoriedade adequada e deve funcionar preferencialmente num contexto confiável.
Depois de gerada, a frase-passe deve ser tratada como segredo. Não deve ser enviada por canais inseguros, reutilizada em sistemas diferentes ou armazenada em notas sem proteção. Quando for usada como credencial de recuperação ou acesso de emergência, deve existir procedimento claro sobre quem a pode consultar, em que circunstâncias e como essa consulta fica registada.
Uma frase-passe forte é uma condição necessária em muitos contextos. Raramente deve ser a única condição.
> conclusão
Listas de palavras são simultaneamente um componente de segurança e um componente de ergonomia.
O tamanho da lista define entropia por palavra. O número de palavras define a entropia total. A qualidade da lista define erros, memorização e adesão. A forma como o sistema aceita e armazena o segredo determina se essa entropia é preservada ou desperdiçada.
Há ainda uma distinção essencial: uma frase-passe pode beneficiar do facto de o atacante não saber como foi gerada, mas não deve depender disso. A medida séria de robustez deve assumir que o atacante conhece a lista, o método e o número de palavras. Se continuar resistente nesse cenário, a frase-passe tem uma base defensável.
As listas da EFF ilustram uma abordagem pragmática. Mantêm o tamanho quando se quer preservar entropia por palavra. Reduzem o tamanho quando se quer reduzir escrita. E introduzem propriedades que permitem, no futuro, autocompletar e corrigir erros de forma controlada.
A lição principal é simples. A segurança de uma frase-passe não está na aparência estranha, na presença de símbolos ou na dificuldade de a escrever. Está no processo de geração, no espaço de pesquisa, na ausência de padrões humanos e na capacidade do sistema para aceitar e proteger segredos longos.
Uma frase-passe aleatória é forte quando nasce de boa aleatoriedade, usa uma lista adequada, tem comprimento suficiente e é tratada pelo sistema como um segredo de alto valor.
A lista define o espaço.
O utilizador sente a fricção.
O sistema decide se a segurança sobrevive à prática.
> status: usable
> exit 0