Langkau ke kandungan utama

Ujian keselamatan rawak nombor Apl OneKey

Dikemas kini semalam

Artikel ini menyediakan laporan ujian keselamatan mengenai kerawakan penjanaan mnemonik dalam Apl OneKey (dompet perisian), merangkumi semua sistem pengendalian yang disokong oleh Apl OneKey (macOS, Windows, Android, iOS) dan klien masing-masing (Desktop & Extension).

Kesimpulan

Apl OneKey menggunakan API nombor rawak yang kukuh secara kriptografi khusus platform yang disyorkan oleh garis panduan pembangunan merentasi klien Windows, macOS, iOS, dan Android, serta sambungan Chrome. Ujian dalaman mengesahkan pematuhan dengan piawaian keselamatan nombor rawak NIST SP 800-22 dan FIPS 140-2.

  • Pada platform berasaskan Chrome (Windows, macOS), API nombor pemujukan-rawak yang selamat crypto.getRandomValues yang disediakan oleh Chrome digunakan untuk menjana nombor pemujukan-rawak yang kukuh secara kriptografi.

  • Pada platform Android dan iOS berasaskan React Native, antara muka rawak selamat yang disediakan sistem SecureRandom dan SecRandomCopyBytes masing-masing dipanggil.

⚠️ Nota: Walaupun Apl OneKey mematuhi garis panduan pembangunan keselamatan dengan ketat, keselamatan penjanaan nombor rawak juga boleh dipengaruhi oleh pelaksanaan sistem pengendalian/perkakasan peranti pengguna.

Ujian Keselamatan

NIST SP 800-22 FIPS 140-2

NIST SP 800-22 (Penerbitan Khas 800-22 Institut Piawaian dan Teknologi Kebangsaan) ialah dokumen yang diterbitkan oleh Institut Piawaian dan Teknologi Kebangsaan (NIST) Amerika Syarikat, terutamanya melibatkan satu set ujian statistik untuk menguji Penjana Nombor Pemujukan-Rawak (PRNG). Ia menyediakan satu set ujian statistik untuk menilai kerawakan dan kualiti jujukan bit yang dijana oleh penjana nombor rawak.

Projek

Parameter

Panjang Segmen

1024000

Item Ujian

1 (Kesemua 15 ujian)

Ujian Kekerapan Blok - panjang blok(M)

20480

Ujian Templat Tidak Bertindih - panjang blok(m)

10

Ujian Templat Bertindih - panjang blok(m)

10

Ujian EntropiStreetMap - panjang blok(m)

10

Ujian Siri - panjang blok(m)

16

Ujian Kerumitan Linear - panjang blok(M)

5000

bitstreams

20(20*1024000bit = 20480000bit = 20MB)

Windows

Sistem: Win10 22H2; Perkakasan: i7-13700h

  • Klien Desktop

    • Klien desktop Windows untuk Apl OneKey ialah aplikasi Electron yang bergantung pada enjin Chrome. Menggunakan alat pembangun, API penjanaan entropi mnemonik crypto.getRandomValues dipanggil semasa masa jalan untuk mengambil sampel nombor rawak, berjumlah 20MB. Pengujian mengikut parameter yang ditakrifkan menghasilkan "Laporan Ujian" (lihat lampiran di bawah), di mana semua item lulus, memenuhi keperluan keselamatan.

    • Keputusan: NIST SP 800-22-windows-desktop-wini713.txt (Tersedia dalam lampiran)

  • Sambungan Pelayar

    • Sambungan Chrome bergantung pada enjin Chrome. Menggunakan alat pembangun, API penjanaan entropi mnemonik crypto.getRandomValues dipanggil semasa masa jalan untuk mengambil sampel nombor rawak, berjumlah 20MB. Pengujian mengikut parameter yang ditakrifkan menghasilkan "Laporan Ujian" (lihat lampiran di bawah), di mana semua item lulus, memenuhi keperluan keselamatan.

    • Keputusan: NIST SP 800-22-windows-ext-wini713.txt (Tersedia dalam lampiran)

macOS

Sistem: Sonoma 14.6; Perkakasan: MacBook Pro 2020 13-inci M1

  • Klien Desktop

    • Klien desktop macOS untuk Apl OneKey ialah aplikasi Electron yang bergantung pada enjin Chrome. Menggunakan alat pembangun, API penjanaan entropi mnemonik crypto.getRandomValues dipanggil semasa masa jalan untuk mengambil sampel nombor rawak, berjumlah 20MB. Pengujian mengikut parameter yang ditakrifkan menghasilkan "Laporan Ujian" (lihat lampiran di bawah), di mana semua item lulus, memenuhi keperluan keselamatan.

    • Keputusan: NIST SP 800-22-macOS-desktop-macm1p.txt (Tersedia dalam lampiran)

  • Sambungan Pelayar

    • Sambungan Chrome bergantung pada enjin Chrome. Menggunakan alat pembangun, API penjanaan entropi mnemonik crypto.getRandomValues dipanggil semasa masa jalan untuk mengambil sampel nombor rawak, berjumlah 20MB. Pengujian mengikut parameter yang ditakrifkan menghasilkan "Laporan Ujian" (lihat lampiran di bawah), di mana semua item lulus, memenuhi keperluan keselamatan.

    • Keputusan: NIST SP 800-22-macOS-ext-macm1p.txt (Tersedia dalam lampiran)

Android

Sistem hyperOS 1.0.4.0; Perkakasan Xiaomi 10s snapdragon870

  • Klien Android

    • Klien Android untuk Apl OneKey, sebagai aplikasi React Native, bergantung pada API asli. Pada Android, API sistem SecureRandom dipanggil apabila crypto.getRandomValues dipanggil dalam aplikasi. Menggunakan debug JS jauh React, API penjanaan entropi mnemonik crypto.getRandomValues dipanggil semasa masa jalan untuk mengambil sampel nombor rawak, berjumlah 20MB. Pengujian mengikut parameter yang ditakrifkan menghasilkan "Laporan Ujian" (lihat lampiran di bawah), di mana semua item lulus, memenuhi keperluan keselamatan.

    • Keputusan: NIST SP 800-22-android-app-andsm870.txt (Tersedia dalam lampiran)

iOS

Sistem: IOS 17.5; Perkakasan: iPhoneX A11

  • Klien iOS

    • Klien iOS untuk Apl OneKey, sebagai aplikasi React Native, bergantung pada API asli. Pada iOS, API sistem SecRandomCopyBytes dipanggil apabila crypto.getRandomValues dipanggil dalam aplikasi. Menggunakan debug JS jauh React, API penjanaan entropi mnemonik crypto.getRandomValues dipanggil semasa masa jalan untuk mengambil sampel nombor rawak, berjumlah 20MB. Pengujian mengikut parameter yang ditakrifkan menghasilkan "Laporan Ujian" (lihat lampiran di bawah), di mana semua item lulus, memenuhi keperluan keselamatan.

    • Keputusan: NIST SP 800-22-iOS-app-x.txt (Tersedia dalam lampiran)

FIPS 140-2 (Piawaian Penerbitan Pemprosesan Maklumat Persekutuan 140-2) ialah piawaian keselamatan komputer yang dikeluarkan oleh NIST. Ia memperincikan keperluan keselamatan untuk modul kriptografi, khususnya menumpukan pada jenis RNG, kekuatan keselamatan, benih, entropi, periodik, ujian berkala, dan ujian berterusan.

  • Perisian Pengujian: rng-tools

  • Parameter Pengujian: Tiada

  • Persekitaran Pengujian: ubuntu 24.04 arm64

  • Proses Kompilasi:

    1. Pasang gcc, automake dengan betul

    2. Jalankan ./autogen.sh

    3. Jalankan ./configure (jika berlaku ralat, konfigurasikan kebergantungan mengikut mesej ralat)

    4. Jalankan make untuk mengkompilasi fail rngd dan rngtest

    5. Jalankan ./rngtest < testfile.bin

⚠️ Nota: Fail ujian mestilah dalam format perduaan sebagai input, bukan ASCII.

Windows

