• Tidak ada hasil yang ditemukan

BAB II TINJAUAN PUSTAKA 2.1. Kriptografi - Teknik Pemecahan Kunci Privat Elgamal dengan Algoritma Baby Step Giant Step

N/A
N/A
Protected

Academic year: 2019

Membagikan "BAB II TINJAUAN PUSTAKA 2.1. Kriptografi - Teknik Pemecahan Kunci Privat Elgamal dengan Algoritma Baby Step Giant Step"

Copied!
18
0
0

Teks penuh

(1)

2.1. Kriptografi

Kriptografi secara etimologi berasal dari bahasa Yunani kryptos yang artinya tersembunyi dan graphien yang artinya menulis, sehingga kriptografi merupakan metode pembelajaran untuk mengirimkan pesan secara rahasia. (Mollin, 2007).

Menurut Katz (2007), kriptografi adalah studi ilmiah atau teknik untuk mengamankan informasi digital, transaksi, dan komputasi yang terdistribusi.

Kriptografi memiliki beberapa istilah atau terminologi, antara lain (Schneier,1996) :

1. Pengirim dan Penerima

Misalkan seorang pengirim ingin mengirim pesan pada penerima. Kemudian, pengirim ingin mengirim pesan secara aman. Pengirim ingin menjamin bahwa penyadap tidak bisa membaca pesannya.

2. Pesan dan Enkripsi

Sebuah pesan disebut pesan murni (plaintext) atau pesan yang akan dikirim. Proses untuk menyamarkan pesan untuk menyembunyikan

maksudnya disebut enkripsi(encryption). Pesan yang dienkripsi disebut ciphertext. Proses untuk mengembalikan ciphertext menjadi plaintext disebut dekripsi(decryption).

3. Algoritma dan Kunci

(2)

4. Algoritma Simetris

Ada dua tipe algoritma yang berbasis kunci yaitu simetris dan asimetris. Algoritma simetris kadang-kadang disebut juga algoritma konvensional, adalah algoritma dimana kunci enkripsi dapat dihitung dari kunci dekripsi dan sebaliknya. Di kebanyakan algoritma simetris, kunci enkripsi dan dekripsi adalah sama. Algoritma ini juga disebut algoritma kunci rahasia, algoritma kunci tunggal, atau algoritma satu kunci, membutuhkan persetujuan antara pengirim dan penerima sebelum mereka bisa melakukan komunikasi secara aman. Proses Enkripsi dan Dekripsi algoritma simetris dapat dilihat pada Gambar 2.1.

Gambar 2.1. Proses Enkripsi dan Dekripsi Algoritma Simetris(Paar et all, 20010)

5. Algoritma Asimetris

Algoritma kunci publik didesain agar kunci yang digunakan untuk enkripsi berbeda dengan kunci yang digunakan untuk dekripsi. Algoritma ini dikatakan kunci publik karena kunci enkripsi dapat dibuat publik.

Seseorang yang tidak bersangkutan dapat menggunakan kunci enkripsi untuk melakukan enkripsi, tetapi hanya orang-orang tertentu saja yang

(3)

Gambar 2.2. Proses Enkripsi dan Dekripsi Algoritma Asimetris(Paar et all, 2010)

6. Kriptanalisis

Keseluruhan tujuan dari kriptografi adalah untuk menjaga plaintext dan kunci agar tidak diketahui oleh penyadap. Penyadap diasumsikan memiliki akses penuh untuk komunikasi antara pengirim dan penerima.

Kriptanalisis adalah ilmu untuk memulihkan plaintext dari sebuah pesan tanpa akses ke kunci. Kriptanalisis yang berhasil mampu memulihkan plaintext atau kuncinya. Dapat juga menemukan kelemahan dari sebuah kriptosistem.

7. Keamanan Algoritma

Algoritma yang berbeda dapat menawarkan tingkat keamanan yang berbeda, tergantung pada seberapa rumit untuk dipecahkan. Jika harga yang dibutuhkan untuk memecahkan algoritma lebih besar dari nilai data yang dienkripsi, maka kemungkinan pesan tersebut kemungkinan aman.

(4)

2.2. Keamanan Data

Menurut Schneier (1996) selain menyediakan kerahasiaan, kriptografi sering diminta untuk melakukan pekerjaan lain yaitu :

1. Autentikasi, pesan harus memungkinkan penerima untuk bisa memastikan asalnya.

2. Integritas, pesan harus memungkinkan penerima untuk memverifikasi pesan tersebut tidak dimodifikasi sewaktu proses pengiriman.

3. Non-repudiasi, pengirim tidak bisa menyangkal bahwa dia adalah pengirim pesan.

2.3. Bilangan Prima dan Komposit

Misalkan ada bilangan bulat positif 1, 2, 3, 4, ... Di antara bilangan tersebut ada bilangan prima dan bilangan komposit. Bilangan komposit adalah bilangan yang memiliki faktor ≠ 1, seperti 15 = 3,5; atau 16 = 2,8. Karakteristik bilangan prima adalah hanya memiliki faktor sebanyak 1 (Riesel, 2011).

2.4. Bilangan Prima Aman

Bilangan prima aman adalah bilangan prima berbentuk p = 2q + 1 dimana q adalah prima (Menezes et all, 1996). Langkah-langkah untuk menentukan suatu bilangan prima aman atau tidak adalah sebagai berikut :

1. Pilih bilangan prima p ≥ 5

2. Hitung q = �−

(5)

Contoh 1 :

1. Pilih bilangan prima p = 13

2. q = − = 6

3. q komposit, maka p = 13 bukan prima aman.

Contoh 2 :

1. Pilih bilangan prima p = 23

2. q = − = 11

3. q adalah prima, makan p = 23 adalah prima aman.

2.5. Faktor Persekutuan Terbesar (Greatest Common Divisor)

Bilangan bulat d yang tidak negatif adalah faktor persekutuan terbesar dari bilangan bulat a dan b, ditulis d = gcd(a,b), jika :

(i) d adalah faktor persekutuan dari a dan b dan (ii) jika c|a dan c|b, maka c|d.

Demikian dapat dinyatakan bahwa, gcd(a,b) adalah bilangan bulat positif terbesar yang membagi a dan b, dengan pengecualian gcd(0,0) = 0 (Menezes et all, 1996).

Contoh :

Faktor persekutuan dari 12 dan 18 adalah {1, 2, 3, 6}, maka gcd(12,18) adalah 6.

2.6. Relatif Prima

Dua angka a dan b dikatakan relatif prima jika angka-angka tersebut tidak memiliki

faktor persekutuan ( gcd(a, b) = 1 ) (Batten, 2013).

Contoh :

(6)

2.7. Kekongruenan

Jika a dan b adalah bilangan bulat, maka a dikatakan kongruen ke b modulo n, ditulis a ≡ b (mod n), jika n habis membagi (a – b). Bilangan bulat n disebut modulus kongruen (Menezes et all, 1996).

Contoh :

24 ≡ 4 (mod 5) karena 24 – 4 = 20 dan n = 5 habis membagi 20.

2.8. Fungsi Euler ()

Untuk n ≥ 1, � adalah bilangan bulat < n yang relatif prima dengan n, dengan

ketentuan (Menezes et all, 1996) :

1. Jika p adalah bilangan prima, maka � = p – 1. 2. Jika gcd(m , n) = 1, maka � = � . �

3. Jika n = � , � , ... , �� adalah faktorisasi prima dari n, maka

� = n −

� −� ... −��

Contoh :

1. � = − =

2. � = � ∗ = ∗ =

3. � = � = − = =

2.9. Ordo Modulo

Jika gcd(a, n) = 1 maka ordo a modulo n adalah adalah bilangan bulat positif terkecil e sehingga �� = mod . Dalam hal ini ditulis e = � � (Batten, 2013).

Contoh :

� :

= 9 mod , = mod , = mod , = mod .

(7)

2.10. Modulo Invers

Jika a dan m relatif prima dan m > 1, maka dapat ditemukan invers dari a modulo m. Invers dari a(mod m), disebut juga invers perkalian, yaitu bilangan bulat a-1 (Menezes et all, 1996).

Contoh :

1. Diberikan m ≡ 3-4 (mod 7). Tentukan invers modulonya.

2. m ≡ (3-1)4 (mod 7)

3. Tentukan invers modulo dari n ≡ (3-1) (mod 7)

n n . 3 (mod) 7

1 3

2 6

3 3

4 5

5 1

4. n adalah hasil iterasi yang menghasilkan nilai 1. Maka dari itu n = 5. m ≡ 54 (mod 7) = 2.

2.11. Akar Primitif (Primitive Roots)

Jika m merupakan elemen bilangan bulat, n merupakan elemen bilangan asli dan

ord� = � ,

maka m disebut akar primitif modulo n. Dengan kata lain, m adalah akar primitif jika m termasuk pada eksponen � modulo n.

Menurut algoritma Gauss, jika m merupakan elemen bilangan asli, 1 < m < p, hitung mt untuk t = 1,2,... hingga mt ≡1 (mod p). Dengan kata lain, hitung pangkat

hingga nilai ord ditemukan. Jika t = ord = p – 1, maka m adalah akar

primitif (Mollin, 2007).

(8)

Apakah 2 dan 4 merupakan akar primitif dari 5? Menurut Shoup (2008), terdapat cara menemukan akar primitif yang efisien dengan menggunakan faktor prima dari p – 1. Langkah-langkahnya adalah sebagai berikut :

1. Hitung fakor prima dari p-1 hingga setiap faktor memiliki nilai yang berbeda. 2. Untuk setiap faktor (f) hitung mp-1 / f mod p.

3. Jika tidak ada yang menghasilkan nilai 1, maka m adalah bilangan prima.

Contoh :

Menggunakan cara di atas, akan dicari apakah 5 merupakan akar primitif dari 37. 1. Hitung faktor prima dari 37

f = [2, 3]

2. Untuk setiap faktor prima, hitung mp-1 / f mod p f[2] = 536/2 mod 37 = 36

f[3] = 536/3 mod 37 = 10

Karena tidak ada yang menhasilkan nilai 1, maka 5 merupakan akar primitif dari 37.

2.12. Metode Pembangkit Bilangan Prima Lehmann

Menurut Scheiner(1996), berikut adalah langkah-langkah untuk menentukan apakah p adalah prima menggunakan pembangkit bilangan prima Lehmann :

(9)
(10)

= 216 mod 7 = 6

Karena kemungkinan p prima adalah 75%, p dapat dikatakan bilangan prima. Metode pembangkit bilangan prima Lehmann dipilih karen pada prosesnya hanya perlu melakukan perulangan sebanyak sepuluh kali untuk menentukan sebuah bilangan prima atau tidak.

2.13. Algoritma ElGamal

Algoritma ElGamal ditemukan 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 di dalam perangkat lunak sekuriti yang dikembangkan oleh GNU, program PGP dan pada sistem keamanan lainnya, Keamanan algoritma ini terletak pada sulitnya menghitung logaritma diskrit (Munir, 2006).

Algoritma ini didasarkan pada masalah logaritma diskret dan terdiri dari tiga proses, yaitu proses pembentukan kunci, proses enkripsi, dan proses dekripsi. Algoritma ini merupakan cipher blok, yaitu melakukan proses enkripsi pada blok-blok palinteks dan menghasilkan blok-blok ciphertext yang kemudian dilakukan proses dekripsi, dan hasilnya digabungkan kembali menjadi pesan yang utuh dan dapat dimengerti. Untuk membentuk sistem kriptografi ElGamal, dibutuhkan bilangan prima p dan elemen primitif (Massandy, 2009).

2.14. Pembentukan Kunci

(11)

Kunci publik algoritma ElGamal berupa pasangan 3 bilangan, yaitu (� , , p), dengan � mod

dimana a merupakan kunci rahasia (Batten, 2013).

2.15. Proses Pembentukan Kunci

Langkah-langkah dalam pembentukan kunci adalah sebagai berikut (Menezes et all, 1996):

1. Pilih bilangan prima besar (p > 255) dan elemen primitif � dari bilangan bulat mod p.

2. Pilih bilangan bulat a, dimana 1 ≤ a p – 2. 3. Hitung � mod .

4. Publikasikan nilai � , �, dan p, serta rahasiakan nilai a.

Pihak yang membuat kunci adalah pihak penerima. Penerima kemudian akan mengirimkan kunci publik yaitu � , �, dan p untuk digunakan pada proses enkripsi.

Misalkan Alice dan Bob ingin berkomunikasi. Dalam hal ini Bob akan

membuat kunci publik dan kunci privat. Bob memilih bilangan prima p = 257, � = 20, dan kunci privat a = 5.

� mod = 205 mod 257 = 93

Jadi kunci publik Bob adalah p = 257, � = 20, dan = 93 dan kunci

privatnya adalah 5. Bob mengirimkan (257, 20, 93) pada Alice dan menyimpan kunci

privatnya.

2.16. Enkripsi

Pada proses enkripsi, pesan asli (plaintext) diubah menjadi pesan rahasia (ciphertext). Pada proses ini digunakan kunci publik (p, � � ). Dalam perhitungannya, algoritma ElGamal menggunakan bilangan bulat. Oleh karena itu digunakanlah kode

(12)

Setelah mendapatkan kunci publik, Alice memilih bilangan acak rahasia b ∈ {0,1,...,p-2}. Bilangan acak b sebaiknya berbeda untuk setiap plaintext menghindari serangan acak bilangan b yang dapat mempengaruhi plaintext lainnya (Sharma et all, 2012). Misalkan m adalah pesan yang akan dikirim. Selanjutnya m diubah ke dalam blok-blok karakter dan setiap karakter dikonversikan ke dalam kode ASCII, sehingga

