8 Temmuz 2018 Pazar

/dev/urandom Özel Dosyası

Giriş
/dev/urandom dosyasındaki u harfi unlimited anlamına gelir.  Açıklaması şöyle.
The /dev/urandom device does not have this limit [...]
Bloke Olma
/dev/urandom yeterince entropy toplayıncaya kadar bloke olur

Cryptographically Secure Random Number Generator
CSPRNG kısaltması "Cryptographically Secure Random Number Generator" anlamına gelir.
CSPRNGs based on /dev/urandom (if you're familiar with Linux), for example, have to call the crypto kernel module driver every time.
random ve urandom arasındaki ilişkiyi şekille anlatan bir yazı burada.

Sanal makinelerde şöyle bir problem olabiliyor. Açıklaması şöyle
Using /dev/urandom to generate cryptographic keys or secrets can be an issue when the state of the OS is not unique. This is the typically case when a VM was just booted from a template: the state of the CSPRNG could be shared among multiple VMs. In cases similar to this one, it is important to use /dev/random or getrandom() instead of /dev/urandom, so that the output of the CSPRNG blocks until it has collected enough entropy.
urandom Dosyasından Okuma Üst Sınıfı
Bu dosyadan tek seferde yapılan okumanın bir üst sınırı var. Şöyledir.
#define ENTROPY_SHIFT 3

static ssize_t
urandom_read(struct file *file, char __user *buf, size_t nbytes, loff_t *ppos)
{
    nbytes = min_t(size_t, nbytes, INT_MAX >> (ENTROPY_SHIFT + 3));
    ...
}
Örnek
dd komutu kullanılabilir.

Örnek
Bu device okunarak 0x00 ve 0xFF arasında byte üretilebilir. Şöyle yaparız.
void test(void){
  char random[4];
  int filedescriptor = open("/dev/urandom", O_RDONLY);
  read(filedescriptor, random, 4);
  close(filedescriptor);
}


Hiç yorum yok:

Yorum Gönder