Pembangkit Bilangan Acak Semu Rinaldi MunirTeknik Informatika 1
Pembangkit Bilangan Acak Semu Rinaldi Munir/Teknik Informatika 1
� Bilangan acak: bilangan yang tidak dapat diprediksi acak (random) banyak digunakan di dalam kriptografi � Bilangan � Misalnya untuk pembangkitan parameter kunci pada algoritma kunci-publik, pembangkitan initialization vector (IV) pada algoritma kunci-simetri, dan sebagainya Rinaldi Munir/Teknik Informatika 2
� 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 semacam itu disebut pseudo-random number generator (PRNG) Rinaldi Munir/Teknik Informatika 3
Linear Congruential Generator (LCG) � Pembangkit bilangan acak kongruen-lanjar (linear congruential generator atau LCG ) adalah PRNG yang berbentuk: Xn = (a. Xn – 1 + b) mod m Xn = bilangan acak ke-n dari deretnya Xn – 1 = bilangan acak sebelumnya a = faktor pengali b = increment m = modulus Kunci pembangkit adalah X 0 yang disebut umpan (seed). Rinaldi Munir/Teknik Informatika 4
Rinaldi Munir/Teknik Informatika 5
� 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: 1. 2. 3. 4. 5. 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, b, x 0) a > 0, b > 0 Rinaldi Munir/Teknik Informatika 6
�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 non-kriptografi seperti simulasi, sebab LCG mangkus dan memperlihatkan sifat statistik yang bagus dan sangat tepat untuk uji. Rinaldi Munir/Teknik Informatika 7
Pembangkit Bilangan Acak yang Aman untuk Kriptografi � Pembangkit bilangan acak yang cocok untuk kriptografi dinamakan cryptographically secure pseudorandom generator (CSPRNG). � Persyaratan CSPRNG adalah: 1. 2. Secara statistik ia 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. Rinaldi Munir/Teknik Informatika 8
Blum Shut (BBS) � CSPRNG yang paling sederhana dan paling mangkus (secara kompleksitas teoritis). � BBS dibuat pada tahun 1986 oleh Lenore Blum, Manuel Blum, dan Michael Shub. � Berbasis teori bilangan Rinaldi Munir/Teknik Informatika 9
Algoritma: 1. 2. 3. 4. Pilih dua buah bilangan prima rahasia, p dan q, yang masing-masing kongruen dengan 3 modulo 4. Kalikan keduanya menjadi n = pq. Bilangan m ini disebut bilangan bulat Blum Pilih bilangan bulat acak lain, s, sebagai umpan sedemikian sehingga: (i) 2 s < n (ii) s dan n relatif prima kemudian hitung x 0 = s 2 mod n Barisan bit acak dihasilkan dengan melakukan iterasi berikut sepanjang yang diinginkan: (i) Hitung xi = xi – 1 2 mod n (ii) zi = bit LSB (Least Significant Bit) dari xi Barisan bit acak adalah z 1, z 2, z 3, … Rinaldi Munir/Teknik Informatika 10
Contoh. Misalkan kita memilih p = 11 dan q = 23 sehingga n = pq = 253. Kita pilih s = 3 dan kita hitung x 0 =32 mod 253 = 9. Barisan bit acak kita hasilkan sebagai berikut: x 1 = x 02 mod n = 92 mod 253 = 81 z 1 = 1 (karena 81 ganjil, bit LSB-nya pasti 1) x 2 = x 12 mod n = 812 mod 253 = 236 z 2 = 0 (karena 236 genap, bit LSB-nya pasti 0) x 3 = x 22 mod n = 2362 mod 253 = 36 z 1 = 0 x 4 = x 32 mod n = 362 mod 253 = 31 z 1 = 1 x 5 = x 42 mod n = 312 mod 253 = 202 z 1 = 0 dst Barisan bit acak yang dihasilkan 10010. . Rinaldi Munir/Teknik Informatika 11
� Bilangan acak tidak harus 1 bit LSB tetapi bisa juga j buah bit (j adalah bilangan bulat positif yang tidak melebihi log 2(log 2 n)) ). � Perhatikan contoh berikut: Rinaldi Munir/Teknik Informatika 12
Contoh. [BIS 03] Misalkan kita memilih p = 11351 dan q = 11987 sehingga n = pq = 136064437. Kita pilih s = 80331757 dan j = 4 (j tidak melebihi log 2(log 2 136064437) = 4. 75594). Kita hitung x 0 = 803317572 mod 136064437 = 1312737111. Barisan bit acak kita hasilkan sebagai berikut: x 1 = x 02 mod n = 1312737182 mod 136064437 = 47497112 z 1 = 47497112 8 (mod 24) = 1000 basis 2 (4 bit LSB dari 47497112) x 2 = x 12 mod n = 474971122 mod 136064437 = 69993144 z 1 = 69993144 8 (mod 24) = 1000 basis 2 (4 bit LSB dari 69993144) … x 3 = x 22 mod n = 699931442 mod 136064437 = 13810821 z 1 = 13810821 5 (mod 24) = 0101 basis 2 (4 bit LSB dari 13810821) … Barisan blok bit acak yang dihasilkan: 1000 0101 … atau dalam basis 10: 8 8 5 … Rinaldi Munir/Teknik Informatika 13
�Keamanan BBS terletak pada sulitnya memfaktorkan n. Nilai n tidak perlu rahasia dan dapat diumumkan kepada publik. �BBS tidak dapat diprediksi dari arah kiri (unpredictable to the left) dan tidak dapat diprediksi dari arah kanan (unpredictable to the kanan), �artinya jika diberikan barisan bit yang dihasilkan oleh BBS, kriptanalis tidak dapat memprediksi barisan bit sebelumnya dan barsian nit sesudahnya Rinaldi Munir/Teknik Informatika 14
CSPRNG Berbasis RSA 1. 2. 3. 4. 5. Pilih dua buah bilangan prima rahasia, p dan q, dan bilangan bulat e yang relatif prima dengan (p – 1)(q – 1) Kalikan keduanya menjadi n = pq Pilih bilangan bulat acak lain, s, sebagai x 0 yang dalam hal ini 2 s n Barisan bit acak dihasilkan dengan melakukan iterasi berikut sepanjang yang diinginkan: a. Hitung xi = xi – 1 e mod n degan x 0 = s. b. zi = bit LSB (Least Significant Bit) dari xi Barisan bit acak adalah z 1, z 2, z 3, … Rinaldi Munir/Teknik Informatika 15
Teori Chaos �Teori chaos menggambarkan perilaku sistem dinamis nirlanjar yang menunjukkan fenomena chaos. �Salah satu karakteristik sistem chaos: peka pada nilai awal (sensitive dependence on initial condition). Rinaldi Munir/Teknik Informatika 16
Teori Chaos �Sebagai hasil dari sensitifitas, kelakuan sistem yang memperlihatkan chaos muncul acak (random), sistem chaos sendiri deterministik (dapat didefinisikan dengan baik dan tidak punya parameter acak). �meskipun Rinaldi Munir/Teknik Informatika 17
Teori Chaos fungsi chaos: persamaan logistik (logistic map) �Contoh f(x) = r x(1 – x) �Dalam bentuk persamaan iteratif: xi+1 = r xi (1 – xi) r : laju pertumbuhan ( 0 r 4 ) x : nilai-nilai chaos (0 x 1) Rinaldi Munir/Teknik Informatika 18
Teori Chaos Gambar 1 Diagram bifurcation untuk persamaan logistik xi+1 = r xi (1 – xi) Rinaldi Munir/Teknik Informatika 19
Teori Chaos � Sistem chaos berguna untuk pembangkitan bilangan acak xi+1 = r xi (1 – xi) � Misal r = 4. 0 dan nilai awal x 0 = 0. 456 x 1 = 4. 0 x 0(1 – x 0 ) = 0. 992256 x 2 = 4. 0 x 1(1 – x 1 ) = 0. 030736 … x 99 = 4. 0 x 98 (1 – x 98 ) = 0. 914379 x 100 = 4. 0 x 99(1 – x 99 ) = 0. 313162 � Bilangan acak dengan chaos tidak punya periode Rinaldi Munir/Teknik Informatika 20
Teori Chaos double f(double x, int iterasi) /* menghitung barisan chaotik berikutnya */ { int i; for (i = 1; i <= iterasi; i++) { x = r * x * (1 - x); } return x; } printf("Ketikkan nilai awal (0 s/d 1) : "); scanf("%lf", &x); while ((p = getc(Fin)) != EOF) { x = f(x, iterasi); /* hitung nilai chaotik berikutnya */ iterasi = iterasi + 10; /* tentukan jumlah iterasi berikutnya */ } Rinaldi Munir/Teknik Informatika 21
Teori Chaos Rinaldi Munir/Teknik Informatika 22
Teori Chaos chaos map lainnya: 1. Henon map xn = 1 + b(xn – 2 – xn – 3) + cx 2 n – 2 � Contoh 2. Arnold’s cat map: Rinaldi Munir/Teknik Informatika 23
- Slides: 23