/dev/random Entropy Havuzunu Kontrol Etmek

GNU/Linux içerisinde kullanılan sözde rastgele sayı üreteci, /dev/random olarak bilinen bir karakter aracıdır. Bu araç entropy kaynağı olarak kullanıcının fare, klavye hareketlerini ve dvd/cd okuyucu gibi çevresel cihazların hareketlerini kullanır. Bloklanan bir cihazdır yani entropy yetersiz olduğunda yeterli olana kadar bekler. Buradaki yeterlilik entropy kaynağından alınan verilerin istatistiksel olarak test edilip uygun olup olmadığının kontrolü değildir. Daha çok boyutla ilgili bir durumdur. Linux kendi çekirdeği içerisinde çevresel cihazlardan aldığı verileri en son aşamada istatistiksel olarak düzgün bir hale sokmak için sha1 gibi bir hash algoritmasından geçiririyor. Bu algoritma çıktı olarak 160 bit değer üretir. İşte bu 160 sayısı çok önemlidir çünkü entropy’nin uygunluğunu kontrol için kullanılır. Eğer girdi 160 değerinden küçükse ve /dev/urandom çağırıyorsanız istatistiksel olarak düzgün bir rastgele sayı alamayacaksınız demektir.  O nedenle 100-200 den düşükse güvenlik açısından problem olduğu söylenmektedir. Aşağıdaki komutla entropy havuzundaki  bu büyüklüğü kontrol edebilirsiniz:
cat /proc/sys/kernel/random/entropy_avail

Bu değer kullandığınız Linux çekirdeğinin versiyonuna göre değişmekle birlikte 160’tan büyük olmalıdır. Ayrıca engellemeli bir rastgele sayı üreteci olduğundan dolayı /dev/random uygulamalar için uygun bir üreteç değildir. Bunun yerine daha çok /dev/urandom kullanıldığından dolayı haveged gibi eklentilerle entropy pool beslenmelidir. Tabiki bu çevresel birimlerin çok az olduğu sunucular için iyi bir öneridir. Kişisel kullanımlarda haveged gibi bir entropy kaynağına ihtiyacınız yok. Çünkü havuz çok fazla çevresel aygıttan sürekli olarak besleniyor. Tahmin zaten zorlaşıyor.

Yeni versiyon Linux çekirdeklerinde 4.8 ve daha yenilerinde artık chacha20 stream cipher temelli bir implementasyon kullanılmaktadır. /dev/random yine çevresel aygıtlara bağlı olduğu için entropy havuzundaki değer eski versiyonlarda olduğu gibi önemlidir.

Not: Farklı güvenlik tehditleri farklı güvenlik önlemlerini gerektirir. Güvenlik tehditleriniz askeri veya ticari düzeyde değilse PRNG’ler kullanılabilir fakat tavsiye edilen onaylı TRNG kullanmaktır.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir