• Tidak ada hasil yang ditemukan

LANDASAN TEORI

2.4 Algoritma ElGamal

Algoritma ElGamal merupakan algoritma asimetris yang memiliki dua kunci yaitu kunci publik (public key) dan kunci rahasia (private key). Pada Algoritma ElGamal terdapat tiga pasang bilangan untuk kunci publik (public key), dan satu bilangan untuk kunci rahasia (private key). Algoritma ElGamal terdiri dari tiga proses yaitu proses pembentukan kunci, proses enkripsi dan proses dekripsi.

2.4.1 Landasan Matematika Algoritma ElGamal 1. Modulo Exponensial

Perhitungan yang dilakukan adalah menghitung dengan n yang sangat besar. Cara Square and Multiply (SAM) merupakan satu cara untuk menghitung modulo eksponensial.

Langkah-langkah menggunakan cara Square and Multiply :

• Konversi exponent menjadi binary

• Ambil Z = 1

• Iterasi nilai Z mulai dari bit paling depan ke bit paling belakang.

• Bila bit = 0 , maka Z = Z2 mod n

• Bila bit = 1 , maka Z = X.Z2 mod n Contoh :

Berapakah hasil dari 345mod 15 dengan cara square and multiply.

45 = 1 0 1 1 0 1 Z = 1

Z = = 3. 12 mod 15 = 3 Z = = 32 mod 15 = 9 Z = = 3.92 mod 15 = 3 Z = = 3.32 mod 15 = 12 Z = = 122 mod 15 = 9 Z = = 3.92 mod 15 = 3 Maka hasil dari 345mod 15 adalah 3 2. Bilangan Prima

Bilangan prima merupakan sebuah bilangan bulat yang lebih besar dari 1 dan jika bilangan tersebut hanya memiliki pembagi 1 dan bilangan itu sendiri. Seluruh bilangan prima adalah bilangan ganjil, kecuali dua yang merupakan bilangan genap.

3. Algoritma Euclidean

Algoritma Euclidean merupakan algoritma yang digunakan untuk mencari nilai pembagi persekutuan terbesar (greatest common divisor) dari dua bilangan bulat.

Algoritma Euclidean (gcd(a,b)) A ← a

B ← b

while B > 0 do R ← A mod B A ← B

B ← R end while return A

Contoh :

Berapakah gcd(40,15) ?

Penyelesaiannya dapat dilihat pada Tabel 2.2.

Tabel 2.2. Penyelesaian gcd(40,15)

A B R = A mod B

40 15 10

15 10 5

10 5 0

5 0

Maka gcd (40,15) adalah 5.

4. Inverse Modulo

Inverse dari m mod n dapat ditemukan apabila m dan n relatif prima dan n > 1.

Inverse bilangan bulat m-1sedemikian sehingga m.m-1≡ 1 (mod n). Pembuktian dari persamaan di atas dapat dilihat dari definisi relatif prima diketahui bahwa GCD(m, n) = 1.

Contoh:

Berapa Inverse dari 3 (mod 5)

Penyelesaiannya dapat dilihat pada Tabel 2.3.

Tabel 2.3. Penyelesaian Inverse dari 3 (mod 5) m-1 m-1. 3 (mod 5)

1 3

2 1

Pada Tabel 2.3. Iterasi berhenti ketika m-1.m ≡ 1 (mod n) dan diperoleh m-1= 2.

5. Bilangan Relatif Prima

Bilangan relatif prima merupakan dua buah bilangan bulat a dan b jika pembagi persekutuan terbesar atau GCD (greatest common divisor) dari a dan b bernilai 1.

Contoh :

Apakah 20 dan 3 merupakan relatif prima ? Penyelesaiannya dapat dilihat pada Tabel 2.4.

Tabel 2.4. Penyelesaian relatif prima

A B R = A mod B

20 3 1

3 1 0

Maka dari penyelesaian di atas didapat : 20 dan 3 relatif prima karena gcd (20,3) = 1.

2.4.2 Proses Pembentukan Kunci

Proses pembentukan kunci terdiri atas dua proses yaitu pembentukan kunci publik dan kunci rahasia. Pada proses ini menggunakan sebuah bilangan prima p untuk membentuk grup Zp*, elemen primitif α dan sembarangan a ϵ {0,1,...,p-2}. Public key algoritma elgamal mempunyai 3 pasang bilangan (p,α,β) dimana :

β=αa mod p ... (1) Sedangkan private key adalah bilangan a. Proses pembentukan kunci untuk algoritma elgamal terdiri atas (Ifanto, 2009) :

a. Penentuan bilangan prima aman yang bernilai besar.

b. Penentuan elemen primitif.

c. Pembentukan kunci berdasarkan bilangan prima aman dan elemen primitif.

2.4.2.1 Penentuan Bilangan Prima Aman Besar

Penentuan bilangan prima aman ini untuk mempermudah dalam penentuan elemen primitif. Untuk menguji keprimaan suatu bilangan, digunakan suatu metode disebut Teorema Fermat.

Teorema Fermat

Jika x adalah bilangan prima dan y adalah bilangan bulat yang tidak habis dibagi dengan x, yaitu PBB(y,x) = 1, maka

yx-1 ≡ 1 (mod p) ... (2) Contoh :

Apakah 17 bilangan prima ?

Diuji apakah 17 bilangan prima atau bukan.

Kemudian diambil nilai a = 2 karena PBB(17,2) = 1

217-1 = 65536 ≡ 1 (mod 17)

Karena 17 habis membagi 65536 – 1 = 65535 (65535 / 17 = 3855).

Oleh karena itu 17 merupakan bilangan prima.

2.4.2.2 Penentuan Elemen Primitif Teorema:

“Suatu elemen yang membangun Zp* disebut elemen primitif (primitive root) mod p.”

“Bila α2 mod p ≠ 1 dan αq mod p ≠ 1. Jika keduanya dipenuhi, maka α adalah elemen primitif dari Zp*.”

Langkah-langkah penentuan elemen primitif dapat dinyatakan sebagai berikut:

a. Tentukan bilangan prima p ≥ 255 dan α ∈ Zp*

b. Hitung nilai q. Dimana : = c. Hitung α mod p dan α mod p.

d. Jika α mod p = 1 atau α mod p = 1, maka α bukan merupakan elemen primitif.

e. Jika α mod p ≠ 1 dan α mod p ≠ 1, maka α merupakan elemen primitif.

Contoh :

Selanjutnya membuat tabel perhitungan untuk beberapa nilai α untuk mengecek apakah nilai tersebut termaksud elemen primitif atau tidak.

Tabel 2.5. Perhitungan mod p dan mod p

α 1 2 3 4 5

mod p 1 4 9 16 25

mod p 1 1 1 1 382

Nilai α yang dipakai sebagai elemen primitif adalah α = 5

2.4.2.3 Pembentukan Kunci Berdasarkan Bilangan Prima Aman dan Elemen Primitif

Setelah mendapatkan bilangan prima aman dan elemen primitif, public key dan private key untuk algoritma ElGamal dapat dibentuk. Dalam perhitungan

algoritma elgamal menggunakan bilangan bulat. Oleh karena itu, pesan yang terkandung dalam plaintext harus dalam bentuk bilangan bulat. Untuk memenuhi persyaratan tersebut, digunakan kode ASCII (American Standard for Information Interchange) yang merupakan representasi numeric dari karakter-karakter yang digunakan pada komputer, serta mempunyai nilai minimal 0 dan maksimal 255.

Selanjutnya, dengan kondisi-kondisi tersebut, pembentukan kunci dapat dibentuk dengan mengacu pada langkah berikut (Ifanto, 2009):

a. Tentukan bilangan prima p ≥ 255 dan α ϵ Zp * b. Pilih a ϵ{0,1,..., p − 2} sembarang.

c. Hitung nilai β dengan rumus :

β = αa mod p ... (3) Diperoleh kunci publik (p,α,β) yang dapat dipublikasikan serta nilai kunci rahasia a yang dirahasiakan nilainya. Pihak yang membuat kunci publik dan kunci rahasia merupakan pihak penerima pesan. Sedangkan pihak pengirim hanya mengetahui kunci publik dari penerima untuk mengenkripsi pesan yang akan dikirim.

