Índice
1. Introdução
Relatos persistentes de fugas de contas e palavras-passe de websites destacam a importância crítica da segurança da informação e das palavras-passe. Embora as vulnerabilidades dos websites sejam um fator, a segurança inerente da própria palavra-passe é fundamental. As práticas comuns de palavras-passe inseguras incluem palavras-passe baseadas em palavras-chave, uso de frases populares, incorporação de informações pessoais e reutilização de palavras-passe. O aumento da IA e dos modelos de linguagem grandes capacita ainda mais os atacantes a adivinhar palavras-passe de forma mais eficaz.
Esta investigação propõe um gerador de palavras-passe seguro baseado em Geradores de Números Pseudoaleatórios (PRNGs) criptograficamente seguros. Constrói PRNGs usando Código de Autenticação de Mensagem com Hash Chaveado (HMAC), Código de Autenticação de Mensagem Baseado em Cifra (CMAC) ou Código de Autenticação de Mensagem KECCAK (KMAC) para produzir números aleatórios seguros, que são então usados para gerar palavras-passe. A aleatoriedade dos números gerados é validada contra o padrão NIST SP 800-90B através de testes de entropia e de Distribuição Independente e Identicamente Distribuída (IID).
Contribuições Principais:
- Construção de PRNGs seguros baseados em HMAC, CMAC e KMAC para geração de palavras-passe.
- Análise de segurança de palavras-passe sob diferentes conjuntos de caracteres e restrições de comprimento, com comparações com AES-128/256.
- Validação empírica usando testes de entropia e IID do NIST SP 800-90B.
2. Revisão da Literatura
2.1. PRNG Baseado em Gerador Linear Congruente
Comumente usado em linguagens como C e Java, os LCGs geram uma sequência de números usando uma relação de recorrência linear. Dada uma semente $k$, o valor inicial $f_0(k)$ é calculado como $f_0(k) \equiv a \oplus k \ (\text{mod} \ m)$. Os números subsequentes são gerados por $f_i(k) \equiv a \times f_{i-1}(k) + c \ (\text{mod} \ m)$. No entanto, os LCGs são inseguros pois o estado pode ser revertido usando $f_{i-1}(k) \equiv (f_i(k) - c) \times a^{-1} \ (\text{mod} \ m)$, expondo a semente e toda a sequência.
2.2. Gerador de Números Pseudoaleatórios Seguro
Para abordar as vulnerabilidades dos LCGs, os PRNGs criptograficamente seguros são essenciais. Este artigo foca-se em três construções recomendadas pelo NIST.
2.2.1. PRNG Baseado em HMAC
A segurança baseia-se na propriedade unidirecional das funções de hash (ex., SHA2, SHA3). Para uma chave $k$ e uma mensagem $M$, o HMAC é calculado como $r_{hmac}(k, M) = h((k \oplus opad) \ || \ h((k \oplus ipad) \ || \ M))$, onde $ipad$ e $opad$ são constantes. Para gerar um fluxo de bits longo, é usado um modo de contador: $M_i = i \ || \ KDF \ || \ 0x00 \ || \ M \ || \ L$, produzindo saídas $r_{hmac,i}$.
2.2.2. PRNG Baseado em CMAC
A segurança baseia-se no Advanced Encryption Standard (AES). Usando o modo Cipher Block Chaining (CBC) com a chave $k$, a mensagem $M$ é dividida em blocos $M'_1, M'_2, ...$. O texto cifrado é calculado iterativamente: $c_{i+1} = AES(k, c_i \oplus M'_{i+1})$, com $c_0 = Pad0(0)$. A saída final $r_{cmac}$ é derivada do último bloco.
2.2.3. PRNG Baseado em KMAC
Baseado na função de hash SHA-3 (KECCAK), o KMAC fornece uma saída de comprimento variável e é considerado um forte candidato para criptografia pós-quântica. A sua construção segue um princípio semelhante de hashing autenticado, oferecendo garantias de segurança elevadas.
2.3. Métodos de Validação de Aleatoriedade
O padrão NIST SP 800-90B fornece metodologias para avaliar a qualidade dos geradores de números aleatórios. Dois aspetos-chave são avaliados:
- Validação de Entropia: Mede a imprevisibilidade ou "aleatoriedade" por bit nos dados. A entropia elevada é crucial para palavras-passe seguras.
- Validação IID (Independente e Identicamente Distribuída): Testa se a sequência gerada é estatisticamente independente e segue uma distribuição idêntica, garantindo que não existem padrões ou correlações.
3. Gerador de Palavras-Passe Seguro Proposto
A arquitetura do sistema envolve duas fases principais:
- Geração de Números Aleatórios Seguros: Um utilizador pode opcionalmente fornecer uma Mensagem a Ser Hasheada (TBHM). Esta, juntamente com uma chave criptográfica, é processada pelo PRNG seguro escolhido (baseado em HMAC/CMAC/KMAC) para produzir uma sequência de bits aleatórios criptograficamente forte.
- Geração da Palavra-Passe: Os bits aleatórios são mapeados para um conjunto de caracteres definido pelo utilizador ou pelo sistema (ex., alfanuméricos mais símbolos) de um comprimento especificado para gerar a palavra-passe textual final. A força de segurança é analisada em relação ao AES-128/256, considerando a entropia fornecida pelo tamanho do conjunto de caracteres e pelo comprimento da palavra-passe.
4. Experiências e Resultados
4.1. Configuração Experimental
Foram realizadas experiências para validar a aleatoriedade das saídas dos PRNGs. O conjunto de testes implementou os procedimentos de avaliação do NIST SP 800-90B para estimativa de entropia e teste IID em grandes amostras de números aleatórios gerados a partir dos três tipos de PRNG.
4.2. Resultados da Validação de Aleatoriedade
Resumo dos Resultados: Os PRNGs propostos baseados em HMAC, CMAC e KMAC passaram com sucesso nos testes de validação de entropia e IID do NIST SP 800-90B. As sequências geradas não exibiram desvios estatisticamente significativos da verdadeira aleatoriedade, confirmando a sua adequação para geração criptográfica de palavras-passe.
Descrição do Gráfico (Imaginado): Um gráfico de barras comparando as estimativas de min-entropia (em bits por bit) para os três tipos de PRNG contra o limiar de aprovação do NIST. As três barras seriam mostradas significativamente acima da linha do limiar, com o KMAC potencialmente a mostrar o valor mais alto, seguido de perto pelo HMAC-SHA3 e CMAC-AES256.
4.3. Análise de Desempenho
Foi realizada uma análise comparativa da eficiência computacional (ex., gerações por segundo). Os geradores baseados em CMAC (usando aceleração de hardware AES-NI) mostraram tipicamente a maior taxa de transferência, seguidos pelos baseados em HMAC (SHA2/SHA3), sendo o KMAC computacionalmente mais pesado, mas oferecendo propriedades de segurança pós-quântica robustas.
5. Conclusão e Trabalho Futuro
Esta investigação concebeu e validou com sucesso um gerador de palavras-passe seguro construído sobre PRNGs criptograficamente seguros (HMAC, CMAC, KMAC). As palavras-passe geradas derivam a sua segurança da robustez comprovada destes primitivos criptográficos subjacentes e da elevada aleatoriedade verificada da saída do PRNG. Trabalho futuro inclui integrar o gerador em extensões de navegador ou gestores de palavras-passe, explorar o seu uso na geração de chaves criptográficas para além de palavras-passe e realizar análise de resistência a ataques de canal lateral no sistema completo.
6. Análise Original & Comentário de Especialista
Ideia Central: Este artigo é uma resposta pragmática e focada na engenharia ao elo fraco perene na cibersegurança: as palavras-passe escolhidas por humanos. O seu valor central não está numa criptografia nova, mas na aplicação correta e validação rigorosa de construções existentes e testadas em batalha (HMAC, CMAC, KMAC) para um caso de uso específico e de alto impacto. Identifica corretamente que mover a geração de palavras-passe dos cérebros dos utilizadores para um processo criptográfico validado é uma atualização de segurança fundamental, semelhante à mudança da criptografia simétrica para assimétrica na troca de chaves.
Fluxo Lógico: A lógica é sólida e segue um padrão clássico de investigação aplicada: definição do problema (palavras-passe fracas) → crítica das soluções comuns (LCGs inseguros) → proposta de uma solução robusta (gerador baseado em CSPRNG) → validação empírica (testes NIST). A escolha do NIST SP 800-90B como referência de validação é excelente, pois é o padrão de facto para avaliar a aleatoriedade em contextos criptográficos, conferindo credibilidade imediata aos resultados.
Pontos Fortes & Falhas:
Pontos Fortes: O maior ponto forte do artigo é a sua validação prática. Muitas propostas param na fase de conceção. Ao submeter a saída aos testes rigorosos do NIST, os autores fornecem evidência concreta de segurança, o que é crucial para a adoção. A inclusão do KMAC, baseado no SHA-3, mostra previsão em relação a considerações pós-quânticas, conforme observado no processo de padronização de criptografia pós-quântica em curso do NIST.
Falhas/Omissões: A análise é um pouco isolada. Uma falha significativa é a falta de discussão sobre a gestão da semente. A segurança de qualquer PRNG colapsa se a sua semente for previsível ou for comprometida. Como é que o sistema gera, armazena e protege a chave criptográfica inicial para o HMAC/CMAC/KMAC? Isto é tão crítico quanto o próprio algoritmo. Além disso, embora comparar a força da palavra-passe com o AES seja útil, uma comparação mais direta com geradores de palavras-passe existentes (como os do KeePass ou 1Password) e os seus PRNGs subjacentes (ex., usando ChaCha20) forneceria um melhor contexto para a sua vantagem competitiva.
Ideias Acionáveis: Para profissionais de segurança, este artigo serve como um modelo. Ação 1: Depreciar imediatamente qualquer uso de LCGs ou RNGs não criptográficos semelhantes (como `rand()`) para tarefas sensíveis à segurança. Ação 2: Ao construir ou auditar um gerador de palavras-passe, os itens principais da lista de verificação devem ser: 1) Usar um CSPRNG (HMAC_DRBG, CTR_DRBG do NIST SP 800-90A, ou as construções aqui apresentadas), 2) Validar a sua saída com um conjunto de testes como o NIST SP 800-90B ou Dieharder, e 3) Implementar uma geração robusta de semente a partir de uma fonte de alta entropia (ex., `getrandom()` no Linux). O artigo foca-se com sucesso no ponto 2, mas os pontos 1 e 3 são partes igualmente vitais do quadro completo.
7. Detalhes Técnicos & Formulação Matemática
A segurança do gerador proposto depende das funções criptográficas subjacentes. As operações matemáticas-chave são:
- HMAC: $r_{hmac}(k, M) = h((k \oplus opad) \ || \ h((k \oplus ipad) \ || \ M))$
- CMAC (CBC-MAC): $c_{i+1} = E(k, c_i \oplus M_{i+1})$, onde $E$ é a cifra de bloco (AES).
- Entropia da Palavra-Passe: A entropia $H$ de uma palavra-passe gerada é $H = L \cdot \log_2(N)$, onde $L$ é o comprimento da palavra-passe e $N$ é o tamanho do conjunto de caracteres. Para uma palavra-passe de 16 caracteres de um conjunto de 94 caracteres, $H \approx 16 \cdot \log_2(94) \approx 105$ bits.
8. Estrutura de Análise & Exemplo de Caso
Exemplo de Caso: Auditoria à Função de Redefinição de Palavra-Passe de uma Aplicação Web
Cenário: Uma aplicação web gera uma palavra-passe temporária para utilizadores que clicam em "Esqueci-me da Palavra-Passe".
Aplicação da Estrutura:
- Identificar o RNG: Inspecionar o código do lado do servidor. Encontrar `Math.random()` (JavaScript) ou um LCG simples em PHP seria uma falha crítica.
- Avaliar a Fonte de Entropia: Como é semeado o PRNG? Está a usar entropia do sistema (`/dev/urandom`, `CryptGenRandom`)?
- Mapear para a Solução Proposta: Recomendar a substituição do RNG defeituoso por um módulo que implemente o design deste artigo—por exemplo, uma função Python usando `hmac.new` com SHA256 e uma semente de `os.urandom(32)`.
- Validar a Saída (Pós-Implementação): Gerar uma amostra de 1.000.000 de palavras-passe temporárias, converter para fluxo de bits e executar o conjunto de testes NIST STS (um conjunto de testes relacionado) para garantir a aleatoriedade.
9. Aplicações Futuras & Direções
A tecnologia central tem aplicações para além da geração de palavras-passe de utilizador:
- Geração de Chaves de API & Tokens: Gerar chaves de API e tokens de sessão seguros e aleatórios para arquiteturas de microserviços.
- Credenciais Padrão Seguras: Incorporar tal gerador no firmware de dispositivos IoT para criar palavras-passe padrão únicas e fortes para cada dispositivo, mitigando ataques generalizados baseados em padrões comuns.
- Geração de Semente Criptográfica: A saída de alta qualidade pode ser usada para semear outros sistemas criptográficos ou para gerar nonces e vetores de inicialização (IVs).
- Integração com Gestores de Palavras-Passe: O algoritmo poderia ser integrado como o motor central para gestores de palavras-passe de código aberto, fornecendo uma fonte de aleatoriedade transparente e auditável.
- Preparação Pós-Quântica: Exploração e otimização adicional do gerador baseado em KMAC, alinhando-se com os padrões FIPS 202 e SP 800-185 do NIST, para preparar a era da computação pós-quântica.
10. Referências
- M. Bishop, "Computer Security: Art and Science," Addison-Wesley, 2003.
- NIST, "Special Publication 800-63B: Digital Identity Guidelines," 2017.
- NIST, "Special Publication 800-90A: Recommendation for Random Number Generation Using Deterministic Random Bit Generators," 2015.
- NIST, "Special Publication 800-90B: Recommendation for the Entropy Sources Used for Random Bit Generation," 2018.
- J. Kelsey, B. Schneier, D. Wagner, "Secure Applications of Low-Entropy Keys," ISW '97.
- D. D. Hwang, B. B. Gupta, "A Study of Password Security and Its Implications," JIS, 2019.
- NIST, "FIPS 202: SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions," 2015.
- NIST, "SP 800-185: SHA-3 Derived Functions: cSHAKE, KMAC, TupleHash and ParallelHash," 2016.
- M. S. Turan, E. Barker, J. Kelsey, "Recommendation for Random Bit Generator (RBG) Constructions," NIST SP 800-90C, 2016.
- P. G. Neumann, "Illustrative Risks to the Public in the Use of Computer Systems and Related Technology," ACM SIGSOFT, 1995.