Potrzebuję prawdziwej usługi generatora liczb losowych [zamknięty]


10

Random.org zapewnia 200 000 darmowych bitów losowych (tylko 6250 32-bitowych liczb całkowitych!) Ze świata analogowego ( por. ) Na adres IP dziennie.

Czy ktoś wie o alternatywnej usłudze internetowej, która zapewnia więcej losowych bitów na żądanie dziennie?

(płacenie jest OK, o ile cena jest „w granicach oczekiwań” 1000 × 1024 bitów za cent cent) (płatna usługa random.org kosztuje 100 × tej ceny)


9
Większe pytanie brzmi: „dlaczego” potrzebujesz „prawdziwie” generatora liczb losowych?
Darknight

5
Prawdziwy generator losowy w czystym oprogramowaniu nie istnieje. Możesz się zbliżyć, pod koniec dnia nie będzie to naprawdę losowe.
Ramhound

10
Do czego ci to potrzebne? Jeśli jest to gra lub coś, to pseudolosowe jest zwykle wystarczająco dobre. Jeśli jest to kryptografia, nie powinieneś korzystać z usługi internetowej. Musisz wyjaśnić, do czego to służy, zanim będziemy mogli wskazać Ci realne rozwiązania.
Michael Kohne

4
Proszę bardzo! [webservice] public int GetRandomNumber() { return 4; // rfc 1149.5 }. Źródło
Homde

3
Przepraszam pana, czy chciałby pan kupić jakieś liczby całkowite? W magazynie mamy tylko najlepsze, tradycyjne liczby całkowite z wolnego wybiegu.
Rein Henrichs

Odpowiedzi:


25

Może ten.

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

Ze strony:

Zapewniamy nowy generator kwantowych liczb losowych (QRNG) na podstawie losowości kwantowej czasów przybycia fotonów. Zapewnia sprawdzalną i długoterminową jakość statystyczną, szybkość oraz przystępność cenową. Nasz projekt tworzy nową jakość w tym sensie, że oferuje znacznie wyższe prędkości transmisji niż poprzednie dostępne publicznie rozwiązania. Stało się to możliwe dzięki wykorzystaniu najnowszego przyrządu do pomiaru czasu fotonów i najnowocześniejszego przetwarzania danych w sprzęcie.

Oprócz zapewnienia wysokiej prędkości (do 150 Mb / s przez USB), algorytm przetwarzania końcowego zastosowany do surowych danych jest oparty na solidnych prognozach z teorii informacji, które gwarantują zachowanie losowości. Pozwala to na użycie dostarczonych liczb losowych w bezwarunkowo bezpiecznych schematach szyfrowania.
[...]
Zasady dostępu
Żadne z obsługiwanych danych nie są dostarczane więcej niż jeden raz, ani jednemu użytkownikowi, ani> niezależnym użytkownikom. Korzystanie z usługi jest bezpłatne, ale wymaga rejestracji.


1
(0.o)?! egad! Myślałem, że to żart, ale nie, tak naprawdę to istnieje :) (+1) świetne znalezisko
Darknight

4
-1 za odpowiedź niskiej jakości. To może być świetne rozwiązanie, ale nie podałeś żadnych szczegółów na temat linku / usługi, a ja nie dbam o przeczytanie całego linku w celu podsumowania. Gdy odpowiedź na P.SE wymaga linku, proszę przedstawić streszczenie rozwiązania, do którego się łączysz. Rozważę usunięcie mojej oceny negatywnej, jeśli zrewidujesz swoją odpowiedź.
Craige

4
@NimChimpsky - Dlaczego? Ponieważ tak piszesz wysokiej jakości odpowiedź na P.SE. ba__friend powinien opublikować krótki opis usługi dla osób czytających to pytanie. Być może szybkie wyjaśnienie / wycena, w jaki sposób usługa generuje losowe liczby.
Craige

2
@Craige Zaktualizowałem post za pomocą fragmentu strony.
Adam Lear

5
@NimChimpsky: Ponieważ zdarza się linkrot.
Jon Purdy

31

To, o co prosisz, to woda święcona i odrzucasz sugestię, aby używać zwykłej wody. Jedynym powodem, dla którego wolą wodę święconą od wody, jest religijność. Istnieją proste, losowo rozmieszczone PRNG, których nie można odróżnić od prawdziwej losowości fizycznej żadnym znanym procesem. I te systemy niedeterministyczne.

Komputer świata rzeczywistego ma kilka źródeł prawdziwej losowości fizycznej. Na przykład nowoczesny procesor x86 ma „TSC”, który mierzy liczbę cykli instrukcji (a tym samym pośrednio czas do rozdzielczości około jednej miliardowej sekundy).

Możesz przechwycić TSC, gdy nadejdzie pakiet sieciowy. Niskie bity TSC będą zależeć od dokładnego przesunięcia między oscylatorem krystalicznym, który razy interfejs sieciowy i oscylatorem kryształowym, który obsługuje procesor. Zależy to od zmian temperatury strefy mikroskopowej w dwóch kryształach kwarcu, które są uważane za naprawdę przypadkowe.

Podobnie można przechwycić TSC, gdy dane dotrą z dysku twardego. Niskie bity zależą od turbulentnego ścinania przepływu powietrza między powierzchnią dysku twardego a obudową. Uważa się to również za przypadkowe.

Dobrze znane algorytmy, takie jak jądro Linuksa (opracowane przez Theodore Ts'o w oparciu o prace M. Matsumoto i Y. Kurity) wykorzystują efekt lawinowy do konwersji kilku nieprzewidywalnych bitów na znacznie większą liczbę. Jedyne różnice między wyjściami tych algorytmów (przy założeniu, że są one odpowiednio obsadzone danymi TSC) a wynikiem rzeczywistej losowości fizycznej są religijne - żadna znana metoda nie jest w stanie rozróżnić tych wyników. Nie ma testu, który jeden przejdzie, a drugi nie.

Opracowałem generatory liczb losowych do użytku w kasynach internetowych, które uzyskały niezależną certyfikację. Te metody są stosowane w prawdziwym świecie.


6
+1 za zdrowy rozsądek, ciekawe przykłady i miłą metaforę wody święconej!
mikera


@David, Cześć, zastanawiam się nad historią „Opracowałem generatory liczb losowych do użytku w kasynie online” ..?
Pacerier,

To nie jest takie interesujące. Kasyno online zatrudniło mnie do opracowania RNG dla nich, zrobiłem to i zostało certyfikowane przez australijską firmę certyfikacyjną TST.
David Schwartz,

13

Nadal nie rozumiem, dlaczego kryptograficzne PRNG nie jest wystarczająco dobre dla twojego problemu. Definiującą właściwością krypto-PRNG jest to, że nie jest możliwe (przy rozsądnej ilości sprzętu) odróżnienie danych wyjściowych od prawdziwego RNG.

Oznacza to, że jest wystarczająco dobry dla każdego rodzaju symulacji lub aplikacji, o której mogę myśleć, oprócz generowania kluczy kryptograficznych lub inicjowania samego kryptograficznego PRNG (oczywiście, aby rozpocząć, potrzeba kilkuset bitów prawdziwej entropii).

Z drugiej strony usługi RNG nie mogą być używane do szyfrowania

  1. Nie możesz udowodnić, że tak naprawdę jest to PRNG, ponieważ nie możesz odróżnić ich wyników od PRNG
  2. Musisz zaufać operatorowi usługi
  3. Losowe dane są przesyłane do Ciebie przez niższy kanał bezpieczeństwa. Atakujący, który może złamać PRNG, może również złamać SSL.

Nie mogę więc wymyślić jednego zastosowania, w którym wolałby RNG usługi sieciowej niż dobry PRNG. Jeśli naprawdę potrzebujesz prawdziwych i bezpiecznych liczb losowych, nie widzę alternatywy dla samodzielnego budowania sprzętu.


Tak, nie mogę udowodnić, że dane wyjściowe są naprawdę losowe. ale nie jest tak trudno zaufać random.org/statistics . Wygląda na to, że bezpieczeństwo jest jednym z moich wymagań, ale nie jest. Potrzebuję losowego numeru pełnego zatrzymania. Nie jest to losowy i bezpieczny numer. (Jeśli atakujący chce podsłuchiwać, poczuj się swobodnie, nie zaszkodzi)
Pacerier

1
Nie jest trudno zaufać PRNG, dla którego udowodniono matematycznie, że odróżnienie go od prawdziwego RNG wymaga rozwiązania bardzo trudnych problemów matematycznych.
CodesInChaos

@CodeInChaos to kasyno online to bardzo trudny problem matematyczny? Nie jest, ale wymaga tego rodzaju prawdziwej przypadkowości, nie sądzisz?
Pacerier

2
Nie widzę technicznych powodów, dla których dobry PRNG od czasu do czasu otrzymywał sto bitów prawdziwej entropii, nie powinien wystarczyć nawet dla kasyna online. Mogą istnieć powody prawne , ale zakładam, że w takim przypadku musisz wygenerować swoją prawdziwą losowość lokalnie, ponieważ daje to większe szanse na udowodnienie, że używasz prawdziwych liczb losowych.
CodesInChaos

8
+1 Całkowicie się z tobą zgadzam. Jeśli tworzysz grę, która musi generować realistyczne losowe dane, lepiej jest użyć PRNG niż prawdziwie losowego generatora liczb. Po pierwsze, istnieje matematyczny dowód na to, że wytwarza on statystycznie losowe dane dopasowane do rozkładu prawdopodobieństwa. Po drugie, możesz wybrać rozkład prawdopodobieństwa. Po trzecie, możesz przetestować swoją aplikację deterministycznie. Po czwarte, możesz wybrać ziarno podczas uruchamiania, aby nigdy nie zachowywało się tak samo dwa razy. Osobiście uważam, że OP tak naprawdę nie rozumie, co oznacza przypadkowość ani dlaczego jej potrzebuje.

5

Kilka lat temu można było nazwać lavarand SGI, który generował losowe liczby, używając obecnego kształtu kropli i położenia lampy lawowej obserwowanej przez kamerę internetową.

Choć już go nie ma, możesz łatwo stworzyć własny generator z kamerą internetową i otwartym kodem źródłowym od dobrych ludzi z LavaRnd (EDYCJA: już od jakiegoś czasu wyłączony. Wayback Machine Sourceforge Project ). Okazuje się, że lampa lawowa wcale nie jest potrzebna: hałas wychwytywany przez CCD, podczas gdy kamera internetowa jest zamknięta w nieprzepuszczalnym dla światła pojemniku, jest doskonałym źródłem do generowania kryptograficznie dźwiękowych liczb losowych.

(Wiem, że nie jest to usługa, z której można teraz korzystać, ale ponieważ kiedyś była, ponieważ była tak fajna, a ponieważ można bardzo łatwo stworzyć prawie darmową, uznałem, że warto było odpowiedzieć).


ale z pewnością „losowy” hałas generowany przez kamerę internetową będzie pasował do normalnego rozkładu? Nie wiem czy chciałbym tego wyjaśnić?
Darknight

4
@Darknight: Co dystrybucja ma wspólnego z przypadkowością? Możliwe jest generowanie deterministycznych sekwencji pasujących do dowolnego rozkładu, a losowe liczby mogą pasować do dowolnego rozkładu.
David Thornley,

2
@Darknight Jak zauważa David, to, czy liczby ostatecznie pasują do normalnego rozkładu, nie wpływa na losowość. Jeśli jesteś zainteresowany tym, co jest wymagane, aby generator liczb losowych był kryptograficznie sprawny (lub kryptograficznie silny), chłopaki LavaRnd mają mnóstwo informacji i linków na swojej stronie, a także ich związek z LavaRnd.
Matthew Frederick

Poważnie, nie ma sposobu, aby łatwo go stworzyć Matthew. Jak dokładnie definiujesz łatwe?
Pacerier

2
@Pacerier Masz rację, że „łatwe” to kwestia perspektywy. Ta metoda jest łatwa, jeśli masz dostęp do swojego serwera, a znalezienie odpowiedniej kamery internetowej nie trwa długo - powiedzmy, że „kup teraz” za 10 USD w serwisie eBay. To pozostawia podłączenie aparatu; pobieranie, kompilowanie i uruchamianie bezpłatnego oprogramowania; i dodanie połączenia do usługi w kodzie. Nie trywialne, ale dość łatwe, wyjątkowo niedrogie i zapewnia nieograniczoną liczbę żądań.
Matthew Frederick

1

Otwórz połączenie TCP z dowolnym hostem / portem i policz liczbę potrzebnych nanosekund. Oto twoja losowa liczba.


Mam nadzieję, że tak nie generujesz liczb losowych.
Craige

9
Chodzi mi o to (nieco sarkastycznie), że entropia czasu potrzebnego na podróż pakietów jest warta znacznie więcej niż „losową” liczbę, której entropii ufasz serwerowi innej firmy.
R .. GitHub ZATRZYMAJ LÓD

5
@Pacerier: Nikt inteligentny nie pisze własnego krypto, chyba że jest ekspertem. Różni się to od wysłania zwykłego tekstu do usługi internetowej i odzyskania zaszyfrowanego tekstu. Podobnie prawdopodobnie nie chcesz próbować zaprojektować własnego kwantowego systemu losowości, ale otrzymywanie liczb losowych wysyłanych do Ciebie przez HTTP nie jest niezawodne.
David Thornley,

1
@Pacerier Ale wciąż nie pokazałeś, dlaczego alternatywne użycie lokalnego PRNG z okazjonalnymi iniekcjami entropii (z lokalnych źródeł entropii) nie jest możliwe.
CodesInChaos

1
@Pacerier: zaufaj mi w tym: nie potrzebujesz prawdziwych liczb losowych do symulacji ekonomicznych. Dobry pseudo- (lub quasi-, jeśli zależy ci na równomiernym rozkładzie), wystarczy generator losowy. Problemy leżą gdzie indziej (na przykład: chcesz, aby liczby były nieskorelowane w wielu wymiarach - skąd wiesz, że usługa internetowa, z której korzystasz, nawet męczy się, aby sprawdzić, jak ich liczby wypełniają 20-wymiarową przestrzeń?).
quant_dev

1

oto kolejny generator oparty na kwantach, z nie mniejszym:

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

Naukowcy z ANU generują prawdziwe liczby losowe z fizycznego źródła kwantowego. Robimy to, dzieląc wiązkę światła na dwie wiązki, a następnie mierząc moc w każdej wiązce. Ponieważ światło jest kwantowane, natężenie światła w każdej wiązce zmienia się wokół średniej. Wahania te, wynikające ostatecznie z próżni kwantowej, można przekształcić w źródło liczb losowych.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.