AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 549845
Accepted
Scott M
Scott M
Asked: 2019-11-02 03:25:40 +0800 CST2019-11-02 03:25:40 +0800 CST 2019-11-02 03:25:40 +0800 CST

Efeito imediato de gravar em /dev/random

  • 772

Por razões melhor descritas como filosóficas, gostaria de saber o seguinte. Suponha que eu vou ler de /dev/random (ou /dev/urandom) no tempo X. Em um cenário eu apenas faço isso, mas em outro, com /dev/random no estado idêntico, eu empurro algum número de bytes em /dev/urandom logo antes do tempo X. As saídas são as mesmas? Ignore o caso em que, por uma grande e estranha coincidência, os bytes específicos que escrevo deixam o estado de /dev/random no mesmo estado em que estavam antes.

Outra maneira de perguntar: escrever em /dev/random altera imediatamente (exceto coincidência improvável) o estado de /dev/random, ou existe algum tipo de buffer (de entrada ou saída) que significa que /dev/random será afetado por minhas gravações, mas apenas em um futuro potencialmente distante?

Nota: não estou usando o ioctl para reivindicar entropia extra disponível quando escrevo.

Quero enfatizar que esta não é uma questão "importante", e eu groco completamente que, pelo que sei, algum hardware de aleatoriedade quântica pode mudar de estado porque alguém em todo o mundo bocejou ou não bocejou, muito menos se eu bocejo ou não. não faça uma escrita. Esta questão é estritamente sobre se o ato de escrever em /dev/random faz uma mudança imediata de estado no software, ou se /dev/random armazenou em buffer o que você vai obter em seguida (ou armazena em buffer o que você escreve nele até ele decide reenviar algo) e, portanto, o efeito das gravações é atrasado.

Uma vez que esta pergunta está claramente fora da parede, deixe-me explicar por que estou perguntando. Eu corro um jogo onde as saídas de /dev/random são usadas para decidir os resultados do jogo. Durante o jogo, as pessoas estão falando sobre o mumble e eu pego uma cópia em tempo real desse fluxo de áudio, faço o hash e coloco em /dev/random. O que estou tentando decidir é se posso afirmar, com precisão, mas absurdamente, "Se você não tivesse dito isso, você não teria lançado aquele 1", ou se eu deveria apenas fazer a afirmação mais fraca "o que você disse vai voltar para assombrar suas jogadas de dados algum dia."

Também é interessante saber se "afeta agora" provavelmente será uma propriedade permanente de /dev/random ou é apenas um acaso da implementação atual.

Obrigado!

random
  • 1 1 respostas
  • 510 Views

1 respostas

  • Voted
  1. Best Answer
    frostschutz
    2019-11-02T04:33:04+08:002019-11-02T04:33:04+08:00

    (Supondo que a documentação em drivers/char/random.c esteja correta), qualquer coisa que você escrever é diretamente misturada no pool de entropia e a saída aleatória é um hash desse pool. Portanto, a mudança deve ser imediata.

    No entanto, ler /dev/random pode bloquear (quando a entropia está vazia) e escrever (usando poll) também pode bloquear (quando a entropia está cheia), e escrever em /dev/random pode ser muito lento em geral. Portanto, há algumas considerações de desempenho com essa ideia.

    Se você quiser que dados aleatórios dependam dos murmúrios de seus usuários, você pode pular /dev/random completamente e simplesmente rolar tudo através de sua própria função SHA. Isso lhe daria controle total sobre o estado também. Assim, você pode dar a cada usuário sua própria instância de hash para que seus números aleatórios sejam inteiramente baseados em suas próprias vozes. Não dependendo da aleatoriedade do sistema e também não dependendo do que outras pessoas dizem. O que também pode permitir que eles trapaceiem se aprenderem sua implementação de função de hash e enviarem padrões de áudio preparados. ;-)

    Mas tirando isso, toda a ideia é bastante esotérica. Os dados aleatórios são imprevisíveis, assim como os resultados de hash; a menos que você não queira que seja aleatório, não há muito sentido em fazer tudo isso apenas lendo /dev/_u_randome nunca escrever nada de volta nele.

    • 2

relate perguntas

  • RPi + Buildroot: random: crng init done (entropia insuficiente) - como configurar rng-tools

  • PRNG não propagado (no SCO OpenServer 5.0.7 MP5)

  • Meu script produz a mesma saída ao usar $ RANDOM

  • Se /dev/random é implementado como um pseudo-dispositivo, por que não é "sim"? [fechado]

  • Como posso tornar a inicialização do pool aleatório sem bloqueio mais rápida?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve