1 4 BAB II TINJAUAN PUSTAKA 2.1 Kriptografi Kriptografi adalah ilmu sekaligus seni untuk menjaga kerahasiaan pesan dengan cara menyandikannya ke dalam...
Kriptografi Kriptografi adalah ilmu sekaligus seni untuk menjaga kerahasiaan pesan
dengan cara menyandikannya ke dalam bentuk yang tidak dapat dimengerti lagi maknanya(Rinaldi, 2006). Kriptografi menyediakan empat layanan, yaitu kerahasiaan, integritas data, otentikasi dan nirpenyangkalan. Algoritma kriptografi adalah aturan untuk melakukan cipherisasi dan decipherisasi atau fungsi matematika yang digunakan untuk enkripsi dan dekripsi pesan(Rinaldi, 2006). Algoritma kriptografi berkembang terus dan terbagi atas dua jenis yaitu algoritma kriptografi klasik dan algoritma kriptografi modern. Algoritma kriptografi klasik hanya menggunakan operasi sederhana untuk melakukan enkripsi terhadap ciphertext sehingga cukup mudah dipecahkan. Oleh karena itulah, algoritma ini sudah jarang digunakan saat ini. Akan tetapi, algoritma kriptografi klasik merupakan dasar dari algoritma kriptografi modern. Algoritma jenis ini terdiri dari dua tipe dilihat dari operasi dasar yang digunakan untuk melakukan enkripsi, yaitu cipher substitusi dan cipher tranposisi. Selain algoritma kriptografi klasik, dikenal juga algorimta kriptografi modern. Tidak seperti algoritma klasik yang menggunakan pemrosesan sederhana, algoritma modern menekankan pada kompleksitas sehingga sulit dipecahkan. Algoritma kriptografi modern umunya beroperasi dalam mode bit. Operasi dalam mode bit berarti semua data dan informasi (kunci, plaintext, dan ciphertext) dinyatakan dalam bit biner 1 dan 0. Salah satu hal yang penting dalam komunikasi menggunakan komputer untuk menjamin kerahasiaan data adalah enkripsi. Enkripsi adalah sebuah proses yang melakukan perubahan sebuah kode dari yang bisa dimengerti menjadi sebuah kode yang tidak bisa dimengerti (tidak terbaca). Enkripsi dapat diartikan sebagai kode atau chiper. Sebuah sistem pengkodean menggunakan suatu table atau kamus yang telah didefinisikan untuk mengganti kata dari informasi atau yang merupakan bagian dari informasi yang dikirim. Sebuah chiper menggunakan
5
suatu algoritma yang dapat mengkodekan semua aliran data (stream) bit dari sebuah pesan menjadi cryptogram yang tidak dimengerti (unitelligible). Karena teknik cipher merupakan suatu sistem yang telah siap untuk di automasi, maka teknik ini digunakan dalam sistem keamanan komputer dan network.
2.2
Enkripsi dan Dekripsi Pesan atau informasi yang dapat dibaca disebut sebagai plaintext atau
cleartext. Proses mengubah plaintext menjadi ciphertext disebut enkripsi. Pesan yang tidak dapat dibaca atau telah mengalami proses enkripsi disebut sebagai ciphertext. Sedangkan proses dekripsi digunakan untuk mengembalikan ciphertext ke bentuk plaintext. Dalam proses enkripsi dan dekripsi diperlukan kunci (key) untuk mengontrol kedua proses tersebut. Enkripsi dimaksudkan untuk melindungi informasi agar tidak terlihat oleh orang atau pihak yang tidak berhak. Enkripsi juga digunakan untuk verifikasi dalam mendownload software. Enkripsi dibentuk berdasarkan suatu algoritma yang akan mengacak suatu informasi menjadi bentuk yang tidak bisa dibaca atau tidak bisa dilihat. Dekripsi adalah proses dengan algoritma yang sama untuk mengembalikan informasi teracak menjadi bentuk aslinya.
Key
Plaintext
Enkripsi
Key
Chiphertext
Dekripsi
Plaintext
Gambar 2.1 Proses enkripsi dan dekripsi secara umum
Dasar matematis yang mendasari proses enkripsi dan dekripsi adalah relasi antara dua himpunan yaitu yang berisi elemen plaintext dan yang berisi ciphertext. Enkripsi dan dekripsi merupakan fungsi transformasi antara himpunan-himpunan tersebut. Apabila elemen-elemen plaintext dinotasikan dengan P, elemen-elemen ciphertext dinotasikan dengan C, sedang untuk proses enkripsi dinotasikan dengan
6
E, dekripsi dengan notasi D, maka secara matematis proses kriptografi dapat dinyatakan sebagai berikut ( Ardhian A, dkk, 2008 ) : Enkripsi : E(P) = C Dekripsi : D(C) = P atau D(E(P)) = P
2.3
Algoritma Sandi Simetris Bidang ilmu kriptografi modern terbagi menjadi beberapa area studi, seperti
algoritma kriptografi kunci simetri, algoritma kriptografi kunci publik, kriptanalasis, kriptanalisis primitif, dan kriptanalitis protokol. Pada algoritma kriptografi kunci simetri, kunci enkripsi memiliki hubungan dengan kunci dekripsi. Dalam hal ini, kunci enkripsi bisa identik dengan kunci enkripsi, ataupun ada perubahan yang simpel di antara keduanya. Kunci enkripsi dan dekripsi tersebut merepresentasikan rahasia bersama antara dua atau lebih pihak yang dapat digunakan sebagai penghubung informasi privat. Algoritma kriptografi kunci simetri ini secara umum tidak intensif dalam perhitungan. Hal tersebut menyebabkan kualitas algoritma kriptografi kunci simetri ini lebih cepat beratusratus atau bahkan beribu-ribu kali dari algoritma kriptografi kunci publik (kunci asimetri). Algoritma kriptografi kunci simetri dapat dikelompokkan menjadi dua kategori, yaitu: 1. Cipher aliran (stream ciphers) Algoritma kriptografi beroperasi pada plainteks/cipherteks dalam bentuk bit tunggal, yang dalam hal ini rangkaian bit dienkripsikan dan didekripsikan bit per bit. 2. Cipher blok (block ciphers) Algoritma kriptografi beroperasi pada plainteks/cipherteks dalam bentuk blok bit, yang dalam hal ini rangkaian bit dibagi menjadi blok-blok bit yang panjangnya sudah ditentukan sebelumnya. Untuk menambah kehandalan model algoritma sandi ini, dikembangkan pula beberapa tipe proses enkripsi, yaitu : 1. ECB, Electronic Code Book 2. CBC, Cipher Block Chaining 3. OFB, Output Feed Back
4. CFB, Cipher Feed Back
7
2.4
Algoritma Sandi Asimetris Kriptografi public key sering disebut dengan kriptografi asimetri. Berbeda
dengan kriptografi kunci simetri, kunci yang digunakan pada proses enkripsi dan proses dekripsi pada kriptografi public key ini berbeda satu sama lain. Jadi dalam kriptografi public key, suatu key generator akan menghasilkan dua kunci berbeda dimana satu kunci digunakan untuk melakukan proses enkripsi dan kunci yang lain digunakan untuk melakukan proses dekripsi. Kunci yang digunakan untuk melakukan enkripsi akan dipublikasikan kepada umum untuk dipergunakan secara bebas. Oleh sebab itu, kunci yang digunakan untuk melakukan enkripsi disebut juga sebagai public key. Sedangkan kunci yang digunakan untuk melakukan dekripsi akan disimpan oleh pembuat kunci dan tidak akan dipublikasikan kepada umum. Kunci untuk melakukan dekripsi ini disebut private key.
2.5
Algoritma AES National Institute of Standards and Technology (NIST), sebagai agensi
Departemen Perdagangan AS mengusulkan kepada Pemerintah Federal AS untuk sebuah standar kriptografi yang baru. Adanya kenyataan bahwa algoritma kriptografi DES tidak lagi aman, maka NIST mulai memikirkan sebuah algoritma kriptografi lain sebagai pengganti DES. Untuk itu diadakan kontes Internasional dimana pesertanya adalah ahli kriptografi dari seluruh dunia. Adapun diadakan secara terbuka dimaksudkan agar algoritma yang baru bukan dari produk badan pemerintah yang dapat dengan sengaja menanamkan backdoor pada algoritmanya. Backdoor ini dicurigai membuat plaintext dapat langsung dibaca tanpa harus menggunakan kunci. Pada tahun 1997 kontes pemilihan suatu standar algoritma kriptografi baru pengganti DES dimulai dan diikuti oleh 21 peserta dari seluruh dunia. Algoritma yang akan dipilih selain harus memenuhi beberapa kriteria, yaitu 1. Faktor keamanan, yang berarti algoritma tersebut harus tidak mudah dipecahkan oleh cracker, bersifat acak atau tidak mudah ditebak outputnya, dan tidak berdasar algoritma matematika tertentu.
8
2. Faktor biaya, dimana diperhitungkan kecepatan processing baik pada hardware dan software, dan besarnya memori yang dipakai. 3. Faktor karakteristik implementasi, yakni meliputi kesederhanaan algoritma
yang
digunakan,
kemudahan
dan
keamanan
dalam
implementasi di hardware dan software. AES spesifik sebagai sejumlah repetisi dari transformation round yang mengkonversi input plainteks menjadi cipherteks. Tiap round terdiri dari sejumlah tahapan proses termasuk satu yang bergantung pada kunci enkripsi. Untuk melakukan dekripsi, urutan round dibalik sehingga cipherteks dapat kembali menjadi plainteks. AES merupakan algoritma yang cepat baik di sisi perangkat lunak maupun perangkat keras dan relatif mudah untuk diimplementasikan serta hanya memerlukan sedikit memori. Tidak seperti predesesornya DES, AES tidak menggunakan Feistel network. AES memiliki ukuran blok yang tetap yaitu 128, 192 dan 256. Tidak seperti DES, AES bekerja pada byte. Berikut adalah perbandingan jumlah proses yang harus dilalui untuk masing-masing masukan.
Tabel 2.1 Jumlah proses berdasarkan bit blok dan kunci Panjang Kunci (Nk) Dalam words 4
Ukuran Blok Data (Nb) Dalam words
Jumlah Proses (Nr)
4
10
6
4
12
8
4
14
Blok-blok data masukan dan kunci dioperasikan dalam bentuk array. Setiap anggota array sebelum menghasilkan keluaran ciphertext dinamakan dengan state. Setiap state akan mengalami proses yang secara garis besar terdiri dari empat tahap yaitu, AddRoundKey, SubBytes, ShiftRows, dan MixColumns. Kecuali
9
tahap MixColumns, ketiga tahap lainnya akan diulang pada setiap proses sedangkan tahap MixColumns tidak akan dilakukan pada tahap terakhir. Proses dekripsi adalah kebalikkan dari dekripsi. Karena terjadi beberapa tahap dalam proses enkripsi, maka diperlukan subkey-subkey yang akan dipakai pada tiap tahap. Pengembangan jumlah kunci yang akan dipakai diperlukan karena kebutuhan subkey-subkey yang akan dipakai dapat mencapai ribuan bit, sedangkan kunci yang disediakan secara default hanya 128-256 bit. Jumlah total kunci yang diperlukan sebagai subkey adalah sebanyak Nb(Nr+1), dimana Nb adalah besarnya blok data dalam satuan word. Sedangkan Nr adalah jumlah tahapan yang harus dilalui dalam satuan word. Sebagai contoh, bilamana digunakan 128 bit (4 word) blok data dan 128 bit (4 word) kunci maka akan dilakukan 10 kali proses (lihat Tabel 2.1). Dengan demikian dari rumus didapatkan 4(10+1)=44 word=1408 bit kunci. Untuk melakukan pengembangan jumlah kunci yang akan dipakai dari kunci utama maka dilakukan key schedule.
2.5.1 Key Schedule Proses key schedule diperlukan untuk mendapatkan subkey-subkey dari kunci utama agar cukup untuk melakukan enkripsi dan dekripsi. Proses ini terdiri dari beberapa operasi, yaitu: 1. Operasi Rotate, yaitu operasi perputaran 8 bit pada 32 bit dari kunci. 2. Operasi SubBytes, pada operasi ini 8 bit dari subkey disubstitusikan dengan nilai dari S-Box. 3. Operasi Rcon, operasi ini dapat diterjemahkan sebagai operasi pangkat 2 nilai tertentu dari user. Operasi ini menggunakan nilai-nilai dalam Galois field. Nilai-nilai dari Rcon kemudian akan di-XOR dengan hasil operasi SubBytes. 4. Operasi XOR dengan w[i-Nk] yaitu word yang berada pada Nk sebelumnya.
10
2.5.2 Add Round Key Pada proses ini subkey digabungkan dengan state. Proses penggabungan ini menggunakan operasi XOR untuk setiap byte dari subkey dengan byte yang bersangkutan dari state. Untuk setiap tahap, subkey dibangkitkan dari kunci utama dengan menggunakan proses key schedule. Setiap subkey berukuran sama dengan state yang bersangkutan.
Gambar 2.2 Proses AddRoundKey
2.5.3 Sub Bytes Proses SubBytes adalah operasi yang akan melakukan substitusi tidak linear dengan cara mengganti setiap byte state dengan byte pada sebuah tabel yang dinamakan tabel SBox. Sebuah tabel S-Box terdiri dari 16x16 baris dan kolom dengan masing-masing berukuran 1 byte. Tabel S-Box diperlihatkan pada Tabel 2.2 sedangkan proses SubBytes diperlihatkan pada Gambar 2.2.
Tabel 2.2 Tabel S-Box 00 10 20 30 40 50 60
0 63 Ca B7 04 09 53 D0
1 7c 82 Fd C7 83 D1 Ef
2 77 C9 93 23 2c 00 Aa
3 7b 7d 26 C3 1a Ed Fb
4 F2 Fa 36 18 1b 20 43
5 6b 59 3f 96 6e Fc 4d
6 6f 47 F7 05 8a B1 33
7 C5 F0 Cc 9a A0 5b 85
8 30 Ad 34 07 52 6a 45
9 01 D4 A5 12 3b Cb F9
a 67 A2 E5 80 D6 Be 02
b 2b Af F1 E2 B3 39 7f
c fe 9c 71 Eb 29 4a 50
d D7 A4 D8 27 E3 4c 3c
e ab 72 31 B2 2f 58 9f
f 76 C0 15 75 84 Cf A8
11
70 80 90 a0 b0 c0 d0 e0 f0
51 Cd 60 E0 E7 Ba 70 E1 8c
A3 0c 81 32 C8 78 3e F8 A1
40 13 4f 3a 37 25 B5 98 89
8f Ec Dc 0a 6d 2e 66 11 0d
92 5f 22 49 8d 1c 48 69 Bf
9d 97 2a 06 D5 A6 03 D9 E6
38 44 90 24 4e B4 F6 Be 42
F5 17 88 5c A9 C5 0e 94 68
Bc C4 46 C2 6c E8 61 9b 41
B6 A7 Ee D3 56 Dd 35 1e 99
Da 7e 8b Ac F4 74 57 87 2d
21 3d 14 62 Ea 1f B9 E9 0f
10 64 De 91 65 4b 86 Ce B0
Ff 5d 5e 95 7a Bd C1 55 54
F8 19 0b E4 Ae 8b 1d 28 Bb
Gambar 2.3 Sub Bytes
2.5.4 Shift Rows Proses Shift Rows akan beroperasi pada tiap baris dari tabel state. Proses ini akan bekerja dengan cara memutar byte-byte pada 3 baris terakhir (baris 1, 2, dan 3) dengan jumlah perputaran yang berbeda-beda. Baris 1 akan diputar sebanyak 1 kali, baris 2 akan diputar sebanyak 2 kali, dan baris 3 akan diputar sebanyak 3 kali. Sedangkan baris 0 tidak akan diputar. Proses ShiftRows diperlihatkan pada Gambar dibawah ini.
Gambar 2.4 Proses ShiftRows
D2 73 Db 79 08 8a 9a Df 16
12
2.5.5 Mix Columns Proses MixColumns akan beroperasi pada tiap kolom dari tabel state. Operasi ini menggabungkan 4 bytes dari setiap kolom tabel state dan menggunakan transformasi linier Operasi Mix Columns memperlakukan setiap kolom sebagai polinomial 4 suku dalam Galois field dan kemudian dikalikan dengan c(x) modulo (x4+1), dimana c(x)=3x3+x2+x+2. Kebalikkan dari polinomial ini adalah c(x)=11x3+13x2+9x+14. Operasi MixColumns juga dapat dipandang sebagai perkalian matrix. Langkah MixColumns dapat ditunjukkan dengan mengalikan 4 bilangan di dalam Galois field oleh matrix berikut ini.
Gambar 2.5 MixColumns Atau bila dijabarkan : r0=2a0+a3+a2+3a1 r1=2a1+a0+a3+3a2 r2=2a2+a1+a0+3a3 a3=2a3+a2+a1+3a0 Operasi penjumlahan di atas dilakukan dengan operasi XOR, sedangkan operasi perkalian dilakukan dalam Galois field.
Gambar 2.6 Proses mix columns
13
2.6 CSS Cascading Style Sheets (CSS) adalah sebuah cara untuk memisahkan isi dengan layout dalam halaman-halaman web yang dibuat. CSS memperkenalkan template yang berupa style untuk memmbuat dan mempermudah penulisan dari halaman-halaman yang dirancang. Hal ini sangat penting karena halaman yang menggunakan CSS dapat dibaca secara bolak balik dan isinya dapat dilihat oleh pengunjung dari manapun. CSS mampu menciptakan halaman yang tampak sama pada resolusi layar dari pengunjung yang berbeda tanpa memerlukan suatu tabel. Dengan CSS akan lebih mudah melakukan setting tampilan keseluruhan web hanya dengan menggantikan atribut-atribut atau perintah dalam style CSS dengan atribut yang diinginkan tanpa harus mengubah satu per satu atribut tiap elemen yang ada dalam situs yang dibuat. Saat ini CSS merupakan style yang banyak digunakan karena berbagai kemudahan dan kelengkapan atribut yang dimilikinya. Penggunaan CSS dalam web akan lebih efisien karena CSS dapat digunakan untuk penggunaan secara berulang pada tag-tag tertentu sehingga tidak usah mengetikkan ulang seluruh perintah pemformatan seperti halnya HTML klasik. CSS akan lebih mudah dipelajari jika mengetahui struktur pembuatan dokumen web dengan bahasa HTML. Cara pemanggilan CSS : 1. Didalam <style type="text/CSS"> … /* CSS code */ 2. Didalam < … > Contoh : Warna tulisan merah 3. Terdapat di dalam 1 file tertentu. Pemanggilannya :
14
2.7 RMS (Root Mean Square) Kemiripan antara dua buah (blok) file CSS diukur dengan metrik jarak. Metrik jarak yang banyak digunakan dalam praktek adalah metrik rms (root meas square). Adapun rumus dari rms adalah
RMS
1 n
n
(z i 1
'
i
zi ) 2
Semakin besar nilai rms dari dua buah file CSS, maka semakin besar perbedaan kemiripan dari dua buah file CSS tersebut. Rentang nilai rms adalah dari 0-255. (Bambang Ristanto, 2006) Keterangan : n : panjang byte data Z'i : nilai ciperteks Zi : nilai plainteks