Kriptografik olarak güvenli sözde rasgele sayı üreteci - Cryptographically secure pseudorandom number generator

Bir kriptografik olarak güvenli sözde rasgele sayı üreteci (CSPRNG) veya kriptografik sözde rasgele sayı üreteci (CPRNG)[1] bir sözde rasgele sayı üreteci (PRNG), onu kullanım için uygun kılan özelliklere sahip kriptografi. Aynı zamanda genel olarak bir şifreleme rasgele sayı üreteci (CRNG) (görmek Rastgele sayı oluşturma § "Doğru" ve sözde rastgele sayılar ).[2][3]

Çoğu kriptografik uygulamalar gerek rastgele sayılar, örneğin:

Bu uygulamalar için gerekli rastgeleliğin "kalitesi" değişir. Örneğin, bir nonce bazılarında protokoller sadece benzersizliğe ihtiyaç duyar, öte yandan, bir ustanın nesli anahtar daha fazla gibi daha yüksek bir kalite gerektirir entropi. Ve durumunda tek seferlik pedler, bilgi kuramsal Kusursuz gizlilik garantisi, yalnızca anahtar malzeme yüksek entropiye sahip gerçek bir rastgele kaynaktan geliyorsa geçerlidir ve bu nedenle herhangi bir tür sözde rasgele sayı üreteci yetersizdir.

İdeal olarak, CSPRNG'lerde rasgele sayıların üretilmesi, genellikle işletim sisteminin rasgelelik API'si olan yüksek kaliteli bir kaynaktan elde edilen entropiyi kullanır. Bununla birlikte, bu türden görünüşte bağımsız birkaç süreçte beklenmedik ilişkiler bulunmuştur. Bilgi-kuramsal bir bakış açısından, rastgelelik miktarı, üretilebilecek entropi, sistem tarafından sağlanan entropiye eşittir. Ancak bazen, pratik durumlarda, mevcut entropiden daha fazla rastgele sayıya ihtiyaç vardır. Ayrıca, çalışan bir sistemden rastgeleliği ayıklama süreçleri gerçek uygulamada yavaştır. Bu tür durumlarda, bazen bir CSPRNG kullanılabilir. Bir CSPRNG, mevcut entropiyi daha fazla bit üzerinde "uzatabilir".

Gereksinimler

Sıradan bir PRNG'nin gereksinimleri, kriptografik olarak güvenli bir PRNG ile de karşılanır, ancak bunun tersi doğru değildir. CSPRNG gereksinimleri iki gruba ayrılır: birincisi, istatistiksel olarak geçer rastgelelik testleri; ve ikincisi, ilk veya çalışma durumlarının bir kısmı bir saldırgan tarafından kullanılabilir hale geldiğinde bile ciddi saldırı altında iyi bir şekilde ayakta kalmaları.[kaynak belirtilmeli ]

  • Her CSPRNG, sonraki bit testi. Yani, ilk verilen k rastgele bir dizinin bitleri, yok polinom-zaman tahmin edebilen algoritma (k+1) başarı olasılığı göz ardı edilemeyecek şekilde% 50'den daha iyi.[4] Andrew Yao 1982'de bir sonraki bit testini geçen bir jeneratörün diğer tüm polinom-zaman istatistiksel testlerini rasgelelik için geçeceğini kanıtladı.[5]
  • Her CSPRNG, "durum güvenliği ihlal uzantılarına" dayanmalıdır. Durumunun bir kısmının veya tamamının ortaya çıkması (veya doğru tahmin edilmesi) durumunda, vahiyden önce rastgele sayı akışını yeniden oluşturmak imkansız olmalıdır. Ek olarak, çalışırken bir entropi girdisi varsa, CSPRNG durumunun gelecekteki koşullarını tahmin etmek için girdinin durumuna ilişkin bilgileri kullanmak mümkün olmamalıdır.
