Dieser Artikel bietet einen Sicherheitsbericht über die Zufälligkeit der mnemonischen Generierung in der OneKey App (Software-Wallet) und umfasst alle von der OneKey App unterstützten Betriebssysteme (macOS, Windows, Android, iOS) sowie deren jeweilige Clients (Desktop & Erweiterung).
Fazit
Die OneKey App verwendet plattformspezifische, kryptografisch sichere Zufallszahl-APIs, die gemäß den Entwicklungsrichtlinien für Windows, macOS, iOS und Android-Clients sowie das Chrome-Plugin empfohlen werden. Interne Tests bestätigen die Einhaltung der NIST SP 800-22- und FIPS 140-2-Sicherheitsstandards für Zufallszahlen.
- Auf Chrome-basierten Plattformen (Windows, macOS) wird die sichere Pseudo-Zufallszahl-API
crypto.getRandomValues
, die von Chrome bereitgestellt wird, verwendet, um kryptografisch sichere Pseudo-Zufallszahlen zu generieren. - Auf React Native-basierten Android- und iOS-Plattformen werden die systemseitig bereitgestellten sicheren Zufallschnittstellen
SecureRandom
undSecRandomCopyBytes
entsprechend aufgerufen.
⚠️ Hinweis: Obwohl die OneKey App strikt den Sicherheitsentwicklungsrichtlinien folgt, kann die Sicherheit der Zufallszahlengenerierung auch durch die Implementierung des Betriebssystems/der Hardware des Benutzers beeinträchtigt werden.
Sicherheitstest
NIST SP 800-22 (Sonderveröffentlichung 800-22 des National Institute of Standards and Technology) ist ein Dokument, das vom National Institute of Standards and Technology (NIST) der Vereinigten Staaten veröffentlicht wurde und hauptsächlich eine statistische Test-Suite zur Prüfung von Pseudo-Zufallszahlengeneratoren (PRNG) umfasst. Es stellt eine Reihe statistischer Tests für die Bewertung der Zufälligkeit und Qualität von von Zufallszahlengeneratoren erzeugten Bitfolgen zur Verfügung.
- Testsoftware: NIST SP 800-22 Statistische Test-Suite
- Testumgebung: macOS 14.5
- Testparameter:
Projekt |
Parameter |
---|---|
Segmentlänge |
1024000 |
Testitems |
1 (Alle 15 Tests) |
Blockfrequenztest - Blocklänge (M) |
20480 |
Nicht überlappendes Vorlagen-Test - Blocklänge (m) |
10 |
Überlappendes Vorlagen-Test - Blocklänge (m) |
10 |
Approximate Entropy Test - Blocklänge (m) |
10 |
Serientest - Blocklänge (m) |
16 |
Lineare Komplexitätstest - Blocklänge (M) |
5000 |
Bitströme |
20 (20*1024000 bits = 20480000 bits = 20 MB) |
System: Win10 22H2; Hardware: i7-13700h
-
Desktop-Client
- Der Windows-Desktop-Client der OneKey App ist eine Electron-Anwendung, die auf der Chrome-Engine basiert. Über die Entwicklertools wird die API zur Generierung mnemonischer Entropie
crypto.getRandomValues
zur Laufzeit aufgerufen, um Zufallszahlen zu sampeln, insgesamt 20 MB. Die Tests entsprechend den definierten Parametern ergaben einen "Testbericht" (siehe Anhang unten), in dem alle Punkte bestanden wurden und die Sicherheitsanforderungen erfüllt sind. - Ergebnisse: NIST SP 800-22-windows-desktop-wini713.txt (Verfügbar im Anhang)
- Der Windows-Desktop-Client der OneKey App ist eine Electron-Anwendung, die auf der Chrome-Engine basiert. Über die Entwicklertools wird die API zur Generierung mnemonischer Entropie
-
Browser-Erweiterung
- Die Chrome-Erweiterung basiert auf der Chrome-Engine. Über die Entwicklertools wird die API zur Generierung mnemonischer Entropie
crypto.getRandomValues
zur Laufzeit aufgerufen, um Zufallszahlen zu sampeln, insgesamt 20 MB. Die Tests entsprechend den definierten Parametern ergaben einen "Testbericht" (siehe Anhang unten), in dem alle Punkte bestanden wurden und die Sicherheitsanforderungen erfüllt sind. - Ergebnisse: NIST SP 800-22-windows-ext-wini713.txt (Verfügbar im Anhang)
- Die Chrome-Erweiterung basiert auf der Chrome-Engine. Über die Entwicklertools wird die API zur Generierung mnemonischer Entropie
System: Sonoma 14.6; Hardware: MacBook Pro 2020 13-Zoll M1
-
Desktop-Client
- Der macOS-Desktop-Client der OneKey App ist eine Electron-Anwendung, die auf der Chrome-Engine basiert. Über die Entwicklertools wird die API zur Generierung mnemonischer Entropie
crypto.getRandomValues
zur Laufzeit aufgerufen, um Zufallszahlen zu sampeln, insgesamt 20 MB. Die Tests entsprechend den definierten Parametern ergaben einen "Testbericht" (siehe Anhang unten), in dem alle Punkte bestanden wurden und die Sicherheitsanforderungen erfüllt sind. - Ergebnisse: NIST SP 800-22-macOS-desktop-macm1p.txt (Verfügbar im Anhang)
- Der macOS-Desktop-Client der OneKey App ist eine Electron-Anwendung, die auf der Chrome-Engine basiert. Über die Entwicklertools wird die API zur Generierung mnemonischer Entropie
-
Browser-Erweiterung
- Die Chrome-Erweiterung basiert auf der Chrome-Engine. Über die Entwicklertools wird die API zur Generierung mnemonischer Entropie
crypto.getRandomValues
zur Laufzeit aufgerufen, um Zufallszahlen zu sampeln, insgesamt 20 MB. Die Tests entsprechend den definierten Parametern ergaben einen "Testbericht" (siehe Anhang unten), in dem alle Punkte bestanden wurden und die Sicherheitsanforderungen erfüllt sind. - Ergebnisse: NIST SP 800-22-macOS-ext-macm1p.txt (Verfügbar im Anhang)
- Die Chrome-Erweiterung basiert auf der Chrome-Engine. Über die Entwicklertools wird die API zur Generierung mnemonischer Entropie
System: hyperOS 1.0.4.0; Hardware: Xiaomi 10s Snapdragon870
-
Android-Client
- Der Android-Client der OneKey App, der eine React Native-Anwendung ist, nutzt native APIs. Auf Android wird die System-API
SecureRandom
aufgerufen, wenncrypto.getRandomValues
in der Anwendung aufgerufen wird. Mit React Remote JS Debug wird die API zur Generierung mnemonischer Entropiecrypto.getRandomValues
zur Laufzeit aufgerufen, um Zufallszahlen zu sampeln, insgesamt 20 MB. Die Tests entsprechend den definierten Parametern ergaben einen "Testbericht" (siehe Anhang unten), in dem alle Punkte bestanden wurden, die Sicherheitsanforderungen müssen erfüllt werden. - Ergebnisse: NIST SP 800-22-android-app-andsm870.txt (Verfügbar im Anhang)
- Der Android-Client der OneKey App, der eine React Native-Anwendung ist, nutzt native APIs. Auf Android wird die System-API
System: iOS 17.5; Hardware: iPhoneX A11
-
iOS-Client
- Der iOS-Client der OneKey App, der eine React Native-Anwendung ist, nutzt native APIs. Auf iOS wird die System-API
SecRandomCopyBytes
aufgerufen, wenncrypto.getRandomValues
in der Anwendung aufgerufen wird. Mit React Remote JS Debug wird die API zur Generierung mnemonischer Entropiecrypto.getRandomValues
zur Laufzeit aufgerufen, um Zufallszahlen zu sampeln, insgesamt 20 MB. Die Tests entsprechend den definierten Parametern ergaben einen "Testbericht" (siehe Anhang unten), in dem ein Test in der langen Laufzeit von 1024 Runden fehlschlug, aber alle Punkte insgesamt bestanden wurden, die Sicherheitsanforderungen sind erfüllt.
- Der iOS-Client der OneKey App, der eine React Native-Anwendung ist, nutzt native APIs. Auf iOS wird die System-API
FIPS 140-2 (Federal Information Processing Standard Publication 140-2) ist ein Computersicherheitsstandard, der von NIST herausgegeben wurde. Er beschreibt die Sicherheitsanforderungen für kryptografische Module und konzentriert sich speziell auf RNG-Typen, Sicherheitsstärke, Saatgut, Entropie, Periodizität, periodische Tests und kontinuierliche Tests.
- Testsoftware: rng-tools
- Testparameter: Keine
- Testumgebung: ubuntu 24.04 arm64
-
Kompilierungsprozess:
- Installieren Sie gcc und automake ordnungsgemäß.
- Führen Sie
./autogen.sh
- Führen Sie
./configure
aus (wenn Fehler auftreten, konfigurieren Sie Abhängigkeiten entsprechend den Fehlermeldungen). - Führen Sie
make
aus, um die Dateien rngd und rngtest zu kompilieren. - Führen Sie
./rngtest < testfile.bin
aus.
⚠️ Hinweis: Testdateien müssen im binären Format als Eingaben vorliegen, nicht im ASCII-Format.
System: Win10 22H2; Hardware: i7-13700h
-
Desktop-Client
- Der Windows-Desktop-Client der OneKey App ist eine Electron-Anwendung, die auf der Chrome-Engine basiert. Über die Entwicklertools wird die API zur Generierung mnemonischer Entropie
crypto.getRandomValues
zur Laufzeit aufgerufen, um Zufallszahlen zu sampeln, insgesamt 20 MB. Die Textdatei wurde in eine Binärdatei konvertiert und der "Testbericht" unten zeigt, dass alle Punkte bestanden wurden und die Sicherheitsanforderungen erfüllt sind.
- Der Windows-Desktop-Client der OneKey App ist eine Electron-Anwendung, die auf der Chrome-Engine basiert. Über die Entwicklertools wird die API zur Generierung mnemonischer Entropie
-
Browsererweiterung
- Die Chrome-Erweiterung basiert auf der Chrome-Engine. Über die Entwicklertools wird die API zur Generierung mnemonischer Entropie
crypto.getRandomValues
zur Laufzeit aufgerufen, um Zufallszahlen zu sampeln, insgesamt 20 MB. Die Textdatei wurde in eine Binärdatei konvertiert und der "Testbericht" unten zeigt, dass 1024 Runden getestet wurden, wobei eine Runde von Runs fehlschlug, aber alle Punkte insgesamt bestanden wurden und die Sicherheitsanforderungen erfüllt sind.
- Die Chrome-Erweiterung basiert auf der Chrome-Engine. Über die Entwicklertools wird die API zur Generierung mnemonischer Entropie
System: Sonoma 14.6; Hardware: MacBook Pro 2020 13-Zoll M1
-
Desktop-Client
- Der macOS-Desktop-Client der OneKey App ist eine Electron-Anwendung, die auf der Chrome-Engine basiert. Über die Entwicklertools wird die API zur Generierung mnemonischer Entropie
crypto.getRandomValues
zur Laufzeit aufgerufen, um Zufallszahlen zu sampeln, insgesamt 20 MB. Die Textdatei wurde in eine Binärdatei konvertiert und der "Testbericht" unten zeigt, dass alle Punkte bestanden wurden und die Sicherheitsanforderungen erfüllt sind.
- Der macOS-Desktop-Client der OneKey App ist eine Electron-Anwendung, die auf der Chrome-Engine basiert. Über die Entwicklertools wird die API zur Generierung mnemonischer Entropie
-
Browsererweiterung
- Die Chrome-Erweiterung basiert auf der Chrome-Engine. Über die Entwicklertools wird die API zur Generierung mnemonischer Entropie
crypto.getRandomValues
zur Laufzeit aufgerufen, um Zufallszahlen zu sampeln, insgesamt 20 MB. Die Textdatei wurde in eine Binärdatei konvertiert und der "Testbericht" unten zeigt, dass alle Punkte bestanden wurden und die Sicherheitsanforderungen erfüllt sind.
- Die Chrome-Erweiterung basiert auf der Chrome-Engine. Über die Entwicklertools wird die API zur Generierung mnemonischer Entropie
System: hyperOS 1.0.4.0; Hardware: Xiaomi 10s Snapdragon870
-
Android-Client
- Der Android-Client der OneKey App, der eine React Native-Anwendung ist, nutzt native APIs. Auf Android wird die System-API
SecureRandom
aufgerufen, wenncrypto.getRandomValues
in der Anwendung aufgerufen wird. Mit React Remote JS Debug wird die API zur Generierung mnemonischer Entropiecrypto.getRandomValues
zur Laufzeit aufgerufen, um Zufallszahlen zu sampeln, insgesamt 20 MB. Die Textdatei wurde in eine Binärdatei konvertiert und der "Testbericht" unten zeigt, dass drei Runden von 1024 alle Testitems nicht bestanden haben, aber insgesamt alle Punkte bestanden wurden, die Sicherheitsanforderungen sind erfüllt.
⚠️ Hinweis: Der Android-Client hatte in drei Test-Runden von insgesamt 1024, in denen alle Testitems nicht bestanden wurden. Dieses Problem könnte ein Fehler im rng-test-Tool sein und beeinträchtigt nicht die Gesamtschlussfolgerung des Tests.
- Der Android-Client der OneKey App, der eine React Native-Anwendung ist, nutzt native APIs. Auf Android wird die System-API
System: iOS 17.5; Hardware: iPhoneX A11
-
iOS-Client
- Der iOS-Client der OneKey App, der eine React Native-Anwendung ist, nutzt native APIs. Auf iOS wird die System-API
SecRandomCopyBytes
aufgerufen, wenncrypto.getRandomValues
in der Anwendung aufgerufen wird. Mit React Remote JS Debug wird die API zur Generierung mnemonischer Entropiecrypto.getRandomValues
zur Laufzeit aufgerufen, um Zufallszahlen zu sampeln, insgesamt 20 MB. Die Textdatei wurde in eine Binärdatei konvertiert und der "Testbericht" unten zeigt, dass in einer langen Laufzeit von 1024 Runden ein Test fehlgeschlagen ist, aber alle Punkte insgesamt bestanden wurden, die Sicherheitsanforderungen sind erfüllt.
- Der iOS-Client der OneKey App, der eine React Native-Anwendung ist, nutzt native APIs. Auf iOS wird die System-API