BAB 2 LANDASAN TEORI 2.1 Kriptografi 2.1.1 Pengertian Kriptografi Kriptografi (cryptography) berasal dari Bahasa Yunani criptos yang artinya adalah rahasia, sedangkan graphein artinya tulisan. Jadi kriptografi berarti tulisan rahasia. Secara umum, kriptografi adalah ilmu dan seni untuk menjaga kerahasiaan pesan dengan cara menyandikannya ke dalam bentuk yang tidak dapat dimengerti lagi maknanya (Munir, 2006). Kriptografi didefenisikan sebagai sebuah teknik rahasia dalam penulisan, dengan karakter khusus, dengan menggunakan huruf dan karakter di luar bentuk aslinya, atau dengan metode-metode lain yang hanya dapat dipahami oleh pihakpihak yang memproses kunci, juga semua hal yang ditulis dengan cara seperti ini (Hasnan, 2010). Dalam prosesnya, Kriptografi memiliki dua konsep utama, yaitu proses enkripsi (encryption) dan dekripsi (decryption). Enkripsi adalah proses penyandian plainteks menjadi cipherteks, sedangkan dekripsi adalah proses mengembalikan cipherteks menjadi plainteks semula. Enkripsi dan dekripsi membutuhkan kunci sebagai parameter yang digunakan untuk transformasi (Kurniawan, Yusuf. 2004).
6 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, 2009) 2.1.2 Sejarah Kriptografi Kriptografi mempunyai sejarah yang panjang. Informasi yang lengkap mengenai sejarah kriptografi dapat ditemukan di dalam buku David Kahn yang berjudul The Codebreakers. Buku yang tebalnya 1000 halaman ini menulis secara rinci sejarah kriptografi, mulai dari penggunaan kriptografi oleh Bangsa Mesir 4000 tahun yang lalu hingga penggunaan kriptografi abad ke 20. Sejarah kriptografi sebagian besar merupakan sejarah kriptografi klasik, yaitu metode enkripsi yang menggunakan kertas dan pensil atau menggunakan alat bantu mekanik sederhana. Kriptografi klasik secara umum dikelompokkan menjadi dua kategori, yaitu algoritma transposisi (transposition cipher) dan algoritma substitusi (substitution cipher). Algoritma transposisi adalah algoritma yang mengubah susunan susunan huruf di dalam pesan, sedangkan algoritma substitusi yaitu mengganti setiap huruf atau kelompok huruf dengan sebuah huruf atau kelompok huruf yang lain. Penggunaan algoritma transposisi yaitu oleh tentara Sparta di Yunani pada permulaan tahun 400 SM. Mereka menggunakan alat yang namanya scytale. Scytale terdiri dari sebuah kertas panjang dari daun papyrus yang dililitkan pada sebuah silinder dengan diameter tertentu (diameter silinder merupakan kunci dari penyandian). Pesan ditulis baris per baris dan secara horizontal. Apabila kertas dilepas, maka setiap huruf akan tersusun secara acak membentuk pesan rahasia. Agar pesan tersebut dapat dibaca, maka kertas harus kembali dililitkan ke silinder yang diameternya sama dengan diameter silinder pengirim.
7 (a) Gambar 2.1 (a) Sebuah scytale; (b) Pesan ditulis secara horizontal, baris per baris. (b) Sedangkan algoritma substitusi paling awal dan paling sederhana adalah Caesar Cipher, yaitu digunakan oleh raja Yunani kuno, Julius Caesar. Caranya adalah dengan mengganti setiap karakter di dalam alfabet dengan karakter yang terletak pada tiga posisi berikutnya di dalam susunan alfabet. Pada perang dunia ke 2, Pemerintah Nazi Jerman membuat mesin enkripsi yang dinamakan dengan Enigma. Mesin ini melakukan proses enkripsi yang sangat rumit. Namun Enigma berhasil dipecahkan oleh pihak sekutu dan keberhasilan memecahkan Enigma sering dikatakan sebagai faktor yang memperpendek perang dunia ke 2. Gambar 2.2 Mesin enigma Perkembangan peralatan komputer digital memicu terbentuknya kriptografi modern. Dengan komputer digital, akan sangat mungkin untuk menghasilkan cipher yang lebih kompleks dan rumit. Tidak seperti kriptografi klasik yang mengenkripsi karakter per karakter, kriptografi modern beroperasi pada string biner. Cipher yang lebih kompleks seperti DES dan RSA adalah algoritma modern yang sangat dikenal di dunia kriptografi. Kriptografi modern tidak hanya berkaitan dengan teknik menjaga kerahasiaan pesan, tetapi juga
8 melahirkan konsep seperti tanda-tangan digital dan sertifikat digital. Dengan kata lain, kriptografi modern tidak hanya memberikan aspek keamanan (confidentiality), tetapi juga aspek keamanan lain seperti otentikasi dan integritas data. 2.1.3 Terminologi Kriptografi Di dalam kriptografi akan sering ditemukan beberapa istilah atau terminologi. Berikut merupakan istilah penting untuk diketahui dalam memahami kriptografi (Munir, 2006). a. Plainteks dan Cipherteks Pesan merupakan data atau informasi yang dapat dibaca dan dimengerti maknanya. Nama lain untuk pesan adalah plainteks. Pesan tersebut dapat dikirim (melalui kurir, saluran telekomunikasi, dan lain lain) dan dapat juga disimpan dalam media penyimpanan. Pesan dapat berupa teks, gambar, suara, atau video. Agar pesan tidak dapat dimengerti maknanya oleh pihak lain, maka pesan perlu disandikan ke bentuk lain yang tidak dapat dipahami. Bentuk pesan yang telah tersandikan tersebut dinamakan dengan cipherteks. Cipherteks harus dapat ditransformasikan kembali menjadi plainteks semula agar pesan yang diterima bisa dibaca. Perbandingan antara plainteks dan cipherteks dapat dilihat pada Gambar 2.3. (a) Gambar 2.3 (a) Plainteks; (b) Cipherteks (b)
9 b. Pengirim dan Penerima Komunikasi data melibatkan pertukaran pesan antara dua entitas. Pengirim adalah entitas yang mengirim pesan kepada entitas lainnya. Penerima adalah entitas yang menerima pesan. Entitas disini dapat berupa orang, mesin (komputer), kartu kredit, dan sebagainya. c. Enkripsi dan Dekripsi Proses penyandian pesan, dari plainteks ke cipherteks dinamakan dengan enkripsi (encryption). Sedangkan proses mengembalikan pesan dari cipherteks ke plainteks dinamakan dengan deskripsi (decryption). Proses enkripsi dan deskripsi membutuhkan kunci sebagai parameter yang digunakan untuk transformasi. (a) (b) Gambar 2.4 (a) Skema enkripsi; (b) Skema dekripsi d. Kriptanalisis Kriptografi berkembang sedemikian rupa sehingga melahirkan bidang yang berlawanan yaitu kriptanalisis. Kriptanalisis (cryptanalysis) adalah ilmu dan seni untuk memecahkan cipherteks menjadi plainteks tanpa mengetahui kunci yang digunakan. Pelakunya disebut kriptanalis. Jika seorang kriptografer (cryptographer) mentransformasikan plainteks menjadi cipherteks dengan suatu algoritma dan kunci maka sebaliknya seorang kriptanalis berusaha untuk memecahkan cipherteks tersebut untuk menemukan plainteks atau kunci.
10 2.1.4 Tujuan Kriptografi Munir (2006) merangkum tujuan dari kriptografi adalah sebagai berikut: 1. Kerahasiaan (Confidentiality), adalah layanan yang ditujukan untuk menjaga agar pesan tidak dapat dibaca oleh pihak-pihak yang tidak berhak. Istilah lainnya adalah secrecy dan privacy. Banyak pendekatan untuk menghadirkan kerahasiaan, mulai dari perlindungan secara fisik sampai perlindungan melalui algoritma matematika yang menerjemahkan data sehingga sulit dipahami. 2. Integritas Data (Data Integrity), adalah layanan yang menjamin bahwa pesan masih asli/utuh atau belum pernah dimanipulasi selama pengiriman. Manipulasi data dapat berupa menyisipkan, menghapus dan menukar data tersebut. 3. Otentikasi (Authentication), adalah layanan yang berhubungan dengan identifikasi baik mengidentifikasi kebenaran pihak-pihak yang berkomunikasi (entity authentication) maupun mengidentifikasi asal usul pesan (data origin authentication). Dua pihak yang saling berkomunikasi harus dapat mengotentikasi satu sama lain sehingga ia dapat memastikan asal usul pesan. Otentikasi asal usul pesan secara implisit juga memberikan kepastian integritas data, sebab jika pesan telah dimodifikasi berarti asal usul pesan sudah tidak benar. 4. Penyangkalan (Non-Repudiation), adalah layanan untuk mencegah entitas yang berkomunikasi melakukan penyangkalan yaitu pengirim pesan telah menyangkal melakukan pengiriman atau penerima pesan menyangkal telah menerima pesan. 2.1.5 Jenis Jenis Kriptografi Berdasarkan kunci enkripsi dan deskripsinya algoritma kriptografi terbagi menjadi dua bagian (Munir, 2006) yaitu:
11 1. Kriptografi simetri Konsep dasar dari kriptografi kunci simetri adalah di mana kunci untuk enkripsi sama dengan kunci untuk deskripsi. Istilah lain dari kriptografi simetri ini adalah kriptografi kunci privat (privat-key cryptography), kriptografi kunci rahasia (secret-key cryptography), atau kriptografi konvensional (conventional cryptography). Dalam kriptografi kunci simetri dapat diasumsikan bahwa si penerima dan pengirim pesan telah terlebih dahulu berbagi kunci sebelum pesan dikirimkan. Keamanan dari sistem ini terletak pada kerahasiaan kuncinya. Skema kriptografi simetri dapat dilihat pada Gambar 2.5. (a) Gambar 2.5 (a) Skema enkripsi kriptografi simetri; (b) Skema dekripsi kriptografi simetri (b) 2. Kriptografi asimetri Berbeda dengan kriptografi kunci simetri, kriptografi asimetri memiliki dua buah kunci yang berbeda pada proses enkripsi dan deskripsinya. Nama lain dari kunci asimetri ini adalah kriptografi kunci publik (public key cryptography). Kunci untuk enkripsi pada kriptografi asimetri ini tidak rahasia (diketahui oleh publik), sedangkan kunci untuk deskripsi bersifat rahasia (kunci privat). Pengirim akan mengenkripsi dengan menggunakan kunci publik, sedangkan penerima mendeskripsi menggunakan kunci privat. Skema kriptografi asimetri dapat dilihat pada Gambar 2.6.
12 (a) Gambar 2.6 (a) Skema enkripsi kriptografi asimetri; (b) Skema dekripsi kriptografi asimetri (b) 2.2 Algoritma Kriptografi 2.2.1 Algoritma RSA Algoritma RSA dibuat oleh 3 orang peneliti dari MIT (Massachussets Institute of Technology) pada tahun 1976, yaitu Ron (R)ivest, Adi (S)hamir, dan Leonard (A)dleman. RSA adalah algoritma kriptografi modern yang menggunakan sistem kriptografi asimetri (kunci publik). Algoritma RSA yang dibuat oleh para ilmuwan pada tahun 1976 ini, melakukan pemfaktoran bilangan yang sangat besar untuk mendapatkan kunci privat (Munir, 2006). Keunggulan dari algoritma RSA adalah tingkat kesulitannya dalam memfaktorkan bilangan besar menjadi faktor primanya dan kekurangan algoritma ini adalah jika bilangan tidak cukup besar maka dengan mudah dapat difaktorkan. (Permana, Aditya dkk.) dalam jurnalnya yang berjudul Kriptografi Pada File Dokumen Microsoft Office Menggunakan Metode RSA menjelaskan bahwa algoritma RSA dapat diterapkan dalam proses enkripsi dan dekripsi file dokumen Microsoft Office yang dapat digunakan untuk melakukan proses kriptografi terhadap file.doc,.xls,.ppt. (Supriyono. 2008) dalam jurnalnya yang berjudul Pengujian Sistem Enkripsi-Dekripsi Dengan Metode RSA Untuk Pengamanan Dokumen
13 menjelaskan bahwa algoritma RSA dapat diaplikasikan untuk teks-teks dengan ukaran kecil maupun besar. 2.2.1.1 Proses Pembangkitan Kunci Algoritma membangkitkan pasangan kunci: 1. Pilih duah buah bilangan prima sembarang p dan q. (Sebaiknya p q, sebab jika p = q maka n = p 2, sehingga p dapat diperoleh dengan menarik akar pangkat dua dari n). 2. Hitung n = p q. 3. Hitung φ(n) = p 1 (q 1). 4. Pilih kunci e yang relatif prima terhadap φ(n). 5. Bangkitkan kunci privat dengan menggunakan persamaan e d 1(mod φ(n)). Perhatikan bahwa e d 1(mod φ(n)). Hitung d hingga d e 1(mod φ(n)) ekivalen e d = 1 + kφ(n), sehinnga secara sederhana d dapat dihitung dengan d = 1+kφ (n) e. Hasil dari algoritma diatas: - Kunci publik adalah pasangan (e, n) - Kunci privat adalah pasangan (d, n) Algoritma RSA memiliki besaran-besaran sebagai berikut: 1. p dan q bilangan prima (rahasia) 2. n = p q (tidak rahasia) 3. φ(n) = p 1 (q 1) (rahasia) 4. e (kunci enkripsi/kunci publik) (tidak rahasia) 5. d (kunci dekripsi/kunci privat) (rahasia) 6. m (plainteks) (rahasia) 7. c (cipherteks) (tidak rahasia)
14 2.2.1.2 Proses Enkripsi Proses enkripsi pesan sebagai berikut: 1. Ambil kunci publik (e, n). 2. Nyatakan plainteks m menjadi blok-blok m 1, m 2,, m i dimana i menyatakan jumlah karakter plainteks. e 3. Setiap blok m i dienkripsi menjadi blok c i dengan rumus c i = m i mod n, sehingga didapat cipherteks c 1, c 2,, c i. 2.2.1.3 Proses Dekripsi Setiap blok cipherteks c i didekripsi kembali menjadi blok m i dengan rumus m i = c i d mod n. 2.2.2 Algoritma ElGamal Algoritma ElGamal dibuat oleh Taher ElGamal pada tahun 1984. Algoritma ElGamal juga adalah algoritma kriptografi kunci-publik. Algoritma ini pada mulanya digunakan untuk digital signature, namun kemudian dimodifikasi sehingga juga bisa digunakan untuk enkripsi dan dekripsi. Kekuatan algoritma ini terletak pada sulitnya menghitung logaritma diskrit pada bilangan modulo prima yang besar (Munir, 2006). (Ifanto, Mukhammad. 2009) dalam jurnalnya yang berjudul Metode Enkripsi dan Dekripsi dengan Menggunakan Algoritma ElGamal menjelaskan bahwa tingkat keamanan algoritma ini didasarkan pada kesulitan pemecahan masalah logaritma diskrit pada penggandaan bilangan bulat modulo prima yang besar. (Aribowo, Eko. 2008) dalam jurnalnya yang berjudul Aplikasi Pengamanan Dokumen Office Dengan Algoritma Kriptografi Kunci Asimetris
15 ElGamal menjelaskan bahwa aplikasi yang dihasilkan dapat digunakan untuk dokumen Microsoft Office dengan ekstensi.doc,.txt,.ppt dan.mdb. 2.2.2.1 Proses Pembangkitan Kunci Algoritma membangkitkan pasangan kunci: 1. Pilih sembarang bilangan prima p. (dengan syarat nilai p harus lebih besar dari nilai plainteks terbesar). 2. Pilih dua buah bilangan acak g dan x, dengan syarat g < p dan 1 x p 2. 3. Hitung y = g x mod p Hasil dari algoritma diatas : -kunci publik adalah (y, g, p) -kunci privat adalah (x, p) Algoritma ElGamal memiliki besaran-besaran sebagai berikut: 1. p bilangan prima (tidak rahasia) 2. Bilangan acak, g (g < p) (tidak rahasia) 3. Bilangan acak, x (x < p) (kunci privat) (rahasia) 4. y = g x mod p (kunci publik) (tidak rahasia) 5. m (plainteks) (rahasia) 6. a dan b (cipherteks) (tidak rahasia)
16 2.2.2.2 Proses Enkripsi Proses enkripsi pesan sebagai berikut: 1. Susun plainteks menjadi blok-blok m 1, m 2,, m i dimana i menyatakan jumlah karakter plainteks. 2. Pilih bilangan acak k yang dalam hal ini 1 k i p 2. 3. Setiap blok m dienkripsi dengan rumus: a = g k i mod p b = y k im mod p Pasangan a dan b adalah cipherteks untuk blok pesan m. Jadi, ukuran cipherteks dua kali ukuran plainteks. 2.2.2.3 Proses Dekripsi Gunakan kunci privat x untuk mendekripsi a dan b menjadi plainteks m dengan persamaan m = b mod p. ax