Örnek: Söz konusu CSPRNG, aşağıdaki parçaların hesaplanmasıyla çıktı üretirse π sırayla, ikili genişlemede bilinmeyen bir noktadan başlayarak, bir sonraki bit testini iyi bir şekilde karşılayabilir ve bu nedenle, π rastgele bir dizi olarak göründüğü için istatistiksel olarak rastgele olabilir. (Bu, π bir normal numara, örneğin.) Ancak, bu algoritma kriptografik olarak güvenli değildir; o anda hangi pi bitinin (yani algoritmanın durumu) kullanıldığını belirleyen bir saldırgan, önceki tüm bitleri de hesaplayabilecektir.

Çoğu PRNG, CSPRNG olarak kullanıma uygun değildir ve her iki durumda da başarısız olacaktır. İlk olarak, çoğu PRNG çıktıları çeşitli istatistiksel testlere rastgele görünürken, belirlenmiş ters mühendisliğe direnmiyorlar. Özel istatistiksel testler, rastgele sayıların gerçekten rastgele olmadığını gösteren böyle bir PRNG'ye özel olarak ayarlanmış olarak bulunabilir. İkincisi, çoğu PRNG için, durumları ortaya çıktığında, tüm geçmiş rastgele sayılar yeniden düzenlenebilir ve böylece bir saldırganın tüm geçmiş mesajları ve gelecekteki mesajları okumasına izin verilir.

CSPRNG'ler açıkça bu tür kriptanaliz.

Tanımlar

İçinde asimptotik ayar, deterministik polinom zaman hesaplanabilir fonksiyonlar ailesi bazı polinomlar için p, bir sözde rasgele sayı üreteci (PRNGveya PRG bazı referanslarda), girişinin uzunluğunu uzatırsa ( herhangi k) ve çıktısı sayısal olarak ayırt edilemez gerçek rastgelelikten, yani herhangi bir olasılıklı polinom zaman algoritması için Bir, ayırt edici olarak 1 veya 0 çıktısı veren,

bazı ihmal edilebilir işlev .[6] (Gösterim anlamına gelir x seçilmiş tekdüze setten rastgele X.)

Eşdeğer bir karakterizasyon vardır: Herhangi bir işlev ailesi için , G bir PRNG'dir ancak ve ancak sonraki çıktı biti G bir polinom zaman algoritması ile tahmin edilemez.[7]

Bir ileri güvenli Blok uzunluklu PRNG bir PRNG , girdi dizesi nerede uzunluk ile k dönemdeki mevcut durum benve çıktı (, ) sonraki durumdan oluşur ve sözde rastgele çıktı bloğu dönem ben, şu anlamda durum uzlaşması uzantılarına dayanacak şekilde. İlk durum tek tip olarak rastgele seçilir sonra herhangi biri için ben, sekans sayısal olarak ayırt edilemez olmalıdır içinde tek tip olarak rastgele seçilir .[8]

Herhangi bir PRNG blok uzunluğunda ileri güvenli bir PRNG'ye dönüştürülebilir çıktısını bir sonraki duruma ve gerçek çıktıya bölerek. Bu ayarlayarak yapılır içinde ve ; sonra G ileri güvenli bir PRNG'dir. bir sonraki eyalet olarak ve cari dönemin sözde rastgele çıktı bloğu olarak.

Entropi çıkarma

Santha ve Vazirani, zayıf rastgeleliğe sahip birkaç bit akışının, daha yüksek kaliteli yarı rasgele bir bit akışı üretmek için birleştirilebileceğini kanıtladı.[9]Hatta daha önce, John von Neumann kanıtladı basit algoritma herhangi bir bit akışında önemli miktarda önyargıyı kaldırabilir[10] Santha – Vazirani tasarımının herhangi bir varyasyonunu kullanmadan önce her bir bit akışına uygulanmalıdır.

Tasarımlar

Aşağıdaki tartışmada, CSPRNG tasarımları üç sınıfa ayrılmıştır:

  1. kriptografik ilkellere dayalı olanlar şifreler ve kriptografik karmalar,
  2. zor olduğu düşünülen matematiksel problemlere dayananlar ve
  3. özel amaçlı tasarımlar.

Sonuncusu, genellikle mevcut olduğunda ek entropi getirir ve kesinlikle "saf" sözde rasgele sayı üreteçleri değildir, çünkü çıktıları tamamen başlangıç ​​durumları tarafından belirlenmez. Bu ekleme, ilk durum tehlikeye atılsa bile saldırıları önleyebilir.

