Bu makale, OneKey Uygulamasındaki (yazılım cüzdanı) anımsatıcı oluşturmanın rastgeleliği üzerine bir güvenlik testi raporu sunmaktadır. Rapor, OneKey Uygulamasının desteklediği tüm işletim sistemlerini (macOS, Windows, Android, iOS) ve ilgili istemcilerini (Masaüstü ve Uzantı) kapsamaktadır.
Sonuç
OneKey Uygulaması, Windows, macOS, iOS ve Android istemcilerinin yanı sıra Chrome uzantısında da geliştirme kılavuzları tarafından önerilen platforma özgü kriptografik olarak güçlü rastgele sayı API'lerini kullanır. Dahili testler, NIST SP 800-22 ve FIPS 140-2 rastgele sayı güvenlik standartlarına uyumluluğu doğrulamıştır.
Chrome tabanlı platformlarda (Windows, macOS), kriptografik olarak güçlü sözde rastgele sayılar üretmek için Chrome tarafından sağlanan güvenli sözde rastgele sayı API'si
crypto.getRandomValueskullanılır.React Native tabanlı Android ve iOS platformlarında sırasıyla sistem tarafından sağlanan güvenli rastgele arayüzler
SecureRandomveSecRandomCopyBytesçağrılır.
⚠️ Not: OneKey Uygulaması güvenlik geliştirme kılavuzlarına sıkı sıkıya bağlı kalmasına rağmen, rastgele sayı üretiminin güvenliği kullanıcının cihazının işletim sistemi/donanım uygulaması tarafından da etkilenebilir.
Güvenlik Testi
NIST SP 800-22 FIPS 140-2
NIST SP 800-22 (National Institute of Standards and Technology Special Publication 800-22) Amerika Birleşik Devletleri Ulusal Standartlar ve Teknoloji Enstitüsü (NIST) tarafından yayınlanan ve öncelikle Rastgele Sayı Üreteçlerini (PRNG) test etmek için istatistiksel bir test paketi içeren bir belgedir. Rastgele sayı üreteçleri tarafından üretilen bit dizilerinin rastgeleliğini ve kalitesini değerlendirmek için bir dizi istatistiksel test sağlar.
Test Yazılımı: NIST SP 800-22 İstatistiksel Test Paketi
Test Ortamı: macOS 14.5
Test Parametreleri:
Proje
|
Parametreler
|
Segment Uzunluğu
|
1024000
|
Test Öğeleri
|
1 (Tüm 15 test)
|
Blok Frekans Testi - blok uzunluğu(M)
|
20480
|
Örtüşmeyen Şablon Testi - blok uzunluğu(m)
|
10
|
Örtüşen Şablon Testi - blok uzunluğu(m)
|
10
|
Yaklaşık Entropi Testi - blok uzunluğu(m)
|
10
|
Seri Test - blok uzunluğu(m)
|
16
|
Doğrusal Karmaşıklık Testi - blok uzunluğu(M)
|
5000
|
bit akışları
|
20(20*1024000 bit = 20480000 bit = 20MB)
|
Windows
Sistem: Win10 22H2; Donanım: i7-13700h
Masaüstü İstemcisi
OneKey Uygulamasının Windows masaüstü istemcisi, Chrome altyapısına dayanan bir Electron uygulamasıdır. Geliştirici araçları kullanılarak, çalışma zamanında kriptografik olarak güçlü sözde rastgele sayılar örneklemek için anımsatıcı entropisi oluşturma API'si
crypto.getRandomValuesçağrılır ve toplam 20MB'ye ulaşır. Tanımlanan parametrelere göre yapılan testler, tüm öğelerin geçtiği ve güvenlik gereksinimlerini karşıladığı bir "Test Raporu" vermiştir (aşağıdaki ekte görülebilir).Sonuçlar: NIST SP 800-22-windows-desktop-wini713.txt (Ek bölümünde mevcuttur)
Tarayıcı Uzantısı
Chrome uzantısı Chrome altyapısına dayanmaktadır. Geliştirici araçları kullanılarak, çalışma zamanında kriptografik olarak güçlü sözde rastgele sayılar örneklemek için anımsatıcı entropisi oluşturma API'si
crypto.getRandomValuesçağrılır ve toplam 20MB'ye ulaşır. Tanımlanan parametrelere göre yapılan testler, tüm öğelerin geçtiği ve güvenlik gereksinimlerini karşıladığı bir "Test Raporu" vermiştir (aşağıdaki ekte görülebilir).Sonuçlar: NIST SP 800-22-windows-ext-wini713.txt (Ek bölümünde mevcuttur)
macOS
Sistem: Sonoma 14.6; Donanım: MacBook Pro 2020 13 inç M1
Masaüstü İstemcisi
OneKey Uygulamasının macOS masaüstü istemcisi, Chrome altyapısına dayanan bir Electron uygulamasıdır. Geliştirici araçları kullanılarak, çalışma zamanında kriptografik olarak güçlü sözde rastgele sayılar örneklemek için anımsatıcı entropisi oluşturma API'si
crypto.getRandomValuesçağrılır ve toplam 20MB'ye ulaşır. Tanımlanan parametrelere göre yapılan testler, tüm öğelerin geçtiği ve güvenlik gereksinimlerini karşıladığı bir "Test Raporu" vermiştir (aşağıdaki ekte görülebilir).Sonuçlar: NIST SP 800-22-macOS-desktop-macm1p.txt (Ek bölümünde mevcuttur)
Tarayıcı Uzantısı
Chrome uzantısı Chrome altyapısına dayanmaktadır. Geliştirici araçları kullanılarak, çalışma zamanında kriptografik olarak güçlü sözde rastgele sayılar örneklemek için anımsatıcı entropisi oluşturma API'si
crypto.getRandomValuesçağrılır ve toplam 20MB'ye ulaşır. Tanımlanan parametrelere göre yapılan testler, tüm öğelerin geçtiği ve güvenlik gereksinimlerini karşıladığı bir "Test Raporu" vermiştir (aşağıdaki ekte görülebilir).Sonuçlar: NIST SP 800-22-macOS-ext-macm1p.txt (Ek bölümünde mevcuttur)
Android
Sistem: hyperOS 1.0.4.0; Donanım: Xiaomi 10s snapdragon870
Android İstemcisi
React Native uygulaması olan OneKey Uygulamasının Android istemcisi yerel API'lere dayanır. Android'de, uygulamada
crypto.getRandomValuesçağrıldığında sistem API'siSecureRandomçağrılır. React uzaktan JS hata ayıklama kullanılarak, çalışma zamanında anımsatıcı entropisi oluşturma API'sicrypto.getRandomValuesçağrılır ve toplam 20MB'ye ulaşır. Tanımlanan parametrelere göre yapılan testler, tüm öğelerin geçtiği ve güvenlik gereksinimlerini karşıladığı bir "Test Raporu" vermiştir (aşağıdaki ekte görülebilir).Sonuçlar: NIST SP 800-22-android-app-andsm870.txt (Ek bölümünde mevcuttur)
iOS
Sistem: IOS 17.5; Donanım: iPhoneX A11
iOS İstemcisi
React Native uygulaması olan OneKey Uygulamasının iOS istemcisi yerel API'lere dayanır. iOS'ta, uygulamada
crypto.getRandomValuesçağrıldığında sistem API'siSecRandomCopyBytesçağrılır. React uzaktan JS hata ayıklama kullanılarak, çalışma zamanında anımsatıcı entropisi oluşturma API'sicrypto.getRandomValuesçağrılır ve toplam 20MB'ye ulaşır. Tanımlanan parametrelere göre yapılan testler, tüm öğelerin geçtiği ve güvenlik gereksinimlerini karşıladığı bir "Test Raporu" vermiştir (aşağıdaki ekte görülebilir).Sonuçlar: NIST SP 800-22-iOS-app-x.txt (Ek bölümünde mevcuttur)
FIPS 140-2 (Federal Information Processing Standard Publication 140-2) NIST tarafından yayınlanan bir bilgisayar güvenlik standardıdır. Kriptografik modüller için güvenlik gereksinimlerini detaylandırır, özellikle RNG türleri, güvenlik gücü, tohum, entropi, periyodiklik, periyodik testler ve sürekli testlere odaklanır.
Test Yazılımı: rng-tools
Test Parametreleri: Yok
Test Ortamı: ubuntu 24.04 arm64
Derleme Süreci:
gcc, automake düzgünce yükleyin
./autogen.sh'yi çalıştırın./configure'ü çalıştırın (hatalar oluşursa, hata mesajlarına göre bağımlılıkları yapılandırın)rngd ve rngtest dosyalarını derlemek için
make'i çalıştırın./rngtest < testfile.bin'i çalıştırın
⚠️ Not: Test dosyaları girdiler olarak ikili formatta olmalı, ASCII formatında değil.
Windows
Sistem: Win10 22H2; Donanım: i7-13700h
Masaüstü İstemcisi
OneKey Uygulamasının Windows masaüstü istemcisi, Chrome altyapısına dayanan bir Electron uygulamasıdır. Geliştirici araçları kullanılarak, çalışma zamanında anımsatıcı entropisi oluşturma API'si
crypto.getRandomValuesçağrılır ve toplam 20MB'ye ulaşır. Metin dosyası ikili dosyaya dönüştürüldü ve aşağıdaki "Test Raporu" tüm öğelerin geçtiğini ve güvenlik gereksinimlerini karşıladığını gösteriyor.
Tarayıcı Uzantısı
Chrome uzantısı Chrome altyapısına dayanmaktadır. Geliştirici araçları kullanılarak, çalışma zamanında anımsatıcı entropisi oluşturma API'si
crypto.getRandomValuesçağrılır ve toplam 20MB'ye ulaşır. Metin dosyası ikili dosyaya dönüştürüldü ve aşağıdaki "Test Raporu" 1024 tur test edildiğini ve bir tur Koşumunun başarısız olduğunu gösteriyor, ancak genel olarak tüm öğeler geçti ve güvenlik gereksinimlerini karşıladı.
macOS
Sistem: Sonoma 14.6; Donanım: MacBook Pro 2020 13 inç M1
Masaüstü İstemcisi
OneKey Uygulamasının macOS masaüstü istemcisi, Chrome altyapısına dayanan bir Electron uygulamasıdır. Geliştirici araçları kullanılarak, çalışma zamanında anımsatıcı entropisi oluşturma API'si
crypto.getRandomValuesçağrılır ve toplam 20MB'ye ulaşır. Metin dosyası ikili dosyaya dönüştürüldü ve aşağıdaki "Test Raporu" tüm öğelerin geçtiğini ve güvenlik gereksinimlerini karşıladığını gösteriyor.
Tarayıcı Uzantısı
Chrome uzantısı Chrome altyapısına dayanmaktadır. Geliştirici araçları kullanılarak, çalışma zamanında anımsatıcı entropisi oluşturma API'si
crypto.getRandomValuesçağrılır ve toplam 20MB'ye ulaşır. Metin dosyası ikili dosyaya dönüştürüldü ve aşağıdaki "Test Raporu" tüm öğelerin geçtiğini ve güvenlik gereksinimlerini karşıladığını gösteriyor.
Android
Sistem: hyperOS 1.0.4.0;Donanım: Xiaomi 10s snapdragon870
Android İstemcisi
React Native uygulaması olan OneKey Uygulamasının Android istemcisi yerel API'lere dayanır. Android'de, uygulamada
crypto.getRandomValuesçağrıldığında sistem API'si SecureRandom çağrılır. React uzaktan JS hata ayıklama kullanılarak, çalışma zamanında anımsatıcı entropisi oluşturma API'sicrypto.getRandomValuesçağrılır ve toplam 20MB'ye ulaşır. Metin dosyası ikili dosyaya dönüştürüldü ve aşağıdaki "Test Raporu" 1024 turdan üçünde tüm test öğelerinin başarısız olduğunu gösteriyor, ancak genel olarak tüm öğeler geçti ve güvenlik gereksinimlerini karşıladı.
⚠️ Not: Android istemcisinde 1024 turdan üçünde tüm test öğeleri başarısız oldu. Bu sorun, rng-test aracındaki bir hata olabilir ve testin genel sonucunu etkilemez.
iOS
Sistem iOS 17.5;Donanım: iPhoneX A11
iOS İstemcisi
React Native uygulaması olan OneKey Uygulamasının iOS istemcisi yerel API'lere dayanır. iOS'ta, uygulamada
crypto.getRandomValuesçağrıldığında sistem API'siSecRandomCopyBytesçağrılır. React uzaktan JS hata ayıklama kullanılarak, çalışma zamanında anımsatıcı entropisi oluşturma API'sicrypto.getRandomValuesçağrılır ve toplam 20MB'ye ulaşır. Metin dosyası ikili dosyaya dönüştürüldü ve aşağıdaki "Test Raporu" 1024 turdan birinde Uzun koşu testinde bir başarısızlık gösteriyor, ancak genel olarak tüm öğeler geçti ve güvenlik gereksinimlerini karşıladı.
Sonuç Ekleri
