Implementasi Perbedaan Algoritma Blim-Blum-Shub Dengan Algoritma Quadratic Linear Congruential Generator Pada Aplikasi Password Generator

BAB 2
LANDASAN TEORI

2.1. Kriptografi
Kriptografi berasal dari gabungan dua suku kata yang berasal dari bahasa Yunani, yaitu
Kryptos dan Graphein. Kryptos memiliki makna tersembunyi, misterius, atau rahasia.
Graphein sendiri berarti tulisan. Kriptografi adalah seni dan ilmu dalam menyimpan pesan –
pesan yang berisi rahasia dan itu dilakukan oleh Cryptographer. Cryptanalysts adalah orang
yang mempraktekkan cryptanalysis, seni dan ilmu dalam memecahkan ciphertext. Cabang
matematika yang meliputi baik kriptografi maupun kriptoanalisis adalah Cryptology dan
orang yang mempraktekkannya disebut Cryptologists (Schneier, 1996).
Jadi secara sederhana, kriptografi dapat didefinisikan sebagai ilmu atau pelajaran
yang menggunakan tulisan dan memiliki makna yang tersembunyi atau rahasia didalamnya.
Terdapat pengertian lain di dalam buku lama (sebelum tahun 1980-an) yang menyatakan
bahwa kriptografi merupakan ilmu dan seni untuk menjaga kerahasiaan pesan dengan cara
menyandikannya ke dalam bentuk yang tidak dapat dimengerti lagi maknanya (Munir, 2006).

2.2. Pembangkit Bilangan Acak
Pembangkit Bilangan Acak atau Random Number Generator (RNG) adalah sebuah sumber
dari nomor - nomor yang tidak dapat diprediksi, yang berarti bahwa tidak mungkin
memprediksi hasil yang keluar. Dalam banyak hal seperti kriptografi, simulasi model,

pemgambilan sampel, permainan yang menggunakan kesempatan, dan lainnya dibutuhkan
pembangkitan serangkaian nomor acak (Bhaskar, 2013). RNG juga seringkali digunakan
untuk membangkitkan seed yang akan digunakan dalam algoritma block cipher atau
membangkitkan bilangan prima untuk algoritma RSA (Lietara, 2009).

2.3. Pembangkit Bilangan Acak Semu
Pembangkit Bilangan Acak Semu atau yang biasa disebut dengan Pseudo Random Number
Generator (PRNG) adalah sebuah algoritma yang umum digunakan pada kriptografi. Dengan
memberikan angka – angka acak yang pendek, PRNG mengkalkulasi dan mengembalikan
urutan angka yang lebih panjang. Angka ini nantinya akan muncul secara acak pada semua

Universitas Sumatera Utara

tes yang membandingkan mereka (angka) ke urutan true random numbers. Jika sebuah
PRNG dapat memproduksi urutan yang mana tidak ada tes statistik yang dapat
membedakannya dari urutan angka acak yang benar, maka PRNG itu dapat disebut sebagai
Cryptographically Secure Pseudo Random Generator (CSPRNG). Yang ingin diperoleh dari
PRNG adalah untuk menciptakan nilai dengan cepat, dari seed yang pendek, ke urutan yang
panjang yang muncul dalam setiap cara untuk dihasilkan oleh putaran-putaran koin yang adil
(Blum, 1986).


2.4. Algoritma Blum-Blum-Shub
Blum-Blum-Shub adalah algoritma pembangkit bilangan acak yang dibuat pada tahun 1986.
Algoritma yang termasuk dalam kategori Cryptographically Secure Pseudo-Random Number
Generator (CSPRNG) ini dapat dikatakan sangat sederhana dan mangkus. BBS sendiri
merupakan singkatan dari ketiga nama penemunya, yaitu Lenore Blum, Manuel Blum, dan
Michael Shub. Berikut rumus pada algoritma Blum-Blum Shub :

2.4.1. Cara kerja algoritma Blum-Blum-Shub
Langkah – langkah pembangkitan bilangan acak BBS adalah sebagai berikut : (munir, 2006)
1. Pilih dua buah bilangan prima rahasia p dan q, masing – masing kongruen
Terhadap 3 modulo 4.

dan

(dalam praktek bilangan

prima yang digunakan cukup besar).
2. Temukan hasil bilangan bulat blum n dengan menghitung
3. Pilih bilangan bulat acak s sebagai umpan. Adapun bilangan yang dipilih harus

memenuhi kriteria sebagai berikut :
a.
b. s dan n adalah bilangan prima.
4. Hitung nilai
5. Temukan hasil bilangan bit acak dengan melakukan literasi berikut :
a. Hitung
b. Temukan hasil

bit LSB (Least Significant Bit) yang diambil dari

6. Barisan bit acak yang dihasilkan adalah

Universitas Sumatera Utara

2.4.2. Flowchart algoritma Blum-Blum-Shub
Gambar 2.1 dibawah adalah flowchart untuk algoritma Blum-Blum-Shub.
Start

Input Bil Prima
p dan q


P&q equivalent to 3mod 4
(P Ξ 3mod 4 &
q Ξ 3mod 4) ?

n= p.q

Input bilangan prima s
dimana
2 s n

X0 = s2 mod n

i=1 to 40

Xi= xi-12 mod n

Zi= LSB(Xi)

Setiap 4 bit pada z1...z40 ubah ke

dalam bentuk decimal, dan ambil
10 digit pertama
Output 10 digit
bilangan acak

Stop

Gambar 2.1. Flowchart algoritma Blum-Blum-Shub
2.4.3. Contoh perhitungan algoritma Blum-Blum-Shub

Universitas Sumatera Utara

Misal p=29, q=47, n=1363, s=5, x0=25, maka perhitungan algoritma Blum-Blum-Shub bisa
dilihat pada tabel 2.1.
Literasi
25

1

625


1

807

1

1098

0

712

0

1271

1

286


0

16

0

256

0

112

0

277

1

401


1

13

1330

0

14

1089

1

15

111

1


16

54

0

Tabel 2.1. Contoh perhitungan algoritma Blum-Blum-Shub
Keamanan pada algoritma Blum-Blum-Shub ini terletak pada landasan teori bilangan
yang kuat, yaitu sulitnya memfaktorkan bilangan bulat yang besar menjadi faktor-faktor
prima dan juga sulitnya memecahkan Quadratic Residuosity Problem (Yuliawan, 2006).
Blum-Blum-Shub juga tidak dapat ditebak dari arah kiri dan kanan, yang berarti jika diberikan

Universitas Sumatera Utara

barisan bit yang dihasilkan oleh CSPRNG ini, kriptanalisi tidak dapat menganalisa barisan bit
sebelumnya dan barisan bit sesudahnya dalam urutan bilangan acak yang dihasilkan (Bilqis,
2012). BBS aman selama masalah memfaktorkannya tetap sulit (Sinai, 2011). BBS juga tidak
dapat diprediksi keacakannya (Wibowo, 2015).


2.5. Algoritma Quadratic Linear Congruential Generator
Quadratic Linear Congruential Generator (QLCG) merupakan salah satu algoritma
pembangkit bilangan acak dengan rumus sebagai berikut :
(
Dimana

dan

)

(Gille-Ginest, 2009).

Dijelaskan lebih rinci, dimana m adalah bilangan bulat positif dan

, a, b, c adalah

bilangan bulat non-negative yang lebih kecil daripada m. Knuth (1981) memberikan kondisi
yang diperlukan untuk dapat mencapai panjang periode maksimal m yang dapat dihasilkan.
Kondisi ini berlaku jika m bukanlah bilangan prima (Eichenauer, 1986).


2.5.1. Cara kerja algoritma Quadratic Linear Congruential Generator
Langkah-langkah

pembangkitan

bilangan

acak

pada

algoritma

Quadratic

Linear

Congruential Generator adalah sebagai berikut :

1. Pilih bilangan untuk

, a, b, c, serta m dimana :

a. m adalah bilangan bulat positif.
b.

, a, b, c adalah bilangan bulat non-negative yang lebih kecil dari m.

2. Temukan hasil bilangan bit acak dengan melakukan literasi berikut :
a. Hitung nilai Xi= (aXi-12 + bXi-1+ c ) mod n
b. Temukan hasil

bit LSB (Least Significant Bit) yang diambil dari

3. Barisan bit acak yang dihasilkan adalah

2.5.2. Flowchart algoritma Quadratic Linear Congruential Generator
Gambar 2.2 dibawah adalah flowchart untuk algoritma Quadratic Linear Congruential
Generator.

Universitas Sumatera Utara

Start

Input Bil Bulat m

Input bil bulat X0,a,b,c.
Dimana
X0,a,b,c < m.

i=1 to 40

Xi= (axi-12 + bxi-1+ c ) mod m

Zi= LSB(Xi)

Setiap 4 bit pada z1...z40 ubah ke
dalam bentuk decimal, dan ambil
10 digit pertama

Output 10 digit
bilangan acak

selesai

Gambar 2.2. Flowchart algoritma Quadratical Linear Congruential Generator

2.5.3. Contoh perhitungan algoritma Quadratic Linear Congruential Generator
Misal a=69, b=59, c=23, m=121, dan

=13, maka perhitungan algoritma Quadratic Linear

Congruential Generator bisa dilihat pada tabel 2.2.

Literasi
1

109

1

Universitas Sumatera Utara

2

55

1

3

1

1

4

30

0

5

5

1

6

107

1

7

16

0

8

118

0

9

104

0

10

85

1

11

82

0

12

63

1

13

27

1

14

8

0

15

71

1

16

52

0

Tabel 2.2. Contoh perhitungan algoritma Quadratical Linear Congruential Generator

Keunggulan yang terdapat pada algoritma Quadratic Linear Congruential Generator
adalah kecepatannya dan hanya membutuhkan sedikit operasi bit (Situngkir, 2013).

Universitas Sumatera Utara