• Tidak ada hasil yang ditemukan

Algoritma ElGamal dibuat oleh Taher ElGamal pada tahun 1984. Algoritma ini pada mulanya digunakan untuk digital signature, namun kemudian dimodifikasi sehingga juga bisa digunakan untuk enkripsi dan dekripsi. ElGamal digunakan didalam perangkat lunak sekuriti yang digunakan oleh GNU, program PGP, dan pada sistem sekuriti lainnya [6].

Sistem kriptografi ElGamal dibangun berdasarkan masalah logaritma diskrit. Keamanan algoritma ini terletak pada sulitnya menghitung logaritma diskrit [12]. Masalah logaritma diskrit: jika p adalah bilangan prima dan g dan y adalah sembarang bilangan bulat. Carilah x sedemikian sehingga . Melakukan perpangkatan modulo, , mudah, tetapi menemukan x dari lebih sulit. Semakin besar a,b, dan n semakin sulit memfaktorkan (butuh waktu yang lama) [6].

Carilah x dari (logaritmik diskrit, sulit)

Berikut ini merupakan algoritma kunci publik ElGamal [4] [12]. 5. Pasangan kunci dibangkitkan oleh penerima pesan.

i. Pilih sembarang bilangan prima p.

ii. Pilih bilangan bulat acak a, syarat 2 ≤ ap-1

iii. Tentukan α, dimana α primitive root modulo p, dengan ketentuan α ≠ p dan α ≠ a.Primitive root dari sebuah bilangan prima p adalah sebuah bilangan asli g yang mana orde modulo dari g (mod p) adalah p-1 [10].

iv. Hitung

v. Kunci publik (y, α, p) disebarkan dan kunci privat (a) disimpan

6. Enkripsi oleh pengirim.

i. Menerima kunci publik (y, α, p)

ii. Mempersiapkan plainteks (m), representasikan plainteks dalam

rentang 0…p-1.

iii. Memilih bilangan asli acak sebagai kunci sesi b, syarat b p-1 iv. Cipherteks pertama,

v. Cipherteks kedua,

vi. Cipherteks (c1, c2) dikirim kepada penerima.

7. Dekripsi oleh penerima.

i. Terima Cipherteks (c1, c2)

ii. Hitung ( )

iii. Dekripsi chiperteks menjadi plainteks, ( )

2.3.1 Bilangan Prima

Bilangan prima adalah bilangan asli yang tidak dapat dibagi tanpa sisa oleh bilangan asli lain kecuali satu dan bilngan itu sendiri [5]. Menurut Stallings [11], bilangan bulat positif p ( ) disebut bilangan prima jika pembaginya hanya 1 dan p. Contohnya bilangan 23 adalah prima karena ia hanya habis dibagi oleh 1 dan 23. Karena bilangan

prima harus lebih besar daripada 1, maka barisan bilangan prima dimulai dari 2, yaitu

2, 3, 5, 7, 11, 13, …. Seluruh bilangan prima adalah bilangan ganjil kecuali 2 yang merupakan bilangan genap [6].

Pembangkitan bilangan prima dibutuhkan untuk hampir semua algoritma kunci publik [10]. Seperti yang telah dijabarkan pada bagian sebelumnya dalam kriptografi kunci publik algoritma ElGamal menggunakan bilangan prima sebagai salah satu nilai parameternya, oleh karena itu dibutuhkan suatu metode pembangkitan bilangan prima. Beberapa algoritma-algoritma yang dapat digunakan untuk membangkitkan bilangan prima antara lain algoritma probabilistik seperti Lehman dan Rabin-Miller atau algoritma deterministik seperti Sieve of Eratosthenes. Bedanya algoritma deterministik menghasilkan bilangan yang pasti merupakan prima sedangkan algoritma probabilistik dapat menghsailkan pseudoprimes (prima semu) [11].

2.3.2 The Sieve of Eratosthenes

Metode The Sieve of Eratosthenes merupakan sebuah algoritma deterministik sederhana untuk membangkitan bilangan prima yang ditemukan oleh Eratosthenes seorang matematikawan Yunani kuno [5]. Metode The Sieve of Eratosthenes membangkitkan bilangan prima yang ada di antara bilangan satu sampai dengan batas bilangan maksimum yang ditentukan dengan cara membuat daftar semua bilangan asli dari satu sampai batas kemudian mengeliminasi bilangan komposit hingga tersisa hanya bilangan prima. Bilangan komposit adalah bilangan asli yang lebih besar dari satu dan bukan bilangan prima, memiliki pembagi selain satu dan bilangan itu sendiri.

Disebut The Sieve of Eratosthenes, sieve (saringan) karena bukannya membangun objek yang diinginkan, yaitu bilangan prima, tetapi menyaringnya dari yang bukan prima [5].

Menurut Möhring dan Oellrich [5], komputasi running time dari pembangkit bilangan prima dengan metode The Sieve of Eratosthenes pada komputer 3.2 GHz dengan sistem operasi Linux lebih cepat dibandingkan komputasi menggunakan metode standar untuk membangkitkan bilangan prima pada komputer yang sama.

Tabel 2.1 Komputasi Running Time Pembangkit Bilangan Prima Metode Standar pada Komputer 3.2 GHz Sistem Operasi Linux [5]

n 103 104 105 106

Time 0.00 s 0.20 s 19.4 s 1934.4 s

Tabel 2.2 Komputasi Running Time Pembangkit Bilangan Prima Metode The Sieve of Eratosthenes pada Komputer 3.2 GHz Sistem Operasi Linux [5]

n 106 107 108 109

Time 0.02 s 0.43 s 5.4 s 66.5 s

Adapun prosedur dari metode standar pembangkitan bilangan prima yang diutarakan oleh Möhring dan Oellrich adalah sebagai berikut.

Tabel 2.3 Prosedur Pembangkit Bilangan Prima Metode Standar [5]

Sedangkan prosedur dari metode The Sieve of Eratosthenes yang digunakan oleh Mohring dan Oellrich sehingga menghasilkan komputasi seperti pada tabel 3.2 adalah sebagai berikut.

Tabel 2.4 Prosedur Pembangkit Bilangan Prima Metode The Sieve of Eratosthenes [5]

Algoritma The Sieve of Eratosthenes adalah sebagai berikut. 1. Buat daftar bilangan dari 2..n

2. Tandai bilangan pertama dari daftar sebagai bilngan prima pertama, yaitu p = 2.

3. Eliminasi semua kelipatan p yang lebih kecil dari n (untuk 2 eliminasi 4, 6,

8,…), menghitung kelipatan p dimulai dari p2.

4. Tandai bilangan terkecil yang belum dieliminasi dari daftar namun lebih besar dari p sebagai prima selanjutnya, ulangi langkah 3.

5. Sampai tidak ada lagi bilangan yang bisa ditandai sebagai prima karena semua bilangan yang tersisa tidak tereliminasi dari daftar sudah ditandai sebagai prima.

2.3.3 Relatif Prima

Menurut Munir [6], dua buah bilangan bulat a dan b dikatakan relatif prima jika pembagi berasama terbesarnya PBB(a, b) = 1. Jika a dan b relatif prima, maka terdapat bilangan bulat m dan n sedemikian sehingga

Sebagai contoh 4 dan 13 relatif prima sebab PBB(4, 13) = 1. Begitupula dengan 2 dan 5 relatif prima karena PBB(2, 13) = 1. Namun 2 dan 4 tidak relatif prima karena PBB(2, 4) = 2  1.

2.3.4 Fungsi Totient Euler

Fungsi Totient Euler  mendefinisikan (n) untuk n  1 yang menyatakan jumlah bilangan bulat positif < n yang relatif prima dengan n [6]. Sebagai contoh bilangan 8, bilangan bulat positif lebih kecil dari 8 adalah 1...7, diantara bilangan tersebut yang relatif prima dengan 8 adalah 1, 3, 5, dan 7 maka, (8) = 4.

Jika n prima, maka setiap bilangan bulat yang lebih kecil dari n relatif prima terhadap n. Dengan kata lain, (n) = n Ŕ 1 hanya jika n prima [6]. Contoh bilangan

prima 11, bilangan yang lebih kecil dari 11 adalah 1…10 dan semua bilangan ini

relatif prima terhadap 11, maka (11) = 10.

Jika n = pq adalah bilangan komposit dengan p dan q prima, maka (n) = (p)

(q) = (p-1) (q-1) [6].

Jika p bilangan prima dan k > 0, maka (pk) = pkŔpk-1 = pk-1 (p-1) [6].

(Euler’s Generalization of Fermat Theorem). Jika PBB(a, n) = 1, maka a(n) mod n = 1 (atau a(n) 1 (mod n)) [6].

2.3.5 Akar Primitif (Primitive Root) dari Bilangan Prima p

Jika r dan n adalah bilangan bulat yang relatif prima dengan n > 0. Dan jika

(n) adalah m eksponen positif paling akhir sehingga rm 1 (mod n), maka r disebut akar primitif modulo n [11].

Secara umum, dapat dikatakan bahwa eksponen tertinggi yang mungkin untuk dimilki sebuah bilangan (mod n) adalah (n). Jika sebuah bilangan merupakan bagian dari urutan ini, maka bilangan tersebut disebut sebagai akar primitif dari n. Pentingnya gagasan ini adalah jika a adalah akar primitif dari n, maka orde-nya

a, a2, ..., a(n)

adalah (mod n) yang berbeda dan semuanya relatif prima dengan n. Secara khusus, untuk p bilangan prima, jika a adalah akar primitif dari p, maka

a, a2, ..., ap1

adalah (mod p) yang berbeda [11]. Untuk bilangan prima 19, akar primitif-nya adalah 2, 3, 10, 13, 14, dan 15.

Tidak semua bilangan bulat memiliki akar primitif. Bahkan, bilangan bulat dengan akar primitif adalah hanya dari bentuk 2, 4, pα, dan 2pα, dimana p adalah prima ganjil setiap dan α adalah bilangan bulat positif [11].

2.3.6 Perpangkatan Modulo

Perhitungan perpangkatan modulo ini sangat penting dalam algoritma kriptografi ElGamal karena perhitungan ini digunakan pada proses pembangkitan kunci, enkripsi maupun dekripsi.

Berikut ini merupakan pemahaman aritmatika modulo menurut Munir [6], misalkan a adalah bilangan bulat dan m adalah bilangan bulat > 0. Operasi (dibaca a modulo m) memberikan sisa jika a dibagi dengan m. Bilangan m disebut modulus atau modulo, dan hasil aritmatika modulo m terletak di dalam himpunan {0,

1, 2, …, m-1}. Notasi: sedemikian sehingga , dengan 0

rm.

Perhitungan perpangkatan modulo, misalnya menghitung persamaan . Untuk memperjelas perhitungannnya berikut ini merupakan contoh perhitungan modulo.

Berdasarkan persamaan aritmatika modulo :

perhitungan perpangkatan modulo dapat dilakukakan seperti contoh berikut.

( )

Perhitungan ini disebut metode divive conquer atau disebut juga metode addition chainning karena hasil perkalian antara langsung dirangkai dengan operasi modulo [6].

Dokumen terkait