Komputer menghasilkan nomor acak untuk segala sesuatu mulai dari kriptografi hingga gim video dan perjudian. Ada dua kategori angka acak - angka acak "benar" 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 menciptakan data darinya. Ini dikenal sebagai entropi. Di lain waktu, mereka menghasilkan angka “pseudorandom” dengan menggunakan algoritma sehingga hasilnya tampak acak, meskipun tidak.
Topik ini telah menjadi lebih kontroversial baru-baru ini, dengan banyak orang mempertanyakan apakah chip pembuat nomor acak perangkat keras internal Intel dapat dipercaya. Untuk memahami mengapa hal itu mungkin tidak dapat dipercaya, Anda harus memahami bagaimana nomor acak digemari di tempat pertama, dan untuk apa mereka digunakan.
Nomor acak telah digunakan selama ribuan tahun. Baik itu melempar koin atau melempar dadu, tujuannya adalah meninggalkan hasil akhir hingga peluang acak. Generator nomor acak di komputer serupa - mereka adalah upaya untuk mencapai hasil acak yang tak terduga.
Generator nomor acak berguna untuk berbagai tujuan. Selain 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 bisa ditebak penyerang. Kita tidak bisa 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.
Anda mungkin bertanya-tanya bagaimana komputer benar-benar dapat menghasilkan nomor acak. Darimana asal "keacakan" ini. Jika itu hanya bagian dari kode komputer, bukankah mungkin angka yang dihasilkan komputer dapat diprediksi?
Kami umumnya mengelompokkan nomor acak yang dihasilkan komputer menjadi dua jenis, tergantung pada bagaimana mereka dihasilkan: nomor acak "True" dan nomor pseudo-random.
Untuk menghasilkan angka acak "benar", komputer mengukur beberapa jenis fenomena fisik yang terjadi di luar komputer. Sebagai contoh, komputer dapat mengukur peluruhan radioaktif suatu atom. Menurut teori kuantum, tidak ada cara untuk mengetahui 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, sehingga mereka tidak akan tahu nilai acak.
Untuk contoh sehari-hari yang lebih, komputer bisa mengandalkan kebisingan atmosfer atau hanya menggunakan waktu yang tepat Anda menekan tombol pada keyboard Anda 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 ... Cukup ambil waktu spesifik yang terkait dengan penekanan tombol ini dan Anda akan memiliki sumber entropi yang dapat Anda gunakan untuk menghasilkan acak "benar" jumlah. Anda bukan mesin yang dapat diprediksi, jadi penyerang tidak dapat menebak saat yang tepat ketika Anda menekan tombol ini. Perangkat / dev / acak di Linux, yang menghasilkan angka acak, "memblok" dan tidak mengembalikan hasil hingga mengumpulkan cukup entropi untuk mengembalikan angka acak.
Nomor pseudorandom adalah alternatif untuk angka acak "benar". Komputer dapat menggunakan nilai benih dan algoritme untuk menghasilkan angka yang tampak acak, tetapi itu sebenarnya dapat diprediksi. Komputer tidak mengumpulkan data acak apa pun dari lingkungan.
Ini bukanlah hal yang buruk dalam setiap situasi. Misalnya, jika Anda bermain gim video, tidak masalah apakah peristiwa yang terjadi dalam gim tersebut dikungkung oleh angka acak "asli" atau nomor pseudorandom. Di sisi lain, jika Anda menggunakan enkripsi, Anda tidak ingin menggunakan nomor pseudorandom yang dapat ditebak oleh penyerang.
Sebagai contoh, katakanlah penyerang tahu algoritma dan nilai benih yang digunakan oleh generator nomor pseudorandom. Dan katakanlah algoritma enkripsi mendapatkan nomor pseudorandom dari algoritma ini dan menggunakannya untuk menghasilkan kunci enkripsi tanpa menambahkan keacakan tambahan. Jika seorang penyerang tahu cukup, mereka bisa bekerja mundur dan menentukan nomor pseudorandom yang harus dipilih oleh algoritma enkripsi dalam kasus itu, melanggar enkripsi.
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 nomor acak pada dasarnya adalah kotak hitam dan kita tidak tahu apa yang terjadi di dalamnya. Jika RdRand berisi backdoor NSA, pemerintah akan dapat memecahkan kunci enkripsi yang dihasilkan hanya dengan data yang disediakan oleh pembuat nomor acak.
Ini merupakan masalah serius. Pada bulan Desember 2013, pengembang FreeBSD menghapus dukungan untuk menggunakan RdRand secara langsung sebagai sumber keacakan, mengatakan bahwa mereka tidak dapat mempercayainya. [Sumber] Output dari perangkat RdRand akan dimasukkan ke dalam algoritme lain yang menambahkan entropi tambahan, memastikan bahwa setiap backdoor dalam generator nomor acak tidak masalah.Linux sudah bekerja dengan cara ini, mengacak lebih lanjut data acak yang berasal dari RdRand sehingga tidak akan dapat diprediksi bahkan jika ada backdoor. [Sumber] Dalam AMA baru-baru ini ("Tanya Me Anything") 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 nama. Kontroversi ini menunjukkan mengapa menghasilkan angka acak yang benar-benar acak dan tidak dapat diprediksi sangat penting.
Untuk menghasilkan angka acak "benar", generator angka acak mengumpulkan "entropi," atau data acak dari dunia fisik di sekitar mereka. Untuk nomor acak yang tidak sangat harus acak, mereka mungkin hanya menggunakan algoritma dan nilai benih.
Kredit Gambar: rekre89 di Flickr, Lisa Brewster di Flickr, Ryan Somma di Flickr, huangjiahui di Flickr