Wie erzeugen ECHTER Zufallszahlen mit STM32 MCU?
Arbeite ich an einem Projekt mit STM32F103E arm-cortex-m3-MCU-keil-microvision IDE.
Ich brauche, um Zufallszahlen zu generieren, die für einige Zwecke, aber ich will nicht von pseudo-Zufallszahlen, die standard c++ - Bibliotheken generieren, so muss ich einen Weg zur Erzeugung von ECHTEN Zufallszahlen unter Verwendung von hardware-features, aber ich weiß nicht, wie ich es tun kann.
Irgendeine Idee? (Ich bin software engineer & nicht ein elektronisches Profi, also bitte beschreiben Sie es einfach :P)
Hat Ihr chip/board verfügt über einen hardware-RNG?
Was brauchen Sie, um die Zufallszahlen?
Ich brauche Zufallszahlen für die RSA-Schlüsselgenerierung. Als Jari sagte, es scheint, dass die F1-Serie hat nicht RNG, aber ich möchte wissen gibt es eine Möglichkeit zum simulieren von hardware-RNG mit anderen hardware-features (z.B. RTC)?
Ich glaube, Sie können kaufen ein TRNG-chip, können Sie kommunizieren mit den Schnittstellen des STM32.
Was brauchen Sie, um die Zufallszahlen?
Ich brauche Zufallszahlen für die RSA-Schlüsselgenerierung. Als Jari sagte, es scheint, dass die F1-Serie hat nicht RNG, aber ich möchte wissen gibt es eine Möglichkeit zum simulieren von hardware-RNG mit anderen hardware-features (z.B. RTC)?
Ich glaube, Sie können kaufen ein TRNG-chip, können Sie kommunizieren mit den Schnittstellen des STM32.
InformationsquelleAutor Ehsan Khodarahmi | 2013-02-10
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als darauf hingewiesen, dass der chip nicht über einen hardware-RNG.
Aber Sie können, Rollen Sie Ihre eigenen. Der übliche Ansatz ist die Messung der jitter zwischen UNABHÄNGIGEN Uhren. Unabhängig bedeutet, dass die beiden Uhren sind gesichert durch verschiedene christals oder RC-Oszillatoren und nicht abgeleitet von der gleichen.
Würde ich verwenden:
Eingerichtet einen Zähler auf den kHz-Bereich RC-Oszillator, um Ihnen einen interrupt mehrmals in der Sekunde. In der interrupt-handler, den Sie Lesen den aktuellen Wert des SysTick-Zähler. Ob oder nicht SysTick wird für andere Zwecke verwendet (scheduling), die unteren 5 oder so bits sind unberechenbar.
Für immer zufällige zahlen aus diesem, eine normale, pseudo-RNG. Verwenden Sie die Entropie gesammelt oben, um unvorhersehbar zu mutieren, der interne Zustand der pseudo-RNG. Für die Generierung des Schlüssels, nicht Lesen werden alle bits auf einmal, sondern erlauben, für ein paar Mutationen geschieht.
Angriffe gegen diese liegen auf der Hand: Wenn der Angreifer kann diese Messen, Steuern oder Regeln den kHz-Bereich RC-Oszillator bis zu MHz Präzision, die Zufälligkeit verschwindet. Wenn Sie sind besorgt darüber, dass die Verwendung einer smart-card oder andere Sicherheits-co-Prozessor.
InformationsquelleAutor edgar.holleis
Dies ist eine alte Frage, die ich gerade lief über, aber ich möchte zu beantworten, weil ich nicht finden, die anderen Antworten befriedigend.
"Ich brauche Zufallszahlen für die RSA-Schlüsselgenerierung."
Dies bedeutet, dass ein PRNG-routine (auch oft fälschlicherweise als RNG, ein Hauptärgernis von mir), ist INAKZEPTABEL und wird nicht die Sicherheit bieten, die gewünscht wird.
Einer externen true RNG ist akzeptabel, aber die eleganteste Antwort auf die Umstellung auf ein STM32F2xx oder STM32F4xx mikrocontroller verfügt über einen eingebauten TRUE random number generator, ist genau das gemeint, für solche Anwendungen. Für die Entwicklung nehme ich an, Sie könnte verwenden thr F1 und jeder PRNG, aber die Versuchung wäre da "it works, let 's ship it", bevor mit einem true RNG, der Lieferung eines fehlerhaften Produktes, wenn die RECHTE Komponente (sicherlich der ST F4, und ich denke, dass auch die F2-chips schon da, bevor diese Frage gestellt wurde) wieder verfügbar ist.
Diese Antwort nicht akzeptabel für nicht-technische Gründe (der chip wurde bereits angegeben, die OP hatte kein input zu den features benötigt), aber wer wählte die chip haben sollte, hob es basiert auf dem, was on-chip-Peripherien und Funktionen, die für die Antragstellung benötigt.
InformationsquelleAutor Ben Bradley
F1-Serie nicht zu haben scheinen RNG (hardware random number generator), so dass Ihre einzigen Optionen sind die Verwendung pseudo-randoms oder Fragen Sie den externen Eingang (einige betrachten z.B. die menschliche hand movement random). Oft erhalten Sie bessere pseudo-randoms mit einigen crypto-Bibliothek anstelle der standard-C++ - Bibliotheken.
InformationsquelleAutor Jari Karppanen
Gibt es eine andere Methode, die ich gefunden und getestet, funktioniert ganz gut. Es können sowohl echte zufällige 32-bit zahlen, habe ich nie überprüft, wie schnell es dauert ein paar Millisekunden pro Nummer. Hier steht wie es geht:
Wiederhole das ein paar mal, fand ich 8 mal gibt ziemlich gute Zufälligkeit. Ich überprüfte die Zufälligkeit durch Sortieren der Ausgabe-Werte in aufsteigender Reihenfolge und zeichnen Sie Sie in excel, mit guten Zufallszahlen, die dies erzeugt eine gerade Linie, schlechte Zufälligkeit oder "Verklumpung" von bestimmten zahlen ist sofort sichtbar.
Hier ist der code für STM32F03:
}
InformationsquelleAutor Schnitzgi