Keselamatan

/ dev / random vs / dev / urandom dan adakah ia selamat?

/ dev / random vs / dev / urandom dan adakah ia selamat?

Bermula

Siapa sangka menghasilkan nombor secara rawak akan menjadi berantakan, ia seharusnya sama lurus dengan meneka nombor di mana sahaja antara julat tertentu. Tetapi tidak sesederhana itu dan sampai sekarang semua mesin terbukti tidak dapat menghasilkan nombor rawak yang betul.

Mengapa mesin tidak dapat menghasilkan nombor rawak sebenar dengan sendirinya?

Mesin belum diberi petunjuk mekanisme dan litar, dan oleh itu mesin tidak boleh diarahkan untuk memikirkan nombor rawak sendiri tanpa bantuan. Dan itulah sebabnya sehingga sekarang dan seterusnya, kita telah melibatkan manusia atau alam dengan mesin untuk menghasilkan nombor rawak yang sebenar. Kami tidak akan membincangkan di sini bagaimana menghasilkan nombor rawak sebenar tetapi kita akan membincangkan mengenai penjana nombor rawak yang telah dilaksanakan dan cara kerja serta kelemahannya.

Mengapa menjana nombor rawak sebenar sangat penting?

Persoalannya timbul bahawa mengapa penjanaan nombor rawak benar penting dan jawapannya adalah kerana masalah keselamatan. Sebilangan besar algoritma kriptografi didasarkan pada penjanaan nombor rawak kerana nombor rawak ini digunakan untuk membuat kunci kriptografi dan jika nombor rawak yang dihasilkan tidak benar-benar rawak, ini menjadikan keseluruhan teknik kriptografi lebih lemah dan kunci tersebut dapat diramalkan lebih mudah menggunakan algoritma yang digunakan untuk menghasilkan kunci rawak tersebut. Ini adalah sebab yang paling penting untuk nombor rawak yang benar, selain daripada aplikasi seperti perjudian.

Penjana Nombor Rawak dalam Kernel Linux:

Topik untuk perbincangan kita hari ini adalah berdasarkan Linux Random Number Generator, atas faktor apa penjana ini berdasarkan dan adakah ia benar-benar rawak atau hanya nombor rawak yang biasanya tidak boleh dipercayai.

Linux menggunakan Pseudo Random Number Generator (PRNG) atau Cryptographically Secure Pseudo Random Number Generator (CSPRNG) yang bermaksud ia menggunakan formula matematik kompleks dan sifat persekitaran untuk mencapai keaksamaan maksimum. Linux adalah OS pertama yang memasukkan PRNG di ruang kernelnya. Ini dilaksanakan oleh Theodore Ts'o pada tahun 1994.

Linux mempunyai tiga kategori penjana nombor rawak, / dev / random, / dev / urandom, / dev / arandom. Ketiga-tiganya adalah fail di mana Linux menyimpan nombor rawak. Nombor rawak dalam fail ini dihasilkan menggunakan bunyi persekitaran dari pemacu peranti dan sumber lain. Juga, untuk memastikan keabsahan dalam nombor rawaknya, linux menggunakan entropi yang merupakan tahap ketidakpastian atau gangguan di antara mereka. Anda juga boleh menemui halaman manual untuk Linux Random Number Generator (RNG) di sini:

http: // lelaki7.org / linux / man-pages / man4 / random.4.html

/ dev / rawak lawan / dev / urandom lawan / dev / arandom:

Perbezaan utama antara / dev / random, / dev / urandom dan / dev / arandom adalah bahawa / dev / rawak blok jika entropi tidak menunjukkan rawak yang mencukupi, / dev / urandom tidak pernah menyekat, walaupun ketika penjana nombor rawak semu tidak diunggulkan sepenuhnya ketika boot dan blok terakhir / dev / arandom hanya apabila penjana nombor rawak semu belum diisi sepenuhnya. Pendek kata, / dev / random adalah yang paling selamat dari semua, kemudian datang / dev / arandom dan yang paling selamat adalah / dev / urandom. Biasanya / dev / random dan / dev / urandom digunakan kerana / dev / arandom dalam banyak istilah serupa dengan / dev / urandom. Penduga entropi untuk kumpulan nombor rawak secara ringkas digunakan untuk menentukan kekerapan nombor yang dihasilkan. Semakin banyak entropi, semakin banyak rawak yang dicapai dan semakin baik. Jumlah entropi semasa dan ukuran kumpulan entropi tersedia di masing-masing / proc / sys / kernel / random / dinamakan sebagai entropy_avail dan pool_size, yang dapat ditampilkan di terminal dengan menggunakan perintah:

