OneKey App 随机数安全性测试

本文将提供关于 OneKey App(软件钱包)生成钱包助记词过程中随机数的安全性测试报告,涵盖了所有 OneKey App 支持的操作系统(macOS, Windows, Andriod, iOS)及相应客户端(Desktop & Extension)的测试结果。

测试结论

OneKey App 在 Windows、macOS、iOS、Android 平台的客户端和 Chrome 插件端中,均采用了对应平台开发指南推荐的符合密码学强度的随机数 API,经过内部测试符合 NIST SP 800-22 及 FIPS 140-2 随机数安全标准。

  • 在基于 Chrome 内核的 Windows,macOS 平台中使用了由 Chrome 提供的安全伪随机数 API crypto.getrandomvalues 获取足够密码学强度的伪随机数。
  • 在基于 React Native 的 Android 和 iOS 平台中,则分别调用了系统原生提供的安全随机接口SecureRandomSecRandomCopyBytes
⚠️ 注意:虽然 OneKey App 完全遵从安全开发指引,但用户自身设备操作系统/硬件实现同样也会影响最终随机数生成的安全性。

随机数安全测试

NIST SP 800-22 FIPS 140-2

NIST SP 800-22 (National Institute of Standards and Technology Special Publication 800-22) 是一份由美国国家标准与技术研究院(NIST)发布的文档,主要涉及用于测试伪随机数生成器(PRNG)的统计测试套件。它提供了一组统计测试,用于评估随机数生成器产生的比特序列的随机性和质量。

项目 

参数

段长度

1024000

测试项目

1(指进行全部 15 项测试)

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)

 

Windows

测试平台信息:系统 Win10 22H2;硬件 i7-13700h

  • 桌面客户端
    • 由于 Windows 的 OneKey App 桌面端为 electron 应用依赖 Chrome 内核进行工作,通过开发者工具,在 runtime 中调用助记词随机熵生成 API:crypto.getrandomvalue,对随机数进行取样,总计 20MB。按照测试参数进行测试,「测试报告」如下方附件所示,所有项目均通过测试符合安全要求。
    • 测试结果:NIST SP 800-22-windows-desktop-wini713.txt(可在文章附件中下载查看)
  • 浏览器插件
    • 由于浏览器插件依赖 Chrome 内核进行工作,通过开发者工具,在 runtime 中调用助记词随机熵生成 API:crypto.getrandomvalue,对随机数进行取样,总计 20MB。按照测试参数进行测试,「测试报告」如附件所示,所有项目均通过测试符合安全要求。
    • 测试结果:NIST SP 800-22-windows-ext-wini713.txt(可在文章附件中下载查看)
macOS

测试平台信息:系统 Sonoma 14.6;硬件 MacBook Pro 2020 13-inch M1

  • 桌面客户端
    • 由于 macOS 的 OneKey App 桌面端为 electron 应用依赖 Chrome 内核进行工作,通过开发者工具,在 runtime 中调用助记词随机熵生成API:crypto.getrandomvalue,对随机数进行取样,总计 20MB。按照测试参数进行测试,「测试报告」如下方附件所示,所有项目均通过测试符合安全要求。
    • 测试结果:NIST SP 800-22-macOS-desktop-macm1p.txt(可在文章附件中下载查看)
  • 浏览器插件
    • 由于浏览器插件依赖 Chrome 内核进行工作,通过开发者工具,在 runtime 中调用助记词随机熵生成 API:crypto.getrandomvalue,对随机数进行取样,总计 20MB。按照测试参数进行测试,「测试报告」如附件所示,所有项目均通过测试符合安全要求。
    • 测试结果:NIST SP 800-22-macOS-ext-macm1p.txt(可在文章附件中下载查看)
Android

测试平台信息:系统 hyperOS 1.0.4.0;硬件 Xiaomi 10s snapdragon870

  • Android 端
    • 由于 OneKey App 的 Andriod 端为 React Native 应用依赖 Native API 进行工作,在 Android 端应用调用 crypto.getrandomvalue 时实际由系统 API SecureRandom 提供服务。通过 React remote js debug,在 runtime 中调用助记词随机熵生成 API:crypto.getrandomvalue,对随机数进行取样,总计 20MB。按照测试参数进行测试,「测试报告」如附件所示,所有项目均通过测试符合安全要求。
    • 测试结果:NIST SP 800-22-android-app-andsm870.txt(可在文章附件中下载查看)
iOS

测试平台信息:系统 IOS 17.5;硬件 iPhoneX A11

  • iOS 端
    • 由于 iOS 端为React Native 应用依赖 Native API 进行工作,在 iOS 端应用调用crypto.getrandomvalue 时实际由系统 API SecRandomCopyBytes 提供服务。通过 React remote js debug,在 runtime 中调用助记词随机熵生成 API:crypto.getrandomvalue,对随机数进行取样,总计 20MB。按照测试参数进行测试,「测试报告」如附件所示,所有项目均通过测试符合安全要求。
    • 测试结果:NIST SP 800-22-iOS-app-x.txt(可在文章附件中下载查看)

测试结果附件

这篇文章有帮助吗?
0 人中有 0 人觉得有帮助