BAB II TINJAUAN PUSTAKA 2.1 Kriptografi Perkembangan teknologi saat ini memungkinkan pengiriman data dari satu pihak ke pihak lainnya menjadi lebih cepat dan mudah. Namun perkembangan teknologi ini juga membuka celah celah keamanan pada pengiriman data tersebut, sehingga memungkinkan terjadinya serangan terhadap data yang dikirimkan. Pihak yang tidak berhak mungkin saja dapat membaca isi pesan yang seharusnya bersifat rahasia. Untuk mengatasi hal ini banyak cara yang digunakan untuk mengamankan data, salah satunya adalah dengan menggunakan kriptografi. Kriptografi adalah ilmu dan seni untuk menjaga kerahasiaan pesan. Kriptografi adalah sebuah ilmu menyandikan dan mengacak suatu pesan untuk menjaga keamanan dari isi pesan tersebut. Kriptografi diperlukan untuk menghindari pihak yang tidak berhak mengetahui isi dari pesan yang dikirimkan tersebut. Dengan adanya kriptografi, isi dari pesan akan diacak sedemikian rupa menggunakan algoritma kriptografi tertentu sehingga akan menghasilkan sebuah pesan yang acak yang tidak dapat dibaca sebelum isi pesan yang sebenarnya kembali dimunculkan menggunakan algoritma kriptografi tersebut. (Schneier, 1996) Pesan asli sebelum dienkripsi disebut plain text.sedangkan pesan yang sudah diacak disebut cipher text. Proses pengubahan plain text menjadi cipher text disebut dengan enkripsi, sedangkan proses pengubahan cipher text kembali menjadi plain text disebut dengan dekripsi. Plain Text Enkripsi Cipher Text Dekripsi Plain Text Gambar 2.1 Proses Enkripsi -Dekripsi (Scheiner,1996) Tujuan penggunaan kriptografi adalah dalam menjaga keamanan data dalam aspek- aspek berikut : 7
8 1. Confidentiality (kerahasiaan) : Menjaga isi informasi agar hanya dapat dilihat oleh pihak yang berhak. 2. Data integrity (integritas data) : Menjamin keaslian data selama pengiriman. 3. Authentication (otentikasi) : Mengidentifikasi kebenaran pihak-pihak yang berkomunikasi (userauthentication) dan mengidentifikasi kebenaran sumber pesan (data originauthentication) (Tilborg, 2000). 4. Non-repudiation (penyangkalan): Mencegah entitas yang berkomunikasi melakukan penyangkalan, sehingga pengirim pesan tidak dapat menyangkal telah melakukan pengiriman pesan atau penerima pesan tidak dapat menyangkal telah menerima pesan. (Hendarsyah dan Wardoyo 2011) Jenis algoritma berdasarkan kuncinya dibagi atas : Algoritma simetri dan algoritma asimetri. Algoritma simetri menggunakan satu kunci rahasia yang sama sama digunakan untuk proses enkripsi dan dekripsi. Sedangkan metode dengan kunci asimetris menggunakan dua kunci yang berbeda yaitu public key yang digunakan oleh pengirim untuk melakukan enkripsi dan satu private key yang digunakan untuk mendekripsikan pesan. Contoh algoritma asimetris adalah DES, AES, RC4, Blowfish, dan lain- lain, sedangkan algoritma asimetris contohnya RSA, Elgamal, Diffie Hellman, dan lain lain (Stallings, 2005) 2.2 Pertukaran Kunci DIffie Hellman Pertukaran kunci Diffie Hellman (DH), diusulkan oleh Whitfield Diffie dan Martin Hellman pada tahun 1976, adalah skema algoritma asimetris yang pertama kali diterbitkan dalam literatur terbuka.penemuan ini juga dipengaruhi oleh karya Ralph Merkle.Pertukaran kunci ini memberikan solusi praktis untuk masalah distribusi kunci, yaitu, memungkinkan dua pihak untuk mendapatkan kunci rahasia dengan berkomunikasi melalui saluran tidak aman (Paar C, 2009) Kita dapat memberikan public key ke manapun tujuan yang kita inginkan, melalui telepon, internet, keyserver, dan sebagainya. (alamsyah, 2011). Kunci rahasia yang telah didistribusikan kemudian digunakan untuk enkripsi dan dekripsi.fungsi algoritma ini sendiri terbatas pada pertukaran nilai rahasia. (Stallings, 2005)
9 Algoritma Diffie-Hellman tergantung untuk efektivitas pada kesulitan menghitung logaritma diskrit.(stalling, 2005) Cara kerja dari algoritma ini adalah sebagai berikut: 1. Sepakati sebuah bilangan prima yang besar, yaitu p. Lalu pilih bilangan integer yang tidak melebihi dari nilai p, yaitu g, yang biasa disebut bilangan basis atau generator. Kedua bilangan tersebut dapat diketahui secara publik. 2. Pengirim memilih sebuah bilangan acak, x, bilangan ini tidak boleh diketahui oleh pihak lain. 3. Pengirim memilih sebuah bilangan acak, y, bilangan ini tidak boleh diketahui oleh pihak lain. 4. Pengirim menghitung A = g x mod p. Bilangan A ini dapat diketahui secara publik. 5. Penerima menghitung B = g y mod p. Bilangan B ini dapat diketahui secara publik. 6. Pengirim memberikan nilai A kepada penerima, dan sebaliknya penerima memberikan nilai B kepada pengirim. 7. Pengirim menghitung Ka = B x mod p. 8. Penerima menghitung Kb = A y mod p. Berdasarkan hukum aljabar nilai Kasama dengan Kbatau bisa disebut: Ka = Kb = K. Nilai K adalah kunci yang akan digunakan pada proses enkripsi dan dekripsi. Pembuktian Ka = Kb = K : Ka= Kb B x mod p = A y mod p (g y mod p) x mod p = (g x mod p) y mod p (g y ) x mod p = (g x ) y mod p g yx mod p = g xy mod p Untuk lebih jelasnya protokol pertukaran kunci Diffie Hellman ditunjukan pada bagan berikut:
10 Gambar 2.2 Protokol Pertukaran Kunci Diffie Hellman (Stallings,2005) Keamanan dari Diffie-Hellman pertukaran kunci terletak pada kenyataan bahwa, relatif mudah untuk menghitung eksponensial modulo prima, sementara itu sangat sulit untuk menghitung logaritma diskrit. Hal tersebut akan bertambah sulit jika dipilih bilangan prima yang besar. (Stallings, 2005) Algoritma ini tidak hanya terbatas pada 2 pengguna saja. Jumlah pengguna yang ingin menggunakan pertukaran kunci menggunakan algoritma Diffie- Hellman ini tidak dibatasi. Hal ini hanya berlaku jika memenuhi 2 prinsip yang harus dilakukan: 1. Bilangan p dan g yang telah disetujui oleh semua anggota. 2. Setiap anggota harus melakukan pertukaran data yang diperlukan oleh anggota lainnya sehingga semua data dapat didapatkan secara merata: g abc.n (Gunawan M, 2012) Penggunaan Algoritma Diffie-Hellman dalam pertukaran kunci dapat dilakukan secara aman dan efektif dalam pemrosesan jika dibandingkan dengan algoritma RSA yang cenderung lebih lama dalam pemrosesan algoritmanya. Algoritma Diffie-Hellman lebih memfokuskan dalam perubahan nilai kunci dan proses matematis dalam penentuan kunci akhir yang sama. Sedangkan Algoritma RSA lebih memfokuskan pada saat enkripsi dan dekripsi. (Gunawan M, 2012) Algoritma simetri seperti DES dan juga Blowfish mempunyai kelemahan yaitu jika kunci dapat disadap maka pesan dapat dipecahkan. Algoritma Diffie- Hellman hanya berfungsi untuk melakukan generate terhadap kunci sehingga
11 membutuhkan algoritma enkripsi untuk lebih mengamankannya. Menggunakan perpaduan algoritma simetri dan Diffie Hellmann akan membuat keamanan yang lebih kuat. (Jafar, 2011) 2.3 Algoritma Blowfish Blowfish merupakan algoritma simetri yang tergolong dalam metode block cipher. Ada dua tipe dasar algoritma simetris: block cipher dan stream cipher. Sebuah block cipher memproses block byte (biasanya 64 atau 128 bit) pada satu waktu. Sebuah stream cipher memproses satu byte atau bahkan satu bit pada suatu waktu. (Thorsteinson and Ganesh, 2003) Blowfish dibuat oleh seorang Cryptanalyst bernama Bruce Schneier, yang merupakan Presiden perusahaan Counterpane Internet Security.Inc, dandipublikasikan tahun 1994. Algoritma ini digunakan pada komputer yang mempunyai microprocessorbesar (32-bit keatas dengan cache data yang besar).(schneier, 1996) Karateristik Blowfish adalah sebagai berikut: 1. Merupakan block cipher dengan 64 bit block 2. Panjang kunci merupakan variable dengan panjang kunci hingga 448 bit 3. Mengenkripsi data pada microprocessor 32 bit dengan rata rata 18 clock cycle per byte, lebih cepat dari DES dan IDEA. 4. Tidak mempunyai hak paten dengan harga yang gratis. 5. Dapat berjalan pada memori kurang dari 5 K. 6. Mempunyai struktur yang sederhana dan implementasi yang mudah. (Pachghare, 2009) Blowfish terdiri atas dua bagian : 1. Key-Expansion Berfungsi merubah kunci (Minimum 32-bit, Maksimum 448-bit) menjadi beberapa array subkunci (subkey) dengan total 4168 byte. 2. Enkripsi Data Terdiri dari iterasi fungsi sederhana (Feistel Network) sebanyak 16 kali putaran.setiap putaran terdiri dari permutasi kuncidependent dan substitusi
12 kunci dan data dependent.semua operasi adalah penambahan (addition) dan XOR pada variabel 32-bit.Operasi tambahan lainnya hanyalah empat penelusuran tabel (table lookup) array berindeks untuk setiap putaran.(schneier, 1996) Blowfish menggunakan subkunci yang besar.kunci tersebut harus dihitung sebelum enkripsi atau dekripsi data. 1. Bentuk inisial P-array sebanyak 18 buah (P1,P2,..P18) masingmsing bernilai 32-bit. Array P terdiri dari delapan belas kunci 32-bit subkunci: P1,P2,.,P18 2. Bentuk S-box sebanyak 4 buah masing-masing bernilai 32-bit yang memiliki masukan 256. Empat 32-bit S-box masing-masing mempunyai 256 entri : S1,0,S1,1,..,S1,255 S2,0,S2,1,..,S2,255 S3,0,S3,1,..,S3,255 S4,0,S4,1,..,S4,255 Blowfish adalah sebuah jaringan Feistel yang terdiri dari 16 putaran. Inputannya adalah elemen data 64 bit. Cara untuk melakukan enkripsi adalah sebagai berikut: 1. Pertama - tama plaintext yang akan dienkripsi diasumsikan sebagai masukan, plain text tersebut diambil sebanyak 64-bit, dan apabila kurang dari 64-bit maka tambahkan bitnya, supaya dalam operasi nanti sesuai dengan datanya. 2. Hasil pengambilan tadi dibagi 2, 32-bit pertama disebut XL, 32-bit yang kedua disebut XR. 3. Selanjutnya lakukan operasi berikut: For i = 1 to 16: XL = XL XOR Pi XR = F(XL) XOR XR Tukar XL dan XR 4. Setelah iterasi ke-enam belas, tukar XL dan XR lagi untuk melakukan undo pertukaran terakhir. Lalu lakukan XR = XR XOR P17
13 XL = XL XOR P1 5. Proses terakhir satukan kembali XL dan XR sehingga menjadi 64-bit kembali (Scheiner 1996) Gambar 2.3 Jaringan Feistel Algoritma Blowfish (Scheiner 1996) Fungsi F adalah sebagai berikut: Bagi XL menjadi empat bagian 8-bit: a,b,c dan d. F(XL) = ((S1,a + S2,b mod 2 32 ) XOR S3,c) + S4,d mod 2 32.
14 Gambar 2.4 Fungsi F Pada Algoritma Blowfish (Scheiner 1996) Cara untuk melakukan dekripsi sama dengan cara untuk melakukan enkripsi seperti diatas, namun pada proses dekripsi urutan P1, P2,, P18 digunakan dalam urutan terbalik. Subkunci dihitung menggunakan algoritma Blowfish, metodanya adalah sebagai berikut: 1. Pertama-tama inisialisasi P-array dan kemudian empat S-box secara berurutan dengan string yang tetap. String ini terdiri digit hexadesimal dari Pi. 2. XOR P1 dengan 32 bit pertama kunci, XOR P2 dengan 32 bit kedua dari kunci dan seterusnya untuk setiap bit dari kunci (sampai P18). Ulangi terhadap bit kunci sampai seluruh P-array di XOR dengan bit kunci. 3. Enkripsi semua string nol dengan algoritma Blowfiah dengan menggunakan subkunci seperti dijelaskan pada langkah (1) dan (2). 4. Ganti P1 dan P2 dengan keluaran dari langkah (3) 5. Enkripsi keluaran dari langkah (3) dengan algoritma Blowfish dengan subkunci yang sudah dimodifikasi. 6. Ganti P3 dan P4 dengan keluaran dari langkah (5). 7. Lanjutkan proses tersebut, ganti seluruh elemen dari P-array, dan kemudian seluruh keempat S-box berurutan, dengan keluaran yang berubah secara berlanjut dari algoritma Blowfish (Scheiner 1996)
15 Blowfish mempunyai throughput, kecepatan, dan konsumsi memori yang lebih baik dibandingkan algoritma cipher block lainnya seperti AES, DES, dan 3DES. (Mandal, 2012) Algoritma Blowfish belum ditemukan kelemahan yang berarti hanya adanya weak key dimanadua entri dari S-box mempunyai nilai yang sama. Belumada cara untuk mengecek weak key sebelum melakukankey expansion, tetapi hal ini tidak berpengaruh terhadaphasil enkripsi. Hasil enkripsi dengan algoritma Blowfish sangat tidak mungkin dan tidak praktis untuk di terjemahkan tanpabantuan kunci. (Sutanto, 2009) Blowfish merupakan salah satu solusi yang baik untuk mengatasi masalah keamanan dan kerahasiaan data yang pada umumnya diterapkan dalam saluran komunikasi dan file. Algoritma Blowfish dapat diimplementasikan dengan bahasa apapun (selain C) namun harus disesuaikan cara penulisan maupun tipe-tipe datanya. (Ratih, 2006) 2.4 Electronic Mail (Email) Electronic mail atau yang sering disingkat email merupakan aplikasi TCP/IP yang saat ini banyak digunakan. Surat elektronik sudah mulai dipakai di tahun 1960-an. Pada saat itu Internet belum terbentuk, yang ada hanyalah kumpulan mainframe yang terbentuk sebagai jaringan. Mulai tahun 1980-an, surat elektronik sudah bisa dinikmati oleh khalayak umum.email adalah pesan yang terdiri atas kumpulan string ASCII dalam format RFC 822 yang dikembangkan thn 1982. (Yudhistira, 2011; Syaiful, 2010) Protokol yang biasanya digunakan pada email adalah Simple Mail Transfer Protokol (SMTP), Post Office Protokol 3 (POP3), dan Internet Message Access Protokol (IMAP). Protokol yang digunakan untuk mengirim email adalah SMTP, sedangkan protokol yang digunakan untuk mengunduh email adalah POP3 dan IMAP. (Mantoro,2012) Proses enkripsi memperlambatpengiriman email. Namun tidakmenggannggu, karena email tidak membutuhkan waktu yang real time seperti chatting.(rizal, 2009)
16 2.5 Fungsi Hash MD-5 Fungsi hash satu arah memiliki banyak nama yaitu: fungsi pembanding, fungsi penyusutan, intisari pesan, sidik jari, message integrity check (MIC) atau pemeriksa keutuhan pesan dan manipulation detection code (MDC) atau pendektesi penyelewengan kode (Scheiner, 1996 ) Fungsi hash satu arah dibuat berdasarkan ide tentang fungsi pemampatan. Fungsi hash adalah sebuah fungsi atau persamaan matematika yang mengambil input dengan panjang variabel (preimage) dan merubahnya menjadi panjang yang tetap (biasanya lebih pendek), keluarannya biasa disebut nilai hash. MD-5 adalah salah satu aplikasi yang digunakan untuk mengetahui bahwa pesan yang dikirim tidak ada perubahan sewaktu berada di jaringan. Jika ada perubahan nilai pada file yang diuji dengan md5, maka file tersebut telah berubah. (Sofwan, 2006) Message Digest 5 (MD-5) adalah salah satu penggunaan fungsi hash satu arah yang paling banyak digunakan. MD-5 merupakan fungsi hash kelima yang dirancang oleh Ron Rivest. MD-5 memproses teks masukan ke dalam blok-blok bit sebanyak 512 bit, kemudian dibagi ke dalam 32 bit sub blok sebanyak 16 buah. Keluaran dari MD-5 berupa 4 buah blok yang masing-masing 32 bit yang mana akan menjadi 128 bit yang biasa disebut nilai hash. 2.6 Avalanche Effect Avalanche effect adalah salah satu indikator baik atau tidaknya algoritma yang digunakan tersebut. Dalam penelitian Pamungkas et. al. (2006), mengutip dari buku Applied Cryptography karya Bruce Schneier mengatakan bahwa suatu avalanche effect dikatakan baik jika perubahan bit yang dihasilkan berkisar antara 45% -60%, dan akan sangat baik bila perubahan bit yang dihasilkan berkisar 50% atau separuhnya. Adapun rumus untuk mendapatkan nilai avalanche effect adalah sebagai berikut (Scheiner,1996): Avalanche Effect(AE) = bit berubah bit total x 100%