Preciso de um verdadeiro serviço da Web de gerador de números aleatórios [fechado]

10

O Random.org fornece 200k bits aleatórios gratuitos (apenas 6250 números inteiros de 32 bits!) Do mundo analógico ( cf. ) por IP por dia.

Alguém conhece um serviço da Web alternativo que fornece mais bits aleatórios sob demanda por dia?

(pagar é bom, desde que o preço esteja "dentro das expectativas" de 1000 × 1024bits por usd cent) (o serviço pago da random.org cobra 100 × esse preço)

Pacerier
fonte
9
A questão maior é "por que" você precisa de um gerador de números aleatórios "verdadeiramente"?
Darknight
5
Um verdadeiro gerador aleatório em software puro não existe. Você pode chegar perto, no final do dia, não será verdadeiramente aleatório.
Ramhound 17/05
10
Para que você precisa disto? Se é um jogo ou algo assim, o pseudo-aleatório normalmente é bom o suficiente. Se for criptografia, você não deve usar um serviço da web. Você precisa explicar para que serve antes que possamos apontar soluções viáveis.
Michael Kohne 17/05
4
Aqui está você! [webservice] public int GetRandomNumber() { return 4; // rfc 1149.5 }. Crédito: xkcd.com/221
Homde
3
Com licença, senhor, você gostaria de comprar alguns números inteiros? Temos em estoque apenas os melhores números inteiros artesanais de alcance livre.
Rein Henrichs

Respostas:

25

Talvez este.

http://qrng.physik.hu-berlin.de/

Do site:

Fornecemos um novo gerador de números aleatórios quânticos (QRNG) com base na aleatoriedade quântica dos tempos de chegada de fótons. Ele promete qualidade estatística comprovável e de longo prazo, velocidade e acessibilidade. Nosso design cria uma nova qualidade no sentido de oferecer taxas de bits substancialmente mais altas do que as soluções anteriores disponíveis ao público. Isso se tornou possível, explorando a mais recente instrumentação de temporização de fótons e o processamento de dados de última geração em hardware.

Além de fornecer alta velocidade (até 150 Mbits / s via USB), o algoritmo de pós-processamento aplicado aos dados brutos é baseado em previsões sólidas da teoria da informação que garantem a conservação da aleatoriedade. Isso permite o uso dos números aleatórios entregues em esquemas de criptografia incondicionalmente seguros. Políticas de acesso
[...] Nenhum dos dados exibidos é entregue mais de uma vez, nem para um único usuário nem entre usuários independentes. O uso do serviço é gratuito, mas requer registro.

ba__friend
fonte
11
(0.o) ?! egad! Eu pensei que era uma piada, mas não existe realmente :) (+1) ótimo achado #
Darknight
4
-1 para resposta de baixa qualidade. Isso pode muito bem ser uma ótima solução, mas você não forneceu detalhes sobre o link / serviço e não me preocupo em ler o link inteiro para obter um resumo. Quando uma resposta no P.SE exigir um link, forneça um resumo da solução à qual você está vinculando. Considerarei remover meu voto negativo se você revisar sua resposta.
Craige 17/05
4
@NimChimpsky - Por quê? Porque é assim que você escreve uma resposta de qualidade no P.SE. ba__friend deveria ter postado uma breve descrição do serviço para quem lê esta pergunta. Talvez uma rápida explicação / citação de como o serviço gera seus números aleatórios.
Craige 17/05
2
@Craige Atualizei a postagem com um trecho do site.
Adam Lear
5
@NimChimpsky: Porque o linkrot acontece.
Jon Purdy
31

O que você está pedindo é água benta e está rejeitando a sugestão de usar água comum. A única razão para preferir a água benta sobre a água é religiosa. Existem PRNGs simples e semeados aleatoriamente que não podem ser distinguidos da aleatoriedade física verdadeira por qualquer processo conhecido. E esses sistemas são não determinísticos.

Um computador do mundo real tem várias fontes de verdadeira aleatoriedade física. Por exemplo, uma CPU x86 moderna tem um 'TSC' que mede a contagem do ciclo de instruções (e, portanto, indiretamente, o tempo para uma resolução de um bilionésimo de segundo ou mais).

Você pode capturar o TSC quando um pacote de rede chegar. Os bits baixos do TSC dependerão do deslocamento preciso entre o oscilador de cristal que cronometra a interface de rede e o oscilador de cristal que executa a CPU. Isso depende das variações de temperatura da zona microscópica nos dois cristais de quartzo que se acredita serem verdadeiramente aleatórios.

