Este artículo proporciona un informe de prueba de seguridad sobre la aleatoriedad de la generación mnemónica en la aplicación OneKey (billetera de software), que abarca todos los sistemas operativos compatibles con la aplicación OneKey (macOS, Windows, Android, iOS) y sus respectivos clientes (Escritorio y Extensión).
Conclusión
La aplicación OneKey emplea APIs de números aleatorios criptográficamente fuertes específicas de la plataforma recomendadas por las guías de desarrollo en los clientes de Windows, macOS, iOS y Android, así como en la extensión de Chrome. Las pruebas internas confirman el cumplimiento de los estándares de seguridad de números aleatorios NIST SP 800-22 y FIPS 140-2.
En plataformas basadas en Chrome (Windows, macOS), se utiliza la API segura de números pseudoaleatorios
crypto.getRandomValuesproporcionada por Chrome para generar números pseudoaleatorios criptográficamente fuertes.En plataformas Android e iOS basadas en React Native, se llaman respectivamente las interfaces seguras de números aleatorios proporcionadas por el sistema
SecureRandomySecRandomCopyBytes.
⚠️ Nota: Aunque la aplicación OneKey se adhiere estrictamente a las directrices de desarrollo de seguridad, la seguridad de la generación de números aleatorios también puede verse afectada por la implementación del sistema operativo/hardware del dispositivo del usuario.
Pruebas de seguridad
NIST SP 800-22 FIPS 140-2
NIST SP 800-22 (Publicación Especial 800-22 del Instituto Nacional de Estándares y Tecnología) es un documento publicado por el Instituto Nacional de Estándares y Tecnología (NIST) de los Estados Unidos, que involucra principalmente un conjunto de pruebas estadísticas para probar Generadores de Números Pseudoaleatorios (PRNG). Proporciona un conjunto de pruebas estadísticas para evaluar la aleatoriedad y la calidad de las secuencias de bits generadas por los generadores de números aleatorios.
Software de prueba: NIST SP 800-22 Conjunto de pruebas estadísticas
Entorno de prueba: macOS 14.5
Parámetros de prueba:
Proyecto
|
Parámetros
|
Longitud del segmento
|
1024000
|
Artículos de prueba
|
1 (Las 15 pruebas)
|
Prueba de frecuencia de bloques - longitud del bloque (M)
|
20480
|
Prueba de plantilla no superpuesta - longitud del bloque (m)
|
10
|
Prueba de plantilla superpuesta - longitud del bloque (m)
|
10
|
Prueba de entropía aproximada - longitud del bloque (m)
|
10
|
Prueba serie - longitud del bloque (m)
|
16
|
Prueba de complejidad lineal - longitud del bloque (M)
|
5000
|
Secuencias de bits
|
20 (20*1024000 bits = 20480000 bits = 20 MB)
|
Windows
Sistema: Win10 22H2; Hardware: i7-13700h
Cliente de escritorio
El cliente de escritorio de Windows para la aplicación OneKey es una aplicación Electron que se basa en el motor de Chrome. Utilizando herramientas de desarrollo, se invoca la API de generación de entropía mnemónica
crypto.getRandomValuesen tiempo de ejecución para muestrear números aleatorios, sumando 20 MB. Las pruebas realizadas según los parámetros definidos arrojaron un "Informe de prueba" (ver adjunto a continuación), donde todos los elementos pasaron, cumpliendo los requisitos de seguridad.Resultados: NIST SP 800-22-windows-desktop-wini713.txt (Disponible en el adjunto)
Extensión del navegador
La extensión de Chrome se basa en el motor de Chrome. Utilizando herramientas de desarrollo, se invoca la API de generación de entropía mnemónica
crypto.getRandomValuesen tiempo de ejecución para muestrear números aleatorios, sumando 20 MB. Las pruebas realizadas según los parámetros definidos arrojaron un "Informe de prueba" (ver adjunto a continuación), donde todos los elementos pasaron, cumpliendo los requisitos de seguridad.Resultados: NIST SP 800-22-windows-ext-wini713.txt ( Disponible en el adjunto)
macOS
Sistema: Sonoma 14.6; Hardware: MacBook Pro 2020 de 13 pulgadas M1
Cliente de escritorio
El cliente de escritorio de macOS para la aplicación OneKey es una aplicación Electron que se basa en el motor de Chrome. Utilizando herramientas de desarrollo, se invoca la API de generación de entropía mnemónica
crypto.getRandomValuesen tiempo de ejecución para muestrear números aleatorios, sumando 20 MB. Las pruebas realizadas según los parámetros definidos arrojaron un "Informe de prueba" (ver adjunto a continuación), donde todos los elementos pasaron, cumpliendo los requisitos de seguridad.Resultados: NIST SP 800-22-macOS-desktop-macm1p.txt ( Disponible en el adjunto)
Extensión del navegador
La extensión de Chrome se basa en el motor de Chrome. Utilizando herramientas de desarrollo, se invoca la API de generación de entropía mnemónica
crypto.getRandomValuesen tiempo de ejecución para muestrear números aleatorios, sumando 20 MB. Las pruebas realizadas según los parámetros definidos arrojaron un "Informe de prueba" (ver adjunto a continuación), donde todos los elementos pasaron, cumpliendo los requisitos de seguridad.Resultados: NIST SP 800-22-macOS-ext-macm1p.txt ( Disponible en el adjunto)
Android
Sistema hyperOS 1.0.4.0; Hardware Xiaomi 10s snapdragon870
Cliente de Android
El cliente de Android para la aplicación OneKey, al ser una aplicación React Native, se basa en APIs nativas. En Android, se invoca la API del sistema
SecureRandomcuando se llama acrypto.getRandomValuesen la aplicación. Utilizando la depuración remota de JS de React, se invoca la API de generación de entropía mnemónicacrypto.getRandomValuesen tiempo de ejecución para muestrear números aleatorios, sumando 20 MB. Las pruebas realizadas según los parámetros definidos arrojaron un "Informe de prueba" (ver adjunto a continuación), donde todos los elementos pasaron, cumpliendo los requisitos de seguridad.Resultados: NIST SP 800-22-android-app-andsm870.txt ( Disponible en el adjunto)
iOS
Sistema: IOS 17.5; Hardware: iPhoneX A11
Cliente de iOS
El cliente de iOS para la aplicación OneKey, al ser una aplicación React Native, se basa en APIs nativas. En iOS, se invoca la API del sistema
SecRandomCopyBytescuando se llama acrypto.getRandomValuesen la aplicación. Utilizando la depuración remota de JS de React, se invoca la API de generación de entropía mnemónicacrypto.getRandomValuesen tiempo de ejecución para muestrear números aleatorios, sumando 20 MB. Las pruebas realizadas según los parámetros definidos arrojaron un "Informe de prueba" (ver adjunto a continuación), donde todos los elementos pasaron, cumpliendo los requisitos de seguridad.Resultados: NIST SP 800-22-iOS-app-x.txt ( Disponible en el adjunto)
FIPS 140-2 (Publicación de Estándares Federales de Procesamiento de Información 140-2) es un estándar de seguridad informática emitido por NIST. Detalla los requisitos de seguridad para los módulos criptográficos, centrándose específicamente en los tipos de RNG, la fortaleza de seguridad, la semilla, la entropía, la periodicidad, las pruebas periódicas y las pruebas continuas.
Software de prueba: rng-tools
Parámetros de prueba: Ninguno
Entorno de prueba: ubuntu 24.04 arm64
Proceso de compilación:
Instale gcc, automake correctamente
Ejecute
./autogen.shEjecute
./configure(si ocurren errores, configure las dependencias según los mensajes de error)Ejecute
makepara compilar los archivos rngd y rngtestEjecute
./rngtest < testfile.bin
⚠️ Nota: Los archivos de prueba deben estar en formato binario como entradas, no en ASCII.
Windows
Sistema: Win10 22H2; Hardware: i7-13700h
Cliente de escritorio
El cliente de escritorio de Windows para la aplicación OneKey es una aplicación Electron que se basa en el motor de Chrome. Utilizando herramientas de desarrollo, se invoca la API de generación de entropía mnemónica
crypto.getRandomValuesen tiempo de ejecución para muestrear números aleatorios, sumando 20 MB. El archivo de texto se convirtió a un archivo binario, y el "Informe de prueba" a continuación muestra que todos los elementos pasaron, cumpliendo los requisitos de seguridad.
Extensión del navegador
La extensión de Chrome se basa en el motor de Chrome. Utilizando herramientas de desarrollo, se invoca la API de generación de entropía mnemónica
crypto.getRandomValuesen tiempo de ejecución para muestrear números aleatorios, sumando 20 MB. El archivo de texto se convirtió a un archivo binario, y el "Informe de prueba" a continuación muestra 1024 rondas probadas con una ronda de Series fallida, pero todos los elementos pasaron en general, cumpliendo los requisitos de seguridad.
macOS
Sistema: Sonoma 14.6; Hardware: MacBook Pro 2020 de 13 pulgadas M1
Cliente de escritorio
El cliente de escritorio de macOS para la aplicación OneKey es una aplicación Electron que se basa en el motor de Chrome. Utilizando herramientas de desarrollo, se invoca la API de generación de entropía mnemónica
crypto.getRandomValuesen tiempo de ejecución para muestrear números aleatorios, sumando 20 MB. El archivo de texto se convirtió a un archivo binario, y el "Informe de prueba" a continuación muestra que todos los elementos pasaron, cumpliendo los requisitos de seguridad.
Extensión del navegador
La extensión de Chrome se basa en el motor de Chrome. Utilizando herramientas de desarrollo, se invoca la API de generación de entropía mnemónica
crypto.getRandomValuesen tiempo de ejecución para muestrear números aleatorios, sumando 20 MB. El archivo de texto se convirtió a un archivo binario, y el "Informe de prueba" a continuación muestra que todos los elementos pasaron, cumpliendo los requisitos de seguridad.
Android
Sistema: hyperOS 1.0.4.0;Hardware: Xiaomi 10s snapdragon870
Cliente de Android
El cliente de Android para la aplicación OneKey, al ser una aplicación React Native, se basa en APIs nativas. En Android, se invoca la API del sistema SecureRandom cuando se llama a
crypto.getRandomValuesen la aplicación. Utilizando la depuración remota de JS de React, se invoca la API de generación de entropía mnemónicacrypto.getRandomValuesen tiempo de ejecución para muestrear números aleatorios, sumando 20 MB. El archivo de texto se convirtió a un archivo binario, y el "Informe de prueba" a continuación muestra tres rondas de 1024 que fallaron todos los elementos de prueba, pero todos los elementos pasaron en general, cumpliendo los requisitos de seguridad.
⚠️ Nota: El cliente de Android tuvo tres rondas de prueba de 1024 en las que todos los elementos de prueba fallaron. Este problema podría ser un error en la herramienta rng-test y no afecta la conclusión general de la prueba.
iOS
Sistema iOS 17.5;Hardware: iPhoneX A11
Cliente de iOS
El cliente de iOS para la aplicación OneKey, al ser una aplicación React Native, se basa en APIs nativas. En iOS, se invoca la API del sistema
SecRandomCopyBytescuando se llama acrypto.getRandomValuesen la aplicación. Utilizando la depuración remota de JS de React, se invoca la API de generación de entropía mnemónicacrypto.getRandomValuesen tiempo de ejecución para muestrear números aleatorios, sumando 20 MB. El archivo de texto se convirtió a un archivo binario, y el "Informe de prueba" a continuación muestra una prueba fallida en Carrera larga de 1024 rondas, pero todos los elementos pasaron en general, cumpliendo los requisitos de seguridad.
Archivos adjuntos de resultados