Kriptografik ilkelere dayalı tasarımlar

  • Güvenli blok şifreleme çalıştırılarak bir CSPRNG'ye dönüştürülebilir sayaç modu[şüpheli ]. Bu, bir seçim yapılarak yapılır rastgele anahtarı ve 0'ı şifrelemek, sonra 1'i şifrelemek, sonra 2'yi şifrelemek, vb. Sayaç, sıfırdan farklı bir rasgele sayıdan da başlatılabilir. Varsayarsak n-bit blok şifreleme çıkışı, yaklaşık 2'den sonra rastgele verilerden ayırt edilebilirn/2 şu tarihten beri bloklar doğum günü problemi, CTR modundaki bir blok şifresi hiçbir zaman aynı blokları vermezken, çarpışan bloklar bu noktada olası hale gelmelidir. 64 bitlik blok şifreleri için bu, güvenli çıktı boyutunu birkaç gigabaytla sınırlar; 128 bitlik bloklarla sınırlama, tipik uygulamaları etkilemeyecek kadar büyüktür. Ancak, tek başına kullanıldığında bir CSPRNG'nin (yukarıda belirtildiği gibi) tüm kriterlerini karşılamaz çünkü "devlet uzlaşma uzantıları" na karşı güçlü değildir: devlet bilgisiyle (bu durumda bir sayaç ve bir anahtar) şunları yapabilirsiniz: tüm geçmiş çıktıları tahmin edin.
  • Kriptografik olarak güvenli karma Bir tezgahın, bazı durumlarda iyi bir CSPRNG görevi de görebilir. Bu durumda, bu sayacın başlangıç ​​değerinin rastgele ve gizli olması da gereklidir. Bununla birlikte, bu şekilde kullanım için bu algoritmalar üzerinde çok az çalışma yapılmıştır ve en azından bazı yazarlar bu kullanıma karşı uyarmaktadır.[belirsiz ][11]
  • Çoğu akış şifreleri bir araya getirilen sözde rasgele bit akışı oluşturarak çalışın (neredeyse her zaman ÖZEL ) ile düz metin; Şifrenin bir sayaçta çalıştırılması, muhtemelen daha uzun bir süreye sahip yeni bir sözde rasgele akış döndürür. Şifreleme, yalnızca orijinal akış iyi bir CSPRNG ise güvenli olabilir, ancak bu zorunlu değildir (bkz. RC4 şifresi ). Yine, ilk durum gizli tutulmalıdır.

Sayı teorik tasarımlar

  • Blum Blum Shub algoritmanın zorluğuna dayalı bir güvenlik kanıtı vardır. ikinci dereceden kalıntı problemi. Bu problemi çözmenin bilinen tek yolu modülü çarpanlarına ayırmak olduğu için, genellikle tamsayı çarpanlara ayırma Blum Blum Shub algoritması için koşullu bir güvenlik kanıtı sağlar. Ancak algoritma çok verimsizdir ve bu nedenle aşırı güvenlik gerekmedikçe pratik değildir.
  • Blum – Micali algoritması zorluğuna dayalı bir güvenlik kanıtı vardır. ayrık logaritma problemi ama aynı zamanda çok verimsiz.
  • Daniel Brown Certicom için 2006 güvenlik kanıtı yazdı Dual_EC_DRBG, varsayılan sertliğe göre Karar Diffie-Hellman varsayımı, x-logaritma sorunu, ve kesik nokta problemi. 2006 kanıtı açıkça daha düşük bir outlen[açıklama gerekli ] Dual_EC_DRBG standardına göre ve Dual_EC_DRBG standardındaki P ve Q'nun (2013 yılında muhtemelen NSA tarafından arka kapıya gireceği ortaya çıkmıştır) arka kapısız değerlerle değiştirilmiştir.

Özel tasarımlar

Kriptografik olarak güvenli olacak şekilde tasarlanmış bir dizi pratik PRNG vardır.

Açıkçası, teknik kolaylıkla herhangi bir blok şifresine genelleştirilebilir; AES önerildi.[21]

Standartlar

