BAB 2 LANDASAN TEORI 2.1. Kriptografi Berikut ini akan dijelaskan pengertian, tujuan dan jenis kriptografi. 2.1.1. Pengertian Kriptografi Kriptografi (cryptography) berasal dari bahasa Yunani yang terdiri dari dua suku kata yaitu kryptos yang artinya tersembunyi dan graphein yang artinya tulisan. Pesan asli disebut plaintext dan pesan yang disamarkan disebut ciphertext. Pesan yang telah disandikan dan dikirim disebut kriptogram. Proses mengubah plaintext menjadi ciphertext dosebut encryption atau enciphering atau enkripsi.proses kebalikan dari mengubah ciphertext menjadi plaintext, yang dilakukan olehpenerima disebut dekripsi. Siapapun yang terlibat dalam kriptografi disebut cryptographer(mollin, R. A. 2007). Menurut Munir,R. (2006), Kriptografi (cryptography) merupakan ilmu dan seni untuk menjaga pesan agar aman. (Cryptography is the art and science of keeping messages secure) Crypto berarti secret (rahasia) dan graphy berarti writing (tulisan). Kriptografi adalah ilmu mengenai teknik enkripsi dimana data diacak menggunakan suatu kunci enkripsi menjadi sesuatu yang sulit dibaca oleh seseorang yang tidak memiliki kunci dekripsi (Kromodimoeljo, S. 2010). Dalam kamus bahasa Inggris Oxford diberikan pengertian kriptografi sebagai berikut: Sebuah teknik rahasia dalam penulisan, dengan karakter khusus, dengan
7 menggunakan huruf dan karakter di luar bentuk aslinya, atau dengan metode-metode lain yang hanya dapat dipahami oleh pihak-pihak yang memproses kunci, juga semua hal yang ditulis dengan cara seperti ini (Haq, H. A. 2013). 2.1.2. Terminologi Kriptografi Seorang pengirim (sender) ingin mengirim pesan (plaintext; kadang-kadang disebut cleartext) kepada orang yang dituju (receiver). Selain itu, pengirim ingin pesan yang dikirim tidak dapat dibaca oleh orang lain yang menyadap percakapan (eavesdropper) atau pesan tersebut. Proses menyamarkan pesan sedemikian rupa untuk menyembunyikan substansinya disebut enkripsi. Sebuah pesan yang dienkripsi disebut ciphertext. Proses untuk mengubah ciphertext kembali ke plaintext adalah dekripsi. Pada standar ISO 7498-2 menggunakan istilah encipher untuk proses enkripsi dan decipher untuk proses dekripsi. Skema rangkaian proses enkripsi dan dekripsi ditunjukkan secara umum pada Gambar 1 (Schneier, 1996). Plaintext Ciphertext Plaintext Enkripsi Dekripsi Gambar 2.1. Skema Proses Enkripsi dan Dekripsi (Schneier, 1996) 2.1.3. Tujuan Kriptografi Kriptografi bertujuan untuk memberikan layanan keamanan kepada pengguna sebagai berikut: 1. Kerahasiaan (Confidentiality) Informasi dirahasiakan dari semua pihak yang tidak berwenang. 2. Keutuhan Data (Integrity) Pesan tidak berubah dalam proses pengiriman hingga pesan diterima oleh penerima.
8 3. Autentikasi (Message Authentication) Kepastian terhadap identitas setiap entitas yang terlibat dan keaslian sumber data. 4. Nirpenyangkalan (Nonrepudiation) Setiap entitas yang berkomunikasi tidak dapat menolak atau menyangkal atas data yang telah dikirim atau diterima. 2.1.4. Sistem Kriptografi Sistem kriptografi terdiri dari 5 bagian yaitu sebagai berikut : 1. Plaintext: pesan atau data dalam bentuk aslinya yang dapat terbaca. 2. Secret Key: merupakan masukan bagi algoritma enkripsi yang berupa nilai bebas terhadap teks asli dan menentukan hasil keluaran algoritma enkripsi. 3. Ciphertext: keluaran algoritma enkripsi yang dianggap sebagai pesan dalam bentuk tersembunyi. 4. Algoritma Enkripsi: algoritma enkripsi memiliki 2 masukan yaitu teks asli dan teks kunci rahasia. Algoritma enkripsi melakukan transformasi terhadap teks asli sehingga menghasilkan teks sandi. 5. Algoritma Dekripsi: algoritma dekripsi memiliki 2 masukan yaitu teks sandi dan kunci rahasia. Algoritma dekripsi memulihkan kembali teks sandi menjadi teks asli bila kunci rahasia yang dipakai sesuai dengan algoritma dekripsi. Berdasarkan kunci yang dipakai, algoritma kriptografi dibagi menjadi tiga, yaitu algoritma simetri (menggunakan satu kunci untuk enkripsi dan dekripsi), algoritma asimetri (menggunakan kunci yang berbeda untuk enkripsi dan dekripsi) dan fungsi hash (Ariyus, 2008). 2.1.5. Sistem Kriptografi Asimetris Kriptografi asimetris ini dikenal juga sebagai kriptografi kunci publik (public key) dan merupakan bagian sistem kriptografi modern, yaitu kunci enkripsi (public key) dimiliki oleh pengirim dan kunci dekripsi (private key) dimiliki oleh penerima pesan.
9 Diffie-Hellman adalah sistem kriptografi public key yang pertama, Difie- Hellman tidak sepopuler RSA dan ElGamal karena hanya dapat digunakan untuk key agreement. Menggunakan Difie-Hellman, dua pengguna, sebut saja A dan B, dapat membuat kunci privat yang hanya diketahui oleh A dan B, meskipun komunikasi antara A dan B dapat dilihat semua orang. Diffe-Hellman menggunakan finite field GF(q) yang sangat besar. A dan B keduanya mengetahui GF(q) dan elemen g GF(q). GF(q) dan g tidak perlu dirahasiakan, jadi boleh saja diketahui semua orang. Meskipun tidak harus, g sebaiknya merupakan generator untuk GF(q) *, atau setidaknya memiliki order yang besar agar range untuk pembuatan kunci cukup besar. Kriptografi yang termasuk algoritma asimetris adalahdiffie-hellman, RSA, ElGamal, DSA dan sebagainya. Skema algoritma kriptografi asimetri dengan kunci publik dapat dilihat pada Gambar 2.2. berikut ini. TeksAsli Ciphertext TeksAsli AlgoritmaEnkri psi AlgoritmaDekri psi A B K Privat B PembangkitK unci K Publik B Gambar 2.2. Skema Kriptografi Asimetri Kunci Publik (Sadikin, 2012) 2.1.6. Bilangan Prima Bilangan positif p (pp>1) disebut bilangan prima jika pembaginya hanya 1 dan p. Sebagai contoh bilangan 23 adalah bilangan prima karena ia hanya habis dibagi 1 dan 23. Karena bilangan prima harus lebih besar dari satu, maka barisan bilangan prima dimulai dari 2, yaitu 2, 3, 5, 7, 11, 13,... Seluruh bilangan prima adalah bilangan ganjil, kecuali dua yang merupakan bilangan genap.
10 2.1.7. Aritmatika Modulo Aritmatika modulo merupakan sisa hasil pembagian dua bilangan. Operator yang digunakan dalam aritmatika modulo adalah mod. Misalkan, jika bilangan integer a dibagi dengan bilangan integer yang lebih besar dari nol(b> 0), maka akan menghasilkan sisa bagi r (remainder) dengan hasil bagi s (quotient). Sehingga dapat dinotasikan sebagai berikut (Harahap, A. A. 2014). a mod b = r sedemikian sehingga a = bs + r, dengan 0 b<n...(2.1) Sebagai contoh, jika 17 mod 3 = 2, maka 17 = (3 5) + 2. Jika a negatif, maka bagi a dengan b mendapatkan sisa bagi r (Munir, 2006). Sehingga didapatkan: a mod b = b r, dimana r 0 dan a< 0....(2.2) Sebagai contoh, jika -25 mod 7 = 4, maka -25 mod 7 = 7 4 = 3. Cormen, at al. (2009) menuliskan di dalam bukunya, untuk setiap bilangan bulat a dan setiap bilangan bulat positif b, nilai a mod b adalah sisa (residu) dari hasil bagi a / b: a mod b = a b (a/b), dimana 0 a mod b<b....(2.3) Contohnya adalah 33 mod 5 = 33 5(33/5) = 33 5(6) = 33 30 = 3. 2.1.8. Modulo Eksponensial Permasalahan pada operasi modulo adalah bagaimana menghitung x y (mod z) dengan z yang sangat besar. Terdapat beberapa algoritma untuk menghitung modulo eksponensial, antara lain adalah dengan metode iterasi. Berikur pseudocodedari modulo eksponensial dengan menggunaka metode iterasi : Function mod exp (x, y, n) z = 1 for (I = 0; I < y; i++){ z = x * z mod n }
11 return z } 2.1.9. Inversi Modulo Jika a dan m relatif prima dan m> 1, maka inversi dari a mod m dapat ditemukan. Inversi dari a (mod m), juga disebut inversi perkalian, dimana bilangan bulat a -1 sedemikian sehingga aa -1 1 (mod m)... (2.4) Contoh: untuk inversi dari 5 (mod 7), penyelesaiannya dapat dilihat pada Tabel 1. Tabel 2.1 Penyelesaian contoh soal inversi modulo a -1 a -1 5 (mod 7) 1 5 2 3 3 1 Pada Tabel 1, iterasi berhenti ketika a -1 a 1 (mod m) dan diperoleh a -1 = 3. 2.1.10. Elemen Primitif Selain bilangan prima, dalam kriptografi ElGamal juga digunakan elemen primitif yang merupakan elemen pembangun dari grup Z p. Untuk mencari elemen ini digunakan p=2q+1, dimana q merupakan bilangan prima. Jika elemen α memenuhi α 2 mod p 1 dan α q mod p 1, maka α merupakan elemen primitif. Untuk mengetahui suatu bilangan merupakan elemen primitif atau tidak dapat dilakukan langkah-langkah sebagai berikut : 1. Input bilangan prima aman p 5. 2. Hitung qq= pp 1 2 3. Hitung α 2 mod p dan α q mod p.
12 4. Jika α 2 mod p= 1, maka α bukan elemen primitif. 5. Jika α q mod p= 1, maka α bukan elemen primitif. 6. Jika tidak terpenuhi dua persyaratan di atas maka q merupakan elemen primitif. 2.1.11. Fermat s Little Theorem Fermat s Little Theorem adalah suatu metode yang digunakan untuk menguji keprimaan suatu bilangan bulat. Teorema Fermat ditemukan oleh Pierre De Fermat merupakan seorang matematikawan Perancis pada tahun 1640. Meskipun dapat digunakan untuk mempermudah kalkulasi dalam kriptografi, peran terpenting dari Fermat's little theorem adalah sebagai dasar dari berbagai teknik enkripsi asimetris. Bilangan prima jumlahnya tak terhingga banyaknya, bilangan prima terbesar yang ditemukan oleh para ahli adalah: 2 32.582.657-1 Salah satu perhitungan matematis yang digunakan untuk menghasilkan bilangan prima adalah metode Fermat yang dapat dirumuskan sebagai berikut: Bila p adalah bilangan prima maka berlaku a p-1 mod p = 1 untuk 1 a < p Di mana p adalah bilangan bulat dan a adalah urutan bilangan yang lebih kecil dari p Contoh penerapan metode Fermat adalah sebagai berikut: a. Bila p = 4 Maka 1 a< 4, didapat a = {1, 2, 3} a p-1 mod p 1 4-1 mod 4 = 1 3 mod 4 = 1 2 4-1 mod 4 = 2 3 mod 4 = 0 3 4-1 mod 4 = 3 3 mod 4 = 1
13 Jadi, angka 4 bukan merupakan bilangan prima sebab dalam pengecekan menggunakan metode Fermat didapat semua hasil dari urutan bilangan yang lebih kecil dari 4 terdapat nilai yang 0. b. Bila p = 5 Maka 1 a< 5, jadi didapat a = {1, 2, 3, 4} a p-1 mod p 1 5-1 mod 5 = 1 4 mod 5 = 1 2 5-1 mod 5 = 2 4 mod 5 = 1 3 5-1 mod 5 = 3 4 mod 5 = 1 4 5-1 mod 5 = 4 4 mod 5 = 1 Jadi, angka 5 merupakan bilangan prima sebab dalam pengecekan menggunakan metode Fermat didapat semua hasil dari urutan bilangan yang lebih kecil dari 5 adalah 1. Untuk angka yang besar dengan jumlah nilai a yang banyak, hanya diambil beberapa angka sebagai contoh. 2.1.12. Algoritma Euclid Algoritma Euclid dapat dikembangkan (disebut dengan algoritma Extended Euclid) agar dapat menemukan dua integer x dan y yang unik selain nilai GCD(a,b) sehingga memenuhi relasi yang ditunjukkan oleh persamaan (P14) (Harahap, A. A. 2014). x a + y b = GCD(a,b) (2.5) Berikut ini merupakan contoh dari algoritma Extended Euclid. Diketahui GCD(11,23) = 1, dengan mengikuti persamaan (2.3) dan (2.5) maka dapat ditemukan bilangan x dan y dari persamaan 11x + 23y = 1 (Lipschutz & Lipson, 2007). GCD(23,11) = 1 = 23 11(2). Dapat dilihat bahwa a = 23, b = 11, x = 1 dan y = -2. 2.2.Algoritma ElGamal Algoritma ElGamal ditemukan oleh ilmuwan Mesir, yaitu Taher ElGamal pada tahun 1985, merupakan algoritma kriptografi kunci publik. Algoritma ElGamal terdiri atas
14 tiga proses, yaitu proses pembentukan kunci, enkripsi, dan dekripsi. Algoritma ElGamal mendasarkan kekuatannya pada fakta matematis kesulitan menghitung logaritma diskret. Hingga saat ini belum ada yang berhasil memecahkan algoritma ElGamal. Karena kekomplesitasan algoritma ini, maka penyerangan yang dilakukan dari segala sisi tidak mampu menembus pertahanan algoritma ElGamal ini. 2.2.1. Pembangkit Kunci Langkah-langkah dalam pembangkitan kunci 1. Pilih sembarang bilangan prima p ( p dapat di-share di antara anggota kelompok). Misalkan p = 263 2. Pilih dua buah bilangan acak, g dan x, dengan syarat g <p dan 1 x p 2 Misalkan g = 107 dan x = 62 3. Hitung y dengan rumus y = g x mod p... (2.5) y = 107 62 mo 263 = 39 Hasil dari algoritma ini: 1. Kunci publik: tripel (y, g, p) = (39, 107, 263) 2. Kunci privat: pasangan (p,x) = (263,62) 2.2.2. Proses Enkripsi Langkah-langkah dalam mengenkripsi pesan: 1. Terima kunci publik (y, g, p) = (39, 107, 263) 2. Ubah nilai blok pesan ke dalam nilai ASCII. Ekspresikan pesan P = A = 65 (kode ASCII) sebagai bilangan. 3. Pilih bilangan acak k, yang dalam hal ini 1 k p 2. Misal, k = 94 4. Setiap blok m dienkripsi dengan rumus a = g k mod p... (2.6)
15 a = 107 94 mod 263 = 31 b = y k m mod p b = 39 94 65mod263= 113... (2.7) Pasangan a dan b adalah cipherteks untuk blok pesan m. Jadi, ukuran cipherteks dua kali ukuran plainteksnya. 5. Kirim a = 31 dan b = 113 ke pemilik kunci publik. 2.2.3. Proses Dekripsi Langkah-langkah dalam mendekripsi pesan: 1. Gunakan kunci privatx untuk menghitung (a x ) 1 (a x ) 1 = a p 1 x mod p... (2.8) (a x ) 1 = 31 263 1 94 mod 263 = 96 2. Hitung plainteks m m = b(a x ) 1 mod p..... (2.9) m = 113(96) 1 mod 263 = 65 3. Konversikan bilangan m ke dalam karakter sesuai dengan kode ASCII m = 65 = A x