5 BAB 2 TINJAUAN PUSTAKA Pada bab ini, akan dibahas landasan teori, penelitian terdahulu, kerangka pikir dan hipotesis yang mendasari penyelesaian permasalahan pengamanan pesan pada NIC Messenger dengan Algoritma RSA 512-bit dan One Time Pad. 2.1. Pertukaran Data Dalam software messenger pada umumnya terjadi pertukaran data, dapat berupa pesan teks, suara dan dapat pula berupa gambar. Maksud dari pertukaran data disini adalah proses pengiriman data yang berupa teks, suara atau gambar dari pengguna messenger satu ke pengguna messenger lainnya, dimana data yang dikirimkan akan disimpan terlebih dahulu ke server dan dari server akan dikirim ke penerima data tersebut. Karena proses ini penulis dapat mengambil kesimpulan bahwasanya pertukaran data pada aplikasi messenger sangat rentan terhadap kejahatan maya seperti data dicuri dan atau data dibajak oleh pihak yang tidak berkepentingan. 2.2. Keamanan Informasi Informasi saat ini sudah menjadi sebuah komoditi yang sangat penting bagi sebuah organisasi, perguruan tinggi, lembaga pemerintahan maupun individual, kemampuan dalam mengakses dan menyediakan informasi secara cepat serta akurat (Rahardjo, 2005). Karena pentingnya sebuah informasi, seringkali informasi yang diinginkan hanya dapat diakses oleh orang tertentu misalnya pihak penerima yang diinginkan, dan jika informasi ini sampai diterima oleh pihak yang tidak diinginkan akan berdampak kerugian pada pihak pengirim. Keamanan informasi adalah bagaimana kita dapat mencegah penipuan, atau paling tidak mendeteksi adanya penipuan di sebuah sistem yang berbasis informasi, dimana informasinya sendiri tidak memiliki arti fisik (Rahardjo, 2012).
6 Untuk itu diperlukanlah sebuah pendekatan dalam melakukan pengamanan pada informasi, seperti melakukan enkripsi, steganografi, cipher dan hashing terhadap informasi tersebut. 2.3. Android Android adalah salah satu sistem operasi yang dapat berjalan pada handphone, android merupakan turunan dari sistem operasi linux. Oleh karena itu banyak vendor telepon genggam memanfaatkan sistem operasi android yang open source hal ini mengundang banyaknya developer aplikasi untuk mengembangkan berbagai aplikasi mobile karena mereka dapat dengan bebas biaya mengembangkan aplikasi untuk dapat digunakan di handphone berbasis android. Berbeda dengan sistem operasi IOS besutan Apple yang mengharuskan developer aplikasi membayar $99 per tahun untuk mendapatkan lisensi agar aplikasi buatan developer dapat diinstalasi pada iphone atau idevice lainnya. Hal ini yang menjadi alasan penulis untuk mengembangkan aplikasi NIC Messenger ini pada handphone berbasis android. 2.4. Kriptografi Menurut Sadikin (2012), kriptografi adalah ilmu yang bersandarkan pada teknik matematika yang berurusan dengan keamanan informasi seperti kerahasiaan, keutuhan data dan otentikasi entitas. Kriptografi terbagi atas dua kategori yaitu kriptografi klasik dan kriptografi modern. Kriptografi klasik adalah sistem kriptografi yang menggunakan penyandian kunci simetris dan menggunakan metode subtitusi (pergantian huruf) atau transposisi (pertukaran tempat). Dan kriptografi modern adalah sistem kriptografi yang menggunakan penyandian kunci asimetris (Sadikin, 2012). Berikut ini adalah beberapa mekanisme yang berkembang pada kriptografi: 1. Fungsi Hash Fungsi hash adalah fungsi yang melakukan pemetaan pesan dengan panjang sembarang ke sebuah teks khusus yang disebut message digest dengan panjang
7 yang tetap. Fungsi hash pada umumnya digunakan untuk menguji keutuhan pada sebuah data. 2. Penyandian dengan kunci simetris Penyandian dengan kunci simetris adalah penyandian yang pada proses enkripsi dan dekripsinya menggunakan sebuah kunci yang sama. Kunci yang digunakan pada proses enkripsi dan dekripsi bersifat rahasia. Beberapa jenis kriptografi dengan penyandian kunci simetris antara lain Data Encryption Standard (DES), 3DES, Advance Encryption Standard (AES), Blowfish dan International Data Encryption Algorithm (IDEA). 3. Penyandian dengan kunci asimetris Penyandian dengan kunci asimetris atau sering juga disebut dengan kunci publik adalah penyandian yang pada proses enkripsi dan dekripsinya memiliki kunci yang berbeda. Pada kunci yang digunakan untuk enkripsi bersifat publik (public key). Sedangkan kunci yang digunakan untuk dekripsi bersifat rahasia (private key). Beberapa jenis kriptografi dengan penyandian kunci asimetris antara lain RSA, Diffie-Helman, ELGamal, Knapsack, dan beberapa penerapan teknik Elliptic Curve. 2.4.1 Algoritma RSA Karena semakin berkembangnya pertukaran data, khususnya dalam wireless dan local area network (LAN), hal ini memberi kesempatan yang besar untuk mencegat data dan memalsukan pesan. Satu-satunya cara yang mudah untuk menjaga keamanan dan keintegritasan informasi antara pengirim dan penerima adalah dengan menggunakan kriptografi kunci publik. RSA adalah sistem kriptografi dengan kunci publik yang pertama kali dapat berjalan dan dipraktekkan, ditemukan pada tahun 1977 dan dipublikasikan pada tahun 1978 oleh Rivest, Shamir dan Adleman (RSA) di Institut Teknologi Massachusetts. RSA adalah sistem kriptografi yang masih paling banyak digunakan seperti transaksi online, email, kartu pintar dan umumnya pada aplikasi mobile commerce (Yan, 2008).
8 Rumus dasar dari metode enkripsi dan dekripsi RSA adalah C M c mod N (1) Dan M C d mod N (2) Penjelasan: N = p * q p dan q = Bilangan prima M = Plaintext C = Ciphertext e = Encryption exponent d = Decryption exponent ɸ(N) = (p-1)(q-1) Tahapan Algoritma RSA 1. Pilih dua bilangan prima secara acak dan tidak sama. 2. Hitung perkalian p dan q, simpan dalam variabel n. 3. Hitung ɸ(n) (p-1).(q-1) 4. Pilih e secara acak dengan syarat, PBB(e, ɸ(n)) = 1 5. Hitung d e -1 (mod ɸ(n) atau d.e 1.mod(ɸ(n)) 6. Rahasiakan p, q, ɸ(n) dan d 7. Kirimkan e dan n Contoh kasus sederhana algoritma Kriptografi RSA: P = 47 (bilangan prima) dan Q = 71 (bilangan prima) N = P.Q = 3337 ɸ(N) = (P-1)*(Q-1) = 3220 E = 79 (pilih angka acak) D = 1+(k*3220)/79 dicoba K = 1,2,..,dst D = 1019 (dipilih karena hasilnya bilangan bulat)
9 Misalkan plainteks M = ABC, ubah kedalam ASCII menjadi 65 66 67 Enkripsi dengan kunci publik E = 79 dan N = 3337: M1 = 65 -> C1 = 65^79 mod 3337 = 541 M2 = 66 -> C2 = 66^79 mod 3337 = 795 M3 = 67 -> C3 = 67^79 mod 3337 = 1479 Dekripsi dengan kunci D = 1019: C1 = 541 -> M1 = 541^1019 mod 3337 = 65 -> A C2 = 795 -> M2 = 795^1019 mod 3337 = 66 -> B C3 = 1479 -> M3 = 1479^1019 mod 3337 = 67 -> C 2.4.2 Algoritma LCG (Linear Congruential Generators) Algoritma LCG atau Linear Congruential Generators adalah algoritma yang umumnya digunakan untuk pembangkit bilangan acak, dengan rumus sebagai berikut: Xn = (a * Xn-1 + b) mod m (3) Penjelasan: X = Kunci sementara a = Bilangan pengali b = Bilangan inkremen m = Modulus Keuntungan dari linear congruential generators adalah proses pembangkitan bilangan acak cepat, dan membutuhkan beberapa operasi per-bit (Schneier, 1996). Akan tetapi kekurangan dari algoritma pembangkit bilangan acak ini adalah bilangan acak yang dihasilkan tidak dapat digunakan untuk kriptografi, karena bilangan acak tersebut bisa ditebak. Pada penelitian ini algoritma LCG akan dikombinasikan dengan waktu dalam satuan milidetik, dimana untuk setiap bilangan acak yang dihasilkan akan ditambahkan dengan milidetik saat ini, dengan demikian hasil bilangan acak yang dihasilkan akan sulit untuk ditebak.
10 Contoh: m = 1024 a = 105 c = 71 X = 1 t = Waktu dalam milidetik Pengujian LCG tanpa kombinasi waktu 0 = (105 * 176) +71) mod 1024 = 176 1 = (105 * 119) +71) mod 1024 = 119 2 = (105 * 278) +71) mod 1024 = 278 3 = (105 * 589) +71) mod 1024 = 589 4 = (105 * 476) +71) mod 1024 = 476 Hasil pengujian jika dilakukan berulang kali akan tetap menghasilkan bilangan yang sama. Pengujian LCG dengan kombinasi waktu 0 = ((105 * 46) +71 + 514942) mod 1024 = 46 1 = ((105 * 753) +71 + 515020) mod 1024 = 753 2 = ((105 * 267) +71 + 515051) mod 1024 = 267 3 = ((105 * 464) +71 + 515078) mod 1024 = 464 4 = ((105 * 694) +71 + 515103) mod 1024 = 694 Hasil pengujian jika dilakukan berulang kali akan menghasilkan bilangan yang berbeda. 2.4.3 Fermat s Primality Test Untuk menghasilkan sebuah kunci pada sistem kriptografi kunci publik RSA membutuhkan bilangan P dan Q yang prima, algoritma Fermat s Little Theorem dapat digunakan untuk menguji apakah sebuah bilangan prima atau bilangan biasa (Thomas, et al. 2001).
11 Sebuah bilangan dikatakan prima jika memenuhi rumus sebagai berikut: a p-1 1 (mod p) atau a p-1 (mod p) 1 (4) Penjelasan: a = Bilangan Inkremen p = Bilangan yang diuji Jika dalam interval a dalam pengujian menghasilkan sekali saja nilai bukan 1 maka bilangan yang diuji bukan bilangan prima. Contoh: Uji keprimaan angka 6 a = 1 1 5 (mod 6) = 1 a = 2 2 5 (mod 6) = 2 Proses berhenti karena dalam interval a = 2 menghasilkan nilai bukan 1, maka angka 6 bukanlah bilangan prima. Uji keprimaan angka 5 a = 1 1 4 (mod 5) = 1 a = 2 2 4 (mod 5) = 1 a = 3 3 4 (mod 5) = 1 A = 4 4 4 (mod 5) = 1 Proses berhenti dan dalam setiap interval a menghasilkan nilai 1, maka angka 5 adalah bilangan prima.
12 2.4.4 Algoritma Rabin-Miller Michael Rabin dan Gary Miller mengembangkan sebuah algoritma untuk mengujian keprimaan sebuah bilangan pada tahun 1976. Algoritma ini adalah algoritma yang umumnya digunakan untuk menentukan sebuah bilangan prima (Schneier, 1996). Berikut ini adalah langkah-langkah dalam melakukan pengujian bilangan prima berdasarkan Algoritma Rabin-Miller pada buku Schneier (1996). 1. Pilih bilangan acak n untuk diuji dan bilangan acak a untuk menguji 2. Hitung b yang dalam hal ini 2 b adalah nilai pangkat terbesar yang habis membagi n-1 3. Hitung M dengan n = 1 + 2 b * m atau m = n-1 / 2 b 4. Nyatakan j = 0 dan z = a m mod n 5. Jika z = 1 atau z = n-1, maka n adalah bilangan prima 6. Jika z > 0 dan z = 1, maka n bukan bilangan prima 7. Nyatakan j = j+1. Jika j < b dan z n-1, nyatakan z = z 2 mod n dan ulangi langkah 7. Jika z = p-1, maka n adalah bilangan prima 8. Jika j = b dan z n-1, maka n adalah bukan bilangan prima. Contoh: 1. n = 223, n-1 = 222 2. b = 1, jadi 2 b = 2. Karena 2 b mod n-1 = 2 1 mod 222 = 0 3. a = 24 4. hitung M, 223 = 1 + 2 1 * M, M = 223 1 / 2 1, M = 111 5. j = 0, z = 24 111 mod 223, z = 222 6. z = 222 maka n adalah bilangan prima. 2.4.5 Algoritma One Time Pad Sandi One Time Pad merupakan salah satu dari Sistem Kriptografi Klasik berbasis subtitusi, ditemukan oleh Major Joseph Mauborgne pada tahun 1917. Proses kerja Sandi One Time Pad menggunakan kunci yang acak setiap karakternya untuk semua teks asli, kunci yang acak tersebut hanya digunakan sekali saja dan panjang kuncinya sama dengan panjang teks asli, sistem Sandi One Time Pad diklaim merupakan sandi yang mencapai kerahasiaan sempurna (perfect secrecy) (Sadikin, 2012).
13 Rumus dasar dari Sandi One Time Pad adalah Enkripsi: ci = (pi + ki) mod 26 (10) Dekripsi: d i = (c i - k i ) mod 26 (11) Penjelasan: c = Ciphertext p = Plaintext k = Kunci enkripsi i = Karakter ke-i Tahapan Sandi OTP 1. Pilih karakter secara acak sebanyak karakter pada pesan sebagai kunci enkripsi. 2. Jumlahkan karakter ke-i dari pesan dengan kunci ke-i dan mod 26. Contoh kasus sederhana algoritma Kriptografi One Time Pad: Misalkan plainteks P = BUKU Generate Kunci OTP sepanjang P karakter = 70 75 83 78 Ubah P dan Kunci kedalam bentuk ASCII: P = 66 85 75 85 K = 70 75 83 78 Enkripsi Ci = (Pi + Ki) mod 26 : C1 = (66+70) mod 26 = 84 -> T C2 = (85+75) mod 26 = 108 -> l C3 = (75+83) mod 26 = 80 -> P C4 = (85+78) mod 26 = 85 -> U
14 Dekripsi Pi = (Ci - Ki) mod 26 : P1 = (84-70) mod 26 = 66 -> B P2 = (108-75) mod 26 = 85 -> U P3 = (80-83) mod 26 = 75 -> k P4 = (85-78) mod 26 = 85 -> U 2.5. Database Menurut Rosa et al (2011), Database atau basis data adalah sistem terkomputerisasi yang berfungsi untuk menyimpan data atau informasi yang sudah diolah dan membuat informasi tersedia saat dibutuhkan. Kebutuhan basis data dalam sistem informasi meliputi 2 hal, yaitu: 1. Memasukkan, menyimpan, dan mengambil data 2. Membuat laporan berdasarkan data yang telah disimpan 2.5.1 DBMS Menurut Rosa et al (2011), DBMS (Database Management System) atau Sistem Manajemen Basis Data adalah aplikasi yang digunakan untuk menyimpan, mengelola, dan menampilkan data. Aplikasi DBMS memiliki beberapa persyaratan minimal sebagai berikut: 1. Menyediakan fasilitas untuk mengelola akses data 2. Mampu menangani integritas data 3. Mampu menangani akses data yang dilakukan secara efektif 4. Mampu menangani backup data DBMS sudah lama berkembang dimulai sejak tahun 1960an, dan memasuki tahun 1970an mulai berkembang teknologi Relational DBMS yaitu DBMS yang berbasis model relasional dikembangkan oleh Edgar J. Codd. DBMS model relasional adalah sebuah model pada DBMS yang memandang data sebagai sekumpulan tabel yang saling berkaitan. Seiring perkembangan teknologi, model DBMS berkembang menjadi Object Oriented DBMS atau DBMS dengan model berorientasi objek yang memandang data sebagai suatu objek.
15 Berikut ini adalah beberapa macam DBMS yang paling populer dan banyak digunakan di dunia saat ini, yaitu: 1. Oracle 2. Microsoft SQL Server 3. Microsoft Access 4. MySQL 2.5.2 MySQL MySQL adalah salah satu DBMS yang sangat populer dikalangan developer aplikasi web. Untuk dapat mengelola data yang disimpan dalam database, memerlukan sebuah perintah khusus yang dikirimkan kepada DBMS bernama SQL (Structured Query Language). Dalam MySQL, SQL disebut sebagai pernyataan. Adapun beberapa pernyataan umum yang digunakan dalam MySQL adalah sebagai berikut: 1. SELECT, berguna untuk menampilkan informasi dari sebuah table pada database. 2. UPDATE, berguna untuk mengubah informasi dari sebuah table pada database. 3. DELETE, berguna untuk menghapus informasi dari sebuah table pada database. 4. INSERT, berguna untuk menambah informasi baru kedalam table pada database. 2.6. PHP Menurut Sibero (2011), PHP (Hypertext Preprocessor) adalah pemrograman interpreter yaitu proses penerjemahan dari kode sumber menjadi kode mesin yang dimengerti komputer pada saat baris kode dijalankan secara langsung. PHP pada awalnya ditulis menggunakan bahasa PERL (Perl Script), kemudian ditulis ulang dengan menggunakan bahasa C CGI-BIN (Common Gateway Interface-Binnary) yang bertujuan agar halaman website dapat mendukung formulir dan penyimpanan data.
16 PHP adalah bahasa pemrograman Server Side Programming, memungkinkan sebuah website yang dibangun bersifat dinamis (Sibero, 2011). 2.7. DFD Dalam pembangunan software, perlu adanya konsep pemrograman terstruktur untuk memudahkan developer dalam membagi-bagi fungsi, prosedur, dan modul program yang dibangun. Dalam konsep pemrograman terstruktur dikenal metode DFD (Data Flow Diagram). DFD adalah sebuah metode yang digunakan untuk merepresentasikan sebuah sistem atau perangkat lunak pada beberapa level detail. DFD lebih sesuai untuk memodelkan fungsi-fungsi dan prosedur-prosedur pada pemrograman sistem yang terstruktur (Structural Programming) (Rosa, et al. 2011). 2.8. UML (Unified Modelling Language) Untuk membantu dalam pengembangan perangkat lunak dikenal istilah pemodelan. Salah satu pemodelan yang saat ini paling banyak digunakan oleh pengembang perangkat lunak adalah UML (Unified Modelling Language). UML adalah standar bahasa yang sering digunakan dalam bidang industri untuk mendefinisikan requirement (kebutuhan), membuat analisis dan desain, serta menggambarkan arsitektur dalam pemrograman berorientasi objek. Ada beberapa hal yang dimaksud dalam kompleksitas pada perangkat lunak (Rosa, et al. 2011): 1. Kompleksitas domain atau permasalahan perangkat lunak 2. Kesulitas mengelola proses pengembangan perangkat lunak 3. Kemungkinan fleksibilitas perubahan perangkat lunak 4. Permasalahan karakteristik bagian-bagian perangkat lunak secara diskrit UML terbagi atas 3 (tiga) kategori, yaitu diagram struktur (structure diagram), diagram kelakuan sistem (behaviour diagram), dan diagram interaksi (interaction diagram). Dalam pembangunan NIC Messenger, penulis menggunakan diagram use
17 case dari kategori diagram kelakuan sistem, untuk menggambarkan interaksi antara satu atau lebih aktor dengan perangkat lunak (Rosa, et al. 2011). 2.9. Penelitian Terdahulu Beberapa penelitian yang menjadi bahan pembelajaran penulis tentang penyelesaian masalah keamanan dalam pertukaran pesan. Wahyudi et al (2008) telah mencoba mengamankan pesan dengan menggunakan teknik steganografi dan algoritma AES, Wahyudi dan Silitongan merancang aplikasi yang menyembunyikan pesan sebelum dikirim kepada penerima kedalam sebuah gambar dengan teknik steganografi, sebelum pesan disisipkan kedalam gambar pesan asli dienkripsi terlebih dahulu menggunakan algoritma AES. Hasilnya pesan menjadi tersembunyi dengan tidak mencurigakan karena telah disisipkan kedalam sebuah gambar. Connely (2008) telah menerapkan algoritma One Time Pad untuk mengamankan email. Connely menerapkan sandi One Time Pad dan teknik TRNG (True Random Number Generator) untuk menghasilkan nilai yang benar-benar random sebagai kunci One Time Pad. Hasilnya email yang dienkripsi benar-benar rahasia, atau perfect secrecy. Rasool et al (2011) telah mencoba meningkatkan algoritma keamanan dalam komunikasi pesan. Rasool et al, menerapkan kombinasi dari algoritma kunci simetris FSET (algoritma yang dibuat oleh Varghese Paul), algoritma kunci publik RSA dan teknik hashing menggunakan SHA-2. Hasilnya komunikasi pesan menjadi rahasia karena telah dienkripsi menggunakan FSET, kemudian kunci yang digunakan telah dienkripsi oleh RSA, untuk mengetahui apakah pesan asli masih terbukti valid, mereka melakukan pengujian menggunakan SHA-2. Pardede (2012) telah mencoba menerapkan RSA sebagai pengamanan sistem e-voting. Hasilnya data jumlah suara yang dihasilkan dari proses voting pemilih dalam pemilu terlindungi.
18 Table 1.1 Tabel penelitian terdahulu No Peneliti Penelitian Algoritma Hasil 1 Wahyudi et al (2008) Mengamankan pesan Steganografi dan AES Tidak praktis 2 Connely (2008) Mengamankan email One Time Pad Sangat aman 3 Rasool et al (2011) Mengamankan pesan FSET, RSA, dan SHA- 2 Sangat aman 4 Pardede (2012) Mengamankan e-voting RSA Aman