Ferramentas de texto e do dia a dia · Gerador de senhas
PRNG vs CSPRNG: de onde realmente vêm os números aleatórios do seu navegador
· Fundo
senhas criptografia da web csprng
Explica a diferença entre geradores pseudo-aleatórios e geradores criptograficamente seguros, como os sistemas operacionais coletam entropia de eventos de hardware e como essa aleatoriedade atinge uma página da web por meio do Web Crypto API.
Os computadores são determinísticos, então de onde vem a aleatoriedade? — o quebra-cabeça básico por trás de cada gerador
JavaScript em execução em ToolAcre começa em um limite API. Ele pode solicitar bytes de `crypto.getRandomValues`, observar se a chamada foi bem-sucedida e usar o array retornado. Ele não pode inspecionar todos os eventos físicos, pools de kernel ou componentes de hardware que uma plataforma específica possa usar. A história de origem da aleatoriedade do livro de exercícios excede, portanto, as evidências locais.
Uma explicação tecnicamente honesta começa onde começa a observação. O aplicativo investiga o Web Crypto, o mecanismo o envolve e todas as seleções consomem essa fonte. Os internos específicos da plataforma precisam de documentação e auditorias da plataforma, não de uma declaração genérica inferida do nome do método do navegador.
O repositório inicia no navegador API; não audita fontes de entropia física
Geradores pseudo-aleatórios são frequentemente descritos por sementes e estado reproduzível, mas os motores JavaScript não são exigidos por este repositório para comcomcompartilhar um design Math.random. ToolAcre evita a ambigüidade ao proibir API inteiramente na produção de credenciais. As varreduras de origem impõem essa garantia negativa.
Os testes ainda precisam de bytes determinísticos, então eles injetam objetos expondo `getRandomValues` através de um parâmetro interno. Essas falsificações permanecem no suporte de teste e não são exportadas como modo de produção inicial. A testabilidade não cria uma opção de usuário oculta para senhas repetíveis.
Math.random é proibido aqui, sem reivindicar um design universal PRNG
O produto usa “criptográfico” de forma com escopo definido: a interface do navegador necessária é Web Crypto, e a geração falha quando está ausente ou inutilizável. O aplicativo chama o método durante a detecção em vez de verificar apenas seu tipo, capturando ambientes restritos onde a invocação é lançada.
Esse contrato não promete resistência a todos os compromissos hipotéticos do Estado nem certifica a implementação de um navegador. Isso prova qual API a página solicita e que nenhum substituto mais fraco está conectado ao lado dela. A integridade do dispositivo permanece fora do gerador.
A propriedade criptográfica verificada é a fonte de criptografia da Web necessária e o caminho de recusa
Eventos de temporização, instruções de processador dedicado, cronogramas de repropagação e pools de entropia do sistema operacional estão todos abaixo da superfície da Web API. Nada é afirmado aqui porque a fonte do pacote não pode verificá-los. Um futuro artigo específico da plataforma precisaria de documentação primária para cada ambiente descrito.
A omissão fortalece, em vez de enfraquecer, a afirmação actual. ToolAcre pode dizer exatamente o que pede ao navegador e como trata os bytes. Não é necessário fingir que JavaScript pode auditar toda a cadeia de entropia para justificar a recusa de Math.random.
Os detalhes do evento de hardware e do pool do sistema operacional são afirmações de implementação que esta fonte não prova
`getRandomValues` preenche um `Uint8Array` dimensionado a partir do limite exclusivo solicitado. `secureRandomInt` monta esses bytes como um número big endian não assinado, calcula a maior janela de aceitação divisível e descarta valores no restante. O valor aceito é então reduzido a um índice.
Palavras, delimitadores, caracteres e trocas aleatórias reutilizam esse caminho. Um único ponto de estrangulamento torna a cadeia do navegador até a escolha revisável e garante que a correção da redução limitada afete todos os modos de geração, em vez de um chamador esquecido.
De getRandomValues a secureRandomInt: o caminho visível do navegador para o índice
Para um conjunto de palavras 7,776, a função seleciona bytes suficientes para representar cada índice válido. Forma um número inteiro, rejeita qualquer valor igual ou superior ao limite calculado e retorna o restante somente após a aceitação. `secureRandomChoice` usa esse resultado para ler uma palavra do array elegível.
O índice de produção específico é privado e não deve ser reproduzido em documentação. Em vez disso, os testes determinísticos alimentam bytes finais e dentro do intervalo conhecidos para provar o fluxo de controle. Isso rastreia uma seleção sem transformar uma frase gerada em um exemplo público.
Exemplo resolvido: rastrear bytes por meio de amostragem de rejeição para um índice de lista
O design do gerador de números aleatórios de hardware e as provas criptográficas formais não são cobertos pelo pacote. Nem os tempos de execução do servidor nem os aplicativos nativos. A implementação é um gerador de navegador e suas garantias não devem ser copiadas para sistemas não relacionados.
Também não aborda armazenamento ou uso posterior. Um valor selecionado através do Web Crypto ainda pode ser exposto por reutilização, phishing, histórico da área de transferência ou malware. A escolha CSPRNG resolve o problema de origem, não todos os problemas de manipulação de credenciais.
Conclusão: o Gerador de senha pergunta ao gerador criptográfico do navegador qual é a fonte certa para um segredo
A cadeia acionável é curta: testar se o Web Crypto funciona, recusar a geração quando isso não acontece, preencher bytes, rejeitar uma cauda irregular e mapear o valor aceito para um índice. ToolAcre torna cada etapa visível e testa limites difíceis.
Revise essa cadeia em vez de confiar em um rótulo vago de “aleatório”. Em seguida, revise o endpoint e o destino separadamente. A criptografia do navegador API é a fonte correta para este produto, mas o repositório não tem a pretensão de certificar o que está abaixo dele ou tudo o que se segue.