Náhodné číslo s HW podporou.

Uživatelský avatar
fulda
Příspěvky: 477
Registrován: 04 led 2016, 17:18

Re: Náhodné číslo s HW podporou.

Příspěvek od fulda » 30 pro 2017, 19:39

pgerla píše:
30 pro 2017, 16:49
Když všechno selže, přečti si návod.
https://arduino.cz/uzitecne-funkce-3/
A jako bonus uštříš nejen místo, ale i za šumový polovodič.
:?: :?: Nevím na kterou část se mám zaměřit. Já jsem si právě vybral tuhle:
https://arduino.cz/uzitecne-funkce-3/ píše:Ke správné funkci generátoru je ještě potřeba použít funkci randomSeed(). Ta slouží k nastavení výchozí hodnoty pro generátor. Má pouze jeden číselný parametr. Jako hodnota parametru se používá funkce analogRead() u pinu ke kterému není nic připojeno. Dochází kolem něj totiž k zachytávání elektromagnetického šumu, který může sloužit jako náhodná vstupní hodnota.
To celkem odpovídá tomu, co chci udělat, jen oni spoléhají na to, že mají vyvedenou "anténu" na pinovou lištu, to já ale nemám, protože nepoužívám modul arduina, ale pouřívám modul, který má schéma odvozené od arduina. Tedy nepoužité vývody ani po plošňáku netahám a tak bude šum malý. Proto se snažím jej nějak zvětšit a znáhodnět.
Za pravopisné chyby v této zprávě může moje učitelka češtiny.

gilhad
Příspěvky: 125
Registrován: 29 kvě 2015, 00:36

Re: Náhodné číslo s HW podporou.

Příspěvek od gilhad » 30 pro 2017, 22:35

pgerla píše:
30 pro 2017, 16:49
Když všechno selže, přečti si návod.

https://arduino.cz/uzitecne-funkce-3/
Jen bacha na to, ze neni vsechno tak krasne, jak se v navodech pise - napriklad map() vraci obcas dost ujete hodnoty, viz

http://forum.arduino.cc/index.php?topic=280819.0

val = map(val, 0, 3, 0, 1);

In this example 0,1,2 and 3 is mapped to 0 and 1. Mapped correctly it should be:

0 maps to 0
1 maps to 0
2 maps to 1
3 maps to 1

Using the equation in the the function as it is now, it is mapped as such:


0 maps to 0
1 maps to 0
2 maps to 0
3 maps to 1
Problem i reseni zname vice nez 3 roky, ale v aktualni verzi staze z githubu minuly tyden to furt bylo jeste blbe

(Jako ano - mapuje to vstupni rozsah nejak na vystupni, ale ne, rozhodne ne rovnomerne, pritom oprava je v te formuli na dvou mistech pricist jednicku - ale co, pro Arduino dobry ....)

drsnick
Příspěvky: 1
Registrován: 07 led 2018, 20:54

Re: Náhodné číslo s HW podporou.

Příspěvek od drsnick » 08 led 2018, 00:26

Zdravim v novem roce.

Ono asi zalezi jak moc kvalitni nahoda ma byt, pokud by slo o nejakou "vaznejsi" kryptografii, tak se to musi nejak jeste zamichat. Pro "nevazne" pouziti, pak treba staci seed odpichnout od doby podrzeni tlacitka pri startu a pak pouzit tu knihovni funkci. Trpi to asi nejakou statistickou nerovnomernosti, takze kolo stesti bych s tim asi nestavel, ale treba nejake vstupy pro nahodne testovani apod. by s tim delat asi sly.

Pro zajimavost - tady je crypto class projekt sice pro STM32, ale asi by sel priohnout:


https://www.gniibe.org/memo/development ... /neug.html


Zdrojem entropie je soucin sumu na napajeni a Vref a teplomeru. Vysledek jeste
pro jistotu rozemelou SHA256.

Zdravi Drsnick

DavidO
Příspěvky: 400
Registrován: 01 kvě 2013, 21:27

Re: Náhodné číslo s HW podporou.

Příspěvek od DavidO » 10 led 2018, 09:02

Na Hackaday vyšel článek Entropy and The Arduino: When Clock Jitter is Useful o generování pseodonáhodných čísel na Arduinu a o inicializaci generátoru.

analogread-entropy_s.jpg
The not-very-random result of a thousand analogRead() calls
analogread-entropy_s.jpg (7.03 KiB) Zobrazeno 55 x
library-entropy_s.jpg
The significantly more random result of a thousand Arduino Entropy Library calls
library-entropy_s.jpg (11.46 KiB) Zobrazeno 55 x

Uživatelský avatar
fulda
Příspěvky: 477
Registrován: 04 led 2016, 17:18

Re: Náhodné číslo s HW podporou.

Příspěvek od fulda » 10 led 2018, 10:09

Jo, to je dobré, zajímavé na tom je, že to používá ten časovač a nikoli šum.
Narazil jsem na takový starší článek, kde jsem to používal - a dokonce v komentářích na konci je odkaz na stejný Hackaday.
Já jsem vlastně zavrhl to použití WDT čistě proto, že v mém původním kódu se vrací přes reset a to se mi nehodilo s ohledem na boot loader. Ale v této knihovně si ho vrací přes int a to je o dost lepší.
Za pravopisné chyby v této zprávě může moje učitelka češtiny.

Uživatelský avatar
fulda
Příspěvky: 477
Registrován: 04 led 2016, 17:18

Re: Náhodné číslo s HW podporou.

Příspěvek od fulda » 10 led 2018, 10:15

Tak TOHLE je masakr - hardwarový generátor.
Za pravopisné chyby v této zprávě může moje učitelka češtiny.

pgerla
Příspěvky: 304
Registrován: 11 dub 2013, 00:17

Re: Náhodné číslo s HW podporou.

Příspěvek od pgerla » 10 led 2018, 19:34

přehlédl jsem odpověď k čemu je potřeba náhodné číslo na úrovní bílého šumu?

Pokud to má sloužit k realistickému praskání dřeva v kotli parní lokomotivy ... pak je to debata o ...

Pokud k vyplňování tiketu sportky, tak zkuste raději vsázet na sport u Fortuny.

Uživatelský avatar
fulda
Příspěvky: 477
Registrován: 04 led 2016, 17:18

Re: Náhodné číslo s HW podporou.

Příspěvek od fulda » 10 led 2018, 20:02

Hledám jen dobrý random seed.
A potřebuji ho například proto, aby všechny zářivky v tovární hale po zapnutí neblikali stejně.
Za pravopisné chyby v této zprávě může moje učitelka češtiny.

pgerla
Příspěvky: 304
Registrován: 11 dub 2013, 00:17

Re: Náhodné číslo s HW podporou.

Příspěvek od pgerla » 10 led 2018, 20:56

příklad zářivky byl na videu, akorát nevidím kde je problém udělat kopii. Všechny budou blikat stejně, pokud budou všechny na jednom drátu ;)

DavidO
Příspěvky: 400
Registrován: 01 kvě 2013, 21:27

Re: Náhodné číslo s HW podporou.

Příspěvek od DavidO » 10 led 2018, 22:31

No já nevim, třeba tomu špatně rozumím, ale nechce Fulda, aby blikaly různě?

Jinak generátor náhodných čísel (nebo alespoň kvalitní a zároveň kvalitně inicializovaný generátor pseudonáhodných čísel) je užitečný v kryptografii. Tam je jednou ze základních myšlenek použití tajného a neodhadnutelného čísla, to se často získává generátorem, který by měl být náhodný, ale bohužel to je problém, protože zcela náhodný nebývá téměř nikdy (protože to je těžké zařídit). Reálně se jako kompromis používají generátory pseudonáhodných sekvencí, což vyžaduje inicializaci "co nejvíc náhodnou", aby ta sekvence nebyla snadno odhadnutelná nebo dokonce vždy stejná.

<vtip>
int nahodne_cislo(void)
{ return 5; // číslo 5 bylo zvoleno zcela náhodně
}
</vtip>

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 3 hosti