Sicherheitstest der Zufallszahlengenerierung in der OneKey App

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 und SecRandomCopyBytes 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 FIPS 140-2

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.

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)

 

Windows

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)
  • 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)
macOS

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)
  • 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)
Android

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, wenn crypto.getRandomValues in der Anwendung aufgerufen wird. Mit React Remote JS Debug 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, die Sicherheitsanforderungen müssen erfüllt werden.
    • Ergebnisse: NIST SP 800-22-android-app-andsm870.txt (Verfügbar im Anhang)
iOS

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, wenn crypto.getRandomValues in der Anwendung aufgerufen wird. Mit React Remote JS Debug 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 ein Test in der langen Laufzeit von 1024 Runden fehlschlug, aber alle Punkte insgesamt bestanden wurden, die Sicherheitsanforderungen sind erfüllt.app-v5-randomness-fips-140-2-ios.png

Ergebnisse Anhänge

War dieser Beitrag hilfreich?
1 von 1 fanden dies hilfreich