BAB 2 LANDASAN TEORI
2.1 Kriptografi 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, 2010). Kriptografi adalah ilmu tentang metode-metode untuk mengirimkan pesan secara rahasia (disebut enkripsi atau bentuk samaran) sehingga hanya penerima yang dimaksud yang dapat memecahkan dan membaca pesan (dekripsi). Kriptografi secara etimologi terdiri dari kata kryptos berasal dari bahasa Yunani yang berarti tersembunyi dan graphein yang berarti tulisan. Pesan asli disebut plaintext dan pesan yang disamarkan disebut ciphertext (Mollin, 2007). Secara garis besar, proses enkripsi adalah proses pengacakan naskah asli (plaintext) menjadi naskah acak (ciphertext) yang sulit untuk dibaca oleh seseorang yang tidak mempunyai kunci dekripsi. Yang dimaksud dengan sulit untuk dibaca disini adalah probabilitas mendapat kembali naskah asli oleh seseorang yang tidak mempunyai kunci dekripsi dalam waktu yang tidak terlalu lama adalah sangat kecil (Kromodimoeljo, 2010). Dekripsi merupakan kebalikan dari enkripsi. Pesan yang telah dienkripsi dikembalikan ke bentuk asalnya (teks asli), disebut dengan dekripsi pesan (Ariyus, 2008). Algoritma kriptografi dibagi menjadi dua bagian berdasarkan kunci yang dipakainya: 1. Algoritma simetris (menggunakan satu kunci untuk enkripsi dan dekripsinya). 2. Algoritma asimetris (menggunakan kunci yang berbeda untuk enkripsi dan dekripsi).
Universitas Sumatera Utara
6
2.2 Algoritma Kriptografi Kunci Simetris Algoritma kriptografi simetris menggunakan kunci yang sama untuk enkripsi dan dekripsinya. Kunci pada penyandian simetris diasumsikan bersifat rahasia yakni hanya pihak yang melakukan enkripsi dan dekripsi yang mengetahui nilainya. Oleh karena itu, penyandian dengan kunci simetris disebut juga dengan penyandian kunci rahasia (Sadikin, 2012). Dalam lingkungan komunikasi, algoritma kriptografi kunci simetris dapat digunakan jika kedua belah pihak yang berkomunikasi satu dengan yang lainnya saling membagi kunci enkripsi sebelumnya (Wahana Komputer, 2003). Keamanan dari pesan yang menggunakan algoritma ini tergantung pada kunci. Jika kunci tersebut diketahui oleh orang lain maka orang tersebut akan dapat melakukan enkripsi dan dekripsi terhadap pesan. Contoh algoritma yang memakai kunci simetris antara lain DES, RC4, IDEA, AES, OTP, A5, dan lain sebagainya (Ariyus, 2008). Algoritma kriptografi kunci simetris dibagi menjadi dua yaitu : 1. Stream cipher Stream cipher adalah suatu sistem di mana proses enkripsi dan dekripsinya dilakukan dengan cara bit per bit. Pada sistem ini aliran bit kuncinya dihasilkan oleh suatu pembangkit bit acak atau disebut juga pembangkit aliran kunci (Zain, 2012). Stream cipher mengenkripsi satu bit setiap kali. Bit hanya mempunyai dua buah nilai, sehingga proses enkripsi hanya menyebabkan dua keadaan pada bit tersebut yakni berubah atau tidak berubah. Keamanan stream cipher bergantung seluruhnya pada pembangkit aliran kunci. Jika pembangkit mengeluarkan aliran kunci yang benar-benar acak maka algoritma enkripsinya berada pada tingkat keamanan yang tinggi. Contoh algoritma stream cipher adalah RC4 dan A5 (Nathasia & Wicaksono, 2011).
Universitas Sumatera Utara
7
2. Block cipher Sistem block cipher mengkodekan data dengan cara membagi plaintext menjadi per blok dengan ukuran yang sama dan tetap. Kemudian setiap bloknya dienkripsi atau didekripsi sekaligus (Zain, 2012). Contoh algoritma ini adalah RC5, DES, AES, IDEA, dan Blowfish. 2.3 Algoritma Kriptografi Kunci Asimetris Penyandian dengan kunci asimetris atau sering juga disebut dengan penyandian kunci publik adalah penyandian dengan kunci enkripsi dan dekripsi yang berbeda nilai. Kunci yang digunakan untuk enkripsi disebut dengan kunci publik (public key) dan kunci yang digunakan untuk dekripsi disebut kunci rahasia (private key) (Sadikin, 2012). Kunci asimetris adalah pasangan kunci kriptografi yang salah satunya digunakan untuk proses enkripsi dan yang satu lagi untuk proses dekripsi. Semua orang yang mendapatkan kunci publik dapat menggunakannya untuk mengenkripsi suatu pesan, sedangkan hanya satu orang saja yang memiliki kunci rahasia yang dapat melakukan pembongkaran terhadap sandi yang dikirim untuknya (Ariyus, 2006). Contoh, Alice ingin mengirim pesan kepada Bob, maka hal yang harus dilakukan adalah : 1. Bob memberitahukan kunci publiknya ke Alice. 2. Alice mengenkripsi pesan dengan menggunakan kunci publik Bob. 3. Bob mendekripsi pesan dari Alice dengan kunci rahasianya. 4. Begitu juga sebaliknya jika Bob ingin mengirim pesan kepada Alice. Contoh algoritma yang menggunakan kunci asimetris adalah RSA, DSA, DiffieHellman (DH), dan lain-lain (Ariyus, 2008). 2.4 Algoritma RC4 RC4 adalah stream cipher yang dirancang di RSA Security oleh Ron Rivest tahun 1987. Pada mulanya cara kerja RC4 dirahasiakan oleh RSA Security, akan tetapi ini dibocorkan di internet tahun 1994 di milis Cypherpunks. RSA Security tidak pernah
Universitas Sumatera Utara
8
merilis RC4 secara resmi, akibatnya banyak yang menyebutnya sebagai ARC4 (alleged RC4 atau tersangka RC4) untuk menghindari masalah trademark (Kromodimoeljo, 2010). RC4 merupakan salah satu jenis stream cipher, yaitu memproses unit atau input data pada satu saat. Unit atau data pada umumnya merupakan sebuah byte. Dengan cara ini enkripsi atau dekripsi dapat dilaksanakan pada panjang yang variabel. Algoritma ini tidak harus menunggu sejumlah input data tertentu sebelum diproses, atau menambahkan byte tambahan untuk mengenkrip (Sukmawan, 1998). Algoritma RC4 terdiri atas 2 bagian yaitu Key Scheduling Algorithm (KSA) dan Pseudo-Random Generation Algorithm (PRGA). 1. Key Scheduling Algorithm (KSA) Dalam proses KSA terdapat 2 state array yang harus diinisialisasi yakni S dan K. Array S sepanjang 256 diinisialisasi dengan bilangan 0 sampai 255, S[0] = 0, S[1] = 1, ... , S[255] = 255. Sedangkan array K dengan panjang 256 diinisialisasi dengan kunci yang diulangi sampai seluruh array K[0], K[1], ... , K[255] terisi penuh (Ariyanto, 2009). Berikut adalah algoritma KSA, dimana simbol l menyatakan panjang kunci dalam byte. for i from 0 to 255 S[i] := i endfor j := 0 for i from 0 to 255 j := (j + S[i] + K[i mod l]) mod 256 swap values of S[i] and S[j] endfor
Universitas Sumatera Utara
9
2. Pseudo-Random Generation Algorithm (PRGA) State array S hasil dari proses KSA digunakan lagi dalam proses PRGA ini untuk menghasilkan keystream yang akan di XOR kan dengan plaintext untuk menghasilkan ciphertext (Mooduto & Albar, 2004). Berikut adalah algoritma PRGA : i := 0 j := 0 while GeneratingOutput: i := (i + 1) mod 256 j := (j + S[i]) mod 256 swap values of S[i] and S[j] output := S[(S[i] + S[j]) mod 256] endwhile
2.5 Algoritma RC4A Pada FSE 2004, Souradyuti Paul dan Bart Preneel telah mengusulkan sebuah varian baru dari RC4 yang diberi nama RC4A. RC4A merupakan sebuah upaya untuk meningkatkan keamanan dari RC4 tanpa mengurangi efisiensi. RC4A adalah stream cipher yang berorientasi byte. Tahap pembentukan dari RC4A lebih efisien dibanding RC4, tetapi tahap inisialisasinya memerlukan setidaknya dua kali proses inisialisasi dari RC4. Berikut adalah algoritma KSA dari RC4A (Tsunoo, et al. circa 2005): RC4_KSA(K,ð1 ) for i = 0 ... l-1 WK[i] = RC4_PRGA(ð1 ) RC4_KSA(WK,ð2 )
Universitas Sumatera Utara
10
Berikut adalah algoritma PRGA dari RC4A (Tsunoo, et al. circa 2005): Initialization: i = 0 ð1 = ð2 = 0
Generation loop i = i + 1 ð1 = ð1 + ð1 [i]
Swap (ð1 [i], ð1 [ð1 ])
Output z = ð2 [ð1 [i] + ð1 [ð1 ]]
ð2 = ð2 + ð2 [i]
Swap (ð2 [i], ð2 [ð2 ])
Output z = ð1 [ð2 [i] + ð2 [ð2 ]]
RC4A menggunakan dua state array, S1 dan S2, dan tiga buah indeks i, j1, dan j2. RC4A menggunakan KSA yang sama dengan RC4 kecuali satu hal dimana KSA digunakan dua kali, masing-masing sekali untuk S1 dan S2. Semua operasi aritmetika dihitung dengan modulo 256. Proses KSA dari RC4A terdiri atas 2 bagian yaitu : 1. KSA dengan masukan K dan S1. 2. KSA dengan masukan WK dan S2. WK dihasilkan dari PRGA milik RC4. l di sini merupakan panjang kunci dalam byte. Setelah S1 dan S2 diperoleh dari proses KSA, selanjutnya digunakan kembali dalam PRGA. Tiap putaran dalam PRGA menghasilkan 2 byte output.
2.6 Fungsi Hash Salah satu hal primitif mendasar dalam kriptografi modern adalah fungsi hash kriptografi yang sering disebut dengan fungsi hash satu arah. Fungsi hash adalah sebuah fungsi dengan masukan string biner yang panjangnya sembarang dan menghasilkan string biner dengan panjang yang tetap. Fungsi hash yang paling banyak digunakan dalam kriptografi adalah untuk integritas data dan tanda tangan digital (Menezes, et al. 1996).
Universitas Sumatera Utara
11
Fungsi hash satu arah (one-way hash function) sering disebut juga sebagai message digest, fingerprint, dan fungsi kompresi. Fungsi ini biasanya diperlukan bila kita menginginkan pengambilan sidik jari suatu pesan. Sebagaimana sidik jari manusia yang menunjukkan identitas si pemilik sidik jari, fungsi ini diharapkan pula mempunyai kemampuan yang serupa dengan sidik jari manusia, di mana sidik jari pesan diharapkan menunjuk ke satu pesan dan tidak dapat menunjuk kepada pesan lainnya. Dinamakan sebagai fungsi kompresi karena biasanya, masukan fungsi hash ini selalu lebih besar dari pada keluarannya, sehingga seolah-olah mengalami kompresi. Namun kompresi hasil fungsi ini tidak dapat dikembalikan ke bentuk awalnya sehingga disebut fungsi satu arah. Dinamakan message digest karena seolaholah merupakan inti sari pesan, meskipun sebenarnya tidak demikian (Kurniawan, 2004). Fungsi hash dapat digunakan untuk mewujudkan layanan keutuhan data. Misalnya M merupakan pesan dan h adalah fungsi hash, maka ðĶ = â(ð) disebut
dengan message digest. Sebelum pesan M disebarkan/dikirimkan sebuah message digest ðĶðððð = â(ð) disimpan sebagai acuan. Misalnya didapatkan kembali ðâē
setelah disebarkan/dikirim apabila ingin menguji apakah ð = ðâē hitung kembali message digest baru ðĶððððĒ = â(ðâē) disimpulkan pesan tidak berubah bila ðĶðððð =
ðĶððððĒ (Sadikin, 2012).
Fungsi hash memiliki karakteristik sebagai berikut (Kromodimoeljo, 2010) : 1. Preimage resistance. Untuk suatu nilai hash yang sembarang (tidak diketahui asal-usulnya), sangat sukar untuk mencari naskah yang mempunyai nilai hash tersebut. 2. Second preimage resistance. Untuk suatu naskah ð1 , sangat sukar untuk mencari naskah lain ð2 yang
mempunyai nilai hash yang sama. 3. Collision resistance.
Sangat sukar untuk mencari dua naskah ð1 dan ð2 yang berbeda, yang mempunyai nilai hash yang sama.
2.7 Algoritma MD5 MD5 adalah salah satu fungsi hash yang paling banyak digunakan. MD5 merupakan versi perbaikan dari MD4 yang dirancang oleh Ron Rivest pada tahun 1991. MD5
Universitas Sumatera Utara
12
umumnya digunakan sebagai checksum untuk verifikasi integritas file yang didownload dari internet. MD5 memproses teks masukan ke dalam blok-blok 512 bit, kemudian dibagi menjadi 16 buah sub blok sebesar 32 bit. Keluaran dari algoritma MD5 adalah sebuah set dari 4 buah blok masing-masing 32 bit, yang kemudian menghasilkan nilai hash 128 bit (Schneier, 1996). Langkah-langkah pembuatan message digest pada MD5 adalah sebagai berikut: 1. Penambahan bit-bit pengganjal (padding bits) Pesan ditambahkan sejumlah bit pengganjal sedemikian sehingga panjang pesan (dalam bit) kongruen dengan 448, modulo 512. Hal ini berarti pesan akan mempunyai panjang yang hanya kurang 64 bit dari kelipatan 512. Penambahan bit selalu dilakukan walaupun panjang pesan sudah kongruen dengan 448, modulo 512. Jika panjang pesan jumlahnya 448 bit, maka pesan tersebut ditambah dengan 512 bit menjadi 960 bit, jadi panjang bitbit pengganjal adalah antara 1 sampai 512 bit. Bit-bit pengganjal terdiri dari sebuah bit 1 dan diikuti dengan bit 0 yang menjadi sisanya (Chulkamdi, dkk. 2015). 2. Penambahan nilai panjang pesan semula Pesan yang telah diberi bit-bit pengganjal selanjutnya ditambah lagi dengan 64 bit yang menyatakan panjang pesan semula. Jika panjang pesan semula > 264, maka hanya 64 bit secara low-order yang digunakan. Pada saat ini, pesan yang dihasilkan memiliki panjang yang merupakan kelipatan dari 512.
3. Inisialisasi penyangga (buffer) MD MD5 membutuhkan 4 buah penyangga atau buffer yang masing-masing panjangnya 4 x 32 bit = 128 bit. Setiap penyangga diinisialisasi dengan nilai hexadesimal sebagai berikut : A = 01 23 45 67 B = 89 ab cd ef C = fe dc ba 98 D = 76 54 32 10
Universitas Sumatera Utara
13
4. Pengolahan pesan dalam blok berukuran 512 bit Dalam tahap ini terdapat fungsi yang akan menghasilkan output satu buah word 32 bit yang didefinisikan sebagai berikut : F(b,c,d) = (b ⧠c) ( b ⧠d)
G(b,c,d) = (b ⧠d) âĻ(c ⧠âžd) H(b,c,d) = b
c
I(b,c,d) = c
(b âĻ
d
d)
(Operator logika and, or, not, xor masing-masing dilambangkan dengan , , , ).
Tahap ini menggunakan sebuah tabel 64 elemen T[1 ... 64] yang dibangun dari fungsi sinus. T[i] menunjukkan urutan ke-i elemen dari tabel yang merupakan 232 Ã abs(sin(i)), di mana i dalam radian. Nilai T[i] dapat
dilihat pada Tabel 2.1.
Tabel 2.1 Nilai T[i] T[1] = D76AA478 T[2] = E8C7B756 T[3] = 242070DB T[4] = C1BDCEEE T[5] = F57C0FAF T[6] = 4787C62A T[7] = A8304613 T[8] = FD469501 T[9] = 698098D8 T[10] = 8B44F7AF T[11] = FFFF5BB1 T[12] = 895CD7BE T[13] = 6B901122 T[14] = FD987193 T[15] = A679438E T[16] = 49B40821
T[17] T[18] T[19] T[20] T[21] T[22] T[23] T[24] T[25] T[26] T[27] T[28] T[29] T[30] T[31] T[32]
= = = = = = = = = = = = = = = =
F61E2562 C040B340 265E5A51 E9B6C7AA D62F105D 02441453 D8A1E681 E7D3FBCB 21E1CDE6 C33707D6 F4D50D87 455A14ED A9E3E905 FCEFA3F8 676F02D9 8D2A4C8A
T[33] T[34] T[35] T[36] T[37] T[38] T[39] T[40] T[41] T[42] T[43] T[44] T[45] T[46] T[47] T[48]
= = = = = = = = = = = = = = = =
FFFA3942 8771F681 69D96122 FDE5380C A4BEEA44 4BDECFA9 F6BB4B60 BEBFBC70 289B7EC6 EAA127FA D4EF3085 04881D05 D9D4D039 E6DB99E5 1FA27CF8 C4AC5665
T[49] T[50] T[51] T[52] T[53] T[54] T[55] T[56] T[57] T[58] T[59] T[60] T[61] T[62] T[63] T[64]
= = = = = = = = = = = = = = = =
F4292244 432AFF97 AB9423A7 FC93A039 655B59C3 8F0CCC92 FFEFF47D 85845DD1 6FA87E4F FE2CE6E0 A3014314 4E0811A1 F7537E82 BD3AF235 2AD7D2BB EB86D391
Proses pada tahap ini terdiri dari 4 buah putaran dan masing-masing putaran melakukan operasi dasar MD5 sebanyak 16 kali. Operasi dasar MD5 ditulis dalam persamaan sebagai berikut: a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s) a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s) a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s) a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s)
(<<< s menggambarkan circular shift left sebanyak s bit)
Universitas Sumatera Utara
14
Empat buah putaran ditunjukkan pada Tabel 2.2, Tabel 2.3, Tabel 2.4, dan Tabel 2.5. Misalkan notasi [abcd k s i], maka Tabel 2.2 Putaran 1 [ABCD
0
7
1]
[DABC
1 12
2]
[CDAB
2 17
3]
[BCDA
3 22
4]
[ABCD
4
7
5]
[DABC
5 12
6]
[CDAB
6 17
7]
[BCDA
7 22
8]
[ABCD
8
7
9]
[DABC
9 12 10]
[CDAB 10 17 11]
[BCDA 11 22 12]
[DABC 13 12 14]
[CDAB 14 17 15]
[BCDA 15 22 16]
[ABCD 12
7 13]
Tabel 2.3 Putaran 2 [ABCD
1
5 17]
[DABC
6
9 18]
[CDAB 11 14 19]
[BCDA
0 20 20]
[ABCD
5
5 21]
[DABC 10
9 22]
[CDAB 15 14 23]
[BCDA
4 20 24]
[ABCD
9
5 25]
[DABC 14
9 26]
[CDAB
3 14 27]
[BCDA
8 20 28]
[ABCD 13
5 29]
[DABC
9 30]
[CDAB
7 14 31]
[BCDA 12 20 32]
2
Tabel 2.4 Putaran 3 [ABCD
5
4 33]
[DABC
8 11 34]
[CDAB 11 16 35]
[BCDA 14 23 36]
[ABCD
1
4 37]
[DABC
4 11 38]
[CDAB
7 16 39]
[BCDA 10 23 40]
[ABCD 13
4 41]
[DABC
0 11 42]
[CDAB
3 16 43]
[BCDA
6 23 44]
[ABCD
4 45]
[DABC 12 11 46]
[CDAB 15 16 47]
[BCDA
2 23 48]
9
Tabel 2.5 Putaran 4 [ABCD
0
6 49]
[DABC
7 10 50]
[CDAB 14 15 51]
[BCDA
5 21 52]
[ABCD 12
6 53]
[DABC
3 10 54]
[CDAB 10 15 55]
[BCDA
1 21 56]
[ABCD
8
6 57]
[DABC 15 10 58]
[CDAB
6 15 59]
[BCDA 13 21 60]
[ABCD
4
6 61]
[DABC 11 10 62]
[CDAB
2 15 63]
[BCDA
9 21 64]
5. Output Setelah putaran keempat, nilai dari a, b, c, dan d ditambahkan masingmasing ke A, B, C, dan D dan algoritma berlanjut ke blok data selanjutnya. Output akhirnya adalah rangkaian dari A, B, C, dan D (Schneier, 1996).
Universitas Sumatera Utara
15
2.8 Penelitian yang Relevan Berikut ini beberapa penelitian yang terkait dengan algoritma RC4A dan MD5 : 1. Rosyanti Harahap (2010) dalam skripsi yang berjudul Sistem Pengamanan Data Teks Menggunakan Algoritma Message Digest-5. Menyimpulkan bahwa MD5 dapat melakukan pengujian terhadap data teks untuk mengetahui apakah data sudah diubah atau belum. 2. M Taofik Chulkamdi, Sholeh Hadi Pramono, dan Erni Yudaningtyas (2015) dalam jurnal yang berjudul Kompresi Teks Menggunakan Algoritma Huffman dan MD5 pada Instant Messaging Smartphone Android. Menyimpulkan bahwa algoritma MD5 sesuai untuk aplikasi instant message berbasis android untuk menjaga integritas password. 3. Rendi Gayu Buana (2012) dalam jurnal yang berjudul Pengujian Integritas Data Menggunakan Algoritma MD5. Menyimpulkan bahwa algoritma MD5 dapat mendeteksi perubahan yang terjadi pada suatu file walaupun perubahan tersebut sangat kecil.
Universitas Sumatera Utara