Cet article présente un rapport de test de sécurité sur la génération aléatoire de mnémoniques dans l'application OneKey (portefeuille logiciel), couvrant tous les systèmes d'exploitation pris en charge par l'application OneKey (macOS, Windows, Android, iOS) et leurs clients respectifs (Desktop & Extension).
Conclusion
L'application OneKey utilise des API de génération de nombres aléatoires cryptographiquement fortes spécifiques à la plateforme, recommandées par les directives de développement pour les clients Windows, macOS, iOS et Android, ainsi que pour l'extension Chrome. Les tests internes confirment la conformité aux normes de sécurité de génération de nombres aléatoires NIST SP 800-22 et FIPS 140-2.
Sur les plateformes basées sur Chrome (Windows, macOS), l'API de génération de nombres pseudo-aléatoires sécurisée
crypto.getRandomValuesfournie par Chrome est utilisée pour générer des nombres pseudo-aléatoires cryptographiquement forts.Sur les plateformes Android et iOS basées sur React Native, les interfaces aléatoires sécurisées fournies par le système, respectivement
SecureRandometSecRandomCopyBytes, sont appelées.
⚠️ Remarque : Bien que l'application OneKey adhère strictement aux directives de développement sécurisé, la sécurité de la génération de nombres aléatoires peut également être affectée par l'implémentation du système d'exploitation/matériel de l'appareil de l'utilisateur.
Tests de sécurité
NIST SP 800-22 FIPS 140-2
NIST SP 800-22 (National Institute of Standards and Technology Special Publication 800-22) est un document publié par le National Institute of Standards and Technology (NIST) des États-Unis, qui comprend principalement une suite de tests statistiques pour tester les générateurs de nombres pseudo-aléatoires (PRNG). Il fournit un ensemble de tests statistiques pour évaluer le caractère aléatoire et la qualité des séquences de bits générées par les générateurs de nombres aléatoires.
Logiciel de test : NIST SP 800-22 Statistical Test Suite
Environnement de test : macOS 14.5
Paramètres de test :
Projet
|
Paramètres
|
Longueur du segment
|
1024000
|
Éléments de test
|
1 (les 15 tests)
|
Test de fréquence de blocs - longueur de bloc (M)
|
20480
|
Test de modèles non superposés - longueur de bloc (m)
|
10
|
Test de modèles superposés - longueur de bloc (m)
|
10
|
Test d'entropie approximative - longueur de bloc (m)
|
10
|
Test de série - longueur de bloc (m)
|
16
|
Test de complexité linéaire - longueur de bloc (M)
|
5000
|
Flux de bits
|
20 (20*1024000 bits = 20480000 bits = 20 Mo)
|
Windows
Système : Win10 22H2 ; Matériel : i7-13700h
Client de bureau
Le client de bureau Windows de l'application OneKey est une application Electron qui repose sur le moteur Chrome. En utilisant les outils de développement, l'API de génération d'entropie mnémonique
crypto.getRandomValuesest appelée à l'exécution pour échantillonner des nombres aléatoires, pour un total de 20 Mo. Les tests selon les paramètres définis ont produit un « Rapport de test » (voir pièce jointe ci-dessous), où tous les éléments ont passé, répondant aux exigences de sécurité.Résultats : NIST SP 800-22-windows-desktop-wini713.txt (Disponible dans la pièce jointe)
Extension du navigateur
L'extension Chrome repose sur le moteur Chrome. En utilisant les outils de développement, l'API de génération d'entropie mnémonique
crypto.getRandomValuesest appelée à l'exécution pour échantillonner des nombres aléatoires, pour un total de 20 Mo. Les tests selon les paramètres définis ont produit un « Rapport de test » (voir pièce jointe ci-dessous), où tous les éléments ont passé, répondant aux exigences de sécurité.Résultats : NIST SP 800-22-windows-ext-wini713.txt ( Disponible dans la pièce jointe)
macOS
Système : Sonoma 14.6 ; Matériel : MacBook Pro 2020 13 pouces M1
Client de bureau
Le client de bureau macOS de l'application OneKey est une application Electron qui repose sur le moteur Chrome. En utilisant les outils de développement, l'API de génération d'entropie mnémonique
crypto.getRandomValuesest appelée à l'exécution pour échantillonner des nombres aléatoires, pour un total de 20 Mo. Les tests selon les paramètres définis ont produit un « Rapport de test » (voir pièce jointe ci-dessous), où tous les éléments ont passé, répondant aux exigences de sécurité.Résultats : NIST SP 800-22-macOS-desktop-macm1p.txt ( Disponible dans la pièce jointe)
Extension du navigateur
L'extension Chrome repose sur le moteur Chrome. En utilisant les outils de développement, l'API de génération d'entropie mnémonique
crypto.getRandomValuesest appelée à l'exécution pour échantillonner des nombres aléatoires, pour un total de 20 Mo. Les tests selon les paramètres définis ont produit un « Rapport de test » (voir pièce jointe ci-dessous), où tous les éléments ont passé, répondant aux exigences de sécurité.Résultats : NIST SP 800-22-macOS-ext-macm1p.txt ( Disponible dans la pièce jointe)
Android
Système hyperOS 1.0.4.0 ; Matériel Xiaomi 10s snapdragon870
Client Android
Le client Android de l'application OneKey, étant une application React Native, s'appuie sur des API natives. Sur Android, l'API système
SecureRandomest invoquée lorsquecrypto.getRandomValuesest appelée dans l'application. En utilisant le débogage JS distant de React, l'API de génération d'entropie mnémoniquecrypto.getRandomValuesest appelée à l'exécution pour échantillonner des nombres aléatoires, pour un total de 20 Mo. Les tests selon les paramètres définis ont produit un « Rapport de test » (voir pièce jointe ci-dessous), où tous les éléments ont passé, répondant aux exigences de sécurité.Résultats : NIST SP 800-22-android-app-andsm870.txt ( Disponible dans la pièce jointe)
iOS
Système : IOS 17.5 ; Matériel : iPhoneX A11
Client iOS
Le client iOS de l'application OneKey, étant une application React Native, s'appuie sur des API natives. Sur iOS, l'API système
SecRandomCopyBytesest invoquée lorsquecrypto.getRandomValuesest appelée dans l'application. En utilisant le débogage JS distant de React, l'API de génération d'entropie mnémoniquecrypto.getRandomValuesest appelée à l'exécution pour échantillonner des nombres aléatoires, pour un total de 20 Mo. Les tests selon les paramètres définis ont produit un « Rapport de test » (voir pièce jointe ci-dessous), où tous les éléments ont passé, répondant aux exigences de sécurité.Résultats : NIST SP 800-22-iOS-app-x.txt ( Disponible dans la pièce jointe)
FIPS 140-2 (Federal Information Processing Standard Publication 140-2) est une norme de sécurité informatique publiée par le NIST. Elle détaille les exigences de sécurité pour les modules cryptographiques, se concentrant spécifiquement sur les types de RNG, la force de sécurité, les graines, l'entropie, la périodicité, les tests périodiques et les tests continus.
Logiciel de test : rng-tools
Paramètres de test : Aucun
Environnement de test : ubuntu 24.04 arm64
Processus de compilation :
Installer correctement gcc, automake
Exécuter
./autogen.shExécuter
./configure(en cas d'erreurs, configurer les dépendances selon les messages d'erreur)Exécuter
makepour compiler les fichiers rngd et rngtestExécuter
./rngtest < testfile.bin
⚠️ Remarque : Les fichiers de test doivent être au format binaire en entrée, et non en ASCII.
Windows
Système : Win10 22H2 ; Matériel : i7-13700h
Client de bureau
Le client de bureau Windows de l'application OneKey est une application Electron qui repose sur le moteur Chrome. En utilisant les outils de développement, l'API de génération d'entropie mnémonique
crypto.getRandomValuesest appelée à l'exécution pour échantillonner des nombres aléatoires, pour un total de 20 Mo. Le fichier texte a été converti en fichier binaire, et le « Rapport de test » ci-dessous montre que tous les éléments ont passé, répondant aux exigences de sécurité.
Extension du navigateur
L'extension Chrome repose sur le moteur Chrome. En utilisant les outils de développement, l'API de génération d'entropie mnémonique
crypto.getRandomValuesest appelée à l'exécution pour échantillonner des nombres aléatoires, pour un total de 20 Mo. Le fichier texte a été converti en fichier binaire, et le « Rapport de test » ci-dessous montre 1024 rounds testés avec un round de « Runs » échoué, mais tous les éléments ont passé dans l'ensemble, répondant aux exigences de sécurité.
macOS
Système : Sonoma 14.6 ; Matériel : MacBook Pro 2020 13 pouces M1
Client de bureau
Le client de bureau macOS de l'application OneKey est une application Electron qui repose sur le moteur Chrome. En utilisant les outils de développement, l'API de génération d'entropie mnémonique
crypto.getRandomValuesest appelée à l'exécution pour échantillonner des nombres aléatoires, pour un total de 20 Mo. Le fichier texte a été converti en fichier binaire, et le « Rapport de test » ci-dessous montre que tous les éléments ont passé, répondant aux exigences de sécurité.
Extension du navigateur
L'extension Chrome repose sur le moteur Chrome. En utilisant les outils de développement, l'API de génération d'entropie mnémonique
crypto.getRandomValuesest appelée à l'exécution pour échantillonner des nombres aléatoires, pour un total de 20 Mo. Le fichier texte a été converti en fichier binaire, et le « Rapport de test » ci-dessous montre que tous les éléments ont passé, répondant aux exigences de sécurité.
Android
Système : hyperOS 1.0.4.0 ; Matériel : Xiaomi 10s snapdragon870
Client Android
Le client Android de l'application OneKey, étant une application React Native, s'appuie sur des API natives. Sur Android, l'API système SecureRandom est invoquée lorsque
crypto.getRandomValuesest appelée dans l'application. En utilisant le débogage JS distant de React, l'API de génération d'entropie mnémoniquecrypto.getRandomValuesest appelée à l'exécution pour échantillonner des nombres aléatoires, pour un total de 20 Mo. Le fichier texte a été converti en fichier binaire, et le « Rapport de test » ci-dessous montre trois rounds sur 1024 où tous les éléments de test ont échoué, mais tous les éléments ont passé dans l'ensemble, répondant aux exigences de sécurité.
⚠️ Remarque : Le client Android a eu trois rounds de test sur 1024 où tous les éléments de test ont échoué. Ce problème pourrait être un bug dans l'outil rng-test et n'affecte pas la conclusion globale du test.
iOS
Système iOS 17.5 ; Matériel : iPhoneX A11
Client iOS
Le client iOS de l'application OneKey, étant une application React Native, s'appuie sur des API natives. Sur iOS, l'API système
SecRandomCopyBytesest invoquée lorsquecrypto.getRandomValuesest appelée dans l'application. En utilisant le débogage JS distant de React, l'API de génération d'entropie mnémoniquecrypto.getRandomValuesest appelée à l'exécution pour échantillonner des nombres aléatoires, pour un total de 20 Mo. Le fichier texte a été converti en fichier binaire, et le « Rapport de test » ci-dessous montre un test échoué dans « Long run » sur 1024 rounds, mais tous les éléments ont passé dans l'ensemble, répondant aux exigences de sécurité.
Pièces jointes des résultats