kucing / proc / sys / kernel / rawak / entropy_avail

Dan:

cat / proc / sys / kernel / random / pool_size

Urandom dan random digunakan dalam senario yang berbeza. 'Urandom' digunakan di mana terdapat keperluan tetap nombor rawak dan keacakannya tidak begitu penting sementara 'rawak' digunakan di mana ada masalah keselamatan dan keacakannya harus dapat dipercayai kerana ia menyekat pengeluaran nombor rawak jika entropi tidak sampai tanda itu. Walaupun entropi untuk urandom (Unlimited Random) tidak jauh lebih lemah tetapi disarankan untuk menggunakan rawak apabila lebih banyak keselamatan diperlukan kerana kemungkinan serangan pada angka dihasilkan oleh urandom.

Kelemahan dalam Penjana Nombor Rawak Linux

Untuk Perkakasan Memori Tidak Berubah:

Untuk kernel Linux, penjana nombor rawak tidak bagus untuk perkakasan tertanam seperti penghala, di mana keadaan boot boleh diramalkan dan sumber untuk cukup banyak entropi adalah terhad. Untuk perkakasan seperti ini, disarankan untuk menyimpan dan menggunakan keadaan Random Number Generator (RNG) sebelum dimatikan yang akan digunakan pada boot seterusnya. Dalam kes penghala seperti itu, penyerang hanya dapat berkompromi dan meramalkan nombor rawak yang dihasilkan jika mereka memiliki akses ke semua pautan penghala dan mereka menguping pautan komunikasi atau jika mereka telah langsung mengakses keadaan RNG yang tersimpan dari router itu sendiri.

Untuk kekurangan RNG ini sekiranya berlaku perkakasan, penjana entropi pihak ketiga datang untuk menyelamatkan. Penjana entropi ini seperti 'hasged' menggunakan pemasa cache pemproses, peranti input audio dan video luaran untuk meningkatkan entropi ke tahap yang boleh diterima.

Anggaran Entropi:

Seperti yang telah disebutkan sebelumnya, kernel Linux menentukan rawak dari segi entropi tetapi ia tidak benar-benar menghitung entropi setiap kali dan sebaliknya menggunakan anggaran entropi. Beberapa penyelidikan juga telah menunjukkan bahawa anggaran entropi nombor rawak yang digunakan di Linux tidak sesuai atau anggaran yang lebih dekat, sehingga membuat keseluruhan bilangan secara lemah.

Walaupun terdapat beberapa kelemahan di Linux Random Number Generator, tetapi ini adalah pilihan yang jauh lebih baik daripada RNG lain, jangan lupa tampalan berterusan yang disediakan oleh penyumbang dan pembangun Linux.

Kesimpulan:

Ini semua dari saya mengenai Random Number Generator di kernel Linux. Saya bersenang-senang menyebarkan pengetahuan ini dengan anda. Mudah-mudahan anda mempelajari sesuatu yang baru melaluinya dan juga bahawa anda akan berkongsi pengetahuan lebih jauh ke dunia. Akhir sekali, terima kasih kerana meluangkan masa dalam artikel ini.

Tutorial OpenTTD
OpenTTD adalah salah satu permainan simulasi perniagaan yang paling popular di luar sana. Dalam permainan ini, anda perlu membuat perniagaan pengangku...
SuperTuxKart untuk Linux
SuperTuxKart adalah tajuk hebat yang direka untuk membawa anda pengalaman Mario Kart secara percuma pada sistem Linux anda. Ia cukup mencabar dan meny...
Tutorial Battle for Wesnoth
The Battle for Wesnoth adalah salah satu permainan strategi sumber terbuka paling popular yang boleh anda mainkan pada masa ini. Bukan hanya permainan...