Sistem: Win10 22H2; Perkakasan: i7-13700h

  • Klien Desktop

    • Klien desktop Windows untuk Apl OneKey ialah aplikasi Electron yang bergantung pada enjin Chrome. Menggunakan alat pembangun, API penjanaan entropi mnemonik crypto.getRandomValues dipanggil semasa masa jalan untuk mengambil sampel nombor rawak, berjumlah 20MB. Fail teks ditukar kepada fail perduaan, dan "Laporan Ujian" di bawah menunjukkan semua item lulus, memenuhi keperluan keselamatan.

      app-v5-randomness-fips-140-2-windows-desktop.png
  • Sambungan Pelayar

    • Sambungan Chrome bergantung pada enjin Chrome. Menggunakan alat pembangun, API penjanaan entropi mnemonik crypto.getRandomValues dipanggil semasa masa jalan untuk mengambil sampel nombor rawak, berjumlah 20MB. Fail teks ditukar kepada fail perduaan, dan "Laporan Ujian" di bawah menunjukkan 1024 pusingan diuji dengan satu pusingan Runs gagal, tetapi semua item lulus secara keseluruhan, memenuhi keperluan keselamatan.

      app-v5-randomness-fips-140-2-windows-ext.png

macOS

Sistem: Sonoma 14.6; Perkakasan: MacBook Pro 2020 13-inci M1

  • Klien Desktop

    • Klien desktop macOS untuk Apl OneKey ialah aplikasi Electron yang bergantung pada enjin Chrome. Menggunakan alat pembangun, API penjanaan entropi mnemonik crypto.getRandomValues dipanggil semasa masa jalan untuk mengambil sampel nombor rawak, berjumlah 20MB. Fail teks ditukar kepada fail perduaan, dan "Laporan Ujian" di bawah menunjukkan semua item lulus, memenuhi keperluan keselamatan.

      app-v5-randomness-fips-140-2-mac-desktop.png
  • Sambungan Pelayar

    • Sambungan Chrome bergantung pada enjin Chrome. Menggunakan alat pembangun, API penjanaan entropi mnemonik crypto.getRandomValues dipanggil semasa masa jalan untuk mengambil sampel nombor rawak, berjumlah 20MB. Fail teks ditukar kepada fail perduaan, dan "Laporan Ujian" di bawah menunjukkan semua item lulus, memenuhi keperluan keselamatan.

      app-v5-randomness-fips-140-2-mac-ext.png

Android

Sistem: hyperOS 1.0.4.0;Perkakasan: Xiaomi 10s snapdragon870

  • Klien Android

    • Klien Android untuk Apl OneKey, sebagai aplikasi React Native, bergantung pada API asli. Pada Android, API sistem SecureRandom dipanggil apabila crypto.getRandomValues dipanggil dalam aplikasi. Menggunakan debug JS jauh React, API penjanaan entropi mnemonik crypto.getRandomValues dipanggil semasa masa jalan untuk mengambil sampel nombor rawak, berjumlah 20MB. Fail teks ditukar kepada fail perduaan, dan "Laporan Ujian" di bawah menunjukkan tiga pusingan daripada 1024 gagal semua item ujian, tetapi semua item lulus secara keseluruhan, memenuhi keperluan keselamatan.

      app-v5-randomness-fips-140-2-android.png

    ⚠️ Nota: Klien Android mempunyai tiga pusingan ujian daripada 1024 di mana semua item ujian gagal. Isu ini mungkin pepijat dalam alatan rng-test dan tidak menjejaskan kesimpulan keseluruhan ujian.

iOS

Sistem iOS 17.5;Perkakasan: iPhoneX A11

  • Klien iOS

    • Klien iOS untuk Apl OneKey, sebagai aplikasi React Native, bergantung pada API asli. Pada iOS, API sistem SecRandomCopyBytes dipanggil apabila crypto.getRandomValues dipanggil dalam aplikasi. Menggunakan debug JS jauh React, API penjanaan entropi mnemonik crypto.getRandomValues dipanggil semasa masa jalan untuk mengambil sampel nombor rawak, berjumlah 20MB. Fail teks ditukar kepada fail perduaan, dan "Laporan Ujian" di bawah menunjukkan satu ujian gagal dalam Jangka Panjang daripada 1024 pusingan, tetapi semua item lulus secara keseluruhan, memenuhi keperluan keselamatan.

      app-v5-randomness-fips-140-2-ios.png

Lampiran Keputusan


Adakah ini menjawab soalan anda?