Linux'ta / dev / random, yüksek kaliteli sahte rastgele sayılar sunan özel bir dosyadır.
Bu uygulama, entropiyi klavye, fare, disk ve sistem kesintilerinden kaynaklanan olaylardan toplar. ( bu belgeye bakın ) Yani böyle bir olay olmadığında, entropi havuzu boştur, / dev / random'dan okur, ek çevresel gürültü toplanana kadar engeller. Bu, probleminizi açıklar. Entropi havuzunu doldurmak için klavyedeki tuşlara basabilirsiniz.
Diğer taraftan, gerçekten rastgele bir sayı üreteci , fiziksel işlemlerden rasgele sayılar üreten Donanım rastgele sayı üreteci kullanır. Bu işlemler, termal gürültü veya fotoelektrik etki veya diğer fiziksel olaylar. Bu süreçler teoride tamamen öngörülemezdir ve teorinin öngörülemezliği iddiaları deneysel teste tabidir.
Bir donanım rastgele sayı üreteci, tipik olarak, fiziksel olayların bir kısmını elektriksel bir sinyale, bir yükselticiyi ve rastgele dalgalanmaların genliğini bir makroskopik seviyeye yükseltmek için bir başka elektronik devreyi ve bir tür analog-dijital dönüştürücüyü dönüştürmek için bir transdüserden oluşur. Çıktıyı dijital bir sayıya dönüştürmek için, genellikle 0 veya 1 olan basit bir ikili rakam.
Donanım Rasgele Sayı Üreticisi, aygıt sürücülerinden ve diğer kaynaklardan gelen çevresel gürültüyü bir entropi havuzuna toplar. Bu entropi havuzundan rasgele sayılar oluşturulur. Okunduğunda, / dev / random cihazı sadece entropi havuzundaki tahmini gürültü bit sayısı içindeki rastgele baytları döndürür. Bu, probleminizi açıklar.
Donanım RNG'nin bazı uygulamaları çekirdek dokümanda ve bir cihazdaki bilgilerde açıklanmıştır .
/ Dev / random'a karşılık gelen, / dev / urandom'dur ("kilitlenmemiş" / engelleyici olmayan rastgele kaynak), iç havuzu daha fazla sahte rastgele bit üretmek için yeniden kullanır. Bu, çağrının engellenmeyeceği, ancak çıkışın / dev / random'dan gelen okumadan daha az entropi içerebileceği anlamına gelir.
Bu nedenle amacınız CSPRNG (Kriptografik olarak güvenli sözde rasgele sayı üreteci) oluşturmak değilse, / dev / urandom kullanmanız gerekir.