Gerçek rassal sayı üreteci

Programlama alanında kullanılan donanım rassal sayı üreteci(gerçek rassal sayı üreteci, GRSÜ)  bilgisayar programı kullanmayarak, fiziksel bir işleyiş ile rassal sayı üretimi için kullanılır. Bu tip cihazlar genel olarak mikroskobik olay tabanlı, istatistiksel olarak rassal gürültü sinyalleri içeren; ısıl gürültü, fotoelektrik etkisi kullanan hüzme bölücü ve diğer kuantum etkisi içeren olayları kullanır. Bu stokastik süreçler, teoride önceden kestirilemez ve teorinin öne sürdüğü sava göre  deneysel test sonuçlarına tabiidir. Bir donanım rassal sayı üreteci genel olarak bir tip fiziksel bir gücü elektrik sinyaline dönüştürmek için güç çevirici, rassal dalgalanma genliklerini ölçülebilir seviyelere getirebilmek için güç yükselteç ve diğer elektrik devreleri ve de çıkışı sayısal bir veriye dönüştürebilmek için bir çeşit analog sayısal çevirici içerir. Genel olarak elde edilen sayı ikili sayı sisteminin elemanları olan 0 veya 1 dir. Arka arkaya alınan rassal değişen sayı örnekleri sayesinde sıralı olarak rassal sayılar elde edilir.
Güvenli veri aktarımında oluşturulan kripto anahtarları için ihtiyaç duyulan donanım rassal sayı üretecinin ana kullanım alanı kriptografidir. Ayrıca, Güvenli Yuva Katmanı(SSL) gibi internet şifreleme protokollerinde yaygın olarak kullanılmaktadır.
Donanım rassal sayı üreteçleri yazı tura veya zar atmak, rulet tekerleği çevirmek ve piyango makineleri gibi rassal makro işleyişler kullanılarak da inşa edilebilir. Bu olaylardaki kestirilemezlik, kararsız dinamik sistemler ve de kaos teori ile açıklanabilir. Newton mekaniklerine göre makro işleyişler rassal olamamasına rağmen iyi tasarlamış bir rulet tekerleğinin sonucu pratik olarak önceden belirlenemez. Çünkü sonuç her kullanışta çok hassas başlangıç değerlerine bağlıdır.
Zar genel olarak kumar içinde oyunun (Örneğin; rol yapma oyunları) olasılık katan parçası olarak kullanılmasına rağmen Viktorya dönemi bilim adamlarından Francis Galton zarın bilimsel amaçlı rassal sayılar üretmek için kullanılabilmesi için 1980 yılında bir yol tanımlamıştır.
Donanım Rassal Sayı Üreteçleri birim sürede sınırlı sayıda sayı üretebilmektedirler. Veri üretim hızını arttırabilmek adına; sözde rastlantısal çıkış dizisini oluşturan kriptolojik olarak güvenli sözde rastlantısal sayı üretecine 'tohum' yaratılır. 

Kullanım

Kestirilemez rassal sayılar öncelikle kumar konsepti içerisinde, zar, oyun kartları, rulet tekerlekleri gibi cihazlar icat edilerek kullanılmıştır. Adil olarak üretilmiş rassal sayılar elektronik kumar için çok önemlidir. Üretiliş yöntemlerinin kontrolleri için kamu tarafından oyun komiteleri kurulabilir.
Rassal sayılar aynı zamanda kumar dışında amaçlar için de kullanılır. Matematiksel doğrulukları, kamuoyu yoklamalarında ve adaletin rastlantısal yakınsallık ile sağlandığı jüri üyeleri seçimleri ve ordu giriş seçimlerinde de kullanılır.

Kriptografi

Donanım rassal sayı üreteçlerinin ana kullanımı veri şifreleme alanıdır. Örnek olarak kriptografi anahtarları ile veri şifrelenmesi gösterilebilir. Rassal sayılar üretmede kullanılan bilgisayar programlarından olan sözde rastlantısal sayı üreteçlerine(SRSÜ) göre daha güvenilir bir alternatif oluşturular. SRSÜ'ler rassal olmayan bir algoritma kullanarak sayı serisini oluştururlar.  Bu sözde rastlantısal sayı algoritmaları istatistiksel desen testlerini geçseler de rassal olmayan algoritmayı ve başlangıç koşullarını bilerek ,ki buna tohum denir, çıkış önceden bilinebilir. Rassal sayının bu yöntemle önceden bilinebilmesinden dolayı bu sayılarla şifrelenmiş veriler kripto analizlerine savunmasızdırlar. Donanım rassal sayı üreteçleri kestirimi mümkün olmayan sayılar oluşturduklarından veri şifrelemek için en iyi güvenilirliği sağlar.