Birkaç CSPRNG standartlaştırılmıştır. Örneğin,

Bu geri çekilen standardın dört PRNG'si vardır. Bunlardan ikisi tartışmasız ve kanıtlanmış: Hash_DRBG adlı CSPRNG'ler[22] ve HMAC_DRBG.[23]
Bu standarttaki üçüncü PRNG, CTR_DRBG, bir blok şifreleme koşmak sayaç modu. Tartışmasız bir tasarıma sahiptir ancak saldırıyı ayırt etme açısından daha zayıf olduğu kanıtlanmıştır. Güvenlik seviyesi Bu PRNG'den çıkan bit sayısı, temeldeki blok şifresinin blok büyüklüğünün bit cinsinden gücüne ikiden fazla olduğunda temeldeki blok şifresinin değeri.[24]
Bu PRNG'den çıkan maksimum bit sayısı 2'ye eşit olduğundablok boyutu, ortaya çıkan çıktı, anahtar boyutunun üretmesi beklenen matematiksel olarak beklenen güvenlik düzeyini sağlar, ancak çıktının gerçek bir rasgele sayı üretecinden ayırt edilemez olmadığı gösterilir.[24] Bu PRNG'den çıkan maksimum bit sayısı ondan daha az olduğunda, beklenen güvenlik seviyesi iletilir ve çıktı gerçek bir rasgele sayı üretecinden ayırt edilemez görünür.[24]
Bir sonraki revizyonda, CTR_DRBG için iddia edilen güvenlik gücünün, üretme taleplerinin toplam sayısının ve üretme talebi başına sağlanan bitlerin sınırlandırılmasına bağlı olduğu belirtilmektedir.
Bu standarttaki dördüncü ve son PRNG, Dual_EC_DRBG. Kriptografik olarak güvenli olmadığı görülmüştür ve bir kleptografik NSA arka kapısı.[25]
  • NIST SP 800-90A Rev.1: Bu, esasen Dual_EC_DRBG kaldırılmış NIST SP 800-90A'dır ve geri çekilen standardın yerine geçer.
  • ANSI X9.17-1985 Ek C
  • ANSI X9.31-1998 Ek A.2.4
  • ANSI X9.62-1998 Ek A.4, ANSI X9.62-2005 tarafından kullanımdan kaldırılmıştır, Ek D (HMAC_DRBG)

İyi referans tarafından tutulur NIST.

Yeni CSPRNG tasarımlarının istatistiksel testi için standartlar da vardır:

Dual_EC_DRBG PRNG'de NSA kleptografik arka kapı

Gardiyan ve New York Times 2013 yılında Ulusal Güvenlik Ajansı (NSA) bir arka kapı içine sözde rasgele sayı üreteci (PRNG) / NIST SP 800-90A NSA'nın, şifrelenmiş materyalin şifresini kolayca çözmesine izin veren Dual_EC_DRBG. Her iki makale de rapor ediyor[26][27] bağımsız güvenlik uzmanlarının uzun süredir şüphelendiği gibi,[28] NSA, CSPRNG standardı 800-90'a zayıflıklar getiriyor; bu, Guardian'a sızdırılan çok gizli belgelerden biri tarafından ilk kez onaylandı. Edward Snowden. NSA, 2006 yılında dünya çapında kullanım için onaylanan NIST taslak güvenlik standardının kendi versiyonunu almak için gizlice çalıştı. Sızdırılan belgede "sonunda NSA tek editör haline geldi" yazıyor. Bilinen potansiyele rağmen kleptografik arka kapı ve Dual_EC_DRBG ile bilinen diğer önemli eksiklikler, RSA Güvenliği 2013 yılında arka kapı onaylanana kadar Dual_EC_DRBG kullanmaya devam etti.[29] RSA Güvenliği bunu yapmak için NSA'dan 10 milyon dolarlık bir ödeme aldı.[30]

Güvenlik kusurları

DUHK saldırısı

