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.getRandomValuesyang 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
SecureRandomdanSecRandomCopyBytesmasing-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.
Perisian Pengujian: Set Ujian Statistik NIST SP 800-22
Persekitaran Pengujian: macOS 14.5
Parameter Pengujian:
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.getRandomValuesdipanggil 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.getRandomValuesdipanggil 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.getRandomValuesdipanggil 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.getRandomValuesdipanggil 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
SecureRandomdipanggil apabilacrypto.getRandomValuesdipanggil dalam aplikasi. Menggunakan debug JS jauh React, API penjanaan entropi mnemonikcrypto.getRandomValuesdipanggil 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
SecRandomCopyBytesdipanggil apabilacrypto.getRandomValuesdipanggil dalam aplikasi. Menggunakan debug JS jauh React, API penjanaan entropi mnemonikcrypto.getRandomValuesdipanggil 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:
Pasang gcc, automake dengan betul
Jalankan
./autogen.shJalankan
./configure(jika berlaku ralat, konfigurasikan kebergantungan mengikut mesej ralat)Jalankan
makeuntuk mengkompilasi fail rngd dan rngtestJalankan
./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.getRandomValuesdipanggil 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.
Sambungan Pelayar
Sambungan Chrome bergantung pada enjin Chrome. Menggunakan alat pembangun, API penjanaan entropi mnemonik
crypto.getRandomValuesdipanggil 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.
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.getRandomValuesdipanggil 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.
Sambungan Pelayar
Sambungan Chrome bergantung pada enjin Chrome. Menggunakan alat pembangun, API penjanaan entropi mnemonik
crypto.getRandomValuesdipanggil 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.
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.getRandomValuesdipanggil dalam aplikasi. Menggunakan debug JS jauh React, API penjanaan entropi mnemonikcrypto.getRandomValuesdipanggil 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.
⚠️ 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
SecRandomCopyBytesdipanggil apabilacrypto.getRandomValuesdipanggil dalam aplikasi. Menggunakan debug JS jauh React, API penjanaan entropi mnemonikcrypto.getRandomValuesdipanggil 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.
Lampiran Keputusan