İlk Çalışmalar

İlk zamanlarda rassal sayı üretiminde kullanılan yöntemler keno oynayan veya piyango çeken makinelerin varyasyonundan geçiyordu. Bu method karışık numaralandırılmış masa tenisi toplarını hava ile hareketlendirerek ve belkide mekaniksel karıştırmalar ile bir haznede tutmayı içeriyordu (U.S. Patent 4.786.056). Bu yöntem, bazı durumlarda makul sonuçlar verebilir, ama bu sayede üretilen rastgele sayıların üretimi oldukça pahalı olur. Bu yöntem doğal olarak yavaştır ve çoğu bilgisayar uygulaması için kullanılamaz.
29 Nisan 1947'de RAND Şirketi, saniyede 100,000 darbe kullanan rassal frekans kaynağı kullanarak beslediği bir 5 bit ikili sistem sayıcı kullanarak elektronik olarak rulet tekerleğini modellemiş ve rassal sayılar oluşturmaya başlamıştır. Douglas Aircraft cihazı inşa etmiş ve Cecil Hasting'in öneris ile gürültü kaynağı için de uyarlamıştır.(RAND P-113)  Bu özellik iyi bilinen 6D4 minyatür gaz tiratron tübünün manyetik alandaki davranışı ile de açıklanabilir. 32 mümkün sayaç değerlerinden 20 adedi, 10 ikili sistem değerlerine eşlenmiş ve diğer 12 sayaç değeri atılmıştır.
Uzun süre çalışan RAND makinesinin sonuçları filtrelenmiş, test edilmiş ve de bir tabloya dönüştürülmüştür. Kitap 1995 yılında yayınlanmıştır: Bir Milyon Haneli Rassal bir sayı ile 100.000 Normal Sapma. RAND tablosu büyük bir çıkış noktasıdır çünkü daha önce bu büyüklükte ve dikkatte hazırlanmış bir rassal sayı dizisi yaratılmamıştır. Simülasyonlar, modelleme ve sabit değer atanımı için faydalı bir kaynak olmuştur. Ayrıca kriptografi algoritmalarında kötü niyetli sabit değerlerin tespitinde kullanılmıştır. Blok şifreleme Khufu ve Khafre RAND tablosunu kullanan uygulamalardandır. Bkz: Kol numaramdan başka bir şey yok.

Saat akıntısı

