BAB II TINJAUAN PUSTAKA 2.1 Kriptografi Kriptografi atau Cryptography berasal dari kata kryptos yang artinya tersembunyi dan grafia yang artinya sesuatu yang tertulis (bahasa Yunani) sehingga kriptografi dapat juga disebut sebagai sesuatu yang tertulis secara rahasia(tersembunyi). Cryptography adalah ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek-aspek pada keamanan informasi misalnya kerahasiaan, integritas data, otentikasi pengirim / penerima data, dan otentikasi data. Dengan pengembangan bidang cryptography, pembagian antara apa yang termasuk cryptography dan apa yang tidak telah menjadi kabur. Dewasa ini, cryptography dapat dianggap sebagai perpaduan antara studi teknik dan aplikasi yang tergantung kepada keberadaan masalah – masalah sulit. Bagi kebanyakan orang, cryptography lebih diutamakan dalam menjaga komunikasi agar tetap rahasia. Seperti yang telah diketahui dan disetujui bahwa perlindungan (proteksi) terhadap komunikasi yang sensitif telah menjadi penekanan kriptografi selama ini. Akan tetapi hal tersebut hanyalah sebagian dari penerapan kriptografi dewasa ini. 2.2 Tujuan Kriptografi Kriptografi merupakan suatu ilmu mengenai teknik matematis yang ditujukan pada aspek pengamanan data yang meliputi tingkat kepercayaan terhadap data tersebut, integritas data, dan otentifikasi terhadap keaslian data. Untuk mencapai ini, perlu ditetapkan suatu tujuan sebagai titik tolak dalam pengembangan ilmu kriptografi itu sendiri. Menurut Rhee, tujuan dari kriptografi dapat memenuhi satu atau lebih dari hal-hal berikut ini: 1. Melakukan proteksi terhadap sistem komputer yang khusus ditujukan untuk pemrosesan dan penyimpanan data. 2. Melakukan pencegahan terhadap tindakan yang tidak mendapat otoritas untuk mengambil ataupun menghapus suatu informasi dari pesan-pesan yang dikirim melalui saluran terbuka. Universitas Sumatera Utara 3. Melakukan pencegahan terhadap tindakan yang tidak mendapat otoritas untuk memodifikasi data ataupun informasi pada saluran terbuka. Sejalan dengan penjabaran dari Man Young Rhee, Menezes menjelaskan tujuan dari kriptografi sebagai berikut: a. Confidentiality. Menjaga muatan informasi dari campur tangan pihak-pihak lain, selain yang memiliki otoritas. b. Data Integrity. Meyakinkan tidak terjadinya pengubahan data oleh pihak yang tidak memiliki otoritas. Untuk meyakinkan integritas dari suatu data, harus dapat dilakukan pendeteksian apakah data tersebut telah mengalami manipulasi. Manipulasi data meliputi penyisipan, penghapusan, dan pensubstitusian. c. Authentication. Fungsi untuk pemberian identifikasi. Fungsi ini diberikan baik kepada pengirim maupun kepada penerima informasi itu sendiri. Kedua belah pihak yang ingin melakukan komunikasi sebaiknya dapat saling melakukan identifikasi. Informasi yang dikirimkan sebaiknya dapat dipastikan sumbernya, keasliannya, muatannya, waktu pembuatannya, dan lain-lain. d. Non-Repudiation. Mencegah suatu pihak yang menyangkal telah melakukan pengiriman pesan ataupun informasi. 2.3 Teknik Dalam Cryptography Berdasarkan jumlah kunci yang digunakan, ada dua jenis sistem cryptography yaitu sistem cryptography simetris dan sistem cryptography asimetris. 2.3.1. Sistem Cryptography Simetris Enkripsi simetris sering juga disebut sebagai enkripsi konvensional atau enkripsi kunci-tunggal (single key). Pada model enkripsi simetris ini digunakan algoritma yang sama untuk proses enkripsi/dekripsi dengan memakai satu kunci yang sama. Universitas Sumatera Utara kunci enkripsi plaintext dekripsi ciphertext plaintext Gambar 2.1. Model Sederhana Sistem Cryptography Simetris Keamanan dari enkripsi simetris bergantung pada beberapa faktor. Pertama, algoritma enkripsi harus cukup kuat sehingga tidaklah praktis untuk mendekripsi suatu pesan hanya dengan memiliki ciphertext saja. 2.3.2. Sistem Cryptography Asimetris Sistem cryptography asimetris biasanya lebih dikenal dengan cryptography kuncipublik (public-key cryptography).ide cryptography asimetris ini pertama kali dimunculkan oleh whitfield diffie dan martin hellman pada tahun 1976. Diffie dan hellman mempostulatkan sistem ini tanpa menunjukkan algoritmanya. kunci publik kunci pribadi penerima plaintext enkripsi penerima ciphertext dekripsi plaintext Gambar 2.2. Model Sederhana Sistem Cryptography Asimetris. 2.4 Aritmatika Modulo Aritmatika modulo merupakan sisa hasil pembagian 2 (dua) bilangan. Operator yang digunakan dalam aritmatika modulo adalah mod. Misalkan a adalah bilangan bulat dibagi dengan m adalah bilangan bulat > 0 , maka akan menghasilkan sisa bagi r dengan q adalah hasil bagi. Sehingga dapat dinotasikan sebagai berikut : a mod m = r sedemikian sehingga a = mq + r, dengan 0 ≤ r < m Universitas Sumatera Utara Contoh : 35 mod 8 = 3, dimana 35 = (4*8) + 3 2.5 Greatest Common Divisor (GCD) Greatest common divisor (GCD) merupakan bilangan bulat terbesar yang merupakan pembagi yang sama dari dua bilangan bulat. Misalkan a dan b adalah 2 (dua) bilangan bulat yang tidak nol. Greatest common divisor (GCD) dari a dan b adalah bilangan bulat terbesar c sedemikian sehingga c|a dan c|b. Greatest common divisor (GCD) dari a dan b dapat dinotasikan dengan gcd(a,b). Contoh : GCD(60,45) adalah : 60 mod 45 = 15 30 mod 15 = 0 Karena telah menghasilkan sisa pembagian sama dengan 0, maka proses berakhir dan didapatlah GCD(60,45) = 15. 2.6 Bilangan Prima Bilangan prima adalah bilangan bulat positif a, dimana a ≥ 2 hanya dapat dibagi dengan 1 dan bilangan itu sendiri. Seluruh bilangan prima adalah bilangan ganjil, kecuali 2 yang merupakan bilangan genap. Contoh bilangan prima adalah 2, 3, 5, 7, 11, 13, 17, …. Untuk menguji apakah n merupakan bilangan prima atau bukan, kita cukup membagi n dengan sejumlah bilangan prima, dengan syarat bilangan prima ≤ √n. Jika n habis dibagi dengan salah satu dari bilangan prima tersebut, maka n bukan bilangan prima, tetapi jika n tidak habis dibagi oleh semua bilangan prima tersebut, maka n adalah bilangan prima. Terdapat metode lain yang dapat digunakan untuk menguji keprimaan suatu bilangan bulat yaitu Rabin Miller, Pilih nilai p sebarang, lakukan perhitungan b dengan nilai b adalah nilai jumlah perkalian 2 dibagi (p-1) kemudian hitung nilai m dengan rumus: p = 1 + 2 b* m 1. pilih nilai random, a kurang dari p 2. set j = 0 set z = am mod p Universitas Sumatera Utara 3. jika = - 1 atau jika z = p -1 maka p valid akan kemungkinan prima 4. jika j > 0 dan z = 1 maka p bukan prima 5. set j = j + 1, jika j < b dan z p -1, set z = z2 mod p dan lakukan proses 4 jika z = p-1, maka p valid kemungkinan prima 6. jika j=b dan z p-1 maka p bukan prima 2.7 Relatif Prima Dua bilangan bulat a dan b dikatakan relatif prima jika GCD(a,b) = 1. Bilanganbilangan a1, a2, …, an adalah relatif prima berpasangan (pairwise relatively prime) jika GCD(ai, aj) = 1 untuk 1 ≤ i < j ≤ n. Dengan demikian, sekumpulan bilangan bisa ditunjukkan apakah relatif prima atau tidak dengan mengevaluasi GCD dari semua pasangan bilangan yang mungkin. Jika GCD pasangan-pasangan tersebut semuanya bernilai 1, maka syarat pairwise relatively prime dipenuhi. Sebaliknya, jika salah satu GCD dari pasangan bilangan tersebut tidak sama dengan 1, maka kumpulan bilangan tersebut bukan pairwise relatively prime. Dan 2 (dua) bilangan prima pasti adalah pairwise relatively prime. Contoh : GCD(27,15) adalah : 27 mod 15 = 12 15 mod 12 = 3 12 mod 3 = 0 Bilangan-bilangan 27 dan 15 adalah bukan pairwise relatively prime karena GCD(27,15) = 3. GCD(11,7) adalah : 11 mod 7 = 4 7 mod 4 = 3 4 mod 3 = 1 3 mod 1 = 0 Bilangan – bilangan prima 11 dan 7 adalah pairwise relatively prime karena GCD(11,7) = 1. Universitas Sumatera Utara 2.8 Algoritma Euclid Algoritma ini digunakan untuk mencari nilai pembagi persekutuan terbesar dari 2 (dua) bilangan bulat. Algoritma ini didasarkan pada pernyataan berikut ini : Dua bilangan bilangan bulat positif r0 dan r1 , dengan r0 ≥ r1, kemudian dihitung menggunakan algoritma pembagian : r0 = q1 * r1 + r2, 0 < r 2 < r1 r1 = q2 * r2 + r3, 0 < r 3 < r2 rn-2 = qn-1 * rn-1 + rn 0 < rn < rn-1 rn-1 = qn * rn Universitas Sumatera Utara Dari pernyataan tersebut, dapat diperoleh : GCD(r0 , r1) = GCD(r1 , r2) = ……….. = GCD(rn-1,rn) = GCD(rn,0) = rn (2.1) Contoh : GCD(40,24) adalah : 40 = 1*24 + (40-24) 40 = 1*24 + 16 24 = 1*16 + (24 – 16) 24 = 1*16 + 8 16 = 2*8 Jadi, GCD(40,24)=8. 2.9 Extended Euclidean Algoritma Extended Euclidean ini merupakan perluasan dari algoritma Euclide yang berfungsi untuk menentukan nilai x dan y sedemikian sehingga r0*x + r1*y = GCD(r0,r1) dengan r0 , r1 merupakan bilangan bulat positif serta x dan y merupakan bilangan bulat. Dua bilangan bulat r0 dan r1 yang merupakan pairwise relatively prime dapat menemukan bilangan bulat x dan y sedemikian sehingga r0*x + r1*y = 1. Dengan menggunakan algoritma Euclid dan rumus : tj = tj-2 - qj–1 * tj-1 , j ≥ 2 (2.2) dengan tj adalah suatu barisan bilangan t1 , t2 , t3 ,…, tn dan qj diperoleh dari perhitungan GCD(r0 , r1 ) = 1 dengan r1-1 = tn. Sehingga diperoleh : rn = tn*r1 atau 1 = tn*r1 (2.3) Universitas Sumatera Utara Contoh : 11x + 23y = 1 Hasil Sisa Bagi Bagi - Subsitusi Penggabungan 11 - 11 = 11*1 + 23*0 - 23 - 23 = 11*0 + 23*1 0 11 11=(11*1+23*0) – (11*0 + 23*1)*0 11 = 11*1 +23*0 2 1 1 = (11*0 + 23*1) – (11*1 + 23*0)*2 1 = 11*(-2) + 23*1 11 0 Karena sisa bagi mencapai 0, maka proses berakhir Hasil akhir yang diperoleh adalah 1 = 11*(-2) + 23*1, sehingga didapat nilai x = -2 dan y = 1. 2.10 Algoritma Rabin Public Key Algoritma Rabin Public Key pertama kali diperkenalkan pada tahun 1979 oleh Michael O. Rabin. Algoritma Rabin Public Key adalah salah satu sistem kriptografi asimetris yang menggunakan kunci publik dan kunci privat. Algoritma Rabin Public Key merupakan varian algoritma Rivest Shamir Adleman (RSA). Fungsi dasar algoritmanya mirip dengan fungsi dasar dari algoritma RSA. Hanya saja komputasinya lebih sederhana dibandingkan algoritma RSA. Proses Pembangkitan Kunci Pada algoritma Rabin Public Key, proses pembangkitan kuncinya dilakukan sebagai berikut : 1. Pilih 2 (dua) buah bilangan prima besar sembarang yang saling berbeda (p dan q), dimana p ≡ q ≡ 3 (mod 4). Atau dengan kata lain jika p dan q di modulo 4 akan menghasilkan 3. 2. Hitung nilai n yang merupakan kunci publik dengan rumus sebagai berikut: n = p * q dengan p dan q adalah kunci privat. Untuk mengenkripsi pesan hanya dibutuhkan kunci publik n, sedangkan untuk dekripsi, dibutuhkan bilangan p dan q sebagai kunci privat. Proses Enkripsi Universitas Sumatera Utara Proses enkripsi pada algoritma Rabin Public Key menggunakan kunci publik n. Pada proses dekripsi menggunakan Algoritma Rabin Public Key akan menghasilkan 4 (empat) buah kemungkinan plaintext. Oleh karena itu, diperlukan modifikasi dalam proses enkripsi dan dekripsi untuk menentukan plaintext yang sebenarnya. Berikut langkah–langkah proses enkripsi pesan rahasia menggunakan algoritma Rabin Public Key yang telah dimodifikasi adalah : 1. Ubah nilai plaintext m menjadi nilai biner, kemudian tambahkan dengan nilai biner m itu sendiri (redundant information) atau dengan kata lain plainteks digandakan. 2. Ubah hasil penggandaan nilai biner plaintext menjadi nilai desimalnya. 3. Hitung nilai k yang merupakan kongruen nilai desimal dari hasil penggandaan plaintext m terhadap kunci publik n dengan menggunakan rumus : Hitung nilai ciphertext c dengan menggunakan rumus : c = m 2 mod n dengan c adalah ciphertext, n adalah kunci publik, dan m adalah nilai desimal dari hasil penggandaan nilai biner plaintext. Metode dekripsi Proses enkripsi pada algoritma Rabin Public Key menggunakan kunci privat p dan q. Berikut langkah–langkah proses dekripsi dengan menggunakan algoritma Rabin Public Key yang telah dimodifikasi: 1. Tentukan nilai Yp dan Yq yang merupakan pembagi GCD (Greatest Common Divisor) dari p dan q dengan menggunakan Algoritma Extended Euclidean. Karena GCD bilangan prima adalah 1, maka dapat ditulis sebagai berikut : Yp*p + Yq * q = 1 2. Hitunglah nilai akar kuadrat dari ciphertext terhadap p dan q dengan rumus: Universitas Sumatera Utara dengan mp adalah akar kuadrat dari ciphertext terhadap p dan mq adalah akar kuadrat dari ciphertext terhadap q. 3. Hitung nilai r, s, t dan u dengan menggunakan Chinese Remainder Theorem, dengan persamaan berikut : r = (Yp*p* mq + Yq * q* mp ) mod n s = (Yp*p* mq - Yq * q* mp ) mod n t = ( -Yp*p* mq + Yq * q* mp ) mod n u = ( -Yp*p* mq - Yq * q* mp ) mod n 4. Tambahkan r,s,t,u dengan kongruen nilai desimal hasil penggandaan plainteks k yang dikalikan dengan kunci publik n. R = (k*n)+r S = (k*n)+s T = (k*n)+t U = (k*n)+u 5. Ubahlah nilai desimal R,S,T,U ke dalam bentuk biner. Kemudian nilai biner R,S,T,U dibagi menjadi 2 (dua) bagian. Bandingkan kedua bagian tersebut. Jika kedua bagian tersebut menghasilkan bentuk biner yang sama, maka didapatlah hasil dekripsi ciphertext c dengan mengubah bentuk biner salah satu bagian yang telah dibagi menjadi 2(dua) bagian yang sama. 2.11 Rivest Shamir Adleman ( RSA ) Dari sekian banyak algoritma kriptografi kunci-publik yang pernah dibuat, algoritma yang paling popular adalah algoritma RSA. Keamanan algoritma RSA terletak pada sulitnya memfaktorkan bilangan yang besar menjadi factor-faktor prima. Pemfaktoran Universitas Sumatera Utara dilakukan untuk memperoleh kunci privat. Selama pemfaktoran bilangan besar menjadi factor-faktor prima belum ditemukan algoritma yang mangkus, maka selama itu pula keamanan algoritma RSA tetap terjamin. Algoritma RSA memiliki besaran-besaran sebagai berikut : 1. p dan q bilangan prima (rahasia) 2. n = p x q (tidak rahasia) 3. (n) = (p-1)(q-1) (rahasia) 4. e ( kunci enkripsi ) (tidak rahasia) 5. d ( kunci dekripsi ) ( rahasia ) 6. m ( plainteks ) ( rahasia ) 7. c (cpherteks) ( tidak rahasia ) RSA adalah suatu blok sandi rahasia tempat teks asli dan teks rahasia merupakan bilangan bulat antara 0 dan n-1 untuk beberapa n. Enkripsi dan dekripsi berasal dari beberapa bentuk berikut ini, untuk beberapa blok teks asli M dan blok teks rahasia C. C = M‘ mod n M = Cd mod n = (Me)d mod n = Med od n Blok pengirim meupun penerima harus mengetahui nilai n dan e, dan hanya penerima saja yang mengetahui nilai d. ini merupakan algoritma enkripsi kunci umum dengan kunci umum sebesar KU = {e,n} dan kunci khusus sebesar KR = {d,n}. Agar algoritma ini bisa memenyhi syarat sebagai enkripsi kunci umum yang baik, maka harus memenuhi ketentuan-ketentuan seperti berikut : 1. kemungkinan menemukan nilai e,d,n sedemikian rupa sehingga Med = M mod n untuk semua M < n 2. relative mudah menghitung Me dan Cd untuk semua nilai M < n 3. tidak mudah menghitung menentukan d, yang diberi e dan n. dua ketentuan pertama bisa terpenuhi dengan mudah. Sedangkan ketentuan ketiga baru bisa terpenuhi untuk nilai e dan n yang besar. Pembangkitan Kunci 1) Memilih dua bilangan prima p, q . bilangan ini harus cukup besar (minimal 100 digit) 2) Menghitung n = p . q. Bilangan n disebut parameter security Universitas Sumatera Utara (sebaiknya p ≠ q, sebab jika p = q maka n = p2 sehingga p dapat diperoleh dengan menarik akar pangkat dua dari n) 3) Menghitung φ(n) = (p-1)(q-1). 4) Memilih bilangan bulat e dengan algoritma Euclid yaitu gcd(φ(n),e)=1; dimana 1< e < φ(n). 5) Menghitung d dengan rumus d = e-1 mod φ(n) Atau e . d 1 (mod φ(n)). Perhatikan bahwa e . d 1 (mod φ(n)) ekivalen dengan e . d = 1 + k φ(n), sehingga secara sederhana d dapat dihitung dengan : d = ( 1 + k . φ(n)) / e 6) Kunci umum (kunci public) adalah KU = {e,n} 7) Kunci pribadi (kunci privat adalah KR = {d,n} Catatan : n tidak bersifat rahasia, sebab ia diperlukan pada perhitungan enkripsi/dekripsi Enkripsi B mengenkripsi message M untuk A, yang harus dilakukan B : 1) Teks asli dengan syarat M < n 2) Ambil kunci public A yang otentik (n,e) 3) Representasikan message sebagai integer M dalam interval [0,n-1] 4) Teks Rahasia didapat dari C = Me (mod n) 5) Kirim C ke A Dekripsi Untuk mendekripsi, A melakukan 1) Gunakan kunci pribadi d untuk menghasilkan M 2) Teks rahasia adalah C 3) Teks asli didapat dari M = Cd (mod n) Universitas Sumatera Utara 2.12 Riset Terkait Dalam melakukan penelitian, penulis menggunakan beberapa riset terkait yang dijadikan acuan yang membuat penelitian berjalan lancar. Adapun riset – riset terkait tersebut adalah : Tabel 2.1 Riset Terkait Nama peneliti dan tahun Aji supriyanto, 2009 Algoritma/metode yang digunakan Algoritma kunci asimetris (kunci public) dan hash sha1 Implementasi algoritma kunci public pada algoritma rsa Hersatoto listiyono, 2009 Algoritma rsa 3 Aplikasi kriptografi untuk pengamanan E-dokumen dengan metode hybrid : Biometrik tandatangan dan dsa (digital Signature algorithm) Ana wahyuni, 2011 Metode hybrid : biometrik tandatangan dan dsa (digital Signature algorithm) 4 Analisis kriptografi menggunakan algoritma Vigenere cipher dengan mode operasi Cipher block chaining (cbc) Modul pembelajaran enkripsi dengan menggunakan algoritma DES (Data Enkripsi Standart) melalu visualisasi Erna kumalasari nurnawati, 2008 Algoritma vigenere chiper dan mode operasi cbc Diyah Krisna Yuliana, 2009 algoritma kriptografi double des triple des No. Judul riset 1 Pemakaian kriptografi kunci publik untuk proses enkripsi dan tandatangan digital pada dokumen email 2 5 des, dan Hasil penelitian Sistem keamanan ini dapat memberikan Keamanan otentikasi dokumen e-mail,Untuk menghindari jebolnya atau Tembusnya keamanan yang diterapkan email Standar seperti pgp. Dengan algoritma rsa proses Dekripsinya sangat sulit, walaupun Menggunakan supercomputer dan ribuan Tahun, tidak dapat mendekripsi pesan tanpa Mempunyai kunci private. Pada implementasi tandatangan digital dengan metode hybrid : Biometrik tandatangan dan dsa terpenuhi kebutuhan keamanan edokumen.Dalam hal kerahasiaan (confidentiality) Dan keutuhan atau keotentikan (integrity) e-dokumen yang Ditransmisi, dijamin dengan hash sha-1 dari e-dokumen Tersebut. Penggabungan algoritma vigenere chiper dan mode operasi cbc ini akan menghasilkan Suatu metode baru yang peneliti sebut vigenere chiper + Dapat memberikan penjelasan mengenai bagaimana jalannya suatu proses dengan menggunakan algoritma DES sehingga dapat lebih mudah memahami. 2.13 Persamaan Dengan Riset Yang Lain Adapun persamaan penelitian ini dengan penelitian sebelumnya adalah sama – sama menggunakan algoritma kunci public salah satunya algoritma kriptografi Rivest Shamir Adleman ( RSA ) untuk proses pengamanan data. 2.14 Perbedaan Dengan Riset Yang Lain Dalam Penelitian ini, dilakukan perbandingan kinerja antara algoritma Rabin dan RSA, dengan menganalisis tingkat keamanan dan tingkat kecepatan dalam Universitas Sumatera Utara memprosesan data.Sehingga dari aplikasi ini diketahui kelebihan dan kekurangan dari masing – masing algoritma . 2.15 Kontribusi Riset Penelitian ini memberikan pemahaman tentang pentingnya aspek keamanan suatu pesan teks, apalagi pesan yang ingin disampaikan bersifat rahasia. Dengan mengimplementasikan algoritma kriptografi dan Rivest Shamir Adleman ( RSA ) pada pesan teks, maka kita dapat mengetahui algoritma mana yang cocok dan yang sangat baik dalam melakukan pengiriman dan pengamanan pesan, sehingga pesan yang akan dikirimkan prosesnya cepat dan terjaga kerahasiannya dari pihak – pihak yang tidak berkepentingan, untuk proses pembangkitan bilangan prima dalam algoritma Rabin dan Rivest Shamir Adleman ( RSA ), penulis menggunakan algorima Rabin Miller.Dalam penelitian ini, diharapkan akan didapatkan metode yang lebih baik lagi dalam keamanan data maupun kecepatan memprosesan data. Universitas Sumatera Utara