Selecionar idioma

Um Gerador de Senhas Seguro Baseado em Gerador de Números Pseudoaleatórios (PRNG)

Este artigo propõe um gerador de senhas seguro usando PRNGs baseados em HMAC, CMAC ou KMAC, validado por 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 Senhas Seguro Baseado em Gerador de Números Pseudoaleatórios (PRNG)

Índice

1. Introdução

Os últimos anos têm sido marcados por relatos contínuos de fugas de contas de websites e de palavras-passe baseadas em texto, sublinhando a importância crítica da segurança da informação e das palavras-passe. Para além das vulnerabilidades dos websites, a segurança da própria palavra-passe é fundamental. As práticas comuns de palavras-passe inseguras incluem palavras-passe baseadas em palavras-chave, palavras-passe baseadas em frases populares, palavras-passe baseadas em informações do utilizador e a reutilização de palavras-passe. O rápido desenvolvimento da IA e dos Modelos de Linguagem de Grande Escala (LLMs) capacita ainda mais os atacantes para adivinhar palavras-passe de forma mais eficaz.

Embora as plataformas utilizem defesas como Palavras-passe de Uso Único (OTP), autenticação multifator (MFA) e armazenamento encriptado de palavras-passe, melhorar a segurança inerente das palavras-passe continua a ser crucial. Esta investigação propõe um gerador de senhas seguro baseado num Gerador de Números Pseudoaleatórios (PRNG) seguro. O PRNG é construído utilizando Código de Autenticação de Mensagem com Função Hash (HMAC), Código de Autenticação de Mensagem com Cifra de Bloco (CMAC) ou Código de Autenticação de Mensagem KECCAK (KMAC) para gerar números aleatórios criptograficamente seguros, que são depois utilizados para produzir palavras-passe.

As principais contribuições são:

2. Revisão da Literatura

2.1. Gerador de Números Pseudoaleatórios Baseado em Gerador Congruencial Linear

Muitas linguagens de programação (por exemplo, C, Java) implementam PRNGs baseados em Geradores Congruenciais Lineares (LCG). Dada uma semente $k$, a sequência é gerada como:

$f_0(k) \equiv a \oplus k \ (\text{mod} \ m)$

$f_i(k) \equiv a \times f_{i-1}(k) + c \ (\text{mod} \ m)$ para $i \ge 1$

No entanto, os LCGs são inseguros porque o próximo estado é derivado linearmente do anterior ($f_{i-1}(k) \equiv (f_i(k) - c) \times a^{-1} \ (\text{mod} \ m)$), permitindo que um atacante retroceda até à semente.

2.2. Gerador de Números Pseudoaleatórios Seguro

2.2.1. Baseado em Código de Autenticação de Mensagem com Função Hash (HMAC)

A segurança do HMAC baseia-se na propriedade unidirecional das funções hash criptográficas (por exemplo, SHA-2, SHA-3). 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 de preenchimento fixas, e $h$ é a função hash. Para gerar um fluxo de bits aleatório de comprimento $L$, é utilizado um modo de contador, modificando a mensagem para cada bloco de saída: $M_i = i \ || \ \text{KDF} \ || \ 0x00 \ || \ M \ || \ L$, produzindo $r_{hmac,i}(k, M_i)$.

2.2.2. Baseado em Código de Autenticação de Mensagem com Cifra de Bloco (CMAC)

A segurança do CMAC baseia-se no Advanced Encryption Standard (AES). Para uma chave $k$ e uma mensagem $M$ dividida em blocos $M'_i$ de comprimento $l_a$, opera no modo Cipher Block Chaining (CBC):

$c_{i+1} = AES(k, c_i \oplus M'_{i+1})$, com $c_0 = Pad0(0)$.

A saída final $r_{cmac}(k, Split(M))$ é derivada do último bloco de texto cifrado após um preenchimento específico (Pad1).

2.2.3. Baseado em Código de Autenticação de Mensagem KECCAK (KMAC)

O KMAC baseia-se na construção "sponge" do SHA-3 (KECCAK), oferecendo flexibilidade e segurança. Pode ser utilizado de forma semelhante ao HMAC num modo de contador para gerar um fluxo de bits determinístico e imprevisível adequado para fins de PRNG, conforme delineado no NIST SP 800-108 Rev. 1.

2.3. Métodos para Validação da Aleatoriedade

O artigo adota a estrutura do NIST SP 800-90B para validar a aleatoriedade, focando-se em dois aspetos-chave:

3. Gerador de Senhas Seguro Proposto Baseado em PRNG Seguro

A arquitetura do sistema proposto envolve:

  1. Entrada: Uma "Mensagem a Ser "Hashada" (TBHM) opcional fornecida pelo utilizador e parâmetros (comprimento desejado da palavra-passe, conjunto de caracteres).
  2. Núcleo do PRNG Seguro: Um PRNG construído utilizando uma das três funções MAC (HMAC, CMAC ou KMAC) em modo de contador, de acordo com o NIST SP 800-108. Este núcleo recebe a TBHM (e uma chave/semente interna) para gerar uma sequência de bits pseudoaleatória criptograficamente segura.
  3. Geração da Palavra-passe: Os bits aleatórios são mapeados para o conjunto de caracteres especificado pelo utilizador (por exemplo, alfanuméricos + símbolos) para criar uma palavra-passe com o comprimento desejado.

A análise de segurança compara o espaço de chaves efetivo das palavras-passe geradas (com base no tamanho do conjunto de caracteres $C$ e no comprimento $L$, dando $C^L$ possibilidades) com a resistência à força bruta do AES-128 ($2^{128}$) e do AES-256 ($2^{256}$). Por exemplo, uma palavra-passe de 16 caracteres de um conjunto de 94 caracteres oferece ~$94^{16} \approx 2^{105}$ possibilidades, o que é mais fraco que o AES-128, mas ainda robusto para muitos propósitos.

4. Ambiente Experimental e Resultados

4.1. Configuração Experimental

Foram realizadas experiências para gerar grandes sequências de números aleatórios utilizando os PRNGs propostos baseados em HMAC, CMAC e KMAC. Estas sequências foram depois submetidas à suíte de testes NIST SP 800-90B.

4.2. Resultados da Validação da Aleatoriedade

Conclusão Principal: Os resultados experimentais demonstraram que os números aleatórios gerados pelos três métodos PRNG propostos (HMAC/SHA-256, CMAC/AES-256, KMAC) passaram com sucesso tanto na validação de entropia como nos testes de validação IID especificados no NIST SP 800-90B.

Implicação: Isto confirma que as sequências de saída possuem alta entropia e não apresentam dependências estatísticas ou tendências detetáveis, cumprindo o requisito central para uma fonte segura de aleatoriedade na geração de palavras-passe.

4.3. Análise de Eficiência Computacional

Embora não seja o foco principal, o artigo implica um compromisso. O HMAC/SHA-256 e o KMAC são geralmente muito eficientes em software. O CMAC/AES pode ter vantagens de aceleração por hardware em plataformas específicas. A escolha pode ser adaptada com base nas restrições de desempenho do ambiente de implementação.

5. Conclusão e Trabalhos Futuros

Esta investigação concebeu e validou com sucesso uma estrutura de gerador de senhas seguro baseada em PRNGs criptograficamente fortes (HMAC, CMAC, KMAC). A segurança das palavras-passe geradas deriva das propriedades comprovadas destas funções MAC e da alta aleatoriedade validada do fluxo de bits subjacente.

Direções futuras incluem:

6. Análise Original & Perspetiva de Especialista

Perspetiva Central: O trabalho de Chen é uma solução de engenharia pragmática e conforme aos padrões para um problema de segurança fundamental: a baixa entropia das palavras-passe. Identifica corretamente que a causa raiz de muitas fugas de palavras-passe não são apenas falhas de armazenamento, mas a geração previsível. Ao ancorar a solução em construções aprovadas pelo NIST (HMAC, CMAC, KMAC) e estruturas de validação (SP 800-90B), a investigação evita a novidade criptográfica por si só e, em vez disso, oferece um método comprovadamente sólido. Esta abordagem espelha a filosofia por trás de sistemas bem estabelecidos como a interface /dev/urandom no Linux, que agrega entropia de eventos do sistema, mas aqui o foco está num processo determinístico, "seedável" e influenciável pelo utilizador, adequado para geração de palavras-passe reproduzível.

Fluxo Lógico: O argumento é metódico: 1) Estabelecer o problema (palavras-passe fracas, adivinháveis). 2) Rejeitar soluções comuns mas falhas (RNGs baseados em LCG). 3) Propor blocos de construção com segurança comprovada (MACs criptográficos). 4) Montá-los de acordo com padrões existentes (modo de contador NIST SP 800-108). 5) Validar a saída contra benchmarks rigorosos (NIST SP 800-90B). Este fluxo é robusto e espelha as melhores práticas na investigação de criptografia aplicada, semelhante à avaliação estruturada vista em trabalhos seminais como o artigo CycleGAN que validou sistematicamente a qualidade da tradução de imagens em múltiplos domínios e métricas.

Pontos Fortes & Fraquezas: O ponto forte principal é a sua confiabilidade. Utilizar primitivas criptográficas testadas em batalha e orientações do NIST minimiza o risco. A entrada opcional do utilizador (TBHM) é uma funcionalidade inteligente, permitindo sementes personalizadas mas seguras. No entanto, uma falha significativa é a falta de uma análise de segurança comparativa direta com geradores de palavras-passe state-of-the-art, como os que utilizam Argon2 ou bcrypt para "key stretching" num contexto semelhante. A comparação com a força de força bruta do AES é útil, mas simplista. O vetor de ataque no mundo real é frequentemente a quebra offline de palavras-passe "hashadas"; o artigo poderia fortalecer o seu caso modelando a resistência contra ferramentas como o Hashcat com conjuntos de regras otimizados. Além disso, embora os testes do NIST sejam autoritativos, não são exaustivos para todas as propriedades criptográficas; uma discussão sobre a resistência a ataques de canal lateral na implementação do PRNG seria valiosa.

Insights Acionáveis: Para arquitetos de segurança, este artigo fornece um plano pronto. Recomendação 1: Implementar a variante baseada em KMAC. Como derivado do SHA-3, foi concebido para ser resiliente a ataques de extensão de comprimento que teoricamente afetam o HMAC baseado em SHA-2 em certos cenários, e representa uma escolha mais à prova de futuro. Recomendação 2: Integrar este gerador como motor central para cofres de palavras-passe empresariais ou sistemas SSO onde seja necessária a criação de palavras-passe baseada em políticas. A sua natureza determinística (mesma TBHM + parâmetros = mesma palavra-passe) pode ser uma funcionalidade para cenários de recuperação. Recomendação 3: Complementar esta solução técnica com educação do utilizador. O gerador pode produzir uma string aleatória de 20 caracteres, mas se o utilizador optar por uma TBHM curta e memorável e um comprimento de 8 caracteres, a segurança despenca. A interface deve impor padrões sensatos (por exemplo, mínimo de 12 caracteres, conjunto completo de caracteres) e transmitir visualmente a força da entropia, tal como os medidores de força de palavra-passe informados por investigações de organizações como o NCC Group.

7. Detalhes Técnicos & Formulações Matemáticas

A segurança central baseia-se na propriedade de função pseudoaleatória (PRF) dos MACs. O PRNG em modo de contador pode ser abstraído como:

$R_i = PRF(K, \text{Contador} \ || \ \text{Rótulo} \ || \ 0x00 \ || \ \text{Entrada} \ || \ L)$

onde $PRF$ é $HMAC$, $CMAC$, ou $KMAC$, $K$ é uma chave secreta, e $R_i$ são os blocos de saída concatenados para formar o fluxo de bits final.

Mapeamento da Palavra-passe: Dado um valor inteiro aleatório $v$ derivado do fluxo de bits e um conjunto de caracteres de tamanho $C$, o índice do caractere é selecionado como: $index = v \mod C$. Isto é repetido $L$ vezes.

8. Estrutura de Análise & Exemplo Conceptual

Cenário: Um serviço web precisa de gerar uma palavra-passe inicial aleatória e de alta robustez para novos utilizadores.

Aplicação da Estrutura:

  1. Seleção de Parâmetros: O serviço escolhe o KMAC256 como PRF, uma chave criptográfica derivada do sistema $K_{sys}$ armazenada de forma segura, e uma TBHM composta pelo UserID único e imutável do utilizador e uma timestamp.
  2. Processo:
    • Entrada: TBHM = "USER12345@2023-10-27T10:30:00Z", Comprimento $L$ = 16, Conjunto de Caracteres = 94 ASCII imprimíveis.
    • O núcleo PRNG processa isto com $K_{sys}$ em modo de contador para gerar 128 bits aleatórios (16 chars * log2(94) ≈ 105 bits, logo 128 bits fornecem entropia ampla).
    • Os bits são convertidos numa string como: s9*!Lq9@Pz%2m#X&
  3. Propriedades de Segurança:
    • Imprevisibilidade: Sem $K_{sys}$, a saída é imprevisível mesmo que a TBHM seja conhecida.
    • Determinismo: O mesmo utilizador nesse exato momento obteria a mesma palavra-passe, auxiliando na depuração.
    • Alta Entropia: A palavra-passe tem ~105 bits de entropia, tornando a força bruta inviável.

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

10. Referências

  1. M. Bellare, R. Canetti, and H. Krawczyk, "Keying Hash Functions for Message Authentication," CRYPTO 1996.
  2. NIST, "Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication," SP 800-38B.
  3. NIST, "SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions," FIPS PUB 202.
  4. NIST, "Recommendation for the Entropy Sources Used for Random Bit Generation," SP 800-90B.
  5. NIST, "Recommendation for Key Derivation Using Pseudorandom Functions," SP 800-108 Rev. 1.
  6. J. Kelsey, B. Schneier, and N. Ferguson, "Yarrow-160: Notes on the Design and Analysis of the Yarrow Cryptographic Pseudorandom Number Generator," SAC 1999.
  7. J. Zhu, T. Park, P. Isola, A.A. Efros, "Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks," ICCV 2017. (Citado como um exemplo de avaliação metodológica rigorosa).
  8. NCC Group, "Password Storage Cheat Sheet," OWASP Foundation. (Citado como uma fonte para orientação prática de políticas de palavras-passe).