diperoleh plaintext m1, m2 , m3, ... , mn dengan mi ∈ {1, 2,..., p-1} dan i =1, 2,..., n.

Enkripsi kemudian dilakukan dengan menghitung

� mod

dan

� mod

Algoritma enkripsi pesan :

1. Plaintext disusun menjadi blok-blok m1, m2, ... , mn sehingga setiap blok

merepresentasikan nilai di dalam rentang 0 sampai p – 1 (dengan mengubah nilai m menjadi kode ASCII).

2. Pilih bilangan acak b dengan rentang 0 < b < p – 1, sehingga b relatif prima dengan p – 1.

3. Setiap blok m dienkripsi dengan rumus � mod dan � mod . 4. Setelah dienkripsi, blok teks disusun menjadi = � , � ).

(13)

Tabel 2.1. Konversi Blok-blok Karakter Pesan ke Kode ASCII

i Karakter Plaintextmi ASCII

1 G m1 71

2 U m2 85

3 N m3 78

4 A m4 65

5 L m5 76

6 A m6 65

7 N m7 78

Dari Tabel 1, diperoleh banyaknya karakter pada pesan tersebut adalah n = 7. Proses selanjutnya adalah menentukan bilangan acak rahasia bi ∈ {0,1,....,257}.

Kemudian dihitung � mod dan � mod .

Tabel 2.2. Proses Enkripsi

i mi bi � � mod 257 � �mi mod 257

1 71 67 14 187

2 85 10 168 219

3 78 124 44 214

4 65 43 181 226

5 76 234 215 55

6 65 228 92 152

(14)

Berdasarkan Tabel 2.2. diperoleh ciphertext (� , � ), sebagai berikut :

(14, 187) (168,219) (44, 214)

(181, 226) (215, 55)

(92, 152) (202, 9)

Selanjutnya ciphertext dikirim ke Bob.

2.17. Dekripsi

Setelah ciphertext diterima, proses selanjutnya adalah mendekripsikan ciphertext menggunakan kunci publik (p, � � ) dan kunci privat a. (p, � � ) sebagai kunci publik dan a sebagai kunci privat, jika diberikan ciphertext (� , � ) maka dihitung :

� − ≡ � �− − mod

dan

� − ≡ mod .

dengan m adalah plaintext.

Algoritma dekripsi pesan :

1. Hitung � �− − mod

Hitung �− � ≡ mod

2. Setelah plaintext m diperoleh, konversikan ke dalam karakter yang sesuai dengan kode ASCII, kemudian hasilnya digabungkan kembali.

Bob telah menerima ciphertext dari Alice, ciphertext yang diperoleh adalah sebagai berikut :

(14, 187) (168,219) (44, 214)

(181, 226) (215, 55)

(15)

Untuk itu Bob pertama kali menghitung p – 1 – a = 257 – 1 – 5 = 251. Kemudian menggunakan kunci publik p = 257 dan kunci privat a = 5, Bob melakukan perhitungan seperti pada tabel 2.3 :

Tabel 2.3. Proses Dekripsi

i � �� � 251

(mod 257) �� � 251(mod 257) m

1 14 187 10 71 G

2 168 219 248 85 U

3 44 214 46 78 N

4 181 226 172 65 A

5 215 55 221 76 L

6 92 152 134 65 A

7 202 9 180 78 N

Berdasarkan Tabel 2.3, Diketahui bahwa pesan tersebut adalah “GUNALAN”

2.18. Baby-step Giant-step

Keamanan ElGamal bergantung pada pemecahan masalah logaritma diskrit dengan modulo yang sangat besar (Sharma et all, 2012). Metode Baby-step Giant-step merupakan salah satu metode pencarian dengan mencocokkan dua daftar. Metode ini bertujuan untuk menemukan a dari � mod . Dalam hal ini a disebut logaritma diskrit.

Jika ingin menemukan a langkah pertama adalah memilih � ≈ √ − + 1 sehingga p –1 ≤ N2. Hal ini dilakukan karena perhitungan akan melakukan hasil yang sama jika melebihi √ . Kemudian dibuat dua dafta dimana daftar pertama

(16)

Daftar Baby-step : �j mod p untuk 0 ≤ j ≤ N. Daftar Giant-step : � �-Nk mod p untuk 0 ≤ k N.

Daftar Baby-step akan diproses sebanyak √ − modulo p dikarenakan �

