Ana içeriğe geç

OneKey Uygulaması rastgele sayı güvenlik testi

Bu hafta güncellendi

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.

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'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'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-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'si SecRandomCopyBytesçağrılır. React uzaktan JS hata ayıklama 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. 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:

    1. gcc, automake düzgünce yükleyin

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

    3. ./configure'ü ç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'i çalıştırın

    5. ./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.

      app-v5-randomness-fips-140-2-windows-desktop.png
  • 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ı.

      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 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.

      app-v5-randomness-fips-140-2-mac-desktop.png
  • 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.

      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ıklama 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 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ı.

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

    ⚠️ 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, uygulamadacrypto.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'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 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ı.

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

Sonuç Ekleri


Bu cevap sorunuzu yanıtladı mı?