Este artículo proporciona un informe de prueba de seguridad sobre la aleatoriedad de la generación de frases mnemónicas 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 (Desktop y Extensión).
Conclusión
La aplicación OneKey utiliza API de números aleatorios criptográficamente seguras específicas de la plataforma, recomendadas por las directrices 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 de números pseudoaleatorios segura
crypto.getRandomValuesproporcionada por Chrome para generar números pseudoaleatorios criptográficamente seguros.En plataformas Android e iOS basadas en React Native, se llaman respectivamente las interfaces de números aleatorios seguras 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 Statistical Test Suite
Entorno de prueba: macOS 14.5
Parámetros de prueba:
Proyecto
|
Parámetros
|
Longitud del segmento
|
1024000
|
Elementos de prueba
|
1 (Todas las 15 pruebas)
|
Prueba de Frecuencia de Bloques - longitud del bloque (M)
|
20480
|
Prueba de Plantillas No Superpuestas - longitud del bloque (m)
|
10
|
Prueba de Plantillas Superpuestas - longitud del bloque (m)
|
10
|
Prueba de Entropía Aproximada - longitud del bloque (m)
|
10
|
Prueba de Serie - longitud del bloque (m)
|
16
|
Prueba de Complejidad Lineal - longitud del bloque (M)
|
5000
|
Flujos de bits
|
20 (20 * 1024000 bits = 20480000 bits = 20MB)
|
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 llama a la API de generación de entropía mnemónica
crypto.getRandomValuesen tiempo de ejecución para muestrear números aleatorios, sumando un total de 20 MB. Las pruebas realizadas según los parámetros definidos arrojaron un "Informe de Prueba" (ver adjunto abajo), donde todos los elementos pasaron, cumpliendo con 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 llama a la API de generación de entropía mnemónica
crypto.getRandomValuesen tiempo de ejecución para muestrear números aleatorios, sumando un total de 20 MB. Las pruebas realizadas según los parámetros definidos arrojaron un "Informe de Prueba" (ver adjunto abajo), donde todos los elementos pasaron, cumpliendo con 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 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 llama a la API de generación de entropía mnemónica
crypto.getRandomValuesen tiempo de ejecución para muestrear números aleatorios, sumando un total de 20 MB. Las pruebas realizadas según los parámetros definidos arrojaron un "Informe de Prueba" (ver adjunto abajo), donde todos los elementos pasaron, cumpliendo con 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 llama a la API de generación de entropía mnemónica
crypto.getRandomValuesen tiempo de ejecución para muestrear números aleatorios, sumando un total de 20 MB. Las pruebas realizadas según los parámetros definidos arrojaron un "Informe de Prueba" (ver adjunto abajo), donde todos los elementos pasaron, cumpliendo con 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 API nativas. En Android, se invoca la API del sistema
SecureRandomcuando se llama acrypto.getRandomValuesen la aplicación. Utilizando el depurador remoto JS de React, se llama a la API de generación de entropía mnemónicacrypto.getRandomValuesen tiempo de ejecución para muestrear números aleatorios, sumando un total de 20 MB. Las pruebas realizadas según los parámetros definidos arrojaron un "Informe de Prueba" (ver adjunto abajo), donde todos los elementos pasaron, cumpliendo con 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 API nativas. En iOS, se invoca la API del sistema
SecRandomCopyBytescuando se llama acrypto.getRandomValuesen la aplicación. Utilizando el depurador remoto JS de React, se llama a la API de generación de entropía mnemónicacrypto.getRandomValuesen tiempo de ejecución para muestrear números aleatorios, sumando un total de 20 MB. Las pruebas realizadas según los parámetros definidos arrojaron un "Informe de Prueba" (ver adjunto abajo), donde todos los elementos pasaron, cumpliendo con 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 de Procesamiento de Información Federal 140-2) es un estándar de seguridad informática emitido por el NIST. Detalla los requisitos de seguridad para los módulos criptográficos, centrándose específicamente en los tipos de RNG, la fortaleza de la 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:
Instalar gcc, automake correctamente
Ejecutar
./autogen.shEjecutar
./configure(si ocurren errores, configurar las dependencias según los mensajes de error)Ejecutar
makepara compilar los archivos rngd y rngtestEjecutar
./rngtest < testfile.bin
⚠️ Nota: Los archivos de prueba deben estar en formato binario como entrada, 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 llama a la API de generación de entropía mnemónica
crypto.getRandomValuesen tiempo de ejecución para muestrear números aleatorios, sumando un total de 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 con 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 llama a la API de generación de entropía mnemónica
crypto.getRandomValuesen tiempo de ejecución para muestrear números aleatorios, sumando un total de 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 Ejecuciones fallidas, pero todos los elementos pasaron en general, cumpliendo con los requisitos de seguridad.
macOS
Sistema: Sonoma 14.6; Hardware: MacBook Pro 2020 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 llama a la API de generación de entropía mnemónica
crypto.getRandomValuesen tiempo de ejecución para muestrear números aleatorios, sumando un total de 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 con 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 llama a la API de generación de entropía mnemónica
crypto.getRandomValuesen tiempo de ejecución para muestrear números aleatorios, sumando un total de 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 con 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 API nativas. En Android, se invoca la API del sistema SecureRandom cuando se llama a
crypto.getRandomValuesen la aplicación. Utilizando el depurador remoto JS de React, se llama a la API de generación de entropía mnemónicacrypto.getRandomValuesen tiempo de ejecución para muestrear números aleatorios, sumando un total de 20 MB. El archivo de texto se convirtió a un archivo binario y el "Informe de Prueba" a continuación muestra que tres rondas de 1024 fallaron todos los elementos de prueba, pero todos los elementos pasaron en general, cumpliendo con 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 API nativas. En iOS, se invoca la API del sistema
SecRandomCopyBytescuando se llama acrypto.getRandomValuesen la aplicación. Utilizando el depurador remoto JS de React, se llama a la API de generación de entropía mnemónicacrypto.getRandomValuesen tiempo de ejecución para muestrear números aleatorios, sumando un total de 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 la ejecución larga de 1024 rondas, pero todos los elementos pasaron en general, cumpliendo con los requisitos de seguridad.
Archivos adjuntos de resultados