Bir diğer ölçülmesi kolay fiziksel olgu değişkeni de saat akıntısıdır. Bu olguyu rastlantı kaynağı olarak kullanmanın birkaç yolu vardır.
Intel 82802 donanımsal yazılımı çip içerisine dahil bir donanım RSÜ'sü  eklemiştir. Biri hızlı biri yavaş iki serbest çalışan osilatör içermektedir. Termal gürültü(ortak mod kazancı bir olmayan iki adet diyot kullanılarak) yavaş çalışan osilatörün frekansı modüle edilmiş ve bu şekilde hızlı çalışan osilatörün tetiği sağlanmıştır. Von Neumann tipi bir korelasyon engelleyici bir yapı ile çıkış tetiklenmiştir.(Aşağıya bakınız) Bu cihazın çıkış hızı 100,000 bit/s dan biraz daha aşağıdadır. Bu çip 840 çipset ailesinin opsiyonel bir elemanıdır ve bir önceki Intel donanım mimarisini desteklemektedir. Modern bilgisayarlarda bulunmamaktadır.  
2003 ten beri tüm Tüm VIA C3 mikroişlemcileri donanım RSÜ'sü içermiştir. Termal gürültü yerine serbest çalışan ve farklı frekanslarda çalışan 4 adet osilatör barındırır. İki osilatörün çıkışları XOR'lanır ve üçüncüsünün etkinliğini kontrol için kullanılır. Üçüncüsünün çıkışı ise dördüncüsünü tetikler ve yeni bir bit oluşturulur.  Sıcaklıktaki küçük varyasyonlar, silikon karakteristikleri ve lokal elektriksel koşullar osilatör hız varyasyonları oluşmasına neden olur ve oluşan bitlerin rassallığı ile sonuçlanır. Rassallığı daha da kesinleştirmek için her bir çipte 2 adet RSÜ bulunup her ikisi de ayrı çevresel faktörler altında bulunmaktadır. Sonuç bu iki çıkışın karıştırılmasından oluşmaktadır. Ham çıkış hızı 10-100 Mb/s arasındadır ve tamamen rassallaşma hızı birkaç Mb/s dır. Kullanıcı yazılımı, üretilmiş rassal bit dizisine ayrıcalıksız makine dili talimatlarını kullanarak ulaşabilmektedir.
Sıradan donanımlar ile ilgili olan bir yazılım uygulaması, bir kriptografik rutin kütüphanesi olan CryptoLib'e dahil edilmiştir. Bu algoritmaya truerand denir. Çoğu modern bilgisayarda biri gerçek zaman saati bir diğeri ise birincil CPU saati için, iki kristal osilatör bulunmaktadır. Truerand, bu durumdan faydalanmaktadır, gerçek zamanlı saatin çalışmasını sağlayan bir alarm veren, bir işletim sistemi servisi kullanır. Bir altprogram, bir saat vuruşunda alarmın çalmasını ayarlar (genellikle saniyenin 1/60'ı). Bir diğeri ise alarmın tetiklenmesini beklerken while döngüsüne girer. Alarm her zaman tam olarak bir saat vuruşu ile tetiklenmeyeceğinden, alarmı ve tetikleyiciyi ayarlamak arasındaki döngü iterasyonlarının en az anlamlı bitleri, bazı kullanımlar için yeterince değişebilmektedir..Beri alarm her zaman tetikleyici tam bir kene, en az önemli bit sayısı döngü tekrar arasında ayar, alarm ve onun tetikleyici olur değişir rastgele, belki yeterince için kullanır. Truerand, ek donanım gerektirmez, ancak çoklu-görev sistemlerinde diğer işlemlerden rassal olmayan paraziti önlemek için büyük özen gösterilmelidir. (Örneğin; işletim sistemi zamanlayıcısı başlatılırken sayma döngüsü işleminin askıya alınmasında, çeşitli işlemler başlatılır ve durdurulur).
RdRand işlem kodu, bütünleşik donanımsal rassal sayı üretecinden değerleri döndürecektir. Bu durum 2015 yılından beri Intel Ivy Bridge ve AMD64 işlemcilerinde mevcuttur.

Etkinme Yaklaşımı

1s ya da 0s'in baskın olduğu bu tür sistemlerden gelen bit dizisi,yanlı olmaya eğilimlidir. Burada yapay olgu ve etkinme yaklaşımı olarak iki yaklaşım bulunmaktadır. İlki, üretecin işlemlerinde kendine özgü etkinliği minimuma indirecek rassal sayı üretecini tasarlamaktır. Bunu düzeltmek için bir yöntem, üreticinin sapmasını ayarlamak için, düşük geçişli bir filtre ile filtreleyerek, bit dizisini geri beslemektir.  Merkezi limit teoremi ile geri besleme döngüsü, 'neredeyse her zaman'  iyi ayarlanmış olma eğilimindedir. Ultra yüksek hızlı rastgele sayı üreteçleri genellikle bu yöntemi kullanır. O durumda bile, üretilen sayılar genellikle biraz sapmalıdır.

Yazılım beyazlatma

