Bagaimana Komputer Menghasilkan Bilangan Acak

Komputer menghasilkan nomor acak untuk segala hal mulai dari kriptografi hingga video game dan perjudian. Ada dua kategori nomor acak - nomor acak "asli" dan nomor pseudorandom - dan perbedaannya penting untuk keamanan sistem enkripsi.

Komputer dapat menghasilkan angka yang benar-benar acak dengan mengamati beberapa data luar, seperti gerakan mouse atau kebisingan kipas, yang tidak dapat diprediksi, dan membuat data darinya. Ini dikenal sebagai entropi. Di lain waktu, mereka menghasilkan angka "pseudorandom" dengan menggunakan algoritme sehingga hasilnya tampak acak, meskipun sebenarnya tidak.

Topik ini telah menjadi lebih kontroversial baru-baru ini, dengan banyak orang mempertanyakan apakah chip penghasil nomor acak perangkat keras bawaan Intel dapat dipercaya. Untuk memahami mengapa itu mungkin tidak dapat dipercaya, Anda harus memahami bagaimana nomor acak dihasilkan sejak awal, dan untuk apa mereka digunakan.

Untuk Apa Bilangan Acak Digunakan

Nomor acak telah digunakan selama ribuan tahun. Baik itu membalik koin atau melempar dadu, tujuannya adalah membiarkan hasil akhirnya menjadi peluang acak. Generator nomor acak di komputer serupa - mereka berupaya untuk mencapai hasil acak yang tidak dapat diprediksi.

TERKAIT: Apa Itu Enkripsi, dan Bagaimana Cara Kerjanya?

Generator nomor acak berguna untuk berbagai tujuan. Selain dari aplikasi yang jelas seperti menghasilkan angka acak untuk tujuan perjudian atau menciptakan hasil yang tidak terduga dalam permainan komputer, keacakan penting untuk kriptografi.

Kriptografi membutuhkan angka yang tidak dapat ditebak oleh penyerang. Kita tidak bisa begitu saja menggunakan angka yang sama berulang kali. Kami ingin menghasilkan angka-angka ini dengan cara yang sangat tidak terduga sehingga penyerang tidak dapat menebaknya. Nomor acak ini penting untuk enkripsi yang aman, baik Anda mengenkripsi file Anda sendiri atau hanya menggunakan situs web HTTPS di Internet.

Angka Acak Benar

Anda mungkin bertanya-tanya bagaimana komputer dapat menghasilkan nomor acak. Dari mana "keacakan" ini berasal. Jika itu hanya sepotong kode komputer, bukankah mungkin angka yang dihasilkan komputer bisa diprediksi?

Kami biasanya mengelompokkan nomor acak yang dihasilkan komputer menjadi dua jenis, bergantung pada cara pembuatannya: nomor acak "Benar" dan nomor acak semu.

Untuk menghasilkan nomor acak yang "benar", komputer mengukur beberapa jenis fenomena fisik yang terjadi di luar komputer. Misalnya, komputer dapat mengukur peluruhan radioaktif sebuah atom. Menurut teori kuantum, tidak ada cara untuk mengetahui secara pasti kapan peluruhan radioaktif akan terjadi, jadi ini pada dasarnya adalah "keacakan murni" dari alam semesta. Seorang penyerang tidak akan bisa memprediksi kapan peluruhan radioaktif akan terjadi, jadi mereka tidak akan tahu nilai acaknya.

Untuk contoh yang lebih sehari-hari, komputer dapat mengandalkan kebisingan atmosfer atau cukup menggunakan waktu yang tepat saat Anda menekan tombol pada keyboard sebagai sumber data yang tidak dapat diprediksi, atau entropi. Misalnya, komputer Anda mungkin memperhatikan bahwa Anda menekan tombol tepat pada 0,23423523 detik setelah jam 2 siang. Ambil cukup waktu tertentu yang terkait dengan penekanan tombol ini dan Anda akan memiliki sumber entropi yang dapat Anda gunakan untuk menghasilkan nomor acak "benar". Anda bukan mesin yang dapat diprediksi, jadi penyerang tidak dapat menebak dengan tepat saat Anda menekan tombol ini. Perangkat / dev / random di Linux, yang menghasilkan nomor acak, "memblokir" dan tidak mengembalikan hasil sampai ia mengumpulkan cukup entropi untuk mengembalikan nomor yang benar-benar acak.

