Kriptografi Kombinasi Algoritma RSA 512-BIT Dan One Time PAD Untuk Pengamanan Pesan Pada NIC Messenger

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 Universitas Sumatera Utara 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. Universitas Sumatera Utara Rumus dasar dari metode enkripsi dan dekripsi RSA adalah C ≡ � mod N 1 Dan M ≡ � mod N 2 Penjelasan: N = p q p dan q = Bilangan prima M = Plaintext C = Ciphertext e = Encryption exponent d = Decryption exponent ɸN = p-1q-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, PBBe, ɸ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-1Q-1 = 3220 E = 79 pilih angka acak D = 1+k322079 dicoba K = 1,2,..,dst D = 1019 dipilih karena hasilnya bilangan bulat Universitas Sumatera Utara Misalkan plainteks M = “ABC”, ubah kedalam ASCII menjadi “65 66 67” Enkripsi dengan kunci publik E = 79 dan N = 3337: M1 = 65 - C1 = 6579 mod 3337 = 541 M2 = 66 - C2 = 6679 mod 3337 = 795 M3 = 67 - C3 = 6779 mod 3337 = 1479 Dekripsi dengan kunci D = 1019: C1 = 541 - M1 = 5411019 mod 3337 = 65 - A C2 = 795 - M2 = 7951019 mod 3337 = 66 - B C3 = 1479 - M3 = 14791019 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: X n = a X n-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. Universitas Sumatera Utara 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. Universitas Sumatera Utara 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. Universitas Sumatera Utara 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. Universitas Sumatera Utara Rumus dasar dari Sandi One Time Pad adalah Enkripsi: c i = p i + k i 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 Universitas Sumatera Utara 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