Pseudorandom sayılar, rastgele sayı üretici tarafından üretilen ancak incelendiğinde aralarında kolay kolay bir ilişki bulunamayan sayılardır. Bir algoritma veya fonksiyon bu tarz sayılar üretebiliyorsa bu algoritmaya Pseudorandom Generator adı verilmektedir. Üretilen bu sayılar genellikle rastgelelik testlerinden başarıyla geçen sayılardır. Yani sayıların arasında görünürde bir bağlantı yoktur ancak bu sayıları üreten fonksiyon veya algoritmaya göre bu sayılar aslında rastgele sayılar değildir.
PRG’ler simülasyonlar (örn. Monte Carlo yöntemi için), elektronik oyunlar (örn. Prosedürel üretim için) ve kriptografi gibi uygulamaların merkezinde yer alır. Kriptografik uygulamalar, oluşturulan sayı çıktılarının tahmin edilemez olmasını gerektirir ve çoğu kriptografik uygulama karmaşık bir şekilde bu sayıları seçen PRG’lere ihtiyaç duymaktadır.
Pseudorandom Üreticisi (PRG)
Pseudorandom üreticisi (PRG), deterministik cihazlarda rastgele sayı dizileri oluşturmak için kullanılmaktadır. Bu noktada tüm bilgisayar algoritmalarının deterministik bir yapıda olduğu bilinmelidir. Pseudorandom üreticisi, yalnızca birkaç bit içeren gizli anahtarlardan oluşturulan verileri kullanarak birçok veri bloğunun şifrelenmesine seçenek sağlamaktadır.
Pseudorandom üreticisi aynı zamanda tahmin edilemez olmalıdır. PRG’den önceki çıktı bitlerini aldıktan sonra, bir sonraki çıktı bitini ihmal edilemeyecek kadar 0,5’ten yüksek bir olasılıkla tahmin edebilecek herhangi bir verimli algoritma olmamalıdır.
Pseudorandom üreticisi, kriptografide (örneğin, blok şifrelerin uygulanması için) yaygın olarak kullanılan sahte rasgele işlevler ve permütasyonlar oluşturmak için kullanılmaktadır.
Pseudorandom Üreticisi (PRG) Uygulaması
Pseudorandom üreticisi günümüzde, çoğu işletim sisteminde (örneğin Linux’ta /dev/random) ve çeşitli programlama dilleri için birçok kitaplıkta uygulanmaktadır. Genel olarak ise davranışları benzerlik göstermektedir. İlk adımında algoritma bazında harici bilgilere (örneğin, geçerli saat veya sıcaklık) dayalı olarak jeneratörün dahili durumunu başlatmaktadır. Ardından ise jeneratörün çalıştığı süre boyunca durumun tüm baytları karıştırılmaktadır. Değişiklikler, çeşitli harici ve rastgele girdi verilerine, kullanıcının klavye ve fareyi kullanma sıklığı ve yolu, ağ trafiği, donanım kesintileri ve algoritmanın çalıştığı deterministik ortamın dışından gelen diğer bilgi türlerine dayanmaktadır.
Pseudorandom üreticisi algoritması, dahili durumunu sürekli olarak değiştirmektedir. Dahili durum daha sonra mümkün olduğunca rastgele olması gereken çıktı dizilerini oluşturmak için kullanılmaktadır. Durumun tüm değişiklikleri, üretilen çıktı verilerinin dizi analizine karşı mümkün olan en iyi korumayı sağlaması beklenen bir şekilde gerçekleştirilmektedir.
Pseudorandom Üreticisi (PRG) Çıktı Kalitesi
Pseudorandom üreticisi tarafından yerine getirilmesi gereken gereksinimleri tanımlayan birçok standart bulunmaktadır. Örnek olarak, Amerikan Ulusal Standartlar ve Teknoloji Enstitüsü, NIST SP 800-90 gibi çeşitli normların yazarıdır.
Pseudorandom üreticisi, kalitesini değerlendirmek için kullanılabilecek birçok farklı istatistiksel test vardır. Alınan dizilerin rastgele ve tahmin edilemez olup olmadığını kontrol etmektedirler. Bazı istatistiksel test örnekleri şunları içermektedir:
- Üretilen dizideki 1 bit sayısı 0 bit sayısına benzer,
- Üretilen dizideki 00 çift sayısı, tüm bitlerin dörtte birine eşit veya daha az eşittir,
- En uzun sıfırlar veya birler dizisinin uzunluğu, matematiksel tahminine benzer.