adalah akar primitif.

Daftar Giant-step mungkin akan diproses sedikit lama dikarenakan proses berjalan sebanyak perkalian dengan � .

Jika ditemukan hasil yang sama di setiap daftar (akan memakan banyak waktu

jika p bernilai besar) dapat ditulis � ≡ � �−� mod sehingga � +� ≡

� mod , maka ditemukanlah � = + � .

Banyaknya langkah pada algoritma ini sekitar √ dan angka sebanyak N perlu

disimpan (Batten, 2013).

Diberikan 20a mod 257 = 93. a dapat dihitung dengan mengikuti langkah langkah berikut:

1. Pilih nilai � ≈ ⌈ √ − ⌉ + 1 .

N ≈⌈ √ − ⌉ + 1 = 17.

2. Hitung daftar Baby-step dengan rumus �j mod p untuk 0 ≤ j < N.

Tabel 2.4. Proses Baby-step

j jmod 257

0 1

1 20

2 143

3 33

4 146

5 93

6 61

(17)

j jmod 257

8 242

9 214

10 168

11 19

12 123

13 147

14 113

15 204

16 225

17 131

3. Hitung daftar Giant-step dengan rumus � �-Nk untuk 0 ≤ k < N hinga ditemukan hasil yang cocok pada daftar Baby-step.

Tabel 2.5. Proses Giant-step

k � ∗ �-17k

0 93

Perhitungan Giant-step dihentikan karena kecocokan yang ditemukan yaitu 205≡ 93 * 200 (mod p), jadi menurut rumus a = j + Nk, a = 5 + 0 = 5. Oleh karena itu diperoleh a = 5 yang memenuhi perhitungan 205 mod 257 = 93

2.19. Penelitian yang Relevan

(18)

2. Pada penelitian yang dilakukan oleh Anandia Zelvina (2012) yang berjudul ”Perancangan Aplikasi Pembelajaran Kriptografi Kunci Publik ElGamal untuk Mahasiswa” menyebutkan bahwa pada algoritma ElGamal suatu plaintext yang sama akan dienkripsi menjadi ciphertext yang berbeda-beda. Hal ini dikarenakan pemilihan bilangan k yang acak. Akan tetapi, walaupun ciphertext yang diperoleh berbeda beda, tetapi pada proses dekripsi akan diperoleh plaintext yang sama.

3 Pada penelitian yang dilakukan oleh Muhamad Zaki Riyanto (2007) yang berjudul ”Pengamanan Pesan Rahasia Menggunakan Algoritma Kriptografi ElGamal atas Grup Pergandaan Zp*” menyebutkan bahwa agar dapat

menentukan elemen primitif grup Zp*, maka penentuan bilangan prima p

Gambar

Gambar 2.1. Proses Enkripsi dan Dekripsi
Tabel 2.2. Proses Enkripsi
Tabel 2.3. Proses Dekripsi
Tabel 2.4. Proses Baby-step
+2

Referensi

Dokumen terkait

Puji Tuhan saya panjatkan kehadirat Tuhan Yesus karena penulis dapat menyelesaikan penulisan skripsi dengan judul “Penggunaaan Video Tutorial Dalam Upaya

Tabel 5 menunjukkan bahwa setelah diberikan penyuluhan tentang deteksi dini kanker payudara, pada kelompok kontrol tidak ada yang memiliki perilaku yang menurun ( negative

3 Tahun adalah kesatuan masyarakat hukum adat di Provinsi Bali yang mempunyai satu kesatuan tradisi dan tata krama pergaulan hidup masyarakat umat Hindu secara turun-temurun

Penelitian ini telah mengukur tekanan darah pada penderita hipertensi di PSTW unit Abiyoso tahun 2012 yang diadakan pada kelompok eksperimen yang diberikan jus tomat selama 7

Korelasi antara antara pH tanah, C-organik tanah, dan N-total tanah dengan respirasi tanah akibat pemberian kombinasi biomassa azolla dan pupuk urea

Hasil penelitian untuk aspek kognitif yang diukur dengan tes mengalami peningkatan dari siklus 1 (77,42%) ke siklus 2 (87,50%) akan tetapi menurun pada siklus 3 (56,25%),

Berdasarkan spektra percepatan puncak di batuan dasar hasil PSHA untuk setiap probabitas terlampaui dan periode spektral, selanjutnya dilakukan analisa deagregasi

Dalam praktik jual beli roti rijekan yang ada di Pasar kebakkramat peneliti dapat menarik kesimpulan bahwa, faktor yang mempengaruhi maraknya jual beli roti rijekan di