CSPRNG
Um gerador de número pseudo-aleatório criptograficamente seguro ou gerador de números pseudoaleatórios criptográfico é um gerador de números pseudoaleatórios (PRNG) com propriedades que o torna adequado para o uso na criptografia.
Os requisitos de um PRNG padrão também são satisfeitos por um PRNG criptograficamente seguro, porém, não se pode dizer o mesmo do inverso. Os requisitos do CSPRNG podem ser divididos em dois grupos: primeiramente, eles devem passar por testes de aleatoriedade estatísticos; e segundo, eles devem ser resistentes a ataques, mesmo quando parte de seu estado inicial ou em execução chegue ao conhecimento do atacante. A maioria dos PRNGs não são adequados para uso como CSPRNGs e não irão satisfazer ambos requisitos. Primeiro, enquanto muitos PRNGs dão saídas aparentemente aleatórias para alguns testes estatísticos, eles não são capazes de resistir a determinados métodos de engenharia reversa. Testes estatísticos especializados podem ser especialmente melhorados para mostrar que esses números aleatórios não são verdadeiramente aleatórios. Segundo, para a maioria dos PRNGs, quando o seu estado atual é revelado, todos os números aleatórios passados podem ser calculados, permitindo a um atacante ler todas as mensagens passadas, bem como as futuras.
Santha e Vazirani provaram que vários fluxos de bit com baixa aleatoriedade podem ser combinados para produzir um fluxo de bit quase-aleatório de melhor qualidade. Antes ainda, John von Neumann provou que um simples algoritmo é capaz de remover quantidade considerável de viés em qualquer fluxo de bits, que pode ser aplicado em cada fluxo de bit antes de usar qualquer variante do projeto de Santha-Vazirani. Essa área de atuação é chamada de extração de entropia e é objeto de pesquisas em atividade (e.g., N Nisan, S Safra, R Shaltiel, A Ta-Shma, C Umans, D Zuckerman).
Na discussão abaixo, os projetos de CSPRNG são divididos em três classes: 1) as baseadas em primitivas criptográficas como cifras e hashes criptográficos, 2) as baseadas em problemas matemáticos considerados difíceis, e 3) projetos de propósito-especial. Esse último, por muitas vezes introduz entropia adicional quando disponível e , a rigor, não são geradores de números aleatórios "puro", pois suas saídas não são determinadas pelo seus estados iniciais. Essa adição pode prevenir ataques mesmo que o estado inicial seja comprometido.
Projetos especiais
Há diversos PRNGs práticos que foram projetados para ser criptograficamente seguros, como:
Diversos CSPRNGs foram padronizados. Por exemplo, Existem, também, diversos padrões para testes estatísticos de novos projetos de CSPRNG:
The Guardian e The New York Times relataram que a National Security Agency (NSA) inseriu uma PRNG no NIST SP 800-90A que teria um backdoor que permitiria a NSA decriptar qualquer material prontamente, que teria sido encriptado com a ajuda do Dual_EC_DRBG. Ambas as reportagens relataram que, que como especialistas em segurança já suspeitavam, a NSA tem introduzido fraquezas no CSPRNG padrão 800-90; isso foi confirmado pela primeira vez por um dos documentos confidenciais vazados pelo The Guardian por Edward Snowden. A NSA trabalhou secretamente para ter a sua própria versão do projeto da norma de segurança da NIST, aprovada em todo mundo para uso em 2006. O documento vazado afirma que "eventualmente, a NSA tornou-se seu único editor." Apesar do conhecido potencial de um backdoor e outras deficiências significativas com o Dual_EC_DRBG, diversas empresas como a RSA Security continuaram a utilizar o Dual_EC_DRBG, até a backdoor ser confirmada em 2013. RSA Security recebeu da NSA U$10 milhões como pagamento para continuar a utilizar o CSPRNG comprometido.


