Bagaimana Komputer Menghasilkan Bilangan Acak

Daftar Isi:

Bagaimana Komputer Menghasilkan Bilangan Acak
Bagaimana Komputer Menghasilkan Bilangan Acak

Video: Bagaimana Komputer Menghasilkan Bilangan Acak

Video: Bagaimana Komputer Menghasilkan Bilangan Acak
Video: Chromecast Review: How to Set Up a Chromecast - YouTube 2024, April
Anonim
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 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 algoritme sehingga hasilnya tampak acak, meskipun tidak.

Topik ini menjadi lebih kontroversial baru-baru ini, dengan banyak orang mempertanyakan apakah chip pembuat nomor acak perangkat keras bawaan Intel dapat dipercaya. Untuk memahami mengapa hal itu mungkin tidak dapat dipercaya, Anda harus memahami bagaimana nomor acak digenerate di tempat pertama, dan untuk apa mereka digunakan.

Nomor Acak Apa Yang Digunakan Untuk

Nomor acak telah digunakan selama ribuan tahun. Baik itu melempar koin atau melempar dadu, tujuannya adalah meninggalkan hasil akhir hingga peluang acak. Generator angka acak di komputer serupa - mereka adalah upaya untuk mencapai hasil acak yang tidak dapat diprediksi.

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 dapat diduga oleh 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.

Image
Image

Angka Acak Benar

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, bergantung pada bagaimana mereka dihasilkan: bilangan 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 dapat memprediksi kapan peluruhan radioaktif akan terjadi, sehingga mereka tidak akan tahu nilai acaknya.

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. Sebagai contoh, komputer Anda mungkin memperhatikan bahwa Anda menekan sebuah tombol tepat pada 0,23423523 detik setelah pukul 14:00. Ambil cukup 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, "pemblokiran" dan tidak mengembalikan hasil hingga mengumpulkan cukup entropi untuk mengembalikan angka yang benar-benar acak.

Image
Image

Nomor Pseudorandom

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 di 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 diduga oleh penyerang.

Sebagai contoh, misalkan penyerang mengetahui algoritme dan nilai bibit yang digunakan oleh generator nomor pseudorandom. Dan katakanlah algoritma enkripsi mendapatkan nomor pseudorandom dari algoritme 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.

NSA dan Pembuat Nomor Acak Perangkat Keras 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 nomor acak pada dasarnya adalah kotak hitam dan kita tidak tahu apa yang sedang 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 memercayainya. [Sumber] Output dari perangkat RdRand akan dimasukkan ke dalam algoritme lain yang menambahkan entropi tambahan, memastikan bahwa setiap backdoor dalam pembuat nomor acak tidak akan berarti. Linux sudah bekerja dengan cara ini, mengacak lebih lanjut data acak yang berasal dari RdRand sehingga tidak 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 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.

Image
Image

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.

Direkomendasikan: