Ana içeriğe geç

OneKey Uygulaması rastgele sayı güvenliği testi

Bugün güncellendi

Bu makale, OneKey Uygulaması'ndaki (yazılım cüzdanı) anımsatıcı üretimin rastgeleliği üzerinde, OneKey Uygulaması'nın desteklediği tüm işletim sistemlerini (macOS, Windows, Android, iOS) ve ilgili istemcilerini (Masaüstü ve Tarayıcı Uzantısı) kapsayan bir güvenlik testi raporu sunmaktadı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 uyumu doğrulamaktadı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.getRandomValues kullanılır.

  • React Native tabanlı Android ve iOS platformlarında sırasıyla sistem tarafından sağlanan güvenli rastgele arayüzler SecureRandom ve SecRandomCopyBytes çağrılır.

⚠️ Not: OneKey Uygulaması güvenlik geliştirme kılavuzlarına sıkı sıkıya bağlı kalsa da, 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'nin Ulusal Standartlar ve Teknoloji Enstitüsü (NIST) tarafından yayınlanan ve öncelikle Sözde Rastgele Sayı Üreteçleri (PRNG) 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.

Proje

Parametreler

Segment Uzunluğu

1024000

Test Öğeleri

1 (Tüm 15 test)

Blok Frekans Testi - blok uzunluğu(M)

20480

Aynı Olmayan Şablon Testi - blok uzunluğu(m)

10

Tekrarlayan Ş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 motoruna dayanan bir Electron uygulamasıdır. Geliştirici araçları kullanılarak, anımsatıcı entropi üretimi API'si crypto.getRandomValues çalışma zamanında çağrılarak 20MB'lık rastgele sayılar örneklenir. Tanımlanan parametrelere göre yapılan testler, tüm öğelerin geçtiği ve güvenlik gereksinimlerini karşıladığı bir "Test Raporu" (aşağıdaki eke bakınız) sağladı.

    • Sonuçlar: NIST SP 800-22-windows-desktop-wini713.txt (Ekte mevcuttur)

  • Tarayıcı Uzantısı

    • Chrome uzantısı, Chrome motoruna dayanır. Geliştirici araçları kullanılarak, anımsatıcı entropi üretimi API'si crypto.getRandomValues çalışma zamanında çağrılarak 20MB'lık rastgele sayılar örneklenir. Tanımlanan parametrelere göre yapılan testler, tüm öğelerin geçtiği ve güvenlik gereksinimlerini karşıladığı bir "Test Raporu" (aşağıdaki eke bakınız) sağladı.

    • Sonuçlar: NIST SP 800-22-windows-ext-wini713.txt (Ekte 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 motoruna dayanan bir Electron uygulamasıdır. Geliştirici araçları kullanılarak, anımsatıcı entropi üretimi API'si crypto.getRandomValues çalışma zamanında çağrılarak 20MB'lık rastgele sayılar örneklenir. Tanımlanan parametrelere göre yapılan testler, tüm öğelerin geçtiği ve güvenlik gereksinimlerini karşıladığı bir "Test Raporu" (aşağıdaki eke bakınız) sağladı.

    • Sonuçlar: NIST SP 800-22-macOS-desktop-macm1p.txt (Ekte mevcuttur)

  • Tarayıcı Uzantısı

    • Chrome uzantısı, Chrome motoruna dayanır. Geliştirici araçları kullanılarak, anımsatıcı entropi üretimi API'si crypto.getRandomValues çalışma zamanında çağrılarak 20MB'lık rastgele sayılar örneklenir. Tanımlanan parametrelere göre yapılan testler, tüm öğelerin geçtiği ve güvenlik gereksinimlerini karşıladığı bir "Test Raporu" (aşağıdaki eke bakınız) sağladı.

    • Sonuçlar: NIST SP 800-22-macOS-ext-macm1p.txt (Ekte 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'si SecureRandom çağrılır. React uzaktan JS hata ayıklaması kullanılarak, anımsatıcı entropi üretimi API'si crypto.getRandomValues çalışma zamanında çağrılarak 20MB'lık rastgele sayılar örneklenir. Tanımlanan parametrelere göre yapılan testler, tüm öğelerin geçtiği ve güvenlik gereksinimlerini karşıladığı bir "Test Raporu" (aşağıdaki eke bakınız) sağladı.

    • Sonuçlar: NIST SP 800-22-android-app-andsm870.txt (Ekte 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'si SecRandomCopyBytes çağrılır. React uzaktan JS hata ayıklaması kullanılarak, anımsatıcı entropi üretimi API'si crypto.getRandomValues çalışma zamanında çağrılarak 20MB'lık rastgele sayılar örneklenir. Tanımlanan parametrelere göre yapılan testler, tüm öğelerin geçtiği ve güvenlik gereksinimlerini karşıladığı bir "Test Raporu" (aşağıdaki eke bakınız) sağladı.

    • Sonuçlar: NIST SP 800-22-iOS-app-x.txt (Ekte mevcuttur)

FIPS 140-2 (Federal Information Processing Standard Publication 140-2), NIST tarafından yayınlanan bir bilgisayar güvenliği standardıdır. Kriptografik modüller için güvenlik gereksinimlerini ayrıntılı olarak açıklar, özellikle RNG türlerine, güvenlik gücüne, tohum, entropi, periyodite, 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:

    1. gcc, automake'i düzgün bir şekilde kurun

    2. ./autogen.sh komutunu çalıştırın

    3. ./configure komutunu çalıştırın (hatalar oluşursa, hata mesajlarına göre bağımlılıkları yapılandırın)

    4. rngd ve rngtest dosyalarını derlemek için make komutunu çalıştırın

    5. ./rngtest < testfile.bin komutunu çalıştırın

⚠️ Not: Test dosyaları girdi olarak ikili formatta olmalıdır, 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 motoruna dayanan bir Electron uygulamasıdır. Geliştirici araçları kullanılarak, anımsatıcı entropi üretimi API'si crypto.getRandomValues çalışma zamanında çağrılarak 20MB'lık rastgele sayılar örneklenir. Metin dosyası ikili bir 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östermektedir.

      app-v5-randomness-fips-140-2-windows-desktop.png
  • Tarayıcı Uzantısı

    • Chrome uzantısı, Chrome motoruna dayanır. Geliştirici araçları kullanılarak, anımsatıcı entropi üretimi API'si crypto.getRandomValues çalışma zamanında çağrılarak 20MB'lık rastgele sayılar örneklenir. Metin dosyası ikili bir dosyaya dönüştürüldü ve aşağıdaki "Test Raporu", 1024 tur test edildiğini ve bir tur Runs'ın başarısız olduğunu gösteriyor, ancak genel olarak tüm öğeler geçti ve güvenlik gereksinimlerini karşıladı.

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

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 motoruna dayanan bir Electron uygulamasıdır. Geliştirici araçları kullanılarak, anımsatıcı entropi üretimi API'si crypto.getRandomValues çalışma zamanında çağrılarak 20MB'lık rastgele sayılar örneklenir. Metin dosyası ikili bir 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östermektedir.

      app-v5-randomness-fips-140-2-mac-desktop.png
  • Tarayıcı Uzantısı

    • Chrome uzantısı, Chrome motoruna dayanır. Geliştirici araçları kullanılarak, anımsatıcı entropi üretimi API'si crypto.getRandomValues çalışma zamanında çağrılarak 20MB'lık rastgele sayılar örneklenir. Metin dosyası ikili bir 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östermektedir.

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

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ıklaması kullanılarak, anımsatıcı entropi üretimi API'si crypto.getRandomValues çalışma zamanında çağrılarak 20MB'lık rastgele sayılar örneklenir. Metin dosyası ikili bir dosyaya dönüştürüldü ve aşağıdaki "Test Raporu", 1024 turdan üçünün tüm test öğelerini başarısız olduğunu gösteriyor, ancak genel olarak tüm öğeler geçti ve güvenlik gereksinimlerini karşıladı.

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

      ⚠️ Not: Android istemcisinde, tüm test öğelerinin başarısız olduğu 1024 deneme içinde üç deneme vardı. 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, uygulamadacrypto.getRandomValues çağrıldığında sistem API'siSecRandomCopyBytes çağrılır. React uzaktan JS hata ayıklaması kullanılarak, anımsatıcı entropi üretimi API'si crypto.getRandomValues çalışma zamanında çağrılarak 20MB'lık rastgele sayılar örneklenir. Metin dosyası ikili bir dosyaya dönüştürüldü ve aşağıdaki "Test Raporu", 1024 turdan birinde Uzun çalışma testinin başarısız olduğunu gösteriyor, ancak genel olarak tüm öğeler geçti ve güvenlik gereksinimlerini karşıladı.

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

Sonuç Edeketleri


Bu cevap sorunuzu yanıtladı mı?