Este artigo fornece um relatório de teste de segurança sobre a aleatoriedade da geração de frases mnemônicas no OneKey App (carteira de software), abarcando todos os sistemas operacionais suportados pelo OneKey App (macOS, Windows, Android, iOS) e seus respectivos clientes (Desktop e Extensão).
Conclusão do Teste
O OneKey App emprega APIs de número aleatório criptograficamente fortes específicas da plataforma recomendadas por diretrizes de desenvolvimento nos clientes Windows, macOS, iOS e Android, bem como na extensão Chrome. Testes internos confirmam conformidade com os padrões de segurança de número aleatório NIST SP 800-22 e FIPS 140-2.
- Em plataformas baseadas no Chrome (Windows, macOS), é utilizada a API segura de número pseudo-aleatório
crypto.getRandomValues
fornecida pelo Chrome para gerar números pseudo-aleatórios criptograficamente fortes. - Em plataformas Android e iOS baseadas no React Native, são chamadas, respectivamente, as interfaces de número aleatório seguro fornecidas pelo sistema
SecureRandom
eSecRandomCopyBytes
.
⚠️ Nota: Embora o OneKey App adote rigorosamente as diretrizes de desenvolvimento de segurança, a segurança da geração de números aleatórios também pode ser afetada pela implementação do sistema operacional/hardware do dispositivo do usuário.
Teste de Segurança de Número Aleatório
NIST SP 800-22 (Publicação Especial 800-22 do Instituto Nacional de Padrões e Tecnologia) é um documento publicado pelo Instituto Nacional de Padrões e Tecnologia dos EUA, que envolve principalmente um conjunto de testes estatísticos para testar Geradores de Números Pseudo-Aleatórios (PRNG). Ele fornece um conjunto de testes estatísticos para avaliar a aleatoriedade e qualidade das sequências de bits geradas por geradores de números aleatórios.
- Software de Teste: NIST SP 800-22 Statistical Test Suite
- Ambiente de Teste: macOS 14.5
- Parâmetros de Teste:
Projeto |
Parâmetros |
---|---|
Segment Length |
1024000 |
Test Items |
1 (Todos os 15 testes) |
Block Frequency Test - block length(M) |
20480 |
NonOverlapping Template Test - block length(m) |
10 |
Overlapping Template Test - block length(m) |
10 |
Approximate Entropy Test - block length(m) |
10 |
Serial Test - block length(m) |
16 |
Linear Complexity Test - block length(M) |
5000 |
bitstreams |
20(20*1024000bits = 20480000bits = 20MB) |
Sistema: Win10 22H2; Hardware: i7-13700h
-
Desktop Client
- O cliente desktop do OneKey App para Windows é uma aplicação Electron que depende do mecanismo Chrome. Usando ferramentas de desenvolvedor, é chamada a API de geração de entropia mnemônica
crypto.getRandomValues
em tempo de execução para amostrar números aleatórios, totalizando 20MB. Testando de acordo com os parâmetros definidos, foi gerado um "Relatório de Teste" (veja o anexo abaixo), onde todos os itens foram aprovados, atendendo aos requisitos de segurança. - Resultados do Teste: NIST SP 800-22-windows-desktop-wini713.txt (Disponível no anexo do artigo)
- O cliente desktop do OneKey App para Windows é uma aplicação Electron que depende do mecanismo Chrome. Usando ferramentas de desenvolvedor, é chamada a API de geração de entropia mnemônica
-
Extensão do Navegador
- A extensão Chrome depende do mecanismo Chrome. Usando ferramentas de desenvolvedor, é chamada a API de geração de entropia mnemônica
crypto.getRandomValues
em tempo de execução para amostrar números aleatórios, totalizando 20MB. Testando de acordo com os parâmetros definidos, foi gerado um "Relatório de Teste" (veja o anexo abaixo), onde todos os itens foram aprovados, atendendo aos requisitos de segurança. - Resultados do Teste: NIST SP 800-22-windows-ext-wini713.txt (Disponível no anexo do artigo)
- A extensão Chrome depende do mecanismo Chrome. Usando ferramentas de desenvolvedor, é chamada a API de geração de entropia mnemônica
Sistema: Sonoma 14.6; Hardware: MacBook Pro 2020 de 13 polegadas com M1
-
Cliente Desktop
- O cliente desktop do OneKey App para macOS é uma aplicação Electron que depende do mecanismo Chrome. Usando ferramentas de desenvolvedor, é chamada a API de geração de entropia mnemônica
crypto.getRandomValues
em tempo de execução para amostrar números aleatórios, totalizando 20MB. Testando de acordo com os parâmetros definidos, foi gerado um "Relatório de Teste" (veja o anexo abaixo), onde todos os itens foram aprovados, atendendo aos requisitos de segurança. - Resultados do Teste: NIST SP 800-22-macOS-desktop-macm1p.txt (Disponível no anexo do artigo)
- O cliente desktop do OneKey App para macOS é uma aplicação Electron que depende do mecanismo Chrome. Usando ferramentas de desenvolvedor, é chamada a API de geração de entropia mnemônica
-
Extensão do Navegador
- A extensão Chrome depende do mecanismo Chrome. Usando ferramentas de desenvolvedor, é chamada a API de geração de entropia mnemônica
crypto.getRandomValues
em tempo de execução para amostrar números aleatórios, totalizando 20MB. Testando de acordo com os parâmetros definidos, foi gerado um "Relatório de Teste" (veja o anexo abaixo), onde todos os itens foram aprovados, atendendo aos requisitos de segurança. - Resultados do Teste: NIST SP 800-22-macOS-ext-macm1p.txt (Disponível no anexo do artigo)
- A extensão Chrome depende do mecanismo Chrome. Usando ferramentas de desenvolvedor, é chamada a API de geração de entropia mnemônica
Sistema: hyperOS 1.0.4.0; Hardware: Xiaomi 10s Snapdragon 870
-
Cliente Android
- O cliente Android do OneKey App, sendo uma aplicação React Native, depende de APIs nativas. No Android, a API do sistema SecureRandom é invocada quando crypto.getRandomValues é chamada na aplicação. Usando o depurador remoto JS do React, é chamada a API de geração de entropia mnemônica crypto.getRandomValues em tempo de execução para amostrar números aleatórios, totalizando 20MB. Testando de acordo com os parâmetros definidos, foi gerado um "Relatório de Teste" (veja o anexo abaixo), onde todos os itens foram aprovados, atendendo aos requisitos de segurança.
- Resultados do Teste: NIST SP 800-22-android-app-andsm870.txt (Disponível no anexo do artigo)
Sistema: iOS 17.5; Hardware: iPhoneX A11
-
Cliente iOS
- .O cliente iOS do OneKey App, sendo uma aplicação React Native, depende de APIs nativas. No iOS, a API do sistema
SecRandomCopyBytes
é invocada quandocrypto.getRandomValues
é chamada na aplicação. Usando o depurador remoto JS do React, é chamada a API de geração de entropia mnemônicacrypto.getRandomValues
em tempo de execução para amostrar números aleatórios, totalizando 20MB. Testando de acordo com os parâmetros definidos, foi gerado um "Relatório de Teste" (veja o anexo abaixo), onde todos os itens foram aprovados, atendendo aos requisitos de segurança. - Resultados do Teste: NIST SP 800-22-iOS-app-x.txt (Disponível no anexo do artigo)
- .O cliente iOS do OneKey App, sendo uma aplicação React Native, depende de APIs nativas. No iOS, a API do sistema
FIPS 140-2 (Publicação de Padrões de Processamento de Informações Federais 140-2) é um padrão de segurança para computadores emitido pelo NIST. Ele detalha os requisitos de segurança para módulos criptográficos, focando especificamente em tipos de RNG, força de segurança, semente, entropia, periodicidade, testes periódicos e testes contínuos.
- Software de Teste: rng-tools
- Parâmetros de Teste: None
- Ambiente de Teste: ubuntu 24.04 arm64
-
Processo de Compilação:
- Instalar corretamente gcc, automake
- Executar
./autogen.sh
- Executar
./configure
(se houver erros, configure as dependências conforme as mensagens de erro) - Executar
make
para compilar os arquivos rngd e rngtest - Executar
./rngtest < testfile.bin
⚠️ Nota: Arquivos de teste devem estar em formato binário como entradas, não ASCII.
Sistema: Win10 22H2; Hardware: i7-13700h
-
Cliente Desktop
- O cliente desktop do OneKey App para Windows é uma aplicação Electron que depende do mecanismo Chrome. Usando ferramentas de desenvolvedor, é chamada a API de geração de entropia mnemônica
crypto.getRandomValues
em tempo de execução para amostrar números aleatórios, totalizando 20MB. O arquivo de texto foi convertido para um arquivo binário, e o "Relatório de Teste" abaixo mostra que todos os itens foram aprovados, atendendo aos requisitos de segurança.
- O cliente desktop do OneKey App para Windows é uma aplicação Electron que depende do mecanismo Chrome. Usando ferramentas de desenvolvedor, é chamada a API de geração de entropia mnemônica
-
Extensão do Navegador
- A extensão do Chrome depende do mecanismo Chrome. Usando ferramentas de desenvolvedor, é chamada a API de geração de entropia mnemônica
crypto.getRandomValues
em tempo de execução para amostrar números aleatórios, totalizando 20MB. O arquivo de texto foi convertido para um arquivo binário, e o "Relatório de Teste" abaixo mostra que 1024 rodadas foram testadas com uma rodada de erros de sequência, mas todos os itens foram aprovados no geral, atendendo aos requisitos de segurança.
- A extensão do Chrome depende do mecanismo Chrome. Usando ferramentas de desenvolvedor, é chamada a API de geração de entropia mnemônica
Sonoma 14.6; Hardware: MacBook Pro 2020 de 13 polegadas com M1
-
Cliente Desktop
- O cliente desktop do OneKey App para macOS é uma aplicação Electron que depende do mecanismo Chrome. Usando ferramentas de desenvolvedor, é chamada a API de geração de entropia mnemônica
crypto.getRandomValues
em tempo de execução para amostrar números aleatórios, totalizando 20MB. O arquivo de texto foi convertido para um arquivo binário, e o "Relatório de Teste" abaixo mostra que todos os itens foram aprovados, atendendo aos requisitos de segurança.
- O cliente desktop do OneKey App para macOS é uma aplicação Electron que depende do mecanismo Chrome. Usando ferramentas de desenvolvedor, é chamada a API de geração de entropia mnemônica
-
Extensão do Navegador
- A extensão do Chrome depende do mecanismo Chrome. Usando ferramentas de desenvolvedor, é chamada a API de geração de entropia mnemônica
crypto.getRandomValues
em tempo de execução para amostrar números aleatórios, totalizando 20MB. O arquivo de texto foi convertido para um arquivo binário, e o "Relatório de Teste" abaixo mostra que todos os itens foram aprovados, atendendo aos requisitos de segurança.
- A extensão do Chrome depende do mecanismo Chrome. Usando ferramentas de desenvolvedor, é chamada a API de geração de entropia mnemônica
Sistema: hyperOS 1.0.4.0; Hardware: Xiaomi 10s Snapdragon 870
-
Android Client
- O cliente Android do OneKey App, sendo uma aplicação React Native, depende de APIs nativas. No Android, a API do sistema SecureRandom é invocada quando
crypto.getRandomValues
é chamada na aplicação. Usando o depurador remoto JS do React, é chamada a API de geração de entropia mnemônica crypto.getRandomValues em tempo de execução para amostrar números aleatórios, totalizando 20MB. O arquivo de texto foi convertido para um arquivo binário, e o "Relatório de Teste" abaixo mostra três rodadas de 1024 que falharam em todos os itens de teste, mas todos os itens passaram no geral, atendendo aos requisitos de segurança.
⚠️ Nota: O cliente Android teve três rodadas de teste em 1024 onde todos os itens de teste falharam. Esse problema pode ser um bug na ferramenta de teste rng-test e não afeta a conclusão geral do teste.
- O cliente Android do OneKey App, sendo uma aplicação React Native, depende de APIs nativas. No Android, a API do sistema SecureRandom é invocada quando
Sistema: iOS 17.5; Hardware: iPhoneX A11
-
Cliente iOS
- O cliente iOS do OneKey App, sendo uma aplicação React Native, depende de APIs nativas. No iOS, a API do sistema
SecRandomCopyBytes
é invocada quandocrypto.getRandomValues
é chamada na aplicação. Usando o depurador remoto JS do React, é chamada a API de geração de entropia mnemônicacrypto.getRandomValues
em tempo de execução para amostrar números aleatórios, totalizando 20MB. O arquivo de texto foi convertido para um arquivo binário, e o "Relatório de Teste" abaixo mostra um teste falho na corrida longa em 1024 rodadas, mas todos os itens passaram no geral, atendendo aos requisitos de segurança.
- O cliente iOS do OneKey App, sendo uma aplicação React Native, depende de APIs nativas. No iOS, a API do sistema