BAB II

advertisement
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
Download