OneKey Appのランダムナンバーセキュリティテスト

この記事は、OneKey App(ソフトウェアウォレット)におけるニーモニックフレーズ生成のランダム性に関するセキュリティテストレポートを提供し、OneKey Appがサポートするすべてのオペレーティングシステム(macOS、Windows、Android、iOS)およびそれぞれのクライアント(デスクトップおよび拡張機能)に対応します。

テストの結論

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プラットフォームでは、各システムが提供する安全な乱数インターフェース SecureRandom および SecRandomCopyBytes がそれぞれ呼び出されます。
⚠️ 注意: OneKey Appは厳格なセキュリティ開発ガイドラインを採用していますが、乱数生成のセキュリティはユーザーのデバイスのOSおよびハードウェアの実装にも影響される可能性があります。

ランダムナンバーセキュリティテスト

NIST SP 800-22 FIPS 140-2

NIST SP 800-22(米国国立標準技術研究所の特別出版800-22)は、擬似乱数生成器(PRNG)のランダム性と品質を評価するための一連の統計テストセットを提供する文書です。

プロジェクト

パラメータ

Segment Length

1024000

Test Items

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エンジンに依存しています。開発者ツールを使用して、ランダム値のサンプリングには実行時に crypto.getRandomValues APIを呼び出します。累計20MBのランダム値を収集し、定義されたパラメータに従ってテストを実施し、「テストレポート」を生成しました(以下の添付ファイルを参照)。すべての項目が承認され、セキュリティ要件を満たしています。
    • テスト結果: NIST SP 800-22-windows-desktop-wini713.txt(記事の添付ファイルにて利用可能)
  • ブラウザー拡張機能
    • Chrome拡張機能はChromeエンジンに依存しています。開発者ツールを使用して、ランダム値のサンプリングには実行時に crypto.getRandomValues APIを呼び出します。累計20MBのランダム値を収集し、定義されたパラメータに従ってテストを実施し、「テストレポート」を生成しました(以下の添付ファイルを参照)。すべての項目が承認され、セキュリティ要件を満たしています。
    • テスト結果: NIST SP 800-22-windows-ext-wini713.txt(記事の添付ファイルにて利用可能)
macOS

システム: Sonoma 14.6; ハードウェア: 13インチMacBook Pro 2020 with M1

  • デスクトップクライアント
    • macOS用OneKey AppのデスクトップクライアントはElectronアプリケーションで、Chromeエンジンに依存しています。開発者ツールを使用して、ランダム値のサンプリングには実行時に crypto.getRandomValues APIを呼び出します。累計20MBのランダム値を収集し、定義されたパラメータに従ってテストを実施し、「テストレポート」を生成しました(以下の添付ファイルを参照)。すべての項目が承認され、セキュリティ要件を満たしています。
    • テスト結果: NIST SP 800-22-macOS-desktop-macm1p.txt(記事の添付ファイルにて利用可能)
  • ブラウザー拡張機能
    • Chrome拡張機能はChromeエンジンに依存しています。開発者ツールを使用して、ランダム値のサンプリングには実行時に crypto.getRandomValues APIを呼び出します。累計20MBのランダム値を収集し、定義されたパラメータに従ってテストを実施し、「テストレポート」を生成しました(以下の添付ファイルを参照)。すべての項目が承認され、セキュリティ要件を満たしています。
    • テスト結果: NIST SP 800-22-macOS-ext-macm1p.txt(記事の添付ファイルにて利用可能)
Android

システム: hyperOS 1.0.4.0; ハードウェア: Xiaomi 10s Snapdragon 870

  • Androidクライアント
    • Android用OneKey AppのAndroidクライアントは、ネイティブAPIに依存するReact Nativeアプリケーションです。Androidでは、 crypto.getRandomValues を呼び出すと、システムの SecureRandom APIが呼び出されます。ReactのリモートJSデバッガーを使用して、実行時に crypto.getRandomValues APIを呼び出してランダム値をサンプリングします。累計20MBのランダム値を収集し、定義されたパラメータに従ってテストを実施し、「テストレポート」を生成しました(以下の添付ファイルを参照)。すべての項目が承認され、セキュリティ要件を満たしています。
    • テスト結果: NIST SP 800-22-android-app-andsm870.txt(記事の添付ファイルにて利用可能)
iOS

システム: iOS 17.5; ハードウェア: iPhoneX A11

  • iOS クライアント
    • iOS用OneKey AppのiOSクライアントは、ネイティブAPIに依存するReact Nativeアプリケーションです。iOSでは、 crypto.getRandomValues を呼び出すと、システムの SecRandomCopyBytes APIが呼び出されます。ReactのリモートJSデバッガーを使用して、実行時に crypto.getRandomValues APIを呼び出してランダム値をサンプリングします。累計20MBのランダム値を収集し、定義されたパラメータに従ってテストを実施し、「テストレポート」を生成しました(以下の添付ファイルを参照)。すべての項目が承認され、セキュリティ要件を満たしています。
    • テスト結果: NIST SP 800-22-iOS-app-x.txt(記事の添付ファイルにて利用可能)

テスト結果の添付ファイル

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています