Fungsi arc4random, arc4random_buf, dan arc4random_uniform telah umum digunakan pada BSD selama bertahun-tahun untuk menyediakan pembangkitan bilangan acak dengan kualitas lebih tinggi daripada fungsi rand/random dan alternatif. Tapi sekarang sejak kemarin GNU C Library (Glibc) akhirnya menambahkan fungsi arc4random untuk digunakan di Linux! Kembali ke bug 4417 dari tahun 2007 adalah permintaan untuk memiliki arc4random dengan Glibc. Bahkan saat itu ada patch awal yang mengimplementasikan arc4random untuk Glibc. Tanggapan hulu pada tahun 2007 adalah, "glibc bukanlah tempat pembuangan untuk kode arbitrer. Kode yang ada sekarang [baik]. Letakkan kode Anda di pustaka terpisah." Namun kemudian pada tahun 2018 seorang insinyur Red Hat mulai mengerjakan arc4random untuk Glibc. Sekarang empat tahun setelah itu Adhemerval Zanella Netto dari Linaro telah berhasil membawa keluarga fungsi arc4random melintasi garis finish dan masuk ke Glibc arus utama.
Fungsi arc4random di Glibc bertujuan untuk menyediakan pembuatan angka acak berkualitas tinggi dan dengan cara yang kompatibel dengan fungsi yang sudah lama tersedia di BSD. Komit ini dari hari Jumat merangkumnya: Implementasi didasarkan pada skalar Chacha20 dengan cache per-utas. Ia menggunakan getrandom atau /dev/urandom sebagai fallback untuk mendapatkan entropi awal, dan mereseed status internal pada setiap 16MB buffer yang dikonsumsi. Untuk meningkatkan kinerja dan menurunkan konsumsi memori, cache per-utas dialokasikan dengan malas pada panggilan fungsi arc4random pertama, dan jika alokasi memori gagal getentropy atau /dev/urandom digunakan sebagai fallback. Cache juga dihapus pada thread exit jika diinisialisasi (jadi jika arc4random tidak dipanggil, itu tidak disentuh). Meskipun bebas kunci, arc4random masih belum aman untuk sinyal asinkron (status per utas tidak diperbarui secara atom). Implementasi ChaCha20 didasarkan pada RFC8439, menghilangkan XOR akhir dari keystream dengan plaintext karena plaintext adalah aliran nol. Strategi ini mirip dengan apa yang dilakukan OpenBSD arc4random. Arc4random_uniform didasarkan pada karya sebelumnya oleh Florian Weimer, di mana algoritme didasarkan pada kertas Jérémie Lumbroso, Optimal Discrete Uniform Generation dari Coin Flips, dan Applications (2013), yang memuji Donald E. Knuth dan Andrew C. Yao, Kompleksitas tidak seragam generasi nomor acak (1976), untuk memecahkan kasus umum. Keuntungan utama dari metode ini adalah bahwa unit keacakan bukanlah variabel acak seragam (uint32_t), tetapi bit acak. Ini mengoptimalkan pengambilan sampel buffer internal dengan awalnya menggunakan variabel acak 32-bit dan kemudian mengambil sampel byte per byte. Bergantung pada batas atas yang diminta, ini mungkin mengarah pada penggunaan CPU yang lebih baik. Diperiksa pada x86_64-linux-gnu, aarch64-linux, dan powerpc64le-linux-gnu.Selain menambahkan fungsi arc4random, arc4random_buf, dan arc4random_uniform ke pustaka standar, aktivitas patch hari Jumat juga menambahkan versi ChaCha20 yang dioptimalkan untuk AArch64, x86 SSE2, x86 AVX2, PowerPC64, dan s390x.
Itulah berita seputar GNU C Library Akhirnya Menambahkan Fungsi arc4random Untuk Linux, semoga bermanfaat. Disadur dari Phoronix.com.