Da mesma forma, você pode capturar o TSC quando os dados chegarem do disco rígido. Os bits baixos dependem de um corte turbulento do fluxo de ar entre a superfície do disco rígido e a caixa. Também se acredita que isso seja verdadeiramente aleatório.

Algoritmos conhecidos, como o que o kernel Linux usa (desenvolvido por Theodore Ts'o com base no trabalho de M. Matsumoto e Y. Kurita) usam o efeito avalanche para converter alguns bits imprevisíveis em um número muito maior. As únicas diferenças entre as saídas desses algoritmos (supondo que elas sejam adequadamente propagadas pelos dados do TSC) e a saída da verdadeira aleatoriedade física são religiosas - nenhum método conhecido pode distinguir essas saídas. Não há teste de que um passará e o outro falhará.

Eu desenvolvi geradores de números aleatórios para uso em cassinos online que obtiveram certificação independente. Esses métodos são os usados ​​no mundo real.

David Schwartz
fonte
6
+1 para o senso comum, os exemplos interessantes e a bela metáfora da água benta!
Mikera
@ David, Oi, mente elaborando a história "Eu desenvolvi geradores de números aleatórios para uso em cassinos online" ..?
Pacerier
Não é tão interessante. Um cassino online me contratou para desenvolver um RNG para eles, eu fiz, e foi certificado pela TST, uma empresa de certificação australiana.
David Schwartz
13

Ainda não entendo por que um PRNG criptográfico não é bom o suficiente para o seu problema. Uma propriedade definidora de um crypto-PRNG é que não é possível (com quantidades razoáveis ​​de hardware) distinguir sua saída de um verdadeiro RNG.

Isso significa que é bom o suficiente para qualquer tipo de simulação ou aplicação em que eu possa pensar, além de chaves criptográficas de geração ou inicializar o PRNG de criptografia propriamente dito (ele obviamente precisa de algumas centenas de bits de entropia verdadeira para começar).

Por outro lado, os RNGs de serviço da web também não podem ser usados ​​para criptografia, pois

  1. Você não pode provar que eles são realmente um PRNG verdadeiro, pois não é possível distinguir a saída deles de um PRNG
  2. Você precisa confiar no operador do serviço
  3. Os dados aleatórios são transmitidos a você pelo canal de segurança mais baixo. Um invasor que pode quebrar um PRNG também pode quebrar o SSL.

Portanto, não consigo pensar em um único uso em que alguém preferiria um RNG de serviço da web a um bom PRNG. Se você realmente precisa de números aleatórios reais e seguros, não vejo alternativa para a construção de hardware.

CodesInChaos
fonte
Sim, não posso provar que a saída seja verdadeiramente aleatória. mas não é tão difícil confiar nisto random.org/statistics . Você parece assumir que a segurança é um dos meus requisitos, mas não é. Eu preciso de um número aleatório completo. Não é um número aleatório e seguro. (Se um atacante quer bisbilhotar à vontade, não faria mal)
Pacerier
11
Não é difícil confiar em um PRNG para o qual foi provado matematicamente que distingui-lo de um verdadeiro RNG requer a solução de problemas matemáticos muito difíceis.
CodesInChaos 17/05
@CodeInChaos é um cassino on-line, um problema matemático muito difícil? Não é, mas requer esse tipo de verdadeira aleatoriedade, você não acha?
Pacerier 17/05
2
Não vejo razões técnicas pelas quais um bom PRNG ocasionalmente receba cem bits de verdadeira entropia não seja suficiente para sequer um cassino online. Pode haver razões legais , mas presumo que, nesse caso, você precise gerar sua verdadeira aleatoriedade localmente, pois isso oferece melhores chances de provar que você está usando números aleatórios verdadeiros.
CodesInChaos
8
+1 Eu concordo totalmente com você. Se você está criando um jogo que precisa gerar dados aleatórios realistas, é melhor ter um PRNG do que um gerador de números verdadeiramente aleatórios. Em primeiro lugar, há uma prova matemática de que ele produz dados estatisticamente aleatórios ajustados a uma distribuição de probabilidade. Em segundo lugar, você pode escolher essa distribuição de probabilidade. Em terceiro lugar, você pode testar seu aplicativo deterministicamente. Em quarto lugar, você pode escolher a semente na inicialização para que nunca se comporte da mesma maneira duas vezes. Pessoalmente, acho que o OP realmente não entende o que significa aleatoriedade, ou por que ele precisa disso.
5

Há vários anos, você poderia chamar a lavagemand da SGI, que gerava números aleatórios usando a forma atual de blob e a posição de uma lâmpada de lava sendo observada por uma webcam.

Embora tenha acabado agora, você pode criar facilmente seu próprio gerador com uma webcam e o código-fonte aberto do pessoal do LavaRnd (EDIT: desativado já há algum tempo. Projeto Wayback Machine Sourceforge ). Acontece que você não precisa da lâmpada de lava: o ruído captado pelo CCD enquanto a webcam está selada em um recipiente à prova de luz é uma ótima fonte para gerar números aleatórios com criptografia.

(Eu sei que este não é um serviço que você pode usar agora, mas porque costumava ser, porque era muito legal e porque você pode criar um serviço quase gratuito com muita facilidade, achei que merecia ser uma resposta.)

Matthew Frederick
fonte
mas certamente com o tempo o ruído "aleatório" gerado pela webcam caberia em uma distribuição normal? Eu não sei, gostaria que fosse esclarecido?
Darknight 17/05
4
@ Darknight: O que a distribuição tem a ver com aleatoriedade? É possível gerar sequências determinísticas para corresponder a qualquer distribuição, e é possível que números aleatórios se ajustem a qualquer distribuição.
David Thornley 17/05
2
@Darknight Como David observa, se os números se ajustam ou não a uma distribuição normal não afeta a aleatoriedade. Se você está interessado no que é necessário para tornar um gerador de números aleatórios criptograficamente sólido (ou criptografado), os caras do LavaRnd têm uma tonelada de informações e links "stat nerd" em seu site, além de como eles se relacionam com o LavaRnd.
Matthew Frederick
Sério, não há como criar um facilmente, Matthew. Como exatamente você define fácil?
Pacerier 17/05
2
@ Pacerier Você está certo de que "fácil" é uma questão de perspectiva. Esse método é fácil se você tiver acesso ao servidor e encontrar uma webcam adequada não demorou muito - digamos, um "compre agora" no valor de US $ 10 no ebay. Isso deixa de conectar a câmera; baixar, compilar e executar o software livre; e adicionando uma chamada ao serviço no seu código. Não é trivial, mas muito fácil, extremamente barato e fornece um número ilimitado de solicitações.
Matthew Frederick
1

Abra uma conexão TCP com qualquer host / porta e conte o número de nanossegundos necessários. Esse é o seu número aleatório.

R .. GitHub PARE DE AJUDAR O GELO
fonte
Espero que não seja assim que você está gerando números aleatórios.
Craige 17/05
9
O ponto da minha resposta (levemente sarcástica) é que a entropia no tempo que leva os pacotes para viajar vale muito mais do que um número "aleatório" cuja entropia você confia a um servidor de terceiros.
R .. GitHub Pare de ajudar o gelo
5
@Pacerier: ninguém inteligente escreve sua própria criptografia, a menos que seja um especialista. Isso é diferente de enviar seu texto sem formatação para um serviço da Web e recuperar o texto cifrado. Da mesma forma, você provavelmente não quer tentar criar seu próprio sistema de aleatoriedade quântica, mas obter números aleatórios enviados a você através de HTTP não é confiável.
David Thornley
11
@Pacerier Mas você ainda não demonstrou por que a alternativa de usar um PRNG local com injeção ocasional de entropia (de fontes locais de entropia) não é possível.
CodesInChaos
11
@ Pacerier: confie em mim: você não precisa de números aleatórios genuínos para simulações de economia. Um bom gerador aleatório de pseudo- (ou quase-, se você se importa com a distribuição par) será suficiente. Os problemas estão em outro lugar (por exemplo: você deseja que os números não sejam correlacionados em várias dimensões - como você sabe que o serviço da Web que você usa ainda incomoda para verificar como os números deles preenchem um espaço de 20 dimensões?).
Quant_dev 18/05/11
1

aqui está outro gerador baseado em quantum, com uma API de descanso não menos:

http://photonics.anu.edu.au/qoptics/Research/qrng.php

Pesquisadores da ANU estão gerando números aleatórios verdadeiros a partir de uma fonte quântica física. Fazemos isso dividindo um feixe de luz em dois feixes e medindo a potência em cada feixe. Como a luz é quantizada, a intensidade da luz em cada feixe flutua sobre a média. Essas flutuações, devido em última análise ao vácuo quântico, podem ser convertidas em uma fonte de números aleatórios.

NimChimpsky
fonte