13Jul
menghasilkan nomor acak untuk segala hal mulai dari kriptografi hingga permainan video dan perjudian. Ada dua kategori bilangan acak - nomor acak "benar" dan bilangan 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 menciptakan data darinya. Ini dikenal sebagai entropi. Di lain waktu, mereka menghasilkan bilangan "pseudorandom" dengan menggunakan algoritma sehingga hasilnya tampak acak, walaupun tidak.
Topik ini telah menjadi lebih kontroversial baru-baru ini, dengan banyak orang mempertanyakan apakah chip generator bilangan acak Intel built-in dapat dipercaya. Untuk memahami mengapa hal itu mungkin tidak dapat dipercaya, Anda harus memahami bagaimana angka acak bergema di tempat pertama, dan untuk apa penggunaannya.
Bilangan Acak Apa yang Digunakan untuk
Angka acak telah digunakan selama ribuan tahun. Entah itu membalik koin atau memutar dadu, tujuannya adalah untuk meninggalkan hasil akhirnya sampai kesempatan acak. Generator bilangan acak di komputer serupa - mereka berusaha mencapai hasil acak yang tidak dapat diprediksi.
Generator bilangan acak berguna untuk berbagai tujuan. Selain aplikasi yang jelas seperti menghasilkan nomor acak untuk keperluan 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 hanya menggunakan nomor yang sama berulang-ulang. Kami ingin menghasilkan angka-angka ini dengan cara yang sangat tidak terduga sehingga penyerang tidak bisa menebaknya. Nomor acak ini penting untuk enkripsi yang aman, apakah Anda mengenkripsi file Anda sendiri atau hanya menggunakan situs HTTPS di Internet.
Angka Bilangan Acak yang Sebenarnya
Anda mungkin bertanya-tanya bagaimana komputer benar-benar dapat menghasilkan nomor acak. Darimana asal "keacakan" ini? Jika itu hanya sepotong kode komputer, bukankah mungkin angka yang dihasilkan komputer bisa diprediksi?
Kami biasanya mengelompokkan bilangan acak yang dihasilkan komputer menjadi dua jenis, tergantung pada bagaimana cara pembuatannya: Angka acak "Benar" dan bilangan acak pseudo-acak.
Untuk menghasilkan bilangan acak "benar", komputer mengukur beberapa jenis fenomena fisik yang terjadi di luar komputer. Misalnya, komputer bisa mengukur peluruhan radioaktif 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. Penyerang tidak akan bisa memprediksi kapan peluruhan radioaktif akan terjadi, jadi mereka tidak akan mengetahui nilai acaknya.
Untuk contoh sehari-hari, komputer bisa mengandalkan suara atmosfir atau cukup gunakan waktu yang tepat untuk menekan tombol pada keyboard Anda sebagai sumber data yang tidak dapat diprediksi, atau entropi. Sebagai contoh, komputer Anda mungkin memperhatikan bahwa Anda menekan sebuah tombol pada waktu persis 0.23423523 detik setelah jam 2. Ambil cukup banyak waktu tertentu yang terkait dengan penekanan tombol ini dan Anda akan memiliki sumber entropi yang dapat Anda gunakan untuk menghasilkan "benar" acak.jumlah. Anda bukan mesin yang bisa diprediksi, jadi penyerang tidak bisa menebak saat yang tepat saat Anda menekan tombol ini. Perangkat acak /dev/ di Linux, yang menghasilkan angka acak, "blok" dan tidak mengembalikan hasilnya sampai mengumpulkan cukup entropi untuk mengembalikan nomor acak yang sebenarnya. Angka Pseudorandom
Angka Pseudorandom
merupakan alternatif bilangan acak "true".Komputer bisa menggunakan nilai benih dan algoritma untuk menghasilkan angka yang tampaknya acak, namun sebenarnya bisa diprediksi. Komputer tidak mengumpulkan data acak dari lingkungan.
Ini tidak selalu berarti buruk dalam setiap situasi. Misalnya, jika Anda sedang bermain video game, tidak masalah apakah kejadian yang terjadi di game itu disebabkan oleh bilangan acak "benar" atau bilangan pseudorandom. Di sisi lain, jika Anda menggunakan enkripsi, Anda tidak ingin menggunakan nomor pseudorandom yang bisa ditebak oleh penyerang.
Sebagai contoh, katakanlah seorang penyerang mengetahui nilai algoritma dan benih yang digunakan generator angka pseudorandom. Dan misalkan algoritma enkripsi mendapatkan bilangan pseudorandom dari algoritma ini dan menggunakannya untuk menghasilkan kunci enkripsi tanpa menambahkan keacakan tambahan. Jika penyerang cukup tahu, mereka bisa bekerja mundur dan menentukan nomor pseudorandom yang harus dipilih algoritma enkripsi dalam hal ini, memecahkan enkripsi.
NSA dan Intel Hardware Random Number Generator
Untuk memudahkan pengembang dan membantu menghasilkan nomor acak yang aman, chip Intel menyertakan generator bilangan acak berbasis hardware yang dikenal dengan RdRand. Chip ini menggunakan sumber entropi pada prosesor dan menyediakan nomor acak ke perangkat lunak saat 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 backdoor NSA, pemerintah akan dapat memecahkan kunci enkripsi yang dihasilkan hanya dengan data yang diberikan oleh generator bilangan acak tersebut.
Ini adalah masalah serius. Pada bulan Desember 2013, pengembang FreeBSD menghapus dukungan untuk menggunakan RdRand secara langsung sebagai sumber keacakan, dengan mengatakan bahwa mereka tidak dapat mempercayainya.[Source] Output dari perangkat RdRand akan dimasukkan ke dalam algoritma lain yang menambahkan entropi tambahan, memastikan bahwa setiap backdoor dalam generator bilangan acak tidak masalah. Linux sudah bekerja dengan cara ini, lebih jauh mengacak data acak yang berasal dari RdRand sehingga tidak bisa diprediksi meski ada backdoor.[Source] Dalam AMA baru-baru ini( "Ask Me Anything") di Reddit, CEO Intel Brian Krzanich tidak menjawab pertanyaan tentang masalah ini.[Source]
Tentu saja, ini kemungkinan bukan hanya masalah dengan chip Intel. Pengembang FreeBSD memanggil chip Via dengan nama juga. Kontroversi ini menunjukkan mengapa menghasilkan bilangan acak yang benar-benar acak dan tidak dapat diprediksi sangat penting.
Untuk menghasilkan bilangan acak "benar", generator bilangan acak mengumpulkan "entropi," atau data acak yang tampaknya berasal dari dunia fisik di sekitar mereka. Untuk bilangan acak yang tidak benar-benar perlu acak, mereka mungkin hanya menggunakan algoritma dan nilai benih.
Image Credit: rekre89 on Flickr, Lisa Brewster di Flickr, Ryan Somma di Flickr, huangjiahui di Flickr