PEMODELAN BILANGAN ACAK DAN PEMBANGKITANNYA

advertisement
PEMODELAN BILANGAN ACAK
DAN PEMBANGKITANNYA
Pemodelan & Simulasi
Bilangan Acak
• B
„ ilangan acak adalah bilangan yang kemunculannya terjadi
secara acak.
• Bilangan acak ini penting untuk keperluan simulasi.
• Algoritma Congruential Pseudo Random Number Generator:
– Linear Congruential Generator (LCG)
– Multiplicative Random Number Generator
– Mixed Congruential Random Number Generator
• Pembangkit bilangan acak harus:
–
–
–
–
Mpy distribusi seragam dan tdk ada korelasi antar bilangan.
Membangkitkan dengan cepat, tdk memerlukan memori yg besar.
Dapat direproduksi (dibangkitkan kembali).
Periode besar, krn mungkin bilangan acak dibangkitkan berulang.
• Bilangan acak (random) banyak digunakan di dalam
kriptografi; misalnya untuk pembangkitan parameter
kunci pada algoritma kunci-publik, pembangkitan
Initialization Vector (IV) pada algoritma kunci-simetri,
dan sebagainya.
• Tidak ada komputasi yang benar-benar menghasilkan
deret bilangan acak secara sempurna.
• Bilangan acak yang dihasilkan dengan rumus-rumus
matematika adalah bilangan acak semu (pseudo), karena
pembangkitan bilangannya dapat diulang kembali.
• Pembangkit deret bilangan acak disebut Pseudo-random
Number Generator (PRNG).
1. Linear Congruential Generator (LCG)
Pembangkit bilangan acak Linear Congruential Generator
atau LCG adalah PRNG yang berbentuk:
Zn = (a.Z n – 1 + c) mod m
Zn = bilangan acak ke-n dari deretnya
Z n – 1 = bilangan acak sebelumnya
a = faktor pengali
c = increment
m = modulus
Kunci pembangkit adalah Z0 yang disebut umpan (seed).
Example 1
Example 2
Example 3
Latihan
1) Bangkitkan 10 bilangan pertama dari bilangan acak
menggunakan algoritma LCG dengan Z0 = 79, m =
100, a = 263, dan c = 71
2) Buatlah coding-nya menggunakan matlab
• LCG mempunyai periode tidak lebih besar dari m, dan
pada kebanyakan kasus periodenya kurang dari itu.
• LCG mempunyai periode penuh (m – 1) jika memenuhi
syarat berikut:
* b relatif prima terhadap m.
* a – 1 dapat dibagi dengan semua faktor prima dari m
* a – 1 adalah kelipatan 4 jika m adalah kelipatan 4
* m > maks(a, c, Z0)
* a > 0, c > 0
• Keunggulan LCG terletak pada kecepatannya dan hanya
membutuhkan sedikit operasi bit.
• Sayangnya, LCG tidak dapat digunakan untuk
kriptografi karena bilangan acaknya dapat diprediksi
urutan kemunculannya.
• Oleh karena itu LCG tidak aman digunakan untuk kriptografi.
Namun demikian, LCG tetap berguna untuk aplikasi nonkriptografi seperti simulasi, sebab LCG memperlihatkan sifat
statistik yang bagus dan sangat tepat untuk uji-uji empirik.
Pembangkit Bilangan Acak yang Aman untuk Kriptografi
Pembangkit bilangan acak yang cocok untuk kriptografi
dinamakan Cryptographically Secure Pseudorandom Generator
(CSPRNG).
Persyaratan CSPRNG adalah:
• Secara statistik CSPRNG mempunyai sifat-sifat yang bagus (yaitu
lolos uji keacakan statistik).
• Tahan terhadap serangan (attack) yang serius. Serangan ini
bertujuan untuk memprediksi bilangan acak yang dihasilkan.
Memilih a, c dan m
Parameter a, c dan m harus dipilih sedemikian shg dapat
mewujudkan panjang siklus maksimum (maximum cycle length).
 m = 2b-1, dengan b ditentukan berdasar jumlah bit per word
dlm komputer yg digunakan. Sebagian komputer
menggunakan 32 bit per word shg angka 31 merupakan
pilihan yg baik bagi b.
 Nilai c dan m sedemikian shg faktor persekutuan terbesarnya
adl 1.
 Nilai a = 1 + 4k, dengan k adl bilangan bulat.
 Panjang siklus maksimum yg dicapai sebuah LCG adl m.
 LCG dpt mencapai panjang siklus penuh 2 31  2,1 milyar
bilangan acak.
 Nilai c bukan mrpk kelipatan dari m dan hrs bilangan ganjil.
2. Multiplicative Random Number Generator
Algoritma Multiplicative Random Number Generator, membangkitan
bilangan pseudo menggunakan formula:
Zn = (a.Z n – 1 ) mod m
Bilangan pseudo dimulai dengan nilai awal Z0 yg disebut seed
Parameter a dan m = bilangan bulat positif tertentu
Supaya Zn dpt berperilaku acak:
Nilai m dipilih sebesar mungkin untuk memperbesar periode.
Nilai a dipilih agar korelasi antar Zn minimum.
Nilai Z0 dipilih bilangan bulat positif ganjil dan cukup besar, Z0 < m,
misalnya Z0 = 12357.
Bilangan acak: Ui = Zi / m
Pemilihan nilai-nilai parameter:
• Nilai m dipilih berdasarkan panjang word yg digunakan oleh
komputer. Misalnya komputer 32 bits, maka digunakan
m = 2 32 – 1 = 2147483648
Bgmn utk komputer 16 bits atau 8 bits atau 64 bits?
• Pemilihan nilai a : Nilai a harus mrpk bilangan prima dan
ganjil. Dapat dipilih a = 2 (b/2)  3, dengan b adl jumlah bit
word komputer yg digunakan.
Contoh:
Menggunakan komputer 12 bits
Maka m = 2 11 = 2048
a = 67  a  2 6
Z0 = 129
Hasil pembangkitan Zn (4 nilai pertama) adalah:
Bilangan acak yang diperoleh:
3. Mixed Congruential Generator
• Disebut juga dengan algoritma Mixed Congruential Random
Number Generator.
• Formula:
n
a
1
n
Zn  a Z0 
C (mod m)
a 1
Persyaratan:
• n adalah bilangan bulat dan c adalah bilangan prima
• Bila c adalah bilangan prima terhadap n maka faktor
persekutuan terbesar dari m dan c adalah 1
• a = 1(mod q) untuk setiap faktor prima q dari m
• a = 1(mod 4) bila 4 adalah salah satu faktor dari m
Download