Dev / urandom'dan okuma - sistem davranışı
Veya dev/urandomile okurken , elbette çıktının her zaman rastgele ve farklı olması beklenir.headdd
Bu, UNIX tarafından düşük düzeyde nasıl ele alınır? Dosya okurken doğal olarak kesilmiş mi, yoksa dosya aslında simetrik bir şifre veya eşdeğeri için bir arayüz mü ve bu nedenle “okuma” aslında şifrenin çalıştırılması eylemidir.
Yanıtlar
/dev/urandombir karakter aygıtıdır, normal bir dosya değildir. Bunu açmak, bir sürücüye, genellikle çekirdekte, okumaları işleyen bir arabirim sağlar; bir program her okuduğunda /dev/urandom, sürücüye bir çağrı yapılır ve sürücü uygun içeriğin nasıl sağlanacağını belirler (diğer herhangi bir karakter aygıtında olduğu gibi - /dev/null, /dev/zero...).
Linux'ta, bu drivers/char/random.c. Çeşitli rastgele veri kaynaklarından başlatılan bir "entropi havuzunu" korur ve okunduğunda, geri döndürülecek verileri oluşturmak için bir ChaCha akış şifresi kullanarak havuz verilerini işler.
/dev/urandom'normal dosya' değil (evet, bu POSIX adıdır), bu bir cihazdır. Tıpkı / dev / üzerindeki çoğu 'dosya' gibi, orada bolca sihir davranışınız var.
- You have
/dev/nullyazdığınız ne kadar olursa olsun, doldurur asla nerede, - Her seferinde rastgele farklı veriler sağlayan rastgele / urandom / srandom var
/dev/ttyBir terminalle etkileşim kurduğunuz yerde (ve meslektaşlarınız) var- Sen sahip
/dev/fullherhangi bir yazma attempy için "Cihazda boş alan bıraktı" her zaman hangi döner /dev/zeroSonsuz bir sıfır bayt kümesi döndüren var
ve daha fazlası.
Bu dosyalar aslında bir çekirdek modülüyle etkileşim kurmak için bir arayüzdür. Bu nedenle, onu 'okuduğunuzda', aslında programınızın (head, dd, vb.) Talep ettiği ( /dev/urandombir karakter aygıtıdır) kadar bayt okuması istenen bir işlevi çalıştırır . Bu işlev daha sonra bu tamponu doldurmak için (bu durumda, sözde rasgele içerikleri elde edebilmeniz için) dahili olarak (birkaç entropi havuzuna dayalı olarak) işler.