Selecionar idioma

Um Gerador de Palavras-Passe Seguro Baseado em Gerador de Números Pseudoaleatórios (PRNG)

Este artigo propõe um gerador de palavras-passe seguro usando PRNGs baseados em HMAC, CMAC ou KMAC, validado através de testes de entropia e IID do NIST SP 800-90B.
computationalcoin.com | PDF Size: 0.5 MB
Avaliação: 4.5/5
Sua avaliação
Você já avaliou este documento
Capa do documento PDF - Um Gerador de Palavras-Passe Seguro Baseado em Gerador de Números Pseudoaleatórios (PRNG)

Í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:

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:

3. Gerador de Palavras-Passe Seguro Proposto

A arquitetura do sistema envolve duas fases principais:

  1. 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.
  2. 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:

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:

  1. 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.
  2. Avaliar a Fonte de Entropia: Como é semeado o PRNG? Está a usar entropia do sistema (`/dev/urandom`, `CryptGenRandom`)?
  3. 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)`.
  4. 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.
Esta estrutura transforma a teoria do artigo numa lista de verificação concreta de auditoria e remediação.

9. Aplicações Futuras & Direções

A tecnologia central tem aplicações para além da geração de palavras-passe de utilizador:

10. Referências

  1. M. Bishop, "Computer Security: Art and Science," Addison-Wesley, 2003.
  2. NIST, "Special Publication 800-63B: Digital Identity Guidelines," 2017.
  3. NIST, "Special Publication 800-90A: Recommendation for Random Number Generation Using Deterministic Random Bit Generators," 2015.
  4. NIST, "Special Publication 800-90B: Recommendation for the Entropy Sources Used for Random Bit Generation," 2018.
  5. J. Kelsey, B. Schneier, D. Wagner, "Secure Applications of Low-Entropy Keys," ISW '97.
  6. D. D. Hwang, B. B. Gupta, "A Study of Password Security and Its Implications," JIS, 2019.
  7. NIST, "FIPS 202: SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions," 2015.
  8. NIST, "SP 800-185: SHA-3 Derived Functions: cSHAKE, KMAC, TupleHash and ParallelHash," 2016.
  9. M. S. Turan, E. Barker, J. Kelsey, "Recommendation for Random Bit Generator (RBG) Constructions," NIST SP 800-90C, 2016.
  10. P. G. Neumann, "Illustrative Risks to the Public in the Use of Computer Systems and Related Technology," ACM SIGSOFT, 1995.