Hi, eignet sich ein FSK Chip wie z.B. der nRF24L01 als guter Zufallsgenerator für ein 32 Byte Geheimnis (shared secret für X25519)? Mein µC hat leider keinen TRNG an Board. Oder sollte ich lieber das LSB des 12Bit ADC vom µC als Zufallsgenerator verwenden?
Du möchtest das Rauschen empfangen und auswerten? Lädt das nicht geradezu dazu ein, über das Aussenden präparierter Daten den RNG zu beeinflussen und den Schlüssel praktisch vorher zu bestimmen?
Mike E. schrieb: > Hi, > eignet sich ein FSK Chip wie z.B. der nRF24L01 als guter > Zufallsgenerator für ein 32 Byte Geheimnis (shared secret für X25519)? Einige TRNG nehmen das LSB von Funkchips, z.B. OneRNG. Der verwendet allerdings nicht den nRF24L01, sondern CC2531. Ich weiß nicht wie gut der nRF24L01 ist was den Empfang von Rauschen angeht. > Oder sollte ich lieber das LSB des 12Bit ADC vom µC als Zufallsgenerator > verwenden? Das ist zu leicht beeinflussbar. Die einfachste und billigste Variante die ich kenne um guten Zufall zu bekommen, ist die Schaltgeschwindigkeit eines LM393-Komparator zu nehmen, bei dem beide Eingänge auf dem gleichen Spannungsniveau liegen. Der Mechanismus wird hier gezeigt und erklärt: http://www.jtxp.org/tech/xr232usb.htm#hardware
Vielleicht ist der Unterschied zwischen Pseudozufall und Zufall auch klein genug...
Ich habe mal in einer Anwendung mit ATmega644 einen CSPRNG gebaut, der kontinuierlich den Vorgängerwert durch AES oder Keccak laufen gelassen hat. Dieser Wert selbst wurde gelegentlich (d.h. mit viel langsamerer Rate) mit den Werten eines TRNG gexort. Der TRNG hatte mehrere Quellen: * Rauschen der ADC gain stage: ADC pos. und neg. Kanal auf den selben Eingang (-> Ein Angreifer kann den Pegel von außen nicht kontrollieren, Differenz ist ja immer 0), max gain einstellen, max. sampling rate. Man erhält also den temperatur- und fertigungsabhängigen internen Offsetfehler der Gain Stage. Davon das unterste Bit verwendet. * Jitter des Watchdog timers: WdT einschalten und zusätzlich normalen Timer laufen lassen. Wenn WDT fertig, dann den Timerwert auslesen und verwenden. Der WDT läuft aber sehr langsam und Temperaturänderungen sind ebenfalls langsam, bringt also nur sehr begrenzt Entropie ein.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.