Nomor acak semu: metode memperoleh, kelebihan dan kekurangan

Daftar Isi:

Nomor acak semu: metode memperoleh, kelebihan dan kekurangan
Nomor acak semu: metode memperoleh, kelebihan dan kekurangan
Anonim

Angka pseudo-acak adalah nomor khusus yang dihasilkan oleh generator khusus. Deterministic Random Bit Generator (PRNG), juga dikenal sebagai Deterministic Random Bit Generator (DRBG), adalah algoritma untuk membangkitkan barisan bilangan yang sifatnya mendekati karakteristik barisan bilangan acak. Urutan PRNG yang dihasilkan tidak benar-benar acak, karena sepenuhnya ditentukan oleh nilai benih yang disebut benih PRNG, yang mungkin termasuk nilai yang benar-benar acak. Meskipun urutan yang lebih dekat ke acak dapat dibangkitkan menggunakan perangkat keras penghasil angka acak, generator angka pseudo-acak penting dalam praktiknya untuk kecepatan pembuatan angka dan reproduktifitasnya.

Pengacakan nomor
Pengacakan nomor

Aplikasi

PRNG merupakan pusat aplikasi seperti simulasi (misalnya untuk Monte Carlo), permainan elektronik (misalnya untuk pembuatan prosedural), dan kriptografi. Aplikasi kriptografi mengharuskan outputdata tidak dapat diprediksi dari informasi sebelumnya. Diperlukan algoritma yang lebih kompleks yang tidak mewarisi linearitas PRNG sederhana.

Syarat dan Ketentuan

Properti statistik yang baik adalah persyaratan utama untuk mendapatkan PRNG. Secara umum, analisis matematis yang cermat diperlukan untuk memastikan bahwa RNG menghasilkan angka yang cukup dekat dengan acak agar sesuai dengan tujuan penggunaan.

John von Neumann memperingatkan agar tidak salah menafsirkan PRNG sebagai generator yang benar-benar acak dan bercanda bahwa "Siapa pun yang mempertimbangkan metode aritmatika untuk menghasilkan angka acak tentu saja dalam keadaan berdosa."

Gunakan

PRNG dapat diluncurkan dari keadaan awal yang berubah-ubah. Itu akan selalu menghasilkan urutan yang sama ketika diinisialisasi dengan keadaan ini. Periode PRNG didefinisikan sebagai berikut: maksimum atas semua keadaan awal dari panjang awalan urutan yang tidak berulang. Periode dibatasi oleh jumlah status, biasanya diukur dalam bit. Karena panjang periode berpotensi berlipat ganda dengan setiap bit "status" ditambahkan, mudah untuk membuat PRNG dengan periode yang cukup besar untuk banyak aplikasi praktis.

Plot pengacakan besar
Plot pengacakan besar

Jika status internal PRNG berisi n bit, periodenya tidak boleh lebih dari 2n hasil, jauh lebih pendek. Untuk beberapa PRNG, durasinya dapat dihitung tanpa melewati seluruh periode. Register Pergeseran Umpan Balik Linear (LFSRs) biasanyadipilih sehingga memiliki periode yang sama dengan 2n 1.

Generator kongruensial linier memiliki periode yang dapat dihitung menggunakan pemfaktoran. Meskipun PPP akan mengulangi hasilnya setelah mencapai akhir periode, hasil yang berulang tidak berarti bahwa akhir periode telah tercapai, karena keadaan internalnya mungkin lebih besar daripada output; ini khususnya terbukti untuk PRNG dengan output bit tunggal.

Kemungkinan kesalahan

Kesalahan yang ditemukan oleh PRNG yang rusak berkisar dari yang halus (dan tidak diketahui) hingga yang jelas. Contohnya adalah algoritma bilangan acak RANDU, yang telah digunakan pada mainframe selama beberapa dekade. Itu adalah kekurangan yang serius, tetapi kekurangannya tidak diketahui untuk jangka waktu yang lama.

