Wie gut ist SecRandomCopyBytes?
Ich bin hauptsächlich interessiert an der Umsetzung von SecRandomCopyBytes
auf iOS, wenn es unterscheidet sich von der OS-X-Umsetzung. (Ich würde davon ausgehen, dass es funktioniert, da ein mobiles Gerät mehr und mehr leicht verfügbaren Quellen von Entropie als ein desktop-computer.)
Hat jemand Informationen zu:
- Wo SecRandomCopyBytes bekommt Entropie aus?
- Was rate zu generieren gute Zufallszahlen?
- Wird es blockieren, oder sofort fehl, wenn nicht genügend Entropie zur Verfügung steht?
- Ist es FIPS 140-2-kompatibel, oder hat es in einer anderen offiziellen Zertifizierung?
Die Dokumentation nicht behandelt diese Punkte.
Habe ich nur in der Lage gewesen zu finden, hören-sagen, dass Kommentare, die es verwendet, Informationen von Radio, Kompass, Beschleunigungsmesser und andere Quellen, aber keine Zitate von Menschen, die tatsächlich repräsentieren Apple.
Du musst angemeldet sein, um einen Kommentar abzugeben.
/dev/random ist gespeist von Entropie aus dem SecurityServer. SecurityServer sammeln von Entropie aus den kernel-event-tracking (kdebug). Die Methode ist beschrieben in dem Buch "Mac OS X Internals. Ein System-Ansatz". Sie können darüber Lesen Sie online zum Beispiel bei http://flylib.com/books/en/3.126.1.73/1/
den source-code für die Entropie sammeln ist hier: http://www.opensource.apple.com/source/securityd/securityd-40600/src/entropy.cpp
In xnu-1504.9.37 (neueste version für OS X zu schreiben), die kernel-Entropie-Puffer gefüllt in
kernel_debug_internal()
, nur mit timing-Informationen. Dies ist der einzige Ort, an dem die Entropie Puffer geschrieben.syscall
Umsetzung, die tatsächlich sammelt die Entropie auf iOS: ich habe den xnu-kernel-version (1504.9.37) für die neueste OS-X, kann aber nicht finden welche version (wenn es auch open source? - aber vermutlich muss es), dass iOS verwendet?Entsprechend der iOS-Dokumentation,
SecRandomCopyBytes
ist nur ein wrapper für die/dev/random
PRNG. Auf den meisten Unix-Varianten, diese Datei ist eine Sperrung PRNG, aber nach auf dieser Seite und die Dokumentation,/dev/random
auf OSX/iOS funktioniert eigentlich wie/dev/urandom
in den meisten anderen Unix-Implementierungen dadurch, dass es nicht immer blockieren.Da Sie nicht blockieren, Sie sollten in der Lage sein, um schnell festzustellen, die rate, die es erzeugt Zufallszahlen mit einem einfachen test.
/dev/random
soll, um zu versuchen, um die Entropie von so vielen Quellen wie möglich. Also, es ist durchaus vernünftig, zu glauben, dass iOS es nutzt die radio-und Beschleunigungsmesser, die als Quelle der Entropie, aber ich finde keine Quellen für diese, und die Dokumentation nur besagt, dass es von "die zufällige jitter-Messungen der kernel".Scheint es, dass das iPhone ist derzeit in den Prozess von FIPS 140-2-validiert.
Dem iOS-SDK deutlich, dass diese Funktion verwendet die Ausgabe von
/dev/random
für das abrufen der sicheren Zufallsdaten. Als iOS ist eine portierte version von OSX selbst ist im Kern ein Free-BSD.Wenn Sie search für
/dev/random
und OSX finden Sie mehrere Beiträge, die es gab (und meiner) ein problem in Bezug auf die Entropie Sammlung in OSX:http://www.mail-archive.com/[email protected]/msg00620.html
Daher würde ich erwarten, dass
/dev/random
funktioniert nicht besser als die, die in OSX.