Bagaimana Komputer Menjana Nombor Rawak
Komputer menghasilkan nombor rawak untuk segala-galanya dari kriptografi ke permainan video dan perjudian. Terdapat dua kategori nombor rawak - nombor rawak "benar" dan nombor pseudorandom - dan perbezaannya adalah penting untuk keselamatan sistem penyulitan.
Komputer boleh menghasilkan nombor yang benar-benar rawak dengan memerhatikan beberapa data luar, seperti pergerakan tetikus atau bising penggemar, yang tidak boleh diramal, dan mencipta data daripadanya. Ini dikenali sebagai entropi. Pada masa yang lain, mereka menghasilkan nombor "pseudorandom" dengan menggunakan algoritma supaya keputusan kelihatan rawak, walaupun mereka tidak.
Topik ini telah menjadi lebih kontroversial baru-baru ini, dengan ramai orang yang mempersoalkan sama ada perkakasan pintar nombor cip perkakasan Intel terbina dalam boleh dipercayai. Untuk memahami mengapa ia tidak boleh dipercayai, anda perlu memahami bagaimana nombor rawak diasingkan di tempat pertama, dan apa yang digunakan untuk.
Nombor Rawak Apa Digunakan Untuk
Nombor rawak telah digunakan untuk beribu-ribu tahun. Sama ada ia membalikkan duit syiling atau melancarkan dadu, matlamatnya adalah untuk meninggalkan keputusan akhir sehingga peluang rawak. Penjana nombor rawak dalam komputer adalah sama - mereka merupakan percubaan untuk mencapai keputusan rawak yang tidak dapat diramalkan.
Penjana nombor rawak berguna untuk pelbagai tujuan yang berbeza. Selain dari aplikasi yang jelas seperti menjana nombor rawak untuk tujuan perjudian atau menghasilkan keputusan yang tidak menentu dalam permainan komputer, kekangan adalah penting untuk kriptografi.
Kriptografi memerlukan nombor yang tidak dapat ditagih oleh penyerang. Kita tidak boleh menggunakan nombor yang sama berulang kali. Kami mahu menjana nombor ini dengan cara yang sangat tidak dapat diramalkan supaya penyerang tidak dapat meneka mereka. Nombor rawak ini penting untuk penyulitan selamat, sama ada anda menyulitkan fail anda sendiri atau hanya menggunakan laman web HTTPS di Internet.
Nombor Rawak Benar
Anda mungkin tertanya-tanya bagaimana komputer sebenarnya dapat menjana nombor rawak. Di manakah "rawak" ini berasal. Jika ia hanya sekeping kod komputer, tidak mungkin angka yang dihasilkan oleh komputer boleh diramalkan?
Kami secara amnya mengelompokkan nombor komputer secara rawak kepada dua jenis, bergantung kepada bagaimana ia dihasilkan: nombor rawak "Benar" dan nombor pseudo-rawak.
Untuk menjana nombor rawak "benar", komputer mengukur beberapa jenis fenomena fizikal yang berlaku di luar komputer. Sebagai contoh, komputer dapat mengukur kerosakan radioaktif pada atom. Menurut teori kuantum, tidak ada cara untuk mengetahui dengan pasti apabila kerosakan radioaktif akan berlaku, maka ini pada dasarnya "rawak murni" dari alam semesta. Penyerang tidak dapat meramalkan apabila kerosakan radioaktif berlaku, jadi mereka tidak akan mengetahui nilai rawak.
Untuk contoh yang lebih sehari-hari, komputer boleh bergantung kepada bunyi atmosferik atau hanya menggunakan masa yang tepat yang anda tekan kekunci pada papan kekunci anda sebagai sumber data yang tidak dapat diramalkan, atau entropi. Sebagai contoh, komputer anda mungkin dapat melihat bahawa anda menekan kekunci pada tepat 0.23423523 saat selepas 2 petang ... Dapatkan cukup waktu tertentu yang dikaitkan dengan menekan kekunci ini dan anda akan mempunyai sumber entropi yang anda boleh gunakan untuk menjana rawak "benar" nombor. Anda bukan mesin yang boleh diramalkan, jadi penyerang tidak dapat meneka saat yang tepat apabila anda menekan kekunci ini. Peranti / dev / rawak pada Linux, yang menghasilkan nombor rawak, "blok" dan tidak mengembalikan hasilnya sehingga mengumpulkan cukup entropi untuk mengembalikan nombor yang benar-benar rawak.
Nombor Pseudorandom
Nombor Pseudorandom adalah alternatif kepada nombor rawak "benar". Komputer boleh menggunakan nilai benih dan algoritma untuk menjana nombor yang kelihatan rawak, tetapi itu sebenarnya boleh diramal. Komputer tidak mengumpulkan sebarang data rawak dari persekitaran.
Ini tidak semestinya sesuatu yang buruk dalam setiap keadaan. Contohnya, jika anda memainkan permainan video, tidaklah benar-benar perkara sama ada peristiwa yang berlaku dalam permainan itu didasarkan oleh nombor rawak "benar" atau nombor pseudorandom. Sebaliknya, jika anda menggunakan penyulitan, anda tidak mahu menggunakan nombor pseudorandom yang dapat ditebak oleh penyerang.
Sebagai contoh, katakan penyerang mengetahui algoritma dan nilai benih yang menggunakan penjana nombor pseudorandom. Dan katakan algoritma penyulitan mendapat nombor pseudorandom dari algoritma ini dan menggunakannya untuk menghasilkan kunci penyulitan tanpa menambah sebarang kekangan tambahan. Sekiranya penyerang tahu cukup, mereka boleh bekerja mundur dan menentukan nombor pseudorandom yang algoritma penyulitan mesti dipilih dalam kes itu, melanggar enkripsi.
NSA dan Generator Perkakasan Rawak Perkakasan Intel
Untuk memudahkan para pemaju dan membantu menjana nombor rawak yang selamat, cip Intel termasuk penjana nombor rawak berasaskan perkakasan yang dikenali sebagai RdRand. Cip ini menggunakan sumber entropi pada pemproses dan memberikan nombor rawak kepada perisian apabila perisian meminta mereka.
Masalah di sini adalah bahawa penjana nombor rawak pada asasnya adalah kotak hitam dan kita tidak tahu apa yang berlaku di dalamnya. Jika RdRand mengandungi pintu belakang NSA, kerajaan akan dapat memecahkan kunci penyulitan yang dihasilkan dengan hanya data yang dibekalkan oleh penjana nombor rawak itu.
Ini adalah kebimbangan yang serius. Pada bulan Disember 2013, pemaju FreeBSD mengalih keluar sokongan untuk menggunakan RdRand secara langsung sebagai sumber rawak, dengan mengatakan mereka tidak boleh mempercayainya. [Sumber] Output peranti RdRand akan dimasukkan ke dalam algoritma lain yang menambahkan entropi tambahan, memastikan bahawa mana-mana backdoors dalam penjana nombor rawak tidak akan menjadi penting. Linux sudah bekerja dengan cara ini, seterusnya menyimpulkan data rawak yang datang dari RdRand supaya tidak dapat diramalkan walaupun terdapat pintu belakang. [Source] Dalam AMA baru-baru ini ("Tanya Me Apa saja") mengenai Reddit, CEO Intel Brian Krzanich tidak menjawab soalan mengenai kebimbangan ini. [Sumber]
Sudah tentu, ini mungkin bukan masalah dengan cip Intel sahaja. Pengembang FreeBSD memanggil nama cip Via juga. Kontroversi ini menunjukkan mengapa menjana nombor rawak yang benar-benar rawak dan tidak dapat diramal adalah sangat penting.
Untuk menjana nombor rawak "benar", penjana nombor rawak mengumpul "entropi," atau data rawak yang kelihatan dari dunia fizikal di sekelilingnya. Untuk nombor rawak yang tidak benar-benar perlu rawak, mereka hanya boleh menggunakan algoritma dan nilai biji.
Kredit Imej: rekre89 pada Flickr, Lisa Brewster di Flickr, Ryan Somma di Flickr, huangjiahui di Flickr