Contoh :

Kunci rahasia a (dimana a {0,1,2,...,p-2}). Misalkan nilai a adalah 103.

Sehingga nilai (p,α,a) = (383,5,103)

Dengan nilai a = 103. Maka mencari nilai β β = mod p

β = mod 383 β = 198

Maka nilai dari β adalah 198 2.4.3 Proses Enkripsi

Proses enkripsi menggunakan kunci publik (p,α,β) dan sebuah bilangan integer acak k (k ϵ{0,1,..., p − 1}) yang dijaga kerahasiaannya oleh penerima yang mengenkripsi pesan. Untuk setiap karakter dalam pesan dienkripsi dengan menggunakan bilangan k yang berbeda-beda.

Langkah proses enkripsi:

a. Ambil sebuah karakter dalam pesan yang akan dienkripsi dan transformasi karakter tersebut ke dalam kode ASCII sehingga diperoleh bilangan bulat M.

b. Hitung nilai r dan t dengan persamaan berikut:

r = αk (mod p) ... (4) t = βk. M (mod p) ... (5) c. Diperoleh ciphertext untuk karakter M tersebut dalam blok (r, t)

d. Lakukan proses di atas untuk seluruh karakter dalam pesan termasuk karakter spasi.

Contoh :

(p,α,β) = (383,5,198)

Pesan = “INDAH SYAHNAN”

1. Mengonversi pesan tersebut dalam kode ASCII

Tabel 2.6. Konversi Pesan kedalam Kode ASCII

i Karakter Plaintext Mi ASCII

1 I M1 073

2 N M2 078

3 D M3 068

4 A M4 065

5 H M5 072

6 spasi M6 032

7 S M7 083

8 Y M8 089

9 A M9 065

10 H M10 072

11 N M11 078

12 A M12 065

13 N M13 078

2. Menentukan bilangan acak k (k {0,1,2,...,382} yang dijaga kerahasiaannya untuk setiap plaintext M dan mengenkripsi plaintext tersebut dengan menghitung nilai r dan t dengan persamaan (4) dan persamaan (5)

Tabel 2.7. Perhitungan Proses Enkripsi

i Mi Ki r = (mod 383) t = . Mi (mod 383)

1 73 14 49 202

2 78 6 305 356

3 68 7 376 230

4 65 4 242 4

5 72 5 61 182

6 32 2 25 203

7 83 10 274 335

8 89 11 221 353

9 65 3 125 89

10 72 8 348 96

11 78 9 208 293

12 65 12 339 133

13 78 13 163 348

2.4.4 Proses Dekripsi

Dekripsi dari ciphertext ke plaintext menggunakan kunci private a yang disimpan oleh penerima pesan secara rahasia.

Teorema:

Diberikan (p,α,β) yang merupakan kunci publik dan a merupakan kunci private pada algoritma ElGamal. Jika diberikan ciphertext (r, t), maka :

M = t (r a)-1 mod p ... (6) dengan M adalah plaintext. Di mana nilai :

(r a)-1 = r-a = r p-1-a mod p ... (7) Langkah proses dekripsi:

a. Ambil sebuah blok ciphertext dari pesan yang telah dienkripsi oleh pengirim.

b. Dengan menggunakan nilai a yang dirahasiakan oleh penerima, hitung nilai plaintext dengan menggunakan “persamaan (6)” dan “persamaan (7)”.

Contoh :

Proses Dekripsi :

Tabel 2.8. Perhitungan Proses Dekripsi

i r t r279 mod 383 Mi = t.r279 mod 383 Plaintext

1 49 202 317 73 I

2 305 356 295 78 N

3 376 230 340 68 D

4 242 4 112 65 A

5 61 182 194 72 H

6 25 203 136 32 sp

7 274 335 102 83 S

8 221 353 163 89 Y

9 125 89 345 65 A

10 348 96 288 72 H

11 208 293 280 78 N

12 339 133 84 65 A

13 163 348 337 78 N

Dokumen terkait