23 Ekim 2017'de, Shaanan Cohney, Matthew Green, ve Nadia Heninger, kriptograflar at Pensilvanya Üniversitesi ve Johns Hopkins Üniversitesi DUHK (Sabit Kodlu Anahtarları Kullanma) saldırısının ayrıntılarını yayınladı WPA2 Donanım satıcılarının ANSI X9.31 RNG algoritması için ANSI X9.31 Random Number Generator kullanımıyla bağlantılı olarak sabit kodlanmış bir çekirdek anahtar kullandığı durumlarda, bir saldırgan şifreleme parametrelerinin geri kalanını keşfetmek ve sonuç çıkarmak için şifrelenmiş verilere kaba kuvvet uygulayabilir web oturumlarını şifrelemek için kullanılan ana şifreleme anahtarı veya sanal özel ağ (VPN) bağlantıları. "[31][32]

Japon MOR şifreleme makinesi

Sırasında Dünya Savaşı II Japonya diplomatik iletişim için kullanılan bir şifre makinesi kullandı; Amerika Birleşik Devletleri başardı kır ve mesajlarını oku Çoğunlukla kullanılan "anahtar değerlerinin" yeterince rastgele olmaması nedeniyle.

Referanslar

  1. ^ Huang, Andrew (2003). Xbox'ı Hacklemek: Ters Mühendisliğe Giriş. Nişasta Presi Serisi Yok. Nişasta Presi Yok. s.111. ISBN  9781593270292. Alındı 2013-10-24. [...] anahtar akışı oluşturucu [...] bir kriptografik sözde rasgele sayı üreteci (CPRNG) olarak düşünülebilir.
  2. ^ Dufour, Cédric. "Sanal makinelerde entropi ve uygun rastgele sayı üretimi nasıl sağlanır". Exoscale.
  3. ^ "/ dev / random Linux 5.6 ile Daha Çok / dev / urandom - Phoronix". www.phoronix.com.
  4. ^ Katz, Jonathan; Lindell Yehuda (2008). Modern Kriptografiye Giriş. CRC basın. s.70. ISBN  978-1584885511.
  5. ^ Andrew Chi-Chih Yao. Trapdoor fonksiyonlarının teorisi ve uygulamaları. 23. IEEE Bilgisayar Biliminin Temelleri Sempozyumu Bildirilerinde, 1982.
  6. ^ Goldreich, Oded (2001), Kriptografinin temelleri I: Temel Araçlar, Cambridge: Cambridge University Press, ISBN  978-0-511-54689-1, def 3.3.1.
  7. ^ Goldreich, Oded (2001), Kriptografinin temelleri I: Temel Araçlar, Cambridge: Cambridge University Press, ISBN  978-0-511-54689-1Teorem 3.3.7.
  8. ^ Dodis, Yevgeniy, Ders 5 Kriptografiye Giriş Notları (PDF), alındı 3 Ocak 2016, def 4.
  9. ^ Miklos Santha, Umesh V. Vazirani (1984-10-24). "Biraz rastgele kaynaklardan yarı rastgele diziler oluşturma" (PDF). 25. IEEE Bilgisayar Biliminin Temelleri Sempozyumu Bildirileri. Kaliforniya Üniversitesi. s. 434–440. ISBN  0-8186-0591-X. Alındı 2006-11-29.
  10. ^ John von Neumann (1963-03-01). "Rastgele rakamlarla bağlantılı olarak kullanım için çeşitli teknikler". John von Neumann'ın Toplu Eserleri. Pergamon Basın. s. 768–770. ISBN  0-08-009566-6.
  11. ^ Adam Young, Moti Yung (2004-02-01). Kötü Amaçlı Kriptografi: Kriptovirolojiyi Açığa Çıkarma. Bölüm 3.2: John Wiley & Sons. s. 416. ISBN  978-0-7645-4975-5.CS1 Maint: konum (bağlantı)
  12. ^ "Arc4random.c'nin CVS günlüğü". CVS. 1 Ekim 2013.
  13. ^ "Arc4random.c'nin CVS günlüğü". CVS. 16 Kasım 2014.
  14. ^ "FreeBSD 12.0-RELEASE Sürüm Notları: Çalışma Zamanı Kitaplıkları ve API". FreeBSD.org. 5 Mart 2019. Alındı 24 Ağustos 2019.
  15. ^ "Random.c'nin Github kaydı". Github. 2 Temmuz 2016.
  16. ^ "Kriptografik Uygulamalar için Rastgele ve Sahte Rastgele Sayı Üreteçleri için İstatistiksel Test Paketi" (PDF). Özel Yayın. NIST. Nisan 2010.
  17. ^ Poorghanad, A .; Sadr, A .; Kashanipour, A. (Mayıs 2008). "Evrimsel Yöntemleri Kullanarak Yüksek Kaliteli Sözde Rastgele Sayı Üretme" (PDF). Hesaplamalı İstihbarat ve Güvenlik IEEE Kongresi. 9: 331–335.
  18. ^ Kleidermacher, David; Kleidermacher, Mike (2012). Gömülü Sistem Güvenliği: Güvenli ve Güvenli Yazılım ve Sistem Geliştirme İçin Pratik Yöntemler. Elsevier. s. 256. ISBN  9780123868862.
  19. ^ Cox, George; Dike, Charles; Johnston, DJ (2011). "Intel’in Dijital Rastgele Sayı Üreticisi (DRNG)" (PDF). Alıntı dergisi gerektirir | günlük = (Yardım)
  20. ^ Menezes, Alfred; van Oorschot, Paul; Vanstone, Scott (1996). "Bölüm 5: Sözde Rastgele Bitler ve Diziler" (PDF). Uygulamalı Kriptografi El Kitabı. CRC Basın.
  21. ^ Genç Adam; Yung, Moti (2004-02-01). Kötü Amaçlı Kriptografi: Kriptovirolojiyi Açığa Çıkarma. Bölüm 3.5.1: John Wiley & Sons. ISBN  978-0-7645-4975-5.CS1 Maint: konum (bağlantı)
  22. ^ Kan, Wilson (4 Eylül 2007). "NIST DRBG'lerde Temel Varsayımların Analizi" (PDF). Alındı 19 Kasım 2016.
  23. ^ Ye, Katherine Qinru (Nisan 2016). "Notorious PRG: HMAC-DRBG sözde rasgele sayı oluşturucunun resmi doğrulaması" (PDF). Alındı 19 Kasım 2016.
  24. ^ a b c Campagna, Matthew J. (1 Kasım 2006). "NIST Kod Kitabı Tabanlı Belirleyici Rastgele Bit Üreticisi için Güvenlik Sınırları" (PDF). Alındı 19 Kasım 2016.
  25. ^ Perlroth, Nicole (10 Eylül 2013). "Devlet, Şifreleme Standartlarına Güveni Geri Getirmek İçin Adımları Açıkladı". New York Times. Alındı 19 Kasım 2016.
  26. ^ James Borger; Glenn Greenwald (6 Eylül 2013). "Açıklandı: ABD ve Birleşik Krallık casus ajanslarının internet gizliliği ve güvenliğini nasıl mağlup ettiği". Gardiyan. Gardiyan. Alındı 7 Eylül 2013.
  27. ^ Nicole Perlroth (5 Eylül 2013). "N.S.A. Web'de Gizlilikle İlgili Temel Güvenlik Önlemlerini Çözebilir". New York Times. Alındı 7 Eylül 2013.
  28. ^ Bruce Schneier (15 Kasım 2007). "NSA, Yeni Şifreleme Standardına Gizli Bir Arka Kapı Sağladı mı?". Kablolu. Alındı 7 Eylül 2013.
  29. ^ Matthew Green. "RSA, geliştiricileri RSA ürünlerini kullanmamaları konusunda uyarıyor".
  30. ^ Joseph Menn (20 Aralık 2013). "Münhasır: Gizli sözleşme NSA ile güvenlik sektörünün öncüsünü bağladı". Reuters.
  31. ^ Shaanan Cohney; Matthew D. Green; Nadia Heninger. "Eski RNG uygulamalarına karşı pratik durum kurtarma saldırıları" (PDF). duhkattack.com.
  32. ^ "DUHK Crypto Attack, Şifreleme Anahtarlarını Kurtarır, VPN Bağlantılarını Ortaya Çıkarır". slashdot.org. Alındı 25 Ekim 2017.

Dış bağlantılar