Etkinme ile uğraşmanın bir diğer yaklaşımı ise, üretimden sonra azaltmaktır (donanımda ve yazılımda). Yukarıda bahsedilen donanımsal etkinme azaltıcı adımlar gerçekleştirilmiş olsa bile, bit dizisi hala etkinme ve korelasyon içerebilir. Bağlantılı bir sinyalden beyaz gürültü üretme gibi problemlere benzer olarak, "beyazlatma" algoritmaları olarak adlandırılan, etkinme ve korelasyonu azaltmak için bazı yöntemler bulunmaktadır. Her bir rastgele sayı bloğunda dinamik olarak, statik rastgele olma kontrolü sağlayan dinamik-statik testi adlı başka bir yol vardır. Saniyede 1 gigabayt ya da daha fazla miktarda, kısa bir süre içerisinde kullanılabilmektedir. Bu yöntemde, bir blok şüpheli olarak tespit edilirse, o blok geçerli sayılmaz ve iptal edilir.Bu yöntem ANSI(X9F1) taslağında istenmektedir.
John von Neumann basit etkinmeyi düzeltmek ve korelasyonu azaltmak için basit bir algoritma icat etti. Bu algoritma, aynı anda iki biti ele alır (birbiri ile çakışmayan), üç işlemden birini seçer: seçilen iki bit eşitse, bu bitler atılır; 1,0 dizisi olursa 1 haline gelir; ve 0,1 dizisi olursa 0 haline gelir. Böylece, düşen kenar 1 ile temsil edilir ve yükselen kenar ise 0 ile temsil edilir. Bu işlem etkinmeyi ortadan kaldırır ve bu işlemin dijital mantık veya bir bilgisayar programı olarak uygulanması kolaydır. Bu teknikte bitlerin nasıl üretildiği önem arz etmez. Ancak, çıktılarında rassallığı garanti edemez. Yapabileceği şey (önemli sayıda biti atarak), etkinmeli bir rassal bit dizisini etkinmesiz bir hale dönüştürmektir.
Rassal bit dizisini iyileştirmek için bir diğer teknik, Blum Blum Shub ya da dizi şifreleme gibi, yüksek kaliteli kriptografik olarak güvenli sözde rassal sayı üreteçleri çıktısı ile bit dizisini dışlamalı veya (exclusive - or) işlemine tabii tutmaktır. Bu düşük maliyet ile ilintisizleştirme ve basamak etkinmesini, yazılımla gerçekleştirmek yerine, FPGA gibi donanımlar yardımıyla daha hızlı bir şekilde geliştirir.
Yakın rassal bit dizilerinde etkinmeyi azaltacak bir diğer metot, iki ya da daha fazla bağımlı olmayan yakın rassal bit dizilerini alarak, bunları dışlamalı veya (exclusive-or) işleminden geçirmektir. −1/2 ≤ e ≤ 1/2 olduğu durumda, bit dizisinin 0 olma olasılığı 1/2 + e olsun. e ise bit dizisindeki etkinmeyi temsil etsin. Eğer etkinmeleri ile birlikte, iki bağımlı olmayan bit dizisine e denilirse, bu iki bit dizisi dışlamalı veya (exlusive-or) yapıldığında, etkinme sonucu  2e² olur. Bu daha fazla bit dizisi ile tekrarlanabilir. (Ayrıca Bkz: Piling-up lemma).
Bazı tasarımlar, MD5, SHA-1veya RIPEMD-160 veya hatta bir CRC fonksiyonu gibi kriptografik özet fonksiyonlarını bit dizisinin bir kısmına veya tamamına uygularlar, daha sonra bu işlemlerden sonucunda elde edilen çıktıyı rassal bit dizisi olarak kullanırlar. Bu tasarım kısmen caziptir, çünkü diğer yöntemlerden bazıları ile karşılaştırıldığında nispeten hızlıdır, fakat biraz teorik temelin bulunabileceği özet çıktısındaki niteliklere önemli ölçüde bağlıdır.
Birçok fiziksel olgu, yüksek etkinmekte olan bitleri üretmek için kullanılabilir, ancak her bit, diğerlerinden bağımsızdır.Bir Geiger sayacı, (tüp geri dönüştürme süresinden daha uzun bir örnek zamanına sahip) ya da yarı saydam bir ayna foton dedektörü, çoğunlukla "0" (sessiz ya da iletim), nadiren "1" (tıklama ya da yansıtma) olan bit dizileri üretir. Eğer her bir bit  diğerlerinden bağımsız ise, Von Neumann stratejisi, oldukça yüksek etkinmeli bir bit dizisinden nadir olan "1" bitlerinin her biri için etkinmesiz rassal çıktı bitleri oluşturur.  Gelişmiş Çok Seviyeli Strateji (AMLS)  gibi beyazlatma teknikleri, bu tür yüksek etkinmeli bit dizilerinden, daha fazla sayıda rassal ve etkinmesiz olan çıktı bitleri verebilir.

Periyodik olarak yenilenmiş rassal anahtarı ile Sözde Rassal Sayı Üreteci (PRNG)

Diğer tasarımlar, şifrelenmiş çıktıyı rassal bit dizisi olarak alarak, yüksek kaliteli blok şifreleme algoritması anahtarı olarak, gerçek rassal bitler olarak kabul edilen bitleri kullanırlar.  Ancak bu durumlarda uygun bir blok modu seçmek için dikkatli olunmalıdır. Bazı uygulamalarda, donanım üreteci cihaz yeni bir çekirdek üretirken, Sözde Rassal Sayı Üreteci sınırlı sayıda basamak için çalıştırılır. 

Sorunları

Rassal sayı üreten donanımsal veya yazılımsal aygıtları yanlış yapılandırmak oldukça kolaydır.  Ayrıca,  çoğu belli etmeden (sessizce) bozundukça genelde rassal sayı değerlerini azalarak üretirler. Fiziksel bir örnek olarak, daha önce de bahsedilen duman dedektörlerinin hızla azalan radyoaktivitesi verilebilir. Bu tür cihazlardaki hata modları çok çeşitli, karmaşık, yavaş ve tespit edilmesi zordur.
Birçok entropi kaynağı genellikle oldukça kırılgan ve belli etmeden bozulduğu için, bu entropiler üzerinde sürekli olarak verdikleri çıktıları takip eden istatistiksel testler gerçekleştirilmelidir. Bu tür cihazların çoğunluğu, yazılım içerisinde cihazı okuyan testler içermektedir.

Saldırılar

Kriptografi sistemindeki diğer bileşenlerinde olduğu gibi, belirli saldırılara karşı koymak amacıyla yazılımsal bir rassal sayı üreteci tasarlanmalıdır. Bu saldırılara karşı savunma yapmak zordur. 
Netscape taracıyısının 1.1 sürümünde kriptografik amaçlar için kullanılan rassal sayı üreteci savunmasızdı ve bu durum 2.0 sürümünde hemen düzeltildi.

Entropi Tahmini

Bir dizi sembolün entropisini tahmin etmek için matematiksel teknikler bulunmaktadır. Hiçbiri tamamen güvenilir olmamakla birlikte tahminlerine de tamamen güvenmek doğru olmayabilir; her zaman onaylanması çok zor olan varsayımlar vardır. Örneğin; bu teknikler, bir tohum havuzunda yeterli entropi olup olmadığının belirlenmesi için yararlıdır. Ancak genel olarak, gerçek bir rassal kaynak ve yalancı rassal sayı üreteci arasında ayrım yapamazlar.

Performans testi

Donanımsal rassal sayı üreteçleri, düzgün çalışması için sürekli izlenmelidir (takip edilmelidir).  RFC 4086, Information Processing Standards|FIPS Pub 140-2 ve NIST Special Publication 800-90b, bunun için kullanılabilecek testleri içermektedir. Ayrıca Yeni Zellanda kriptografik yazılım kütüphanesi olan cryptlib belgelerine bakabilirsiniz.
Birçok pratik tasarım, girdi olarak bir donanım kaynağına güvendiğinden, en azından kaynağın hala çalıştığını kontrol etmek faydalı olacaktır. Örneğin, boş olduğu düşünülen bir kanalda yayın yapan radyo istasyonu gibi bir gürültü kaynağının arızasını istatistiksel testler genellikle algılayabilir. Bir "beyazlatma" dan geçmeden önce, gürültü üreteci çıkışı test için örnek alınmalıdır. Bazı beyazlatma tasarımları, rassal girdiler olmadan da istatistiksel testlerden geçebilir. Mükemmellikten büyük bir sapma tespit etmek, gerçek bir rassal ses kaynağının bozulmuş olabileceğinin işareti olabilir, küçük sapmalar normaldir ve düzgün çalışmasının bir göstergesi olarak değerlendirilir. Girişlerdeki yanlılığın korelasyonu, diğer parametreler (örneğin; iç sıcaklık, veri yolu voltajı) ile birlikte, bir ek kontrol yolu olarak daha yararlı olabilir. Ne yazık ki, şu anda mevcut (ve öngörülen) testler ve bu testlerden geçmek, çıkış dizilerinin rassal olduğundan emin olmak için yeterli olmamaktadır.  Dikkatli ve özenle seçilmiş bir tasarım, üretilen cihazın sağladığı bu tasarımı ve sürekli olan kurcalamalara karşı temin edilen fiziksel güvenliği doğrulaması, yüksek önemdeki kullanımların test edilmesine ek olarak gerekli olabilir.