Pengoperasian generator angka
Pengoperasian generator angka

Di banyak bidang, studi penelitian yang menggunakan seleksi acak, simulasi Monte Carlo, atau metode lain berdasarkan RNG kurang dapat diandalkan dibandingkan dengan hasil GNPG berkualitas rendah. Bahkan saat ini, kehati-hatian terkadang diperlukan, sebagaimana dibuktikan oleh peringatan dalam International Encyclopedia of Statistical Science (2010).

Studi kasus yang sukses

Sebagai ilustrasi, pertimbangkan bahasa pemrograman Java yang banyak digunakan. Pada tahun 2017, Java masih mengandalkan Linear Congruential Generator (LCG) untuk PRNG-nya.

Sejarah

PRNG pertama yang menghindari masalah serius dan tetap berjalan cukup cepat,adalah Mersenne Twister (dibahas di bawah), yang diterbitkan pada tahun 1998. Sejak itu, PRNG berkualitas tinggi lainnya telah dikembangkan.

Deskripsi Generasi
Deskripsi Generasi

Tetapi sejarah bilangan pseudo-acak tidak berakhir di situ. Pada paruh kedua abad ke-20, kelas standar algoritma yang digunakan untuk PRNG termasuk generator kongruensial linier. Kualitas LCG diketahui tidak memadai, tetapi metode yang lebih baik tidak tersedia. Press et al (2007) menggambarkan hasilnya sebagai berikut: "Jika semua karya ilmiah yang hasilnya diragukan karena [LCG dan sejenisnya] menghilang dari rak perpustakaan, akan ada celah sebesar kepalan tangan Anda di setiap rak."

Pencapaian utama dalam pembuatan generator pseudo-acak adalah pengenalan metode berdasarkan pengulangan linier di bidang dua elemen; osilator tersebut digabungkan ke register geser umpan balik linier. Mereka berfungsi sebagai dasar untuk penemuan sensor angka pseudo-acak.

Secara khusus, penemuan tahun 1997 oleh Mersen Twister menghindari banyak masalah dengan generator sebelumnya. Mersenne Twister memiliki periode 219937−1 iterasi (≈4,3 × 106001). Telah terbukti terdistribusi secara merata dalam (hingga) 623 dimensi (untuk nilai 32-bit), dan pada saat diperkenalkan lebih cepat daripada generator suara statistik lainnya yang menghasilkan urutan angka pseudo-acak.

Pada tahun 2003, George Marsaglia memperkenalkan keluarga generator xorshift juga berdasarkan pengulangan linier. Generator ini sangatcepat dan - dikombinasikan dengan operasi non-linier - mereka lulus uji statistik yang ketat.

Pada tahun 2006, keluarga generator WELL dikembangkan. Generator BAIK dalam arti tertentu meningkatkan kualitas Twister Mersenne, yang memiliki ruang keadaan yang terlalu besar dan pemulihan yang sangat lambat darinya, menghasilkan angka pseudo-acak dengan banyak nol.

Karakterisasi bilangan acak
Karakterisasi bilangan acak

Kriptografi

PRNG yang cocok untuk aplikasi kriptografi disebut dengan kriptografi aman PRNG (CSPRNG). Persyaratan untuk CSPRNG adalah bahwa penyerang yang tidak mengetahui seed hanya memiliki sedikit keuntungan dalam membedakan urutan output generator dari urutan acak. Dengan kata lain, sementara PRNG hanya diperlukan untuk lulus uji statistik tertentu, CSPRNG harus lulus semua uji statistik yang dibatasi waktu polinomial dalam ukuran benih.

Meskipun bukti properti ini berada di luar tingkat teori kompleksitas komputasi saat ini, bukti kuat dapat diberikan dengan mereduksi CSPRNG menjadi masalah yang dianggap sulit, seperti faktorisasi bilangan bulat. Secara umum, peninjauan bertahun-tahun mungkin diperlukan sebelum algoritme dapat disertifikasi sebagai CSPRNG.

Telah ditunjukkan bahwa kemungkinan NSA memasukkan pintu belakang asimetris ke generator nomor pseudo-random Dual_EC_DRBG bersertifikat NIST.

generator bbs
generator bbs

Algoritme pseudo-acaknomor

Kebanyakan algoritme PRNG menghasilkan urutan yang didistribusikan secara merata oleh salah satu dari beberapa pengujian. Ini adalah pertanyaan terbuka. Ini adalah salah satu pusat dalam teori dan praktik kriptografi: apakah ada cara untuk membedakan output PRNG berkualitas tinggi dari urutan yang benar-benar acak? Dalam pengaturan ini, resolver mengetahui bahwa algoritme PRNG yang diketahui telah digunakan (tetapi bukan status inisialisasinya), atau algoritme yang benar-benar acak digunakan. Dia harus membedakan mereka.

Keamanan sebagian besar algoritma dan protokol kriptografi yang menggunakan PRNG didasarkan pada asumsi bahwa tidak mungkin membedakan antara penggunaan PRNG yang sesuai dan penggunaan urutan yang benar-benar acak. Contoh paling sederhana dari ketergantungan ini adalah stream cipher, yang paling sering bekerja dengan menghilangkan atau mengirim pesan plaintext dengan output PRNG, menghasilkan ciphertext. Merancang PRNG yang memadai secara kriptografis sangat sulit karena harus memenuhi kriteria tambahan. Ukuran periodenya merupakan faktor penting dalam kesesuaian kriptografi PRNG, tetapi bukan satu-satunya.

Angka acak semu
Angka acak semu

Sebuah PRNG komputer awal yang diusulkan oleh John von Neumann pada tahun 1946 dikenal sebagai metode kuadrat rata-rata. Algoritmanya adalah sebagai berikut: ambil sembarang angka, kuadratkan, hapus digit tengah dari angka yang dihasilkan sebagai "angka acak", lalu gunakan angka ini sebagai angka awal untuk iterasi berikutnya. Misalnya, mengkuadratkan angka 1111 menghasilkan1234321, yang dapat ditulis sebagai 01234321, angka 8 digit adalah kuadrat dari angka 4 digit. Ini memberikan 2343 sebagai angka "acak". Hasil dari pengulangan prosedur ini adalah 4896, dan seterusnya. Von Neumann menggunakan 10 digit angka, tetapi prosesnya sama.

Kekurangan "alun-alun tengah"

Masalah dengan metode "kuadrat rata-rata" adalah bahwa semua urutan akhirnya berulang, beberapa sangat cepat, misalnya: 0000. Von Neumann tahu tentang ini, tetapi dia menemukan pendekatan yang cukup untuk tujuannya, dan khawatir bahwa "koreksi" matematika hanya akan menyembunyikan kesalahan alih-alih menghapusnya.

Inti dari generator
Inti dari generator

Von Neumann menemukan bahwa generator nomor acak dan pseudo-acak perangkat keras tidak cocok: jika mereka tidak merekam output yang dihasilkan, mereka tidak dapat diperiksa kesalahannya nanti. Jika mereka menuliskan hasilnya, mereka akan menghabiskan memori komputer yang terbatas dan dengan demikian kemampuan komputer untuk membaca dan menulis angka. Jika angka-angka ditulis pada kartu, mereka akan membutuhkan waktu lebih lama untuk menulis dan membaca. Pada komputer ENIAC yang ia gunakan, metode "kuadrat tengah" dan melakukan proses mendapatkan angka pseudo-random beberapa ratus kali lebih cepat daripada membaca angka dari kartu berlubang.

Mean square telah digantikan oleh generator yang lebih kompleks.

Metode inovatif

Sebuah inovasi terbaru adalah menggabungkan kuadrat rata-rata dengan deret Weil. Metode ini memastikan produk berkualitas tinggi dalamperiode panjang. Ini membantu untuk mendapatkan formula bilangan pseudo-acak terbaik.

Direkomendasikan: