Índice
1. Introdução
Esta investigação aborda o problema persistente de fugas de palavras-passe e o consequente risco de exposição de dados pessoais. Embora a segurança dos websites seja um fator, a força intrínseca da própria palavra-passe é primordial. As vulnerabilidades comuns incluem palavras-passe baseadas em palavras-chave, frases populares, informações do utilizador e reutilização de palavras-passe. O aumento da IA e dos modelos de linguagem de grande escala capacita ainda mais os atacantes para adivinhar palavras-passe de forma mais eficaz.
Em resposta, este artigo propõe um gerador de palavras-passe seguro construído sobre um Gerador de Números Pseudoaleatórios (PRNG) seguro. O núcleo do PRNG é construído utilizando primitivas criptográficas como HMAC, CMAC ou KMAC para gerar números aleatórios de alta qualidade, que são depois usados para criar palavras-passe. O sistema permite uma entrada opcional do utilizador (Mensagem a Ser *Hashada*, TBHM) para iniciar o processo. As principais contribuições são:
- Construção de PRNGs seguros baseados em HMAC, CMAC e KMAC.
- Análise de segurança das palavras-passe geradas sob diferentes conjuntos de caracteres e comprimentos, comparando a sua força com AES-128 e AES-256.
- Validação empírica da aleatoriedade utilizando o NIST SP 800-90B, focando-se nos testes de Entropia e de Distribuição Independente e Identicamente Distribuída (IID).
2. Revisão da Literatura
2.1. Gerador de Números Pseudoaleatórios Baseado no Gerador Congruencial Linear
As linguagens de programação comuns (C, Java) usam Geradores Congruenciais Lineares (LCG). Dada uma semente $k$, a sequência é gerada como: $f_0(k) \equiv a \oplus k \ (\text{mod} \ m)$ e $f_i(k) \equiv a \times f_{i-1}(k) + c \ (\text{mod} \ m)$. Este método é inseguro pois o estado pode ser revertido: $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
Os PRNGs seguros baseiam-se em primitivas criptográficas conforme delineado no NIST SP 800-108 Rev. 1.
2.2.1. Baseado em HMAC
A segurança depende da propriedade unidirecional das funções *hash* (por exemplo, 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))$. Para gerar um fluxo de bits aleatório de comprimento $L$, é usado um modo de contador: $M_i = i \ || \ \text{KDF} \ || \ 0x00 \ || \ M \ || \ L$, produzindo saídas $r_{hmac,i}$.
2.2.2. Baseado em CMAC
A segurança depende da cifra de bloco AES no modo CBC. A mensagem $M$ é dividida em blocos $M'_1, M'_2, ...$. O processo itera: $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 cifrado após um preenchimento específico (Pad1).
2.2.3. Baseado em KMAC
Utiliza a função esponja KECCAK (a base do SHA-3), oferecendo uma função MAC flexível e robusta adequada para gerar bits aleatórios determinísticos.
2.3. Métodos para Validação da Aleatoriedade
O artigo adota a estrutura do NIST SP 800-90B, que é o padrão de facto para validar fontes de entropia. Inclui dois conjuntos de validação críticos:
- Avaliação de Entropia: Estima a quantidade de min-entropia no fluxo de bits gerado, indicando a sua imprevisibilidade.
- Teste IID (Distribuição Independente e Identicamente Distribuída): Um conjunto de testes estatísticos (por exemplo, Qui-Quadrado, Kolmogorov-Smirnov) para determinar se os bits de saída são estatisticamente independentes e seguem uma distribuição idêntica.
3. Gerador de Palavras-Passe Seguro Proposto
A arquitetura do sistema proposto é simples, mas poderosa:
- Entrada/Semente: Aceita uma TBHM fornecida opcionalmente pelo utilizador. Se for fornecida, é processada; caso contrário, é usada uma semente segura gerada pelo sistema.
- Núcleo do PRNG Seguro: A TBHM/semente é alimentada a uma das três construções criptográficas de PRNG (baseada em HMAC, baseada em CMAC, baseada em KMAC) para gerar uma sequência de bits pseudoaleatórios criptograficamente forte.
- Construção da Palavra-Passe: Os bits aleatórios são mapeados para um conjunto de caracteres definido pelo utilizador ou pelo sistema (por exemplo, alfanumérico + símbolos) para produzir uma palavra-passe do comprimento desejado.
Análise de Segurança: O artigo argumenta que a segurança da palavra-passe gerada depende diretamente da entropia da saída do PRNG e do tamanho do conjunto de caracteres. Realiza uma análise comparativa, mostrando que uma palavra-passe de 16 caracteres de um conjunto de 94 caracteres gerada por este método pode oferecer resistência a ataques de força bruta comparável ou superior à das chaves AES-128 ou AES-256, assumindo que a saída do PRNG é verdadeiramente aleatória.
4. Resultados Experimentais e Análise
A validação experimental é um ponto forte chave do artigo.
- Validação de Entropia: As sequências aleatórias geradas pelos três tipos de PRNG (HMAC-SHA256, CMAC-AES256, KMAC256) passaram na avaliação de entropia do NIST SP 800-90B, demonstrando uma min-entropia elevada, próxima do ideal de 1 bit por bit de saída.
- Validação IID: As sequências também passaram no conjunto de testes IID, confirmando que os bits são estatisticamente independentes e identicamente distribuídos, sem padrões ou enviesamentos detetáveis.
- Desempenho: Embora não seja o foco principal, o artigo regista a eficiência computacional. HMAC-SHA256 e KMAC256 mostraram velocidades comparáveis, enquanto CMAC-AES256 foi ligeiramente mais lento devido às operações de cifra de bloco, mas todos estavam dentro de limites práticos para geração de palavras-passe.
Descrição do Gráfico (Implícita): Um gráfico de barras compararia eficazmente as estimativas de min-entropia (em bits por bit) para os três métodos de PRNG contra o valor ideal de 1,0. Todas as barras estariam muito próximas de 1,0. Um segundo gráfico poderia mostrar os valores-p dos principais testes IID (por exemplo, Qui-Quadrado, Kolmogorov-Smirnov), com todos os valores bem acima do limiar de significância típico (por exemplo, 0,01), indicando uma aprovação.
5. Conclusão e Trabalho Futuro
A investigação demonstra com sucesso uma estrutura de geração de palavras-passe segura baseada em PRNGs criptográficos. Os métodos propostos geram palavras-passe com aleatoriedade suficiente, conforme validado rigorosamente pelos padrões NIST. As direções de trabalho futuro incluem:
- Integrar o gerador em extensões de navegador ou gestores de palavras-passe.
- Explorar algoritmos criptográficos pós-quânticos (por exemplo, baseados em reticulados, *hashes*) como base para o PRNG para garantir segurança a longo prazo.
- Desenvolver uma prova de segurança formal sob modelos criptográficos padrão.
6. Análise Original & Perspetiva de Especialista
Perspetiva Central: Este artigo não trata de inventar uma nova primitiva criptográfica; trata-se da aplicação e validação disciplinadas de primitivas existentes e validadas (HMAC, CMAC, KMAC) para resolver o problema mundano, mas crítico, da geração de palavras-passe. O seu valor real reside em colmatar o fosso entre a criptografia teórica e a higiene de segurança prática, provando rigorosamente que a sua saída é adequada para o propósito utilizando o conjunto de testes padrão-ouro do NIST.
Fluxo Lógico: O argumento é sólido: 1) Os LCGs padrão são criptograficamente quebrados. 2) Os PRNGs seguros construídos a partir de MACs criptográficos são comprovadamente robustos. 3) Portanto, as palavras-passe derivadas de tais PRNGs herdam essa robustez. 4) Esta afirmação é validada não apenas pela teoria, mas pela aprovação em testes empíricos rigorosos (NIST SP 800-90B). Esta validação de ponta a ponta é o que falta a muitas ferramentas de "gerador de palavras-passe seguro".
Pontos Fortes & Fraquezas:
Pontos Fortes: O rigor metodológico é louvável. Usar o NIST SP 800-90B para validação eleva imediatamente a sua credibilidade, semelhante à forma como os algoritmos criptográficos são validados através do CAVP (Programa de Validação de Algoritmos Criptográficos). A comparação com a força da chave AES é uma métrica prática e relacionável para equipas de segurança.
Fraquezas: O artigo opera num ambiente controlado e idealizado. Assume que a semente/TBHM inicial tem entropia suficiente — um elo crítico e frequentemente fraco em sistemas reais. A entrada "opcional" do utilizador é uma faca de dois gumes; uma frase de utilizador fraca e previsível (por exemplo, "minhapalavrapasse") poderia minar toda a construção criptográfica, um risco não totalmente quantificado. Além disso, como observado na revisão de 2023 "Criptografia Pós-Quântica: Uma Jornada de Dez Anos" do NIST, o campo está a mover-se para algoritmos resistentes à computação quântica. As construções do artigo, embora seguras contra computadores clássicos, dependem de SHA2/AES, cuja resistência quântica a longo prazo é incerta.
Perspetivas Acionáveis: Para arquitetos de segurança, este artigo fornece um modelo. Não crie o seu próprio PRNG. Use construções criptográficas estabelecidas como blocos de construção. Mais importante, valide, valide, valide. Integre a validação contínua de entropia (como os testes NIST) nos seus sistemas críticos de geração de números aleatórios, uma prática enfatizada por organizações como os esforços de CCC (Certificação de Critérios Comuns) da Linux Foundation. Para o desenvolvimento de produtos, a lição imediata é substituir qualquer geração de palavras-passe baseada em LCG nos seus sistemas por um gerador baseado em KMAC ou HMAC-SHA256, usando uma semente obtida de forma segura. O passo de preparação para o futuro é começar a prototipar com desenhos baseados em SHA-3/KECCAK (como KMAC) e monitorizar a evolução dos padrões de criptografia pós-quântica do NIST para eventual integração.
7. Detalhes Técnicos & Formulação Matemática
As operações matemáticas centrais são definidas na Revisão da Literatura (Secção 2). As fórmulas-chave incluem:
- LCG (Inseguro): $f_i(k) \equiv a \times f_{i-1}(k) + c \ (\text{mod} \ m)$
- HMAC: $r_{hmac}(k, M) = h((k \oplus opad) \ || \ h((k \oplus ipad) \ || \ M))$
- HMAC em Modo de Contador para PRNG: $M_i = i \ || \ \text{KDF} \ || \ 0x00 \ || \ M \ || \ L$
- Iteração CMAC (CBC-MAC): $c_{i+1} = AES(k, c_i \oplus M'_{i+1})$
A geração da palavra-passe mapeia um inteiro aleatório $R$ (da saída do PRNG) para um índice de caractere: $\text{índice} = R \ \text{mod} \ |S|$, onde $|S|$ é o tamanho do conjunto de caracteres.
8. Estrutura de Análise & Exemplo de Caso
Exemplo de Caso: Avaliar o Gerador de Palavras-Passe de um Sistema Legado
Cenário: Uma aplicação web legada usa um LCG modificado para gerar palavras-passe temporárias de utilizador. É necessária uma auditoria de segurança.
Aplicação da Estrutura:
- Identificar o Tipo de PRNG: Inspecionar o código-fonte. Encontrar:
seed = (a * seed + c) % m;Confirmar que é uma variante de LCG. - Avaliar a Segurança Criptográfica: O LCG é determinístico e reversível. Um atacante que obtenha algumas palavras-passe consecutivas poderia resolver para a semente e prever todas as palavras-passe futuras, violando as diretrizes do NIST SP 800-63B sobre aleatoriedade do autenticador.
- Propor Remediação usando o Método do Artigo:
- Fonte da Semente: Substituir a semente de hora do sistema por um CSPRNG (por exemplo,
/dev/urandomno Linux, CryptGenRandom no Windows). - Gerador Central: Implementar um PRNG baseado em HMAC-SHA256 conforme o desenho do artigo.
- Validação: Gerar uma amostra grande (1.000.000 bits) do novo gerador e executar o NIST STS (Conjunto de Testes Estatísticos) ou os estimadores de entropia do SP 800-90B para verificar a aleatoriedade antes da implementação.
- Fonte da Semente: Substituir a semente de hora do sistema por um CSPRNG (por exemplo,
9. Aplicações Futuras & Direções de Desenvolvimento
Os princípios estendem-se para além das palavras-passe de utilizador:
- Geração de Chaves de API & Tokens: Gerar automaticamente chaves de API e tokens de sessão criptograficamente aleatórios dentro de arquiteturas de microserviços.
- Configurações Padrão Seguras: Incorporar tais geradores em dispositivos IoT ou instaladores de software para criar palavras-passe de administrador padrão únicas e fortes, mitigando ataques generalizados com credenciais padrão.
- Evolução Pós-Quântica: A construção baseada em KMAC é inerentemente baseada em SHA-3 (KECCAK), que é considerada resistente à computação quântica. Este gerador pode ser uma base para sistemas "cripto-ágeis". O trabalho futuro deve integrar PRNGs baseados em algoritmos pós-quânticos padronizados pelo NIST, como CRYSTALS-Kyber ou assinaturas baseadas em *hash*, à medida que a comunidade criptográfica se prepara para a era da computação quântica.
- Integração com Gestores de Palavras-Passe & SSO: O gerador poderia ser um componente central de gestores de palavras-passe de código aberto ou sistemas de Single Sign-On (SSO), fornecendo uma fonte de aleatoriedade de palavras-passe auditável de forma transparente.
10. Referências
- M. Bishop, “Computer Security: Art and Science”, Addison-Wesley, 2019.
- NIST, “Special Publication 800-63B: Digital Identity Guidelines”, 2020.
- NIST, “Special Publication 800-90B: Recommendation for the Entropy Sources Used for Random Bit Generation”, 2018.
- NIST, “Special Publication 800-108 Rev. 1: Recommendation for Key Derivation Using Pseudorandom Functions”, 2022.
- NIST, “FIPS 202: SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions”, 2015.
- J. Kelsey, B. Schneier, D. Wagner, “Secure Applications of Low-Entropy Keys”, Information Security Workshop, 1997.
- M. Dworkin, “Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication”, NIST SP 800-38B, 2005.
- NIST, “Status Report on the Third Round of the NIST Post-Quantum Cryptography Standardization Process”, 2022. [Online]. Disponível: https://csrc.nist.gov/projects/post-quantum-cryptography
- Linux Foundation, “Common Criteria Certification and Open Source”, 2023. [Online]. Disponível: https://www.linuxfoundation.org/