Como (se é que existe) um gerador de números aleatórios previsível fica mais seguro após a saída do SHA-

Este artig afirma que

Apesar do fato de o Mersenne Twister ser um gerador de números pseudo-aleatórios extremamente bom, ele não é criptograficamente seguro por si só por um motivo muito simples. É possível determinar todos os estados futuros do gerador a partir do estado que o gerador possui a qualquer momento e 624 saídas de 32 bits ou 19.937 saídas de um bit são suficientes para fornecer esse estado. O uso de uma função de hash criptograficamente segura, como SHA-1, na saída do Mersenne Twister foi recomendado como uma maneira de obter um fluxo de chaves útil em criptografi

Mas não há referências sobre por que digerir a saída a tornaria mais segura. E honestamente, não vejo por que isso deveria ser o caso. O Mersenne Twister tem um período de 2 ^ 19937-1, mas acho que meu raciocínio também se aplicaria a qualquer PRNG periódico, por exemplo Geradores lineares de congratulações também. Devido às propriedades de uma função unidirecional segura h, pode-se pensar em h como uma função injetiva (caso contrário, poderíamos produzir colisões), simplesmente mapeando os valores de seu domínio para seu intervalo de maneira individual.

Com esse pensamento em mente, eu argumentaria que os valores de hash produzirão exatamente o mesmo comportamento periódico que o original Mersenne Twister. Isso significa que, se você observar todos os valores de um período e os valores começarem a se repetir, poderá perfeitamente prever todos os valores futuro

Suponho que isso esteja relacionado ao mesmo princípio aplicado à criptografia baseada em senha PKCS # 5) - como o domínio das senhas não fornece entropia suficiente, o simples hash das senhas não adiciona nenhuma entropia adicional - é por isso que você precisa salgar as senhas antes de as misturar. Eu acho que exatamente o mesmo princípio se aplica aqu

Um exemplo simples que finalmente me convenceu: suponha que você tenha um PRNG muito ruim que sempre produzirá um "número aleatório" de 1. Então, mesmo que o SHA-1 seja uma função unidirecional perfeita, aplique o SHA-1 à saída sempre produzirá o mesmo valor, tornando a saída não menos previsível do que anteriorment

Ainda assim, eu gostaria de acreditar que há alguma verdade nesse artigo, então certamente devo ter esquecido alguma coisa. Você pode me ajudar? Em grande parte, deixei de fora o valor inicial de meus argumentos - talvez seja aí que a mágica acontece?

questionAnswers(2)

yourAnswerToTheQuestion