Nomor Pseudorandom

Nomor pseudorandom adalah alternatif dari nomor acak "benar". Komputer dapat menggunakan nilai benih dan algoritme untuk menghasilkan angka yang tampak acak, tetapi sebenarnya itu dapat diprediksi. Komputer tidak mengumpulkan data acak dari lingkungan.

Ini tidak selalu buruk dalam setiap situasi. Misalnya, jika Anda bermain video game, tidak masalah apakah peristiwa yang terjadi dalam game tersebut disebabkan oleh nomor acak "asli" atau nomor pseudorandom. Di sisi lain, jika Anda menggunakan enkripsi, Anda tidak ingin menggunakan nomor pseudorandom yang dapat ditebak oleh penyerang.

Misalnya, penyerang mengetahui algoritme dan nilai seed yang digunakan pembuat nomor pseudorandom. Dan katakanlah algoritme enkripsi mendapatkan nomor pseudorandom dari algoritme ini dan menggunakannya untuk menghasilkan kunci enkripsi tanpa menambahkan keacakan tambahan. Jika penyerang cukup tahu, mereka dapat bekerja mundur dan menentukan nomor pseudorandom yang harus dipilih oleh algoritme enkripsi dalam kasus tersebut, memecahkan enkripsi.

Penghasil Nomor Acak Perangkat Keras NSA dan Intel

Untuk mempermudah pengembang dan membantu menghasilkan nomor acak yang aman, chip Intel menyertakan generator nomor acak berbasis perangkat keras yang dikenal sebagai RdRand. Chip ini menggunakan sumber entropi pada prosesor dan memberikan nomor acak ke perangkat lunak ketika perangkat lunak memintanya.

Masalahnya di sini adalah bahwa generator bilangan acak pada dasarnya adalah kotak hitam dan kita tidak tahu apa yang terjadi di dalamnya. Jika RdRand berisi pintu belakang NSA, pemerintah akan dapat memecahkan kunci enkripsi yang dibuat dengan hanya data yang disediakan oleh pembuat nomor acak tersebut.

Ini adalah masalah yang serius. Pada Desember 2013, pengembang FreeBSD menghapus dukungan untuk menggunakan RdRand secara langsung sebagai sumber keacakan, dengan mengatakan bahwa mereka tidak dapat mempercayainya. [Sumber] Output perangkat RdRand akan dimasukkan ke dalam algoritme lain yang menambahkan entropi tambahan, memastikan bahwa pintu belakang apa pun di generator nomor acak tidak akan menjadi masalah. Linux sudah bekerja dengan cara ini, selanjutnya mengacak data acak yang berasal dari RdRand sehingga tidak dapat diprediksi meskipun ada backdoor. [Sumber] Dalam AMA ("Ask Me Anything") baru-baru ini di Reddit, CEO Intel Brian Krzanich tidak menjawab pertanyaan tentang masalah ini. [Sumber]

Tentu saja, ini mungkin bukan hanya masalah dengan chip Intel. Pengembang FreeBSD juga menyebut chip Via dengan namanya. Kontroversi ini menunjukkan mengapa menghasilkan bilangan acak yang benar-benar acak dan tidak dapat diprediksi itu sangat penting.

Untuk menghasilkan angka acak yang “benar”, pembuat angka acak mengumpulkan “entropi,” atau data acak dari dunia fisik di sekitar mereka. Untuk bilangan acak yang tidak benar - benar harus acak, mereka mungkin hanya menggunakan algoritme dan nilai seed.

Kredit Gambar: rekre89 di Flickr, Lisa Brewster di Flickr, Ryan Somma di Flickr, huangjiahui di Flickr