BAB II TEORI PENUNJANG 2.1 Sistem Tiket Online Seiring dengan berkembangnya dunia internet, baik dari sisi infrastruktur maupun layanan yang ditawarkan, transaksi jual beli kini dapat dilakukan secara maya lewat jaringan internet. Dari sudut pandang konsumen, berbelanja di web memudahkan mereka untuk mencari dan membandingkan berbagai macam barang dan jasa yang ditawarkan oleh berbagai macam toko online. Salah satunya adalah pembelian tiket event secara online. Mengingat terdapat pembuatan sistem tiket online pada penelitian ini maka penting untuk diketahui pengetahuan mengenai metode transaksi tiket online yang populer di Indonesia. Gambar 2.1 adalah contoh prosedur transaksi sistem tiket online. Gambar 2.1 Metode transaksi sistem tiket online “raja karcis” [11]. Pada Gambar 2.1 menunjukkan bahwa pembeli dapat memilih metode transaksi yang diinginkan dengan berbagai pilihan yang tersedia. Setelah memilih salah satu metode transaksi maka pembeli kemudian diarahkan ke halaman web bank penyedia layanan transaksi tersebut seperti yang ditunjukkan Gambar 2.2 . Gambar 2.2 Metode transaksi tiket online “BRI E-Pay” [11]. 5 6 Berdasarkan referensi pada Gambar 2.1 dan 2.2 maka secara keseluruhan sistem tiket online yang “raja karcis” dapat disimpulkan oleh Gambar 2.3. Gambar 2.3 Sistem tiket online “raja karcis” [11]. Pada Gambar 2.3 menunjukkan bahwa tidak ada hubungan antara server bank dan server tiket online. Database kedua pihak terpisah dan mempersulit pihak calon pembeli yang harus melakukan log in dan registrasi di masing-masing server yaitu server tiket online dan salah satu server bank [11]. Dengan sistem tersebut maka sebenarnya calon pembeli hanya melakukan transaksi pada umumnya dengan fasilitas e-banking setelah diarahkan oleh server tiket online ke server bank seusai melakukan reservasi tiket. Kemudian pihak server tiket online memeriksa berita transfer di rekening perusahaan untuk mengesahkan transaksi dengan membandingkannya terhadap data reservasi di database server tiket online [11]. Proses pengesahan transaksi akan menjadi aman apabila dilakukan secara manual oleh admin server tiket online dengan memeriksa satu per satu berita transaksi, namun itu tidak effisien. Jika dilakukan sepenuhnya oleh komputer maka akan rawan hacking sebab tidak ada kerjasama pengolahan akun antara kedua pihak server. Karena itu maka hanya dengan meretas database tiket online maka tiket cumacuma dapat diperoleh. Hacker dapat meretas database yaitu memasukkan berita transfer palsu ke server tiket online untuk lolos proses pengesahan transaksi tanpa melakukan transaksi. Modus hacking yang lebih mudah adalah dengan meretas proses pada saat calon pembeli memilih salah satu metode transaksi yaitu saat calon pembeli diarahkan ke halaman web bank penyedia 7 layanan transaksi seperti yang ditunjukkan Gambar 2.2. Hacker dapat meretas server tiket online untuk mengarahkan calon pembeli ke server bank fiktif milik hacker agar dapat memperoleh informasi pribadi nasabah atau calon pembeli seperti nomor PIN, nomor rekening, password akun e-banking dan lain-lain. Dengan data tersebut maka hacker dapat meretas rekening tabungan calon pembeli. Hal tersebut dapat terjadi karena pihak server tiket online dan server bank tidak mempunyai kerjasama keamanan dalam mengelola database mereka. [8] Skenario peretasan tersebut disebut MITMA (Man In The Middle Attack) seperti ditunjukkan Gambar 2.4. Gambar 2.4 Skenario peretasan metode MITMA [12]. MITMA adalah aksi penipuan yang memanfaatkan kelemahan proses switch dari satu server ke server lain. Skenario pertama adalah menempatkan komputer hacker ditengah dua server yang sedang berhubungan sehingga paket data harus melalui komputer hacker agar paket data tersebut bisa dilihat atau disadap oleh hacker. Skenario lain adalah praktek hacking ini dapat berupa mengarahkan komputer korban ke server palsu yaitu komputer hacker sehingga korban memasukkan data rahasianya dengan suka rela karena tidak mengetahui server yang dia kunjungi bukan server sesungguhnya [8]. 2.2 Single Sign On Single Sign On (SSO) adalah sebuah mekanisme yang membuat user hanya perlu mengingat satu username dan password yang autentik untuk membuka beberapa layanan sekaligus. SSO perlu terautentikasi 8 satu kali, kemudian autentikasi akan terjadi otomatis ketika user membuka website lain melalui sebuah session [13]. Gambar 2.5 Skema single sign on [13]. 9 Terdapat 3 komponen SSO yaitu [13] : 1. 2. 3. User Management adalah sebuah sistem database beserta aplikasinya yang berfungsi untuk menyimpan, mengatur dan mendefinisikan tingkat kewenangan hak akses seorang user terhadap sebuah atau beberapa aplikasi. Server dapat berupa MySQL atau Lightweight Directory Access Protocol (LDAP). LDAP yaitu sebuah standar yang digunakan komputer dan perlengkapan jaringan untuk mengakses informasi umum melalui jaringan. Kemampuan untuk menyediakan akses data dalam jaringan tidak membuat LDAP berdiri sendiri terhadap protokol-protokol lain untuk mengakses data seperti Hypertext Transfer Protocol(HTTP). Database User berisi data user lengkap di semua akun yang terintegrasi SSO. Pada Gambar 2.5 menunjukkan sistem SSO suatu aplikasi yang saling terhubung dengan aplikasi-aplikasi. Cara kerja SSO server secara umum yaitu [13] : 1. 2. 3. Memproses login dari user, membuat session dan atau coockies, kemudian mengarahkan ke alamat asal web yang melakukan login disebut SSO server ON. Memproses logout yaitu ketika ada request logout dia akan menghapus session dan cookies. Kondisi ini disebut SSO server OFF. Melakukan sinkronasi kondisi ON dan OFF dari aplikasi yang mengakses server SSO. Jika kondisi ON, maka akan mengirimkan signal user sudah login, dan aplikasi yang mengaksesnya akan menindaklanjuti dengan proses seperti create session aplikasi dan mengijinkan user masuk ke aplikasi. Jika kondisi OFF maka akan mengirimkan signal user sudah logout sehingga aplikasi yang mengaksesnya akan menindaklanjuti untuk logout aplikasi seperti hapus session aplikasi dan redirect ke halaman login. 2.3 Kriptografi Menurut Bruce Schneider dalam Applied Cryptography (John Wiley & Sons, 1996), kriptografi adalah seni dan ilmu untuk menjaga agar pesan rahasia tetap aman. Kriptografi merupakan salah satu cabang ilmu algoritma matematika. Algoritma atau hitungan kriptografi dapat 10 disebut juga chipper yaitu hitungan matematik yang digunakan untuk membuat suatu enkripsi maupun dekripsinya. Sebuah data yang tidak dienkripsi disebut plaintext. Perlu diketahui bahwa hitungan enkripsi ini tidak sama dan diusahakan untuk tidak sama. Hal ini bertujuan untuk mencegah data tidak bisa dibaca oleh orang yang bukan seharusnya [3]. Ada beberapa prinsip mendasar dari ilmu kriptografi ini yang juga merupakan aspek keamanan informasi yaitu [9] : 1. Kerahasiaan (Confidentiality) Layanan yang menjaga isi pesan dari siapapun yang tidak berhak membacanya. 2. Integritas data (Integrity) Layanan yang menjamin bahwa pesan masih asli/utuh atau belum pernah dimanipulasi selama pengiriman. 3. Otentikasi (Authentication) Layanan yang mengidentifikasi kebenaran pihak-pihak yang berkomunikasi (user authentication) dan mengidentifikasi kebenaran sumber pesan (data origin authentication). 4. Nirpenyangkalan (non-repudiation) Layanan yang mencegah entitas yang berkomunikasi melakukan penyangkalan, yaitu pengirim pesan menyangkal melakukan pengiriman atau penerima pesan menyangkal telah menerima pesan terhadap pengiriman/terciptanya suatu informasi oleh salah satu pihak. 2.3.1 Kriptografi Simetrik Kriptografi simetrik atau dikenal pula sebagai kriptografi kunci rahasia, merupakan kriptografi yang menggunakan kunci yang sama baik untuk proses enkripsi maupun dekripsi. Secara metematis dapat dinyatakan bahwa [10]: E=d=k Ek(m) = c D(k) = m Dimana, pada persamaan E = d = k : kunci enkripsi dan kunci dekripsi. Sementara untuk persamaan Ek(m) adalah proses pengubahan plaintext menjadi ciphertextyang mana hasilnya yaitu c (pesan terenkrip). Pada persamaan Dk(c) adalah proses mengubah ciphertext menjadi plaintext. Dalam algoritma simetri, kunci yang digunakan dalam proses enkripsi dan dekripsi adalah sama atau pada prinsipnya identik [10]. 11 Kunci ini pun bisa diturunkan dari kunci lainnya. Oleh karena itu sistem ini sering disebut secret-key ciphersystem. Secara sederhana proses tersebut diterangkan sebagai berikut [10]: 1. A mengirimkan pesan kepada B. 2. A menyandikan pesannya dengan menggunakan kunci pribadi yang telah disepakati antara A dan B. 3. Bila B ingin membaca pesan dari A, ia harus menggunakan kunci pribadi yang sama dengan A untuk mendekripsikan pesan yang tersandikan itu. Agar komunikasi tetap aman, kunci yang menggunakan teknik enkripsi ini harus betul-betul dirahasiakan. Yang termasuk algoritma simetri adalah OTP, DES, RC4, RC5, RC6. Kriptografi simetrik sangat menekankan pada kerahasiaan kunci yang digunakan untuk proses enkripsi dan dekripsi. Oleh karena itulah kriptografi ini dinamakan pula sebagai kriptografi kunci rahasia. Gambaran proses sederhana enkripsi dengan algoritma simetri seperti pada Gambar 2.6. Gambar 2.6 Blok diagram kriptografi simetrik [10]. Pada Gambar 2.6 dapat dijelaskan mengenai blok diagram proses kriptografi simetri, dimana prosesnya dimulai dari penulisan pesan yang ingin dilakukan enkripsi oleh user A, dalam hal ini pesan tersebut dinamakan plaintext dan pesan tersebut dikirimkan ke user B. Untuk menyandikan pesan (enkripsi) harus menggunakan kunci pribadi yang telah disepakati antara user A dan user B. Kemudian plaintext tersebut dienkripsi menggunakan kunci/key sehingga menghasilkan ciphertext(pesan yang tidak bisa terbaca). Lalu bila user B ingin membaca pesan dari user A ia harus menggunakan kunci pribadi yang sama dengan user A untuk mendekripsikan pesan yang tersandikan tadi (ciphertext). 2.3.2 Kriptografi Asimetrik Kriptografi asimetrik (asymetric cryptography) menggunakan kunci enkripsi dan kunci dekripsi yang berbeda. Kunci enkripsi dapat 12 disebarkan kepada umum dan dinamakan sebagai kunci publik (public key) sedangkan kunci dekripsi disimpan untuk digunakan sendiri dan dinamakan sebagai kunci pribadi (private key). Oleh karena itu, kriptografi ini dikenal dengan nama kriptografi kunci publik dan kunci pribadi. Kunci publik didistribusikan kepada umum, sedangkan kunci pribadi disimpan untuk diri sendiri. Dalam algoritma asimetri, kunci yang digunakan terdapatdua buah. Satu kunci yang dapat dipublikasikan disebut kunci publik (public key), satu lagi kunci yang harus dirahasiakan disebut kunci pribadi (private key). Secara sederhana proses tersebut diterangkan sebagai berikut [10]: 1. A mengirimkan pesan kepada B. 2. A menyandikan pesannya menggunakan kunci publik B. 3. Bila B ingin membaca pesan dari A menggunakan kunci pribadinya untuk mendekripsikan pesan yang tersandikan itu. Algoritma yang ang termasuk dalam jenis kriptografi asimetri adalah ECC, LUC, RSA, El GAMAL, dan DH. Secara sederhana proses enkripsi algoritma asimetri seperti Gambar 2.7 [10]. Gambar 2.7 Blok diagram kriptografi asimetri [10]. Dari Gambar 2.7 dapat dilihat bahwa blok diagram proses kriptografi asimetri, dimana prosesnya dimulai daripenulisan pesan yang ingin dilakukan enkripsi oleh user A, dalam hal ini pesan tersebut dinamakan plaintext. Selanjutnya plaintext tadi akan dienkripsi menggunakan public key yang sudah dimiliki oleh user A ketika proses pembangkitan kunci. Hasil dari proses tersebut akan berupa ciphertext. Kemudian ciphertext tersebut akan didekripsi menggunakan private key di sisi user B agar dapat dibaca pesan awal yang dikirimkan dari user A. 2.4 Dasar Matematika Kriptografi 2.4.1 Bilangan Prima Bilangan prima adalah bilangan integeryang lebih besar dari satu yang memiliki faktor bilangan satu dan bilangan itusendiri. Bilangan bulat positif p(p > 1)disebut bilangan prima jika pembaginya 13 hanya 1 dan p. Sebagai contoh 101 adalah bilangan prima karena bilangan 101 hanya habis dibagi 1 dan 101. Seluruh bilangan prima adalah ganjil, kecuali angka 2 yang merupakan bilangan genap [3]. Dalam proses pembangkitan bilangan prima dihadapkan pada permasalahan sulitnya pemfaktoran bilangan prima besar. Hal ini dapat diatasi dengan melakukan pengujian terhadap suatu bilangan apakah bilangan tersebut merupakan bilangan prima atau bukan, Artinya dengan membangkitkan bilangan acak dan kemudian di uji merupakan bilangan prima atau bukan. Terdapat beberapa metode uji bilangan prima, pengujian ini untuk menentukan apakah suatu bilangan termasuk bilangan prima atau bukan dengan tingkat keyakinan tertentu [3]. Salah satu metode uji bilangan prima yang paling banyak digunakan adalah dengan metode Rabin-miller. Algoritma ini menerima masukan berupa bilangan ganjil (n) yang lebih besar sama dengan 3 dan sebuah bilangan bulat (t) yang lebih kecil dari n. Bilangan t adalah parameter keyakinan, yaitu berapa kali pengujian dilakukan terhadap n untuk memastikan bahwa n adalah bilangan prima [3]. 2.4.2 Aritmatika Modulo Aritmatika modulo merupakan operasi matematika yang banyak diimplementasikan pada metode kriptografi. Operasi modulo dua ini melibatkan bilangan 0 dan 1 saja sehingga identik dengan bit pada komputer [3]. Secara mendasar, a ≡ b (mod n) jika a = b + kn untuk beberapa bilangan integer k. Jika a merupakan non-negatif dan b di antara 0 sampai n, dimana b merupakan sisa hasil bagi dari a ketika dibagi dengan n. Dengan kata lain, b adalah hasil dari a modulo n. atau a juga disebut kongruen dengan b modulo n [3]. Operasi a mod n menghasilkan sisa bagi dari a, dimana sisa bagi merupakan beberapa bilangan integer dari 0 sampai n – 1. Operasi ini merupakan reduksi modular. Sebagai contoh, 5 mod 3 = 2 [3]. Kriptografi banyak menggunakan perhitungan mod n, karena perhitungan logaritma diskrit dan akar kuadrat mod n merupakan persoalan sulit. Aritmatika modularlebih mudah dikerjakan pada komputer, karena operasi ini membatasi hasil yang didapatkan sehingga hasil operasi dari k – bit modulo n tidak akan lebih dari n [3]. Metode yang dapat digunakan untuk menghitung am mod n adalah algoritma fast exponentiation. 14 Operasi am mod n dapat dihitung dengan jumlah perkalian paling banyak 2.(2 log (m+1)) dengan algoritma sebagai berikut [3]: 1. Mengkonversikan m ke biner : bk bk-1… b1 b0 2. {Initialisasi} I ∶ = k; Product ∶ = a 3. While I >= 0Do a. If bI = 0 Then Product ∶= Product ^2 Else Product ∶= Product ∗ a; b. Product ∶= Product mod n; I ∶= I – 1; Beberapa contoh operasi dengan operasi modulo [3]: (i) 23 mod 5 = 3 (23 = 5 . 4 + 13) (ii) 27 mod 3 = 0 (27 = 3 . 9 + 0) (iii) 6 mod 8 = 6 (6 = 8 . 0 + 6) (iv) 0 mod 12 = 0 (0 = 12 . 0 + 0) 2.4.3 Invers Modulo Inverse merupakan operasi kebalikan. Inverse perkalian dari 4 adalah ¼ karena 4 * ¼ = 1. Dalam modulo, persoalan ini agak rumit. Misalkan [3]: 4x = 7k + 1 Dengan x dan k adalah bilangan integer. Persoalannya adalah untuk mencari x [3]: 1 = (a ∗ x) mod n Atau dapat ditulis seperti berikut : a-1 ≡ x (mod n) Persoalan inverse modular agak sulit untuk diselesaikan. Kadang-kadang dapat memiliki penyelesaian, dan kadang-kadang tidak. Sebagai contoh, inverse modular dari 5 modulo 14 adalah 3, sedangkan 2 mod 14 tidak memiliki inverse modulo [3]. Secara umum, a-1≡ x (mod n) memiliki sebuah solusi unik jika a dan n adalah relatif prima. Jika a dan n bukan relatif prima, maka a -1≡ x (mod n) tidak memiliki solusi. Jika n adalah bilangan prima maka setiap bilangan dari 1 sampai (n – 1) adalah relatif prima dengan n dan memiliki tepat satu inverse modulo n dalam range tersebut [3]. 15 Untuk menghitung inverse modulardari a-1≡x (mod n) dapat digunakan algoritma extended Euclidean yang dapat dijabarkan seperti berikut [3]: 1. Membentuk Array A[3x2] dimana A[1,1] = n dan A[1,2] = a 2. Mengisikan A[2,1] .. A[3,2] dengan matriks Identitas. 3. Menghitung bilangan bulat dengan kondisi m ∗ A[1,2] ≤ A[1,1]; usahakan m maksimum. 4. Menghitung nX = A[1,1] − m ∗ A[1,2]. 5. Mengubah nilai A[1,1] = A[1,2] dan A[1,2] = nX. 6. Melakukan langkah 4 dan 5 untuk baris kedua dan ketiga dari array A. 7. Mengulang langkah 3 sampai 5 hingga elemen terakhirdari baris 1 = 0. 8. Jika A[3,1] ≥0 maka x = A[3,1] sebaliknya x = A[3,1] + n. 2.4.4 Square Modulo Square modulo atau modulo persegi adalah proses perhitungan modulo yang menghasilkan 4 solusi yang berbeda. Contoh kasus square modulo ini misalkan untuk memecahkan solusi seperti berikut [15]: x2 ≡ a (mod n) n = p*q (p dan q adalah bilangan prima) Solusi secara teoritis dari square modulo dengan persyaratan bilangan prima tersebut adalah dengan digabungkan untuk membuat solusi modulo n yang disebut teorema chinese remainder agar dapat diimplementasikan dengan lebih efisien. Sebagai contoh [15]: x2 ≡ 4 (mod 15). Dengan 15 = 3 * 5 x ≡ 4 (mod 3) memiliki dua solusi, 1 dan 2; x2 ≡ 4 (mod 5) memiliki dua solusi, 2 dan 3. 2 Maka terdapat empat solusi modulo 15, yaitu 2, 7, 8, dan 13. 2.4.5 Relatif Prima Dua buah bilangan bulat a dan b dikatakan relatif prima jika gcd(a, b) = 1 atau istilah yang lebih umum adalah FPB (Faktor Persekutuan Terbesar) bernilai 1. Jika a dan b relatif prima, maka 16 terdapat bilangan bulat m dan n sedemikian sehingga [3] : ma + na = 1. Contoh 1: Bilangan 20 dan bilangan 3 relatif prima sebab gcd(20,3) = 1. 20 = 6.3 + 2 3 = 1.2 + 1 2 = 2.1 + 0 Sisa pembagian terakhir sebelum 0 adalah 1, maka gcd (20,3) = 1.Contoh 2: Bilangan 20 dan bilangan 5 tidak relatif tidak prima sebab, gcd(20,5) = 5jadi ≠1. 20 = 4.5 + 0 Sisa pembagian terakhir sebelum 0 adalah 5, maka gcd(20,5)≠1 2.4.6 Kekongruenan Kekongruenan b adalah suatu teknik untuk mengetahui keterbagian dalam himpunan bilangan bulat. Misalnya 38 mod 5 = 3 dan 13 mod 5 = 3, maka bisa dikatakan 38 ≡ 13(mod 5)(dibaca 38 kongruen dengan 13 dalam modulo 5). Definisi kongruen adalah sebagai berikut [3] : Misalkan a dan b adalah bilangan bulat dan m adalah bilangan > 0, maka a ≡ b (mod m) jika m habis membagi a – b. Jika a tidak kongruen dengan b dalam modulus m, maka ditulis a ≠ b (mod m). Beberapa contoh kekongruenan [3]: (i) 17 ≡ 2 (mod 3)(3 habis membagi 17-2=15) (ii) −7 ≡ 12(mod 11)(11 habis membagi -7-15=-22) (iii) 12 ≠ 2 (mod 7) (7 tidak habis membagi 12-2 = 10) (iv) −7 ≠ 15 (mod 3) (3 tidak habis membagi -7 – 15 = -22) Kekongruenan a ≡ b (mod m) dapat pula dituliskan dalam hubungan a = b + km, yang dalam hal ini k adalah bilangan bulat. Berdasarkan definisi aritmatika modulo, kita juga dapat menuliskan a mod m = r sebagai : a ≡ r (mod m). 2.5 Advanced Encryption Standard Advanced Encryption Standard (AES) merupakan algoritma kriptografi simetrik yang dapat digunakan untuk mengamankan data atau informasi [4]. 17 Kriteria pemilihan AES didasarkan pada 3 kriteria utama yaitu keamanan, harga, dan karakteristik algoritma beserta implementasinya. Keamanan merupakan faktor terpenting dalam evaluasi (minimal setingkat triple DES), yang meliputi ketahanan terhadap semua analisis sandi yang telah diketahui dan diharapkan dapat menghadapi analisis sandi yang belum diketahui. Di samping itu, AES juga harus dapat digunakan secara bebas tanpa harus membayar loyalti, dan juga murah untuk diimplementasikan pada smart card yang memiliki ukuran memori kecil. AES juga harus efisien dan cepat (minimal setingkat triple DES) dijalankan dalam berbagai mesin 8 bit hingga 64 bit, dan berbagai perangkat lunak. DES menggunakan stuktur Feistel yang memiliki kelebihan bahwa struktur enkripsi dan dekripsinya sama, meskipun menggunakan fungsi F yang tidak invertibel. Kelemahan Feistel yang utama adalah bahwa pada setiap ronde,hanya setengah data yang diolah. Sedangkan AES menggunakan struktur SPN (Substitution Permutation Network) yang memiliki derajat paralelisme yang lebih besar, sehingga diharapkan lebih cepat dari pada Feistel [4]. Kelemahan SPN pada umumnya (termasuk pada Rijndael) adalah berbedanya struktur enkripsi dan dekripsi sehingga diperlukan dua algoritma yang berbeda untuk enkripsi dan dekripsi. Tingkat keamanan enkripsi dan dekripsinya menjadi berbeda. Algoritma AES menggunakan kunci kriptografi 128, 192, dan 256 bits untuk mengenkrip dan dekrip data pada blok 128 bits. Pemilihan ukuran blok data dan kunci akan menentukan jumlah proses yang harus dilalui untuk proses enkripsi dan dekripsi. Berikut adalah perbandingan jumlah proses yang harus dilalui untuk masing-masing masukan. Algoritma AES dapat dikategorikan sebagai iterated block cipher dengan panjang blok variabel dan panjang kunci yang dapat dipilih secara independen sebagai 128, 192, atau 256 bit. Dalam desimal ada kira-kira 3.4 x 1038 kemungkinan kunci 128 bit, 6.2 x 1057 kemungkinan kunci 192 bit, dan 1.1 x 1077 kemungkinan kunci 256 bit. AES menspesifikasikan tiga ukuran kunci, 128, 192, dan 256 bit berukuran blok tetap 128 bit. Secara garis besar algoritma AES-128 bit yang beroperasi pada blok 128-bit dengan kunci 128-bit dapat dijabarkan sebagai berikut [4]: 1. 2. Add Round Key: melakukan XOR antara state awal (plainteks) dengan cipher key. Tahap ini disebut juga initial round. Putaran sebanyak 9 kali. Proses yang dilakukan pada tiap putaran adalah : a. SubBytes : substitusi byte dengan menggunakan tabel substitusi (S-box). 18 b. ShiftRows : pergeseran baris-baris array state secara wrapping. c. MixColumns : mengacak data di masing-masing kolom array state. d. AddRoundKey : melakukan XOR antara state sekarang dengan round key. 3. Final round: proses pada putaran terakhir: a. SubBytes. b. ShiftRows. c. AddRoundKey. 2.5.1 Add Round Key Add Round Key pada dasarnya adalah mengkombinasikan chiper teksyang sudah ada dengan chiper keydengan hubungan XOR [4]. Gambar 2.8 Transformasi AddRoundKey [4]. 2.5.2 SubBytes Prinsip dari Sub Bytes adalah menukar isi matriks/tabel yang ada dengan matriks/tabel lain yang disebut dengan Rijndael S-Box. Di bawah ini adalah ilustrasi Sub Bytes dan Rijndael S-Box [4]. Gambar 2.9 Transformasi SubBytes [4]. 19 Untuk melakukan transformasi SubBytes, dilakukan berdasarkan urutan tabel S-Box seperti yang ditunjukkan pada Tabel 2.1. Tabel 2.1 Tabel S-Box [4]. 2.5.3 Shift Rows Shift Rows adalah sebuah proses yang melakukan shift atau pergeseran pada setiap elemen blok/tabel yang dilakukan per barisnya. Yaitu baris pertama tidak dilakukan pergeseran, baris kedua dilakukan pergeseran 1 byte, baris ketiga dilakukan pergeseran 2 byte, dan baris keempat dilakukan pergeseran 3 byte. Pergeseran tersebut terlihat dalam sebuah blok adalah sebuah pergeseran tiap elemen ke kiri tergantung berapa byte tergesernya, tiap pergeseran1 byte berarti bergeser ke kiri sebanyak satu kali. Ilustrasi dariTahap ini diperlihatkan oleh gambar di bawah ini [4]. Gambar 2.10 Skema Transformasi ShiftRows [4]. Gambar 2.11 Contoh Transformasi ShiftRows [4]. 20 2.5.4 MixColumns Proses yang terjadi dalam Mix Column adalah mengalikan tiap elemen dari blok chiper dengan matriks. Pengalian dilakukan seperti perkalian matriks biasa yaitu menggunakan dot product lalu perkalian keduanya dimasukkan ke dalam sebuah blok chiper baru. Ilustrasi dalam gambar 12 akan menjelaskan mengenai bagaimana perkalian ini dilakukan [4]. Gambar 2.12 Transformasi MixColumns [4]. 2.5.5 Enkripsi Enkripsi adalah proses mengubah suatu pesan asli (plaintext) menjadi suatu pesan dalam bahasa sandi (ciphertext) [4]. C = E (M) dimana : M = Pesan asli (Plainttext) E = Proses enkripsi dengan Private Key C = Chipertext (Plainttextyang terenkripsi AES) Plaint text (Pesan Asli) : “Samsul Huda D4 B” Konversi ke Hexadesimal : 53 75 75 44 61 6C 64 34 6D 20 61 20 73 48 20 42 Key (Kunci Private untuk Enkripsi) : “0123456789abcdef” Konversi ke Hexadesimal : 30 34 38 63 31 35 39 64 32 36 61 65 33 37 62 66 Chiper Text : BXh+WA3TB3KQ5KTyY/Kytw== 21 2.5.6 Dekripsi Dekripsi adalah proses mengubah pesan dalam suatu bahasa sandi menjadi pesan asli kembali [4]. M = D(C) dimana : C = Chiper Text (Hasil Plaint Text terenkripsi) D = Proses dekripsi menggunkan key private M = Pesan asli setelah di dekripsi Chipertext : BXh+WA3TB3KQ5KTyY/Kytw== Key (Kunci Private untuk Enkripsi) : “0123456789abcdef” Konversi ke Hexadesimal : 30 34 38 63 31 35 39 64 32 36 61 65 33 37 62 66 Konversi ke Hexadesimal : 53 75 75 44 61 6C 64 34 6D 20 61 20 73 48 20 42 Plainttext (Hasil dekripsi) : “Samsul Huda D4 B” 2.6 Algoritma RSA RSA adalah salah satu contoh kriptografi yang menerapkan konsep public key. Algoritma ini pertama kali dipublikasikan di tahun 1977 oleh Ron Rivest, Adi Shamir, dan Leonard Adleman dari Massachusetts Institute of Technology (MIT). Nama RSA sendiri adalah singkatan dari nama belakang mereka bertiga [6]. Keamanan algoritma RSA dari tergantung pada penanganan masalah faktorisasi bilangan yang sangat besar. Membongkar algoritma RSA akan sangat sulit sebab dibutuhkan metode faktorisasi yang sangat cepat apalagi panjang bit kunci RSA pada umumnya terhitung panjang yaitu 1024-2048 bit. Kunci pada RSA mencakup dua buah kunci, yaitu public key dan private key. Public key digunakan untuk melakukan enkripsi, dan dapat diketahui oleh orang lain. Sedangkan private key tetap dirahasiakan dan digunakan untuk melakukan dekripsi [6]. 22 Pembangkitan kunci dari RSA adalah sebagai berikut [6] : 1. 2. 3. 4. 5. Pilih dua buah bilangan prima sembarang a dan b dan dijaga kerahasiaannya. Hitung n = a * b. Besaran n ini tidak perlu dirahasiakan. Hitung φ(n) = (a-1) * (b-1). Sekali m telah dihitung, a dan b dapat dihapus untuk mencegah diketahuinya oleh pihak lain. Pilih sebuah bilangan bulat untuk kunci publik, sebut namanya e, yang relatif prima terhadap φ(n) (relatif prima berarti GCD(e, φ(n)) = 1 dengan syarat e≠(p-1), e ≠(q-1), dan e < n Hitung kunci dekripsi, d, dengan kekongruenan ed ≡1 (mod φ(n)). Proses enkripsi dapat dilakukan dengan C = P e mod n. Sedangkan proses dekripsi dilakukan dengan P = Cd mod n Blok-blok plainteks dinyatakan dengan p1, p2, p3,... (harus dipenuhi persyaratan bahwa nilai p harus terletak dalam himpunan nilai 0, 1, 2, ..., n-1 untuk menjamin hasil perhitungan tidak berada di luar himpunan) [6]. Pada langkah kelima pembangkitan kunci, kekongruenan ed≡1 (mod m) sama dengan ed mod m = 1. Sehingga dapat pula dikatakan bahwa ed ≡1 (mod m) ekivalen dengan ed =1+ km. Maka d dapat dihitung dengan cara yang sederhana dengan persamaan d=(1+km)/e. Dengan mencoba nilai k = 1, 2, 3, ..., diperoleh nilai d yang bulat. Nilai itu yang akan dipakai sebagai kunci pribadi untuk dekripsi pesan. Dalam implementasi sebenarnya, nilai a dan b diharapkan sangat besar sekali (misalnya 100 digit) agar pekerjaan memfaktorkan n menjadi faktor primanya menjadi sangat sukar, sehingga lebih susah untuk ditembus [6]. Contoh penerapan algoritma RSA misalkan akan membangkitkan kunci publik dan privat dengan p=61 dan q=53. Selanjutnya menghitung n, φ(n), e dan d seperti berikut [6] : n=p.q=3233 φ(n)=(p-1)(q-1)=3120 Memilih kunci publik e= 17, karena 17 relatif prima dengan 3120 artinya FPB antara 17 dan 3120 adalah 1. Selanjutnya menghitung kunci privat. 𝑑= 1 + 𝑘φ(n) 1 + 𝑘. 3120 = 𝑒 17 23 Nilai d harus bilangan bulat maka dengan mencoba-coba nilainilai k=1,2,3,…, diperoleh nilai d yang bulat adalah 2753. Ini adalah kunci privat untuk mendekripsi pesan. Jadi perhitungan kunci ini menghasilkan pasangan kunci privat dan kunci publik berikut : Kunci publik : (e=17, n=3233) Kunci privat : (d=2753, n=3233) Misalkan plainteks yang akan dienkripsikan adalah P = “A” atau dalam sistem desimal (pengkodean ASCII) adalah 65. c = 6517 mod 3233 = 2790 Jadi, cipherteks yang dihasilkan adalah c=2790. Dekripsi dilakukan dengan menggunakan kunci privat. Blok-blok cipherteks didekripsikan sebagai berikut: P = 27902753 mod 3233 = 65 Blok plainteks yang lain dikembalikan dengan cara sama. Akhirnya diperoleh kembali plainteks semula P = 65 atau dalam ASCII P = “A”. 2.6 SHA-256 SHA-256 adalah fungsi hash yang dapat diterapkan di enkripsi suatu pesan, M, yang memiliki panjang bit tertentu yaitu [5] : Algoritma ini berjalan sebagai berikut [5] : 1. Pesan dibagi menjadi 64 buah 32-bit kata. 2. Terdapat delapan working variabel di setiap 32 bit tersebut. 3. Nilai hash adalah dari 8 buah variabel tersebut. 4. Pada perhitungan akhirnya hash dari SHA-256 adalah 256 bit Secara rinci, setiap kata pada pembagian di langkah pertama akan diberi label w0, w1,.... w63.Sedangkan delapan working variables akan diberi label a,b,c,d,e,f,g dan h. Setiap kata dari nilai hash diberi label (𝑖) (𝑖) (𝑖) 𝐻0 , 𝐻1 , … . , 𝐻7 . Terdapat juga variabel pesan sementara yaitu T 1 dan T2. [5] 24 25 Contoh : 2.7 Digital Signature Rabin Algroritma Rabin pengembangan algoritma RSA yang mengandalkan suatu fungsi hash yang memetakan bit – bit dengan panjang sembarang menjadi sepanjang k. Kelebihan digital signature Rabin sama dengan RSA yaitu kesulitan pemfaktoran bilangan besar. [9] 26 Gambar 2.13 Diagram algoritma digital signature Rabin. [7] Algoritma Rabin dapat dibagi menjadi tiga bagian. Ketiga bagian tersebut adalah pembangkitan kunci, penandatanganan, dan verifikasi [9]. a. Pembangkitan kunci - Menentukan nilai k bit. - Pilih bilangan prima p dan q, masing–masing berukuran k/2 bit dan harus memenuhi 4k+3. - Hitung n = pq. Kunci publiknya adalah n dan kunci privatnya adalah (p,q). b. Penandatanganan - Memilih padding secara acak (misalnya U). - Hitung P=H(mU) harus square modulo n, jika tidak maka mencari U baru, m adalah pesan yang hendak ditandatangani. 27 - Cari solusi dari x2 = P (mod n). Solusi [7] : qp' = q (modinverse p) pq' = p (modinverse q) - X yang dihasilkan adalah x1, x2, x3 dan x4. Pilih nilai S dari salah satu xi [7]. - Tanda tangan digitalnya adalah pasangan (U,S). c. Verifikasi - Hitung P = H(mU). - Hitung x2 = P (mod n). - Jika salah satu nilai dari x sama dengan S maka pesan tidak mengalamai perubahan atau masih valid dan otentik. Keamanan algoritma Rabin mengandalkan kesulitan pemfaktoran bilangan besar. Semakin N kecil, maka kode akan mudah untuk dipecahkan [9]. Berikut contoh perhitungan digital signature Rabin [7]: Pesan : A m : 656565 U : 56 P = H(mU) : 9856257747886510661678442634732550585031913319325089291219 0753167233615674233 p: 2479031701221008899859227850758085330601935858258894569285 4146604919680297380569254623838643822426575149881173916106 518461951353072948313899035438889228799 q: 1588306894180538838723437684058802386060725621636759963423 1408211280355907792051837137652987872253791401101614632955 734016464066455665657314797931216513137 n: 3937463141941438157778796305483793046397948938243693338287 8190324296224913925671687873910367519087540367587373106540 3297411059999279480966580961310101054420003727232412362760 3303820481429106502939551600620253057928229803481285755679 28 6373210313374750905995999222632965540103444415405325880297 1258893591782232463 Menghitung x yang menghasilkan 4 hasil yang berbeda dengan rumus berikut : x1 : 3732512206527613370665370798251761403508624084831573796110 7333215258235945873210362035537451538631459318353681441191 2963558942082926223854065028745149067899943524096103765457 8561970303724383614915682610443527485962320166817363488606 0192660307233077344902280200871403451561442599078008698291 5844954610582377268 x2 : 2049509354138247871134255072320316428893248534121195421770 8571090379889680524613258383729159804560810492336916653490 3338521179163532571125159325649519865200602031363085973024 7418501777047228880238689901767255719659096366639222670736 1805500061416735610937190217615620885420018163273171820055 413938981199855195 x3 : 1845048628720052392437588705488521195314850216709684461385 0143710849438699544435450998846511361919605699151003037669 5265258235518836598523542027904651432779251388831440645790 2784765134090407193791073055274158847424129931459552856500 4262118155639923522059346664928522355682828648099634237148 7664460480227528031 x4 : 2092414513221385765341207599995271851083098721534008876902 8046613446786214381236236875063856157167934668436370068870 8032152824480442882443038933405449621640752338400971716970 0519055347338699309148478545346094210504099872021732899179 2111092157734827383936652557704443184420615767305691643148 3594433111554704432 Mengambil salah satu x untuk S misalkan x1. Mengirim pesan m dan digital signature (U,S). S: 3732512206527613370665370798251761403508624084831573796110 7333215258235945873210362035537451538631459318353681441191 2963558942082926223854065028745149067899943524096103765457 29 8561970303724383614915682610443527485962320166817363488606 0192660307233077344902280200871403451561442599078008698291 5844954610582377268 Menghitung H(mU) kemudian menghasilkan 4 hasil yang berbeda lagi : menghitung x yang m : 656565 U : 56 P = H(mU) : 9856257747886510661678442634732550585031913319325089291219 0753167233615674233 p: 2479031701221008899859227850758085330601935858258894569285 4146604919680297380569254623838643822426575149881173916106 518461951353072948313899035438889228799 q: 1588306894180538838723437684058802386060725621636759963423 1408211280355907792051837137652987872253791401101614632955 734016464066455665657314797931216513137 n: 3937463141941438157778796305483793046397948938243693338287 8190324296224913925671687873910367519087540367587373106540 3297411059999279480966580961310101054420003727232412362760 3303820481429106502939551600620253057928229803481285755679 6373210313374750905995999222632965540103444415405325880297 1258893591782232463 x1 : 3732512206527613370665370798251761403508624084831573796110 7333215258235945873210362035537451538631459318353681441191 2963558942082926223854065028745149067899943524096103765457 8561970303724383614915682610443527485962320166817363488606 0192660307233077344902280200871403451561442599078008698291 5844954610582377268 x2 : 2049509354138247871134255072320316428893248534121195421770 8571090379889680524613258383729159804560810492336916653490 3338521179163532571125159325649519865200602031363085973024 7418501777047228880238689901767255719659096366639222670736 30 1805500061416735610937190217615620885420018163273171820055 413938981199855195 x3 : 1845048628720052392437588705488521195314850216709684461385 0143710849438699544435450998846511361919605699151003037669 5265258235518836598523542027904651432779251388831440645790 2784765134090407193791073055274158847424129931459552856500 4262118155639923522059346664928522355682828648099634237148 7664460480227528031 x4 : 2092414513221385765341207599995271851083098721534008876902 8046613446786214381236236875063856157167934668436370068870 8032152824480442882443038933405449621640752338400971716970 0519055347338699309148478545346094210504099872021732899179 2111092157734827383936652557704443184420615767305691643148 3594433111554704432 Mencocokkan nilai S dengan keempat hasil perhitungan x, jika terdapat nilai yang sama maka digital signature valid dan jika tidak maka tidak valid. Pada contoh S=x1 di perhitungan verifikasi maka digital signature valid [9]. 2.8 Gammu SMS Gateway Gammu adalah sebuah aplikasi cross-platform yang digunakan untuk menjembatani/mengomunikasikan antara database SMS gateway dengan SMS devices. Untuk menjalankan aplikasi ini, diperlukan konfigurasi pada file gammurc bagian device disesuaikan dengan port UI Interface yang aktif pada device manager, sedangkan untuk connection sesuaikan dengan modem/telepon genggam yang digunakan. Daftar tipe connection dapat dilihat pada link “http://wammu.eu/phones/“. Mengedit file smsdrc pada bagian device dan port sesuaikan dengan UI Interface seperti pada file gammurc, begitu juga pada bagian connection sesuaikan dengan modem/telepon genggam yang digunakan pada file gammurc seperti Gambar 2.14 [1]. [gammu] device = com5: connection = at [gammu] device = com5: connection = at [smsd] port = com5: connection = at service = MYSQL PIN = 1234 logfile = smsdlog debuglevel = 0 commtimeout = 30 31 Gambar 2.14 Konfigurasi “gammurc” dan “smsdrc” [1]. Selanjutnya melakukan konfigurasi dilakukan di command prompt [1]. gammu --identify Gambar 2.8 Pengujian koneksi modem. [1] gammu-smsd -c smsdrc –i gammu-smsd -c smsdrc -s Gambar 2.9 Install dan menjalankan service Gammu. [1] 2.9 Form HTML Form HTML adalah fasilitas untuk menyunting database memiliki beberapa fitur antara lain [1] : Text box. Nama : <input type=text name="pelanggan" size=10> Select menu. Umur : <select name="umur" > <option value="0-29">Di bawah 30</option> <option value="30-60">Antara 30 sd 60</option> </select> 32 Submit button. <input type=submit value=Cetak> <input type=reset value=Batal> 2.10 Java Server Pages JSP (JavaServer Pages) merupakan platform yang banyak digunakan untuk pengembangan aplikasi web. Aplikasi yang dikembangkan menggunakan teknologi ini atau biasanya disusun istimewa sebagai koleksi fragmen program (halaman JSP) yang menerima input pengguna, menghasilkan output HTML atau XML, dan berinteraksi dengan database. Fragmen ini terhubung melalui forms dan link dalam halaman yang dihasilkan, menggunakan penyebaran deskriptor ke peta URL secara deklaratif untuk fragmen program. Alur pembuatan file dengan ekstensi *.jsp memiliki tipe kontennya berupa text/html atau dapat diakses melalui internet dengan page Encoding menggunakan UTF-8. Ketika diakses, halaman ini nantinya akan menghasilkan judul bernama JSP Page dengan tampilan pada body adalah tulisan “Hello World”. JSP memungkinkan untuk dilihat sebagai HTML atau XML dokumen dengan berdasar pada script JSP. Ada 3 cara scripting JSP yaitu [4] : 1. Scriptlets ( <% … %> ) Scriptlets menyediakan cara untuk memasukkan bits dari kode Java diantara chunks dari data template dan memiliki form berikut ini : <% Java code; %> Syntax XML-compatible untuk menulis scriptlets adalah: <jsp:declaration> Java code; </jsp:declaration> 2. Expressi ( <%= %>) Expressi menyediakan cara untuk memasukkan nilai Java secara langsung kedalam output. Hal ini memilki form seperti berikut ini: <%= Java Expression %> Syntax XML-compatible expression %> adalah: untuk <%= Java 33 <jsp:expression> JavaExpression; </jsp:expression> 3. Deklarasi ( <%! %> ) Deklarasi memperbolehkan anda untuk menggambarkan method atau variable. Dia memilki form seperti dibawah ini: <%! Java Code %> Syntax XML-compatible JavaCode%> adalah <jsp:declaration> Java Code; </jsp:declaration> syntax untuk <%! 2.11 Database MySQL Dalam bahasa SQL pada umumnya informasi tersimpan dalam tabel-tabel yang secaralogika merupakan struktur dua dimensi terdiri dari baris (row atau record) dan kolom (column atau field). Sedangkan dalam sebuah database dapat terdiri dari beberapa table. [1] Tabel 2.2 Tipe data pada databaseMySQL. [1] Tipe data Keterangan INT Angka, -2147483648 s/d 2147483647 DATE Tanggal, Format : YYYY-MM-DD DATETIME Tanggal dan waktu, Format : YY-MM-DD HH:MM:SS CHAR String dengan panjang tetap sesuai dengan yang ditentukan.Panjangnya 1-255 karakter VARCHAR String dengan panjang yang berubah-ubah sesuai dengan yang disimpan saat itu.Panjangnya 1-255 karakter