Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.programming > #28809

Re: Prawdziwie losowe liczby

From bartekltg <bartekltg@gmail.com>
Newsgroups pl.comp.programming
Subject Re: Prawdziwie losowe liczby
Date 2016-09-22 23:03 +0200
Organization ATMAN - ATM S.A.
Message-ID <ns1gu7$k68$1@node1.news.atman.pl> (permalink)
References <ns1fal$fdq$1@node2.news.atman.pl>

Show all headers | View raw


On 22.09.2016 22:35, Borneq wrote:
> Chodzi mi o sposób generowania przez zdarzenia związane z klawiaturą i
> myszką. W Linuxie jest zbiornik losowości, ale po pierwsze chcę użyć w
> Windows a po drugie generować na bieżąco.

Biblioteka standardowa, nagłowek <random>,
klasa random_device.

http://en.cppreference.com/w/cpp/numeric/random/random_device

Sprawdź, czy w Twojej implementacji działa metoda entropy();
Powinna informować, czy dostałeś "prawdziwie losowe" dane,
ale z implementacją różnie bywa.

> Jest zdarzenie, odczytujemy najmłodsze bity licznika instrukcji rdtsc.
> Pojawia się pierwszy problem - w Windows i Linuxie nie ma bezpośredniej
> możliwości odczytu z przerwania sprzętowego w trybie użytkownika. Trzeba
> odczytać rdtsc po jakimś czasie z obsługi biblioteki graficznej. W C++
> może to być np. OpenCV. Teraz najmłodsze bity będą zupełnie losowe, jest
> to problem matematyczny - do którego bitu jest losowo? A może losowość
> zmniejsza się stopniowo - co to znaczy? Na pewno bity zmieniające się co
> godzinę nie są losowe, bo przez jedną godzinę będą same zera a za
> godzinę same jedynki.

Jeśli odczytujesz w równych odstępach, w nawet najmłodszy bit nie
będzie losowy!

Losowość musi przyjść albo od użytkownika, albo ze sprzętowego
generatora.


> Myślę że do bębnienia w klawiaturę wystarczy
> granica niemierzalna przez człowieka 1/30 s. Choć z drugiej strony
> przerwania myszki mogą być częstsze (?) i wtedy kolejne zdarzania będą
> miały te same a nie losowe bity rzędu 1/30 s.
> Zegar ma 3 GHz, 1 30 s to 100 mln, czyli dało by radę 26 bitów z jednego
> klepnięcia z klawiaturę, lub może przyjąć 24 bity czyli 3 bajty z
> jednego zderzania np. tez mousemove myszki.

Użyj gotowca.
Random device pod linuxem gada /dev/urandom, /dev/random
lub sprzętowym https://en.wikipedia.org/wiki/RdRand

http://en.cppreference.com/w/cpp/numeric/random/random_device/random_device

VS też obiecuje "non-deterministic and cryptographically secure"
https://msdn.microsoft.com/library/bb982250.aspx

> Inna sprawa. Zapowiadane były procesory ze sprzętową generacją liczb
> losowych które mogły by generować ich wielką ilość. Jak się sprawy mają.

Dwa linki do tyłu.

Podsumowując, użyj gotowca. Podałem namiary na c++, ale jeśli
nie piszesz w COBOLU, będziesz miał do tego dostęp.

A i dobrze się zastanów, czy aby na pewno potrzebujesz "prawdziwych"
liczb losowych. Poza kryptografią nie są takie konieczne.

pzdr
bartekltg


Back to pl.comp.programming | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Prawdziwie losowe liczby Borneq <borneq@antyspam.hidden.pl> - 2016-09-22 22:35 +0200
  Re: Prawdziwie losowe liczby bartekltg <bartekltg@gmail.com> - 2016-09-22 23:03 +0200
    Re: Prawdziwie losowe liczby Borneq <borneq@antyspam.hidden.pl> - 2016-09-22 23:23 +0200
      Re: Prawdziwie losowe liczby Borneq <borneq@antyspam.hidden.pl> - 2016-09-22 23:28 +0200
        Re: Prawdziwie losowe liczby bartekltg <bartekltg@gmail.com> - 2016-09-22 23:33 +0200
      Re: Prawdziwie losowe liczby bartekltg <bartekltg@gmail.com> - 2016-09-22 23:30 +0200
        Re: Prawdziwie losowe liczby Borneq <borneq@antyspam.hidden.pl> - 2016-09-22 23:37 +0200
          Re: Prawdziwie losowe liczby bartekltg <bartekltg@gmail.com> - 2016-09-22 23:53 +0200
  Re: Prawdziwie losowe liczby grapeli23 <grapeli23@googlemail.com> - 2016-09-22 21:29 +0000
  Re: Prawdziwie losowe liczby slawek <fake@fakeemail.com> - 2016-09-22 23:31 +0200

csiph-web