Entropy Available hakkında Plain İngilizce açıklayın


28

Bu komutu Ubuntu'da çalıştırırsam

sudo cat /proc/sys/kernel/random/entropy_avail

çekirdeğin ne kadar "entropi" olduğunu belirten bir sayı döndürür, fakat bu benim bildiğim tek şey. Bu entropi hangi birimde ölçülür? Ne için kullanılır? Bu sayı "düşük" ise bana "kötü" olduğu söylendi. "Düşük" ne kadar düşük ve eğer "kötü" şeyler ne olacak? Olması için iyi bir menzili nedir? Nasıl belirlenir?

Yanıtlar:


22

Sisteminiz, farklı olaylara dikkat ederek bazı "gerçek" rasgele sayıları toplar: ağ etkinliği, donanım rasgele sayı oluşturucusu (varsa; örneğin VIA işlemcileri genellikle "gerçek" rastgele sayı oluşturucusuna sahiptir), vb. Bunları / dev / random tarafından kullanılan çekirdek entropi havuzuna beslerse. Bazı aşırı güvenliğe ihtiyaç duyan uygulamalar entropy kaynağı olarak / dev / random kullanma veya başka bir deyişle randomness kaynağı kullanma eğilimindedir.

Eğer / dev / random mevcut entropinin dışında kalıyorsa, daha fazla rasgelelik sağlayamaz ve rastgele olanı bekleyen daha fazla rasgele şey mevcut olana kadar durur. Kariyerim boyunca gördüğüm örnek, Cyrus IMAP daemonunun rastlantısallık için / dev / random kullanmak istediğini ve POP oturumlarının APOP bağlantılarında / dev / random'dan rastgele dizeleri oluşturmak istediğini gösteriyor. Yoğun bir ortamda, / dev / random -> her şeyin durduğunu beslemek için trafikten daha fazla giriş denemesi vardı. Bu durumda rng-tools'ları yükledim ve sahip olduğum rngd'yi etkinleştirdim - bu / dev / random'da "real" entropi olduğunda, yarı dev rastgele sayılar / dev / urandom'dan / dev / random'a kürek çektim.


19

Temel konuya daha basit bir genel bakış istiyorsanız: Bazı uygulamaların (şifreleme gibi) rasgele numaralara ihtiyacı vardır. Bir algoritma kullanarak rasgele sayılar oluşturabilirsiniz - ancak bunlar bir anlamda rastgele görünseler de, bir başkasında tamamen tahmin edilebilirler. Örneğin, size 58209749445923078164062862089986280348253421170679 rakamlarını verirseniz, oldukça rasgele görünüyorlar. Fakat onların aslında PI'nin rakamları olduğunu fark ederseniz, bir sonrakinin 8 olacağını bileceksiniz.

Bazı uygulamalar için bu tamamdır, ancak diğer uygulamalar için (özellikle güvenlikle ilgili olanlar için) insanlar öngörülemeyen gerçek bir algoritma isterler - bu bir algoritma (yani program) tarafından tanımlanabildiği için üretilemez. Bu, bilgisayar aslında bunda bir sorun olduğunu olduğunu muhtemelen hakiki rasgele sayılar nasıl alabilirim böylece, bir program? Bunun cevabı, dış dünyadan gelen rastgele rastgele olayları ölçmektir - örneğin, tuş basışlarınız arasındaki boşluklar ve bunları başka türlü tahmin edilebilir rastgele sayı üretecine orijinal rastgelelik enjekte etmek için kullanmak. 'Entropy havuzu', tuş vuruşlarıyla (veya ne kullanılıyorsa kullanılsın) oluşturulan ve rastgele sayıların üretilmesiyle tahrip olan bu rastgeleliğin deposu olarak düşünülebilir.


2
Güzel açıklama ...
pradipta

Fakat PI irrasyoneldir ve yukarıdaki dizi de dahil olmak üzere her diziyi 9 ardından 9 (8 yerine) içerecektir.
Ajay Brahmakshatriya

9

Entropi, “Randomness” için teknik bir terimdir. Bilgisayarlar gerçekten entropi üretmezler, ancak sabit disk dönüş hızlarındaki çeşitlilikler gibi şeylere bakarak toplarlar (Sürtünme nedeniyle tahmin edilmesi çok zor olan fiziksel bir olay vb.) Bir bilgisayar sözde rasgele veri üretmek istediğinde fare tıkaçlarını, sabit disk dönüşü değişimlerini vb. ölçerek bulduğu gerçek entropi ile matematiksel bir formül tohumlayın. Kabaca söylemek gerekirse entropy_availşu anda okunabilecek bitlerin ölçüsüdür./dev/random

Bilgisayarın gürültülü bir diyot veya başka bir şey gibi iyi bir donanıma sahip olmadığı sürece, entropi ortamından okuması zaman alır.

Eğer 4096 bit entropi varsa ve kediniz /dev/randomvarsa, daha fazla entropi beklerken, dosya bloklarından önce 512 bayt entropi (4096 bit) okuyabilirsiniz.

Örneğin, eğer “ cat /dev/random” entropininiz sıfıra düşecektir. İlk başta 512 bayt rastgele çöp elde edersiniz ancak durur ve azar azar daha fazla rasgele veri damlama yalak göreceksiniz.

İnsanların bu şekilde çalışması gerektiği gibi değil /dev/random. Normalde geliştiriciler 128 bit gibi az miktarda veri okuyacak ve bunu bir çeşit PRNG algoritması tohumlamak için kullanacaklar. /dev/randomİhtiyacınız olandan daha fazla entropi okumaması kibarlıktır, çünkü birikmesi çok zaman alır ve değerli olarak kabul edilir. Bu nedenle cat, dosyayı yukarıdaki gibi dikkatsizce çekerek tahliye ederseniz, okuması gereken diğer uygulamaların /dev/randomengellenmesine neden olursunuz . İşyerindeki bir sistemde birçok kripto işlevinin durduğunu fark ettik. Bir cron işinin başlatılmaya devam eden bir python betiği çağırdığını keşfettik.ramdom.random()birkaç saniyede kaçan kaçtı. Bunu düzeltmek için python betiğini yeniden yazdık, böylece yalnızca bir kez başlatılan bir arka plan programı olarak çalışıyordu ve cron işi, XMLRPC üzerinden veriyi okurdu ki /dev/randombaşlangıçta okumaya devam etmemesini sağladı .


1
"Bunu düzeltmek için python betiğini yeniden yazdık, böylece yalnızca bir kez başlatılan bir arka plan programı olarak çalıştırıldı ve cron işi, XMLRPC üzerinden verileri okuyacaktı, böylece başlangıçta / dev / random'dan okumaya devam etmeyecekti." --- Alıntı yaptığım bölüm dışında, değerlendirilmesi zor, çünkü senaryonuzun gerçekten rastlantısallık gerektirip gerektirmediği belli değil, cevabınız çok açık ve net.
Craig Hicks

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.