Bagaimana Komputer Menghasilkan Angka Acak
Komputer menghasilkan angka acak untuk semuanya, mulai dari kriptografi hingga video game dan perjudian. Ada dua kategori nomor acak - nomor acak "benar" dan nomor pseudorandom - dan perbedaannya penting untuk keamanan sistem enkripsi.
Komputer dapat menghasilkan angka acak dengan mengamati beberapa data dari luar, seperti gerakan mouse atau suara kipas, yang tidak dapat diprediksi, dan membuat data darinya. Ini dikenal sebagai entropi. Di lain waktu, mereka menghasilkan angka "pseudorandom" dengan menggunakan algoritma sehingga hasilnya tampak acak, meskipun tidak.
Topik ini 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 tidak bisa dipercaya, Anda harus memahami bagaimana angka acak diintegenasikan, dan apa yang digunakan untuk.
Untuk Apa Angka Acak Digunakan
Angka acak telah digunakan selama ribuan tahun. Apakah itu membalik koin atau melempar dadu, tujuannya adalah membiarkan hasil akhirnya hingga kesempatan acak. Generator angka acak di komputer serupa - mereka adalah upaya untuk mencapai hasil acak yang tidak dapat diprediksi.
Generator angka 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 penyerang. Kami tidak bisa hanya menggunakan nomor yang sama berulang kali. Kami ingin menghasilkan angka-angka ini dengan cara yang sangat tidak terduga sehingga penyerang tidak bisa menebaknya. Angka-angka acak ini sangat penting untuk enkripsi aman, apakah Anda mengenkripsi file Anda sendiri atau hanya menggunakan situs web HTTPS di Internet.
Angka Acak Benar
Anda mungkin bertanya-tanya bagaimana komputer sebenarnya dapat menghasilkan angka acak. Dari mana "keacakan" ini berasal. Jika itu hanya sepotong kode komputer, bukankah angka yang dihasilkan komputer bisa diprediksi?
Kami biasanya mengelompokkan angka-angka acak yang dihasilkan komputer menjadi dua jenis, tergantung pada bagaimana mereka dihasilkan: angka acak "benar" dan angka pseudo-acak.
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 dengan pasti kapan peluruhan radioaktif akan terjadi, jadi ini pada dasarnya adalah "keacakan murni" dari alam semesta. Seorang penyerang tidak akan dapat memprediksi kapan peluruhan radioaktif akan terjadi, sehingga mereka tidak akan tahu nilai acaknya.
Untuk contoh yang lebih sehari-hari, komputer dapat mengandalkan kebisingan atmosfer atau hanya menggunakan waktu 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 pukul 14:00 ... Pegang cukup waktu tertentu 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-tombol ini. Perangkat / dev / random di Linux, yang menghasilkan angka acak, "blok" dan tidak mengembalikan hasil sampai mengumpulkan cukup entropi untuk mengembalikan angka yang benar-benar acak.
Nomor Pseudorandom
Nomor pseudorandom adalah alternatif dari nomor acak "benar". Komputer dapat menggunakan nilai seed dan algoritma untuk menghasilkan angka yang tampaknya acak, tetapi sebenarnya bisa diprediksi. Komputer tidak mengumpulkan data acak dari lingkungan.
Ini tidak selalu merupakan hal buruk dalam setiap situasi. Misalnya, jika Anda bermain video game, tidak masalah apakah peristiwa yang terjadi dalam game itu ditulis dengan angka acak "benar" atau angka pseudorandom. Di sisi lain, jika Anda menggunakan enkripsi, Anda tidak ingin menggunakan nomor pseudorandom yang dapat ditebak oleh penyerang.
Sebagai contoh, katakanlah seorang penyerang mengetahui algoritma dan nilai seed 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 apa pun. Jika seorang penyerang cukup tahu, mereka dapat bekerja mundur dan menentukan nomor pseudorandom yang harus dipilih algoritma enkripsi dalam kasus itu, memecahkan enkripsi.
NSA dan Penghasil Nomor Acak Perangkat Keras Intel
Untuk mempermudah pengembang dan membantu menghasilkan angka 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 saat perangkat lunak memintanya.
Masalahnya di sini adalah bahwa generator angka acak pada dasarnya adalah kotak hitam dan kita tidak tahu apa yang terjadi di dalamnya. Jika RdRand berisi pintu belakang NSA, pemerintah akan dapat memecah kunci enkripsi yang dihasilkan dengan hanya data yang disediakan oleh generator nomor acak itu..
Ini adalah masalah serius. Pada Desember 2013, pengembang FreeBSD menghapus dukungan untuk menggunakan RdRand secara langsung sebagai sumber keacakan, mengatakan mereka tidak bisa mempercayainya. [Sumber] Output perangkat RdRand akan dimasukkan ke dalam algoritma lain yang menambahkan entropi tambahan, memastikan bahwa setiap pintu belakang di generator angka acak tidak masalah. Linux sudah bekerja dengan cara ini, lebih lanjut mengacak data acak yang berasal dari RdRand sehingga tidak akan dapat diprediksi bahkan jika ada pintu belakang. [Sumber] Dalam AMA ("Ask Me Anything") baru-baru ini tentang Reddit, CEO Intel Brian Krzanich tidak menjawab pertanyaan tentang masalah ini. [Sumber]
Tentu saja, ini sepertinya bukan hanya masalah dengan chip Intel. Pengembang FreeBSD juga memanggil chip Via. 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 sekitarnya. Untuk angka acak yang tidak sangat harus acak, mereka mungkin hanya menggunakan algoritma dan nilai seed.
Kredit Gambar: rekre89 di Flickr, Lisa Brewster di Flickr, Ryan Somma di Flickr, huangjiahui di Flickr