Fortuna (PRNG) - Fortuna (PRNG)

Fortuna bir kriptografik olarak güvenli sözde rasgele sayı üreteci (PRNG) tarafından tasarlandı Bruce Schneier ve Niels Ferguson 2003 yılında yayınlanmıştır. Adını almıştır. Fortuna, Roma şans tanrıçası. FreeBSD için Fortuna kullanıyor / dev / random ve / dev / urandom sembolik olarak FreeBSD 11'den beri ona bağlıdır.[1] Apple işletim sistemleri 2020'nin birinci çeyreğinden beri Fortuna'ya geçti.[2]

Tasarım

Fortuna bir aile güvenli PRNG'lerin; tasarımı, uygulayıcılara açık bazı seçenekler sunar. Aşağıdaki parçalardan oluşmaktadır:

  • Jeneratörün kendisi, bir kez tohumlanmış belirsiz miktarda sözde rastgele veri üretecektir.
  • entropi Çeşitli kaynaklardan gerçekten rastgele veri toplayan ve bunu yeterli miktarda yeni rastgelelik geldiğinde üreteci yeniden beslemek için kullanan akümülatör.
  • Bilgisayarın önyüklenir yüklenmez rastgele sayılar üretmeye başlamasını sağlamak için yeterli durumu depolayan çekirdek dosya.

Jeneratör

Jeneratör herhangi bir mala dayanmaktadır blok şifreleme. Pratik Kriptografi Önerir AES, Yılan veya İki balık. Temel fikir, şifreyi sayaç modu, artan bir sayacın ardışık değerlerini şifrelemek.

128 bitlik bir blok şifresi ile bu, rastgelelikten istatistiksel olarak tanımlanabilir sapmalara neden olur; örneğin, 2 üretmek64 gerçekten rastgele 128 bitlik bloklar ortalama olarak yaklaşık bir çift özdeş blok üretir, ancak ilk 2 arasında hiç tekrarlanan blok yoktur.128 sayaç modunda 128 bitlik bir şifre ile üretilir. Bu nedenle, anahtar periyodik olarak değiştirilir: 1 MiB'den fazla veri (216 128 bitlik bloklar) anahtar değişikliği yapılmadan oluşturulur. Kitap, o zamanlar pek popüler olmayan 256 bit (veya daha büyük) blok boyutuna sahip blok şifrelerinin bu istatistiksel soruna sahip olmadığına işaret ediyor.

Anahtar ayrıca her veri talebinden sonra (küçük olsa da) değiştirilir, böylece gelecekteki bir anahtar uzlaşması önceki jeneratör çıktılarını tehlikeye atmaz. Bu özellik bazen "Hızlı Tuş Silme" veya İleri gizlilik.

Entropi akümülatörü

Entropi biriktiricisi, entropi için karmaşık (ve kaçınılmaz olarak güvenilmez) tahmin edicilere ihtiyaç duymadan "enjeksiyon" saldırılarına karşı dirençli olacak şekilde tasarlanmıştır. Birkaç entropi "havuzu" vardır; her entropi kaynağı iddia edilen entropisini havuzlar üzerinde eşit olarak dağıtır; ve (işte anahtar fikir) nJeneratörün yeniden tohumlanması, havuz k sadece kullanılırsa n 2'nin katık. Böylece khavuz sadece 1/2 kullanılırk zamanın. Daha yüksek numaralı havuzlar, başka bir deyişle, (1) yeniden beslemeye daha az katkıda bulunur, ancak (2) yeniden beslemeler arasında daha büyük miktarda entropi toplar. Yeniden besleme, belirtilen entropi havuzlarını blok şifresinin anahtarına iki yineleme kullanarak hashingleyerek gerçekleştirilir. SHA-256.

Tohumlama

Bir saldırgan kontrol edemediği sürece herşey sisteme aktığı iddia edilen entropinin kaynakları (bu durumda hiçbir algoritma onu uzlaşmadan kurtaramaz), bazı k bunun için kHavuz, yeniden beslemeler arasında, bu havuzla yeniden tohumlamanın güvenliği sağlayacağı kadar entropi toplar. Ve bu havuz, söz konusu entropi miktarıyla orantılı bir aralıkta kullanılacaktır. Bu nedenle, sistem her zaman bir enjeksiyon saldırısından kurtulur ve bunu yapmak için gereken süre, hangi entropi kaynaklarının bozuk olup hangilerinin bozulmadığını belirleyebilseydik alabileceğimiz teorik süreden en fazla sabit bir faktördür.

Bu sonuç, yeterli havuzun bulunmasına bağlıdır. Fortuna 32 havuz kullanır ve yeniden tohumlamanın saniyede en fazla 10 kez gerçekleşmesini kısıtlar. Havuzların tükenmesi, Ferguson ve Schneier'in pratik amaçlar için yeterince uzun olduğunu düşündüğü yaklaşık 13 yıl alacaktı. Daha fazla paranoyak uygulayıcı veya muazzam bir oranda rastgele veri üretmeyi ve buna bağlı olarak sık sık yeniden tohumlamayı gerektiren olanlar, daha fazla sayıda havuz kullanabilir.

Alternatifler

Fortuna öncekinden farklı Civanperçemi algoritması Schneier, Kelsey ve Ferguson ailesi, çoğunlukla entropi akümülatörünün kullanımında. Yarrow, her bir entropi kaynağına, sağlanan gerçek entropiyi tahmin etmek için bir mekanizmanın eşlik etmesini gerektirdi ve yalnızca iki havuz kullandı; ve önerilen düzenlemesi ( Civanperçemi-160) Kullanılmış SHA-1 yinelenmek yerine SHA-256.

Analiz

2014 yılında Fortuna için bir analiz ve önerilen iyileştirme yapıldı.[3]

Ayrıca bakınız

Referanslar

  1. ^ "rastgele (4)". www.freebsd.org. Alındı 2020-10-01.
  2. ^ "Rastgele sayı oluşturma". Apple Desteği. Alındı 2020-10-26.
  3. ^ Y. Dodis, A. Shamir, N. Stephens-Davidowitz, D. Wichs, "Entropinizi Nasıl Yenir ve Çok Sahip Olursunuz — Tehlikeli RNG'ler için Optimal Kurtarma Stratejileri" Kriptoloji ePrint Arşivi, Rapor 2014/167, 2014. https://eprint.iacr.org/2014/167.pdf

Genel

  • Niels Ferguson ve Bruce Schneier, Pratik Kriptografi, 2003 yılında Wiley tarafından yayınlandı. ISBN  0-471-22357-3.
  • John Viega, "Yazılımda Pratik Rasgele Sayı Üretimi", acsac, s. 129, 19. Yıllık Bilgisayar Güvenlik Uygulamaları Konferansı (ACSAC '03), 2003

Dış bağlantılar