BAB II TINJAUAN PUSTAKA
II.1 Short Message Service (SMS) Short Message Service (SMS) merupakan sebuah layanan yang banyak diaplikasikan pada sistem komunikasi tanpa kabel, memungkinkan dilakukannya pengiriman pesan dalam bentuk alphanumeric antara terminal pelanggan atau antara terminal pelanggan dengan sistem eksternal seperti email, paging, voice mail, dan lain-lain. Disebut pesan teks pendek karena pesan yang dikirimkan hanya berupa karakter sumber : Romzi Imron Rozidi, 2004 Teknologi yang mendukung SMS antara lain adalah Global System for Mobile (GSM), Time Division Multiple Access (TDMA) dan Code Division Multiple Access (CDMA). Dengan didukung oleh ketiga teknologi ini, SMS telah menjadi layanan data bergerak yang bersifat universal. Keunggulan dari teknologi SMS adalah : 1. Harganya murah 2. Merupakan ”deliver oriented service”, artinya pesan akan selalu diusahakan untuk dikirimkan ke tujuan. Jika suatu saat nomor tujuan sedang tidak aktif atau di luar servis area, maka pesan akan disimpan di Short Message Service Center (SMSC) Server dan akan dikirimkan segera setelah nomor tujuan aktif kembali. Pesan juga akan tetap terkirim ke tujuan walaupun nomor tujuan sedang melakukan layanan suara 3. Dapat dikirim ke banyak penerima sekaligus pada saat yang bersamaan
7
8
4. Pesan dapat dikirimkan ke berbagai jenis tujuan, seperti e-mail, IP atau pun aplikasi lain 5. SMS dapat digunakan untuk berbagai macam keperluan seperti kuis, voting, chatting, reservasi, request information, sensus/survey, dan lain-lain
II.2 Strutur Pesan SMS Struktur pesan pada sebuah paket SMS dapat dilihat pada Gambar II.1 Header
Massege Body
Intructions to SIM ( option )
Intructions to Handset Intructions to SMSC Intructions to air interface
Gambar II.1 Struktur Pesan SMS Sumber Clements. T; 2005: http://developers.sun.com/mobility/midp/articles/sms/
Pada Gambar II.1 dapat terlihat bahwa pada sebuah paket pesan SMS terdiri dari header dan body. Header pesan terdiri dari instruksi-instruksi kepada komponen- komponen yang bekerja dalam jaringan SMS. Pada instruksi-instruksi tersebut, terdapat
informasi
yang
diperlukan
selama
pengiriman pesan seperti informasi validitas pesan, dan informasi-informasi lainnya. Pada bagian message body, terdapat isi dari pengirim pesan yang akan
9
dikirimkan. Panjang isi pesan pada sebuah paket SMS berukuran maksimal 160 karakter, dimana setiap karakter memiliki panjang 7 bit. Beberapa aplikasi standar telepon selular dapat mendukung panjang pesan dengan karakter sepanjang 8 bit (panjang pesan maksimum 140 karakter) dan karakter yang lebih panjang lainnya seperti 16 bit, namun karakter sepanjang 8 bit dan 16 bit ini tidak didukung oleh semua aplikasi standar telepon selular. Pada umumnya karakter sepanjang 8 bit dan 7 bit digunakan untuk menampilkan data seperti gambar dan symbol Pettersson, Lars. SMS Message and The PDU Format. Secara
umum
sebuah
telepon
selular
hanya
dapat
melakukan
pengiriman satu buah paket SMS dalam satu pesan, namun dengan kemajuan teknologi yang ada sekarang, beberapa telepon selular mampu mengirimkan beberapa paket SMS dalam satu pesan. Yang dilakukan telepon selular agar dapat melakukan pengiriman beberapa paket dalam satu kali pengiriman pesan adalah melakukan konkatinasi, jadi sebenarnya hal yang dilakukan sama dengan mengirimkan beberapa pesan hanya saja dengan melakukan konkatinasi, beberapa pesan yang disatukan tersebut dapat terlihat menjadi satu buah pesan. Dengan adanya fitur konkatinasi, sebuah SMS seolah-olah dapat mengirim pesan dengan panjang lebih dari 160 karakter (7 bit karakter) dalam satu buah pesan, namun pada fitur konkatinasi ini dibutuhkan sebuah informasi tambahan pada pesan untuk menyambungkan beberapa pesan menjadi satu buah pesan, oleh karena itu panjang satu buah pesan akan menjadi lebih kecil. Pada sebuah aplikasi penerimaan SMS pada telepon selular dikenal
10
nomor port, nomor port ini digunakan sebagai pengenal apabila terdapat dua buah atau lebih aplikasi penerimaan SMS pada sebuah telepon selular. Aplikasi penerimaan SMS tersebut akan menunggu pesan yang ditujukan pada nomor port tersebut. Untuk mengirimkan pesan pada port yang spesifik, pengirim harus menyertakan nomor port pada pesan yang dikirimkannya. Jika pengirim tidak menyertakan nomor port, seperti halnya yang dilakukan oleh aplikasi standar setiap telepon selular, maka pesan akan ditujukan ke aplikasi standar yang dimiliki oleh telepon selular atau aplikasi yang memiliki nomor port 0.
Informasi nomor port tersebut dibawa bersama paket pesan yang
dikirimkan oleh pengirim, oleh karena itu jika pengirim menyertakan informasi nomor port tujuan, maka panjang maksimal pesan yang dapat dikirimkan akan berkurang karena sebagian terpakai oleh informasi nomor port.
II.3 Kriptografi II.3.1 Konsep Dasar Kriptografi Kriptografi adalah suatu ilmu pengetahuan yang mempelajari teknikteknik yang berkaitan dengan keamanan informasi, teknik-teknik yang digunakan pada umumnya menggunakan dasar pengetahuan matematika. Kriptografi bukanlah satu-satunya jalan dalam menjaga keamanan dokumen tetapi kriptografi menyediakan kumpulan teknik untuk menjaga keamanan dokumen. Secara garis besar kriptografi dibagi menjadi 2 jenis; kriptografi klasik dan kriptografi moderen. Perbedaan mendasar
yang terdapat pada ke dua jenis
tersebut adalah pada kriptografi moderen, algoritma kriptografi umumnya
11
beroperasi pada mode bit sedangkan pada kriptografi klasik beroperasi pada mode karakter. Teknik kriptografi moderen, secara umum dibagi menjadi 2 jenis, yaitu: 1. Algoritma kriptografi kunci simetris Pada algoritma kriptografi ini, kunci yang digunakan dalam proses dekripsi dan enkripsi merupakan kunci yang sama. Berdasarkan pemrosesan bit, algoritma kunci simetris dibagi menjadi dua bagian, yaitu; algoritma block cipher
yang melakukan
pemrosesan bit per-blok dan algoritma stream cipher yang memproses blok secara mengalir atau per-bit. 2. Algoritma kriptografi kunci public Proses
enkripsi
dan
dekripsi
pada
algoritma kriptografi kunci public menggunakan kunci yang berbeda. Seperti namanya algoritma ini menggunakan kunci enkripsi yang bersifat publik atau tidak rahasia, namun menggunakan kunci dekripsi yang bersifat
rahasia.
Kunci
dekripsi
pada umumnya
merupakan
hasil
perhitungan dari kunci enkripsi yang bukan merupakan pemetaan satu ke satu,
sebuah kunci dekripsi dapat memiliki beberapa kunci enkripsi.
Dalam penggunaannya, algoritma kriptografi kunci publik tidak hanya digunakan untuk menyembunyikan pesan, tetapi dapat juga digunakan untuk melakukan otentikasi dokumen.
Tujuan kriptografi adalah untuk mencegah dan mendeteksi orang yang tidak bertanggung membaca
jawab
melakukan
hal-hal
yang
mengganggu
seperti
data rahasia atau mengubah suatu data penting. Untuk tujuan itu,
kriptografi menyediakan empat aspek keamanan yaitu; kerahasiaan, integritas
12
data, otentikasi dan nirpenyangkalan. Algoritma kripografi melibatkan proses pengubahan pesan menjadi tersembunyi atau tidak dikenali isi dan maksudnya. Pesan yang belum diubah tersebut disebut dengan plainteks dan pesan yang telah diubah disebut dengan cipherteks. Proses pengubahan plainteks menjadi cipherteks disebut dengan enkripsi dan proses pengembalian cipherteks menjadi plainteks disebut dengan dekripsi. ( Sentot Kromodimoeljo; 2010 : 05 ) II.3.2 Block Cipher Block cipher adalah suatu tipe algoritma kriptografi kunci simetris yang mengubah plainteks yang dibagi dalam blok-blok dengan panjang yang sama menjadi cipherteks yang memiliki panjang blok yang sama. Ukuran panjang blok dapat beragam bergantung kepada algoritma yang digunakan, ukuran yang sering digunakan adalah 64 bit dan menuju 128 bit. Seperti semua algoritm kunci simetri, proses enkripsi yang dilakukan akan menggunakan suatu input dari user yang disebut sebagai kunci rahasia. Kunci rahasia ini juga akan dipakai ketika melakukan proses dekripsi. . (Dony Ariyus; 2006: 57) Cara kerja secara umum dari block cipher dapat dilihat pada Gambar II.2.
13
Kunci dari pengguna
Kunci internal
Plainteks
Enkripsi
Cipherteks
Dekripsi
Plainteks
Gambar II.2 Skema cara kerja block cipher Sumber; janner Siarmata: 2006: 202
Dalam penggunaannya block cipher dikombinasikan dengan suatu teknik
yang dinamakan mode operasi dari block cipher. Mode operasi yang
sederhana dan sering digunakan adalah mode Electronic Code Book (ECB). Pada mode ECB setiap blok pada plainteks dienkripsi satu persatu secara independen. Hasil enkripsi masing-masing blok tidak mempengaruhi blok yang lain. Proses enkripsi pada mode ini sangat sederhana, setiap blok plainteks dienkripsi dengan fungsi enkrispsi secara terpisah. Seperti halnya dalam proses enkripsi, dalam proses dekripsi, masing-masing blok-blok cipherteks dikenakan dengan fungsi dekripsi secara independen. Proses enkripsi dan dekripsi dari mode ECB dapat dilihat pada Gambar II.3.
14
Plainteks
Kunc i
Chipertek s
Kunci
Enkripsi
Chipertek s
Dekripsi
Plainteks
Gambar II.3 Proses enkripsi ECB dan Proses dekripsi ECB pada sebuah blok Sumber; Dony Ariyus: 2006: 59
Dalam melakukan perancangan block cipher, beberapa prinsip harus dipertimbangkan. Prinsip-prinsip tersebut yaitu: 1. Prinsip Confusion dan Diffusion dari Shannon. Tujuan dari prinsip confusion adalah
untuk
menyembunyikan
hubungan apapun
yang
ada
antara
plainteks, cipherteks, dan kunci, sehingga dapat membuat kripanalis kesulitan dalam menemukan pola-pola pada cipherteks. Tujuan dari prinsip diffusion adalah menyebarkan pengaruh satu bit plainteks atau kunci ke sebanyak mungkin cipherteks, sehingga dengan berubahnya satu bit plainteks dapat mengubah cipherteks yang sulit untuk diprediksi. 2. Iterated Cipher Untuk menambah keamanan, pada algoritma-algoritma block cipher dilakukan iterasi pada pemrosesan setiap blok, pada setiap rotasi dari iterasi tersebut digunakan fungsi transformasi yang sama namun memakai kunci yang berbeda yang disebut dengan kunci internal. Kunci internal pada umumnya merupakan hasil dari kunci yang dimasukan oleh pengguna yang dikomputasi menggunakan suatu fungsi tertentu. Dengan
15
adanya iterasi tersebut keamanan akan
semakin
terjamin,
namun
performansi akan berkurang karena adanya waktu lebih yang dibutuhkan untuk melakukan iterasi. Block cipher yang menerapkan konsep iterasi ini disebut juga dengan iterated block cipher. 3. Kunci Lemah Suatu
hal
yang
perlu
dihindari
dalam
melakukan
perancangan algoritma kriptografi adalah kunci yang dapat menghasilkan cipherteks yang mirip atau serupa dengan plainteks.
II.4 Algoritma RC6 II.4.1 Deskripsi Algoritma RC6 adalah suatu algoritma kriptografi block cipher
yang
dirancang oleh Ronald L. Rivest, Matt J.B. Robshaw, Ray Sidney, dan Yuqin Lisa Yin dari RSA Laboratories. Algoritma ini pada mulanya dirancang untuk menjadi AES (Advance Encryption Standard). Algoritma RC6 ini berhasil menjadi finalis dan menjadi kandidat kuat untuk menjadi AES walaupun pada akhirnya algoritma ini tidak terpilih menjadi AES melainkan algoritma rinjdael. Versi 1.1 dari RC6 mulai dipublikasikan pada tahun 1998. Dasar desain dari algoritma RC6 ini didasarkan pada pendahulunya yaitu algoritma RC5. Desain algoritma RC5 mengutamakan kesederhanaan agar mudah untuk diimplementasikan, selain itu juga kecepatan dan penggunaan memori yang rendah menjadi faktor utama perancangan algoritma RC5. Algoritma RC5 dirancang agar dapat beradaptasi dengan prosesor yang beragam dan juga didesain dengan struktur yang iteratif dengan jumlah iterasi yang dapat
16
beragam,
sehingga
algoritma
RC5 memiliki parameter agar dapat bekerja
dengan jumlah iterasi dan blok yang beragam. Algoritma RC5 bekerja dengan dua buah register A dan B sebesar panjang blok dibagi dua, proses enkripsi dari algoritma RC5 dengan S adalah array yang berisi kunci internal dan r adalah jumlah iterasi adalah sebagai berikut: A A+S[0] B B+S[1] for i 1 to r do A ((AB)<<
Proses dekripsi algoritma RC5 adalah sebagai berikut: for i r downto r do B ((B-S[2*i+1])>>>A)A A ((A-S[2*i])>>>B)B endfor B B-S[1] A A-S[0]
Seperti halnya algoritma RC5, algoritma RC6 merupakan algoritma dengan parameter penuh, algoritma RC6 dispesifikasikan dengan notasi RC6-w/r/b. Dimana
w adalah ukuran
dari
word
dalam
bit,
karena
pada
RC6
menggunakan 4 buah register maka word adalah ukuran blok dibagi 4. r adalah jumlah iterasi, dimana r tidak boleh negatif. Dan b adalah panjang kunci dalam bytes. Dalam rancangan untuk menjadi kandidat AES algoritma RC6 yang digunakan menggunakan ukuran w sebesar 32 bit dan jumlah iterasi r sebesar 20 kali putaran.
17
Cara kerja dari algoritma RC6 adalah menggunakan 4 buah register dan menggunakan prinsip Iterated Block Cipher yang mengunakan iterasi, dalam algoritma ini tidak digunakan S-box.
II.4.2 Pembentukan Kunci Internal Untuk membangkitkan urutan kunci internal yang akan digunakan selama proses enkripsi, algoritma RC6 melakukan proses pembangunan kunci yang identik dengan algoritma RC5, yang membedakan hanyalah pada algoritma RC6, jumlah word yang diambil dari kunci yang dimasukan oleh pengguna ketika melakukan enkripsi ataupun dekripsi lebih banyak. Tujuan dari proses pembangunan kunci tersebut adalah untuk membangun suatu array S yang berukuran 2r+4 dari kunci masukan pengguna sepanjang b bytes (0 ≤ b
≤
255), array tersebut akan digunakan baik dalam proses enkripsi maupun dekripsi. Proses untuk membangun kunci-kunci internal menggunakan dua buah konstanta yang disebut dengan “magic constant”. Dua buah magic constant Pw dan Qw tersebut didefinisikan sebagai berikut: Pw= Odd((e-2)2w) Qw= Odd(( -1)2w) Dimana : e = 2.7182818284859…(basis dari logaritma natural) = 1.618022988749…(golden ratio) Odd (x) adalah integer ganjil terdekat dari x, jika x genap maka diambil integer ganjil setelah x.
18
Berikut adalah daftar magic constant pada beberapa panjang blok dalam heksadesimal: P16 = b7e1 Q16 = 9e37 P32 = b7e15163 Q32 = 9e3779b9 P64 = b7e151628aed2a6b Q64 = 9e3779b97f4a7c15 Dengan menggunakan dua buah magic constant tersebut, pembangunan kunci terdiri dari tiga tahap : 1. Konversi kunci rahasia dari bytes ke words Langkah
pertama
adalah
menyalin kunci rahasia K[0..b-1] kedalam sebuah array L[0..c-1], dimana c = pembulatan keatas(b/u) dan u = w/8, penyalinan tersebut dilakukan secara little endian. Untuk semua posisi byte pada L yang kosong diberi nilai nol. Untuk kasus dimana b = 0, maka c = 1 dan L[0] = 0. Langkah ini dapat dilakukan dengan cara berikut : if c=0 then c
1
for i
b-1 downto 0 do
endif
L[i/u]
(L[i/u]<<<8) +
K[i] Endfor
Inisialisasi array S Langkah kedua adalah melakukan inisialisasi array S agar memiliki
pola pseudo-random bit tertentu menggunakan progresi aritmatika w
modulo 2 yang ditentukan dengan Pw dan Qw. Berikut langkah kedua dalam
19
pseudo code : S[0]
Pw
for i
0 to
2r+3 do S[i]
S[i-1]+
Q 2. Mencampurkan L dan S Langkah terakhir adalah mencampurkan kunci w
endfor
rahasia dari pengguna yang sudah tersimpan dalam L dengan S sebanyak 3 kali iterasi. Berikut adalah langkah pencampuran tersebut: i
0
j
0
A
0
B
0
V
3*max(c,2r+4)
for index
1 to v do
S[i]
(S[i]+A+B) <<< 3
A
S[i]
L[j]
(L[j]+A+B) <<< (A+B)
B
L[j]
i
(i+1)mod(2r+4)
j
(j+1)mod c
Pembentukan kunci yangendfor dilakukan, mengubah kunci dari user yang panjangnya beragam (0-255) menjadi suatu rangkaian kunci dengan sepanjang word sebanyak 2r +3 buah. Hal ini menjadikan RC6 dapat bekerja dengan kunci masukkan pengguna yang beragam. Kunci yang dihasilkan oleh proses pembentukian kunci ini memiliki sifat satu arah, sehingga proses pembentukan kunci ini dapat digunakan sebagai
20
fungsi hash satu arah. Dengan sifat satu arah tersebut, maka kunci internal akan sangat Berbeda dengan kunci yang dimasukkan oleh pengguna, hal ini akan membuat hubungan statistik antara kunci yang dimasukan oleh pengguna dengan plainteks dan cipherteks menjadi lebih rumit karena dalam melakukan enkripsi, kunci yang dipakai adalah kunci internal. Pada pembentukan kunci internal digunakan iterasi yang cukup banyak baik pada tahap satu, dimana untuk melakukan ekspansi kunci dibutuhkan iterasi, dan pada tahap dua, dimana dibutuhkan iterasi untuk melakukan inisialisai
array serta
pada tahap terakhir
yang dibutuhkan untuk
menggabungkan dua buah array, yang bahkan dilakukan selama tiga kali. Iterasiiterasi ini membutuhkan waktu yang cukup besar untuk dilakukan.
II.4.3 Proses Enkripsi dan Dekripsi Algoritma RC6 bekerja dengan empat buah register A,B,C,D yang masing-masing berukuran w-bit, register-register tersebut akan diisi oleh plainteks yang kemudian akan digunakan selama proses enkripsi dan setelah proses enkripsi berakhir isi dari register-register tersebut merupakan cipherteks. Byte pertama dari plainteks atau cipherteks akan disimpan pada least significant byte dari A dan byte terakhir dari plainteks atau cipherteks disimpan pada most significant byte
dari
D.
Proses enkripsi
menggunakan enam buah operasi dasar: a + b = penjumlahan integer modulo 2w
dan
dekripsi
algoritma
RC6
21
a - b = pengurangan integer modulo 2w a b = operasi bitwise exclusive-or sebesar w-bit words a * b = perkalian integer modulo 2w a<<
w-bit word ke kiri sebanyak jumlah
yang
diberikan oleh least sifnificant lg w bit dari b a>>>b
= rotasi sejumlah w-bit word ke kanan sebanyak jumlah
yang diberikan oleh least sifnificant lg w bit dari b Dimana lg w adalah logaritma basis dua dari w. Proses enkripsi dapat dilihat pada. Prosedure Enkripsi (
Input :
Plainteks dalam
A,B,C,D r : integer (jumlah rotasi) S[0..2r+3] : kunci internal Output :
Cipherteks dalam A,B,C,D)
Kamus u : integer t : integer Algoritma B
B + S[0]
D
D + S[1]
for i
1 to r do
t
(B * (2B + 1))<<
u
(D * (2D + 1))<<
A
((A t)<<
C
((C u)<<
(A,B,C,D)
(B,C,D,A)
endfor A
A + S[2r + 2]
C
C + S[2r + 3]
22
Prosedure Dekripsi (
Input :
Cipherteks dalam
A,B,C,D r : integer (jumlah rotasi) S[0..2r+3] : kunci internal Output :
Plainteks dalam A,B,C,D)
Kamus u : integer t : integer Algoritma C
C - S[2r + 3]
A
A - S[2r + 2]
for i
r downto 1 do
(A,B,C,D)
(D,A,B,C)
u
(D * (2D + 1))<<
t
(B * (2B + 1))<<
C
((C - S[2i+ 1])>>>t) u
A
((A - S[2i])>>>u) t
endfor D
D - S[1] B
B - S[0]
Langkah-langkah enkripsi algoritma RC6 secara detil adalah sebagai berikut : 1. Blok plainteks dibagi menjadi 4 bagian, A, B, C dan D yang masing-masing memiliki panjang w bit atau panjang blok dibagi 4. Kemudian B dan D dijumlahkan (dalam modulo 2w) dengan kunci internal S[0] dan S[1]. B
B + S[0] D
D +
S[1]
2. Selanjutnya pada setiap putaran dari 1 sampai r, lakukan XOR dan pergeseran kekiri terhadap A dengan f(x) yang di geser ke kiri sebanyak lg w, dimana f(x) = x* (2x+1) dan x = B. Setelah itu melakukan penjumlahan (dalam modulo 2w) dengan kunci internal. Hal serupa dilakukan pula terhadap C
23
dengan x = D. Kemudian melakukan swapping A B, B C, C D dan D A for i
1 to r do
t
(B * (2B + 1))<<
u
(D * (2D + 1))<<
A
((A t)<<
C
((C u)<<
(A,B,C,D) = (B,C,D,A) Endfor
Fungsi f(x) = x * (2x+1) memiliki keistimewaan dalam diterapkan pada iterated cipher, kesitimewaannya adalah fungsi ini memiliki sifat satu ke satu w
pada aritmatik modulo 2 dan cenderung merubah bit yang high-order (dekat MSB) [RIV98]. Sifat satu arah tersebut dapat terlihat sebagai berikut : Misalkan A dan B adalah bilangan bulat positif dan A B, jika A * (2A + 1) w
B * (2B + 1) (mod 2 ), maka: 2
2
2A +A = 2B + B (mod 2 w) 2
2
2A – 2B + A – B = 0 (mod 2 w) w
(A - B) (2A + 2B + 1) = 0 (mod 2 ) Namun, A B, jadi (A - B) 0 kemudian,
2A dan 2B merupakan genap
sehingga (2A + 2B + 1) merupakan bilangan ganjil dan tidak mungkin nol, maka tidak ada A dan B yang memenuhi A* (2A + 1) = B * (2B + 1) w
w
(mod 2 ) atau f(x) bersifat satu ke satu pada modulo 2 . Sifat satu ke satu ini cenderung berbeda pada bit yang high-order atau menuju MSB, hal ini dikarenakan fungsi f(x) = x * (2x + 1) merupakan fungsi kuadratik dimana pada perkalian dua buah bilangan akan cenderung
24
menambah digit didepan. Apabila x pada f(x) yang terdiri dari i bit mengalami perubahan bit pada posisi ke j maka f(x) akan berubah pada bit posisi ke j dan cenderung pada posisi > j. Dengan sifat satu ke satu pada fungsi f(x) tersebut, maka kemungkinan hasil f(x) yang berulang dalam iterasi-iterasi yang terjadi akan sangat kecil, sehingga semakin banyak jumlah iterasi, maka keamanan akan semakin terjaga, hal ini diperkuat dengan kemungkinan perubahan yang terjadi pada high-order bit sehingga pengaruh perbuatan lebih besar. Jika tidak terdapat sifat satu ke satu tersebut, algoritma enkripsi akan menjadi tidak baik, karena pada algoritma ini terdapat XOR dan apabila suatu bilangan di XOR-kan 2 kali maka bilangan tersebut akan muncul kembali. 3. Setelah iterasi selesai langkah terakhir adalah melakukan penjumlahan (dalam w
modulo 2 ) terhadap A dan C dengan dua kunci internal terakhir. Setelah semua selesai blok yang terbagi menjadi 4 bagian disatukan kembali. A
A + S[2r + 2]
C S[2r + 3]
C +
Algoritma RC6 termasuk kedalam iterated cipher, kekuatan utama algoritma ini terletak pada iterasi yang dilakukannya. Dengan dilakukannya iterasi yang berulang ulang dengan menggunakan kunci yang berbeda-beda, maka prinsip confusion dan diffusion dilakukan secara berulang-ulang pula, sehingga keamanan akan semakin baik. Serangan yang paling baik untuk memecahkan algoritma RC6 adalah serangan dengan menggunakan exhaustive search yang ditujukan kepada kunci
25
yang dimasukkan oleh pengguna atau kunci internal. Untuk serangan yang lebih rumit seperti kripanalisis diferensial dan linier, dapat digunakan untuk memecahkan algoritma RC6 yang menggunakan jumlah rotasi yang kecil, untuk jumlah rotasi 20 keatas, serangan ini tidak dapat bekerja dengan baik karena sulitnya menemukan karakteristik iteratif yang baik atau perkiraan linier.
II.5 Mobile Device Mobile Device merupakan suatu alat yang digunakan oleh pemakai untuk meminta informasi yang dibutuhkan, dimana informasi dapat diberikan dalam bentuk suara, gambar, dan text. Informasi yang diinginkan dapat dicari melalui fasilitas untuk mengakses internet seperti GPRS atau wireless. Pada umumnya perangkat mobile atau Mobile device lebih praktis karena bersifat mudah dibawa (portable) dari pada perangkat teknologi lainnya (http://digilib.ittelkom.ac.id/ index.php?option=com_content&view=article&id=27: layanan-berbasis-lokasi & catid=25:industri&Itemid=14). Meningkatnya pemakaian peranti mobile (mobile device) telah merevolusi kegiatan-kegiatan yang bersifat tradisional menjadi lebih sederhana dan mudah dengan penggunaan perangkat mobile. Mobilitas yang tinggi tidak menjadi penghalang lagi, karena saat ini peranti mobile sudah dapat mengakses server atau pusat data. Peranti mobile sekarang tidak hanya berfungsi sebagai pencatat jadwal dan buku alamat. Fungsi peranti mobile sudah berkembang pesat dan idealnya siap mengganti dokumen berbasis kertas. (Tri Mardiono, 2006, chap.1)
26
Vendor-vendor peranti mobile telah menanam teknologi penangkap data (data acquisition) ke dalam produknya. Hal ini menciptakan peningkatan produktivitas, proses pelaporan yang lebih cepat, dan pengurangan biaya operasional. Secara umum aplikasi peranti mobile terbagi atas: 1. Personal Information Managenent (PIM) Menyediakan fungsi kalender, buku alamat, jadwal, memo, pengirim email dan tugas yang harus dilakukan. 2. Dokumen Menyediakan fungsi word processing dan spread sheet. Fungsi yang lebih maju antara lain : akses web, e-book, multimedia, dan presentasi. 3. Aplikasi Mobile Business (mBusiness) Menyediakan fungsi penangkapan, pemrosesan, dan pengiriman data. Komunikasi yang umum antara server dan aplikasi adalah melalui sistem messaging seperti SMS dan sebagainya. Namun sekarang aplikasi business sudah dapat terhubung langsung dengan server melalui HTTP secara prorietary atau melalui web service. Dengan J2ME peranti
mobile yang
menggunakan CDC bisa melakukan koneksi berbobot melalui RME, JDBC dan sebagainya. 4. Games dan hiburan Menyediakan fungsi permainan, musik, video dan sebagainya. J2ME menyediakan library-library untuk membangun aplikasi games dan hiburan. (Tri Mardiono, 2006, chap.1)
27
II.5.1 Jenis-jenis Mobile Device Mobile device dapat dibagi berdasarkan jumlah kegunaannya menjadi dua jenis yaitu: 1. Single purpose Mobile device dengan single purpose digunakan untuk satu tujuan saja. contoh: navigation box yang terdapat pada mobil atau truk pengangkut barang. 2. Multi purpose Mobile device dengan multi purpose dapat digunakan untuk mengakses berbagai macam informasi yang diinginkan, contoh : Smart phone, handphone, PDA, Laptop. (http://www.ittelkom.ac.id/library/index.php?view=article&catid=25:industr& id=237:layanan-berbasis-lokasi&format=pdf). Aplikasi Kompresi Teks SMS yang akan penulis rancang menggunakan perangkat mobile jenis multi purpose yaitu handphone, dimana handphone yang digunakan harus mendukung aplikasi JavaTM.
II.6 Sekilas Tentang Bahasa Pemograman JavaTM JavaTM merupakan bahasa pemrograman yang dikembangkan dengan mengunakan bahasa C, sehingga pengembang (programmer) C tidak mengalami kesulitan beralih ke JavaTM. JavaTM diciptakan oleh James Gosling dan Patrick Naughton dalam suatu projek di Sun Microsystem sekitar tahun 1991. Pada mulanya ingin diberi nama OAK yang berasal dari nama pohon yang terdapat pada kantor James Gosling, namun karena kata OAK telah ada pada Sun
28
Microsystem, maka diberi nama JavaTM yang terinspirasi dari minum kopi. (Yuniar Supardi Ir, 2008, chap.1) JavaTM merupakan bahasa pemrograman multiplatform, sehingga banyak segmen yang memakainya. Bahasa JavaTM meliputi pemrograman dekstop, pemrograman database, bahasa pemograman mobile, dan lain-lain. JavaTM juga portable, karena semua sistem operasi seperti Windows, Linux, Unix,dan lain-lain dapat menjalankan JavaTM. JavaTM dibagi menjadi tiga edisi (Platform) yaitu : 1. J2SE (JavaTM 2 Standard Edition) Merupakan edisi standard (basis) dari JavaTM2. J2SE lebih difokuskan pada pemograman Dekstop dan Applet (aplikasi yang didapat dijalankan di browser web seperti Internet Explorer, Firefox Mozila, Opera, dan lain-lain). 2. J2EE (JavaTM 2 Enterprise Edition) Merupakan edisi perluasan dari J2SE (Superset dari J2SE), aplikasi yang dibuat dengan edisi ini untuk aplikasi berskala besar (Enterprise), seperti pemograman memakai database dan di atur oleh server. 3. J2ME (JavaTM 2 Micro Edition) J2ME merupakan edisi khusus dari JavaTM dan subset dari edisi J2SE. Edisi ini untuk pemrograman dengan peralatan-peralatan kecil atau terbatas seperti PDA, handphone, pager, dan lain-lain. (Yuniar Supardi Ir, 2008. chap.1).
29
II.6.1 J2ME (JavaTM 2 Micro Edition) J2ME adalah satu set spesifikasi dan teknologi yang fokus kepada perangkat konsumen. Perangkat ini memiliki jumlah memori yang terbatas, menghabiskan sedikit daya dari baterei, layar yang kecil dan bandwith jaringan yang rendah. Dengan perkembangbiakan perangkat mobile konsumen dari telepon, PDA, kotak permainan ke peralatan-peralatan rumah, JavaTM menyediakan suatu lingkungan yang portable untuk mengembangkan dan menjalankan aplikasi pada perangkat ini (Yuniar Supardi Ir, 2008, chap.1). Teknologi JavaTM mempunyai banyak keunggulan, diantaranya : 1. Multiplatform Aplikasi J2ME dapat berjalan dibanyak flatform yang didalamnya terdapat JVM (JavaTM Virtual Machine), beberara flatform yang tersedia installer mobile JVM antara lain: Windows, Symbian, dan Embedded Linux. 2. Robust Kode-kode JavaTM adalah kode-kode yang robust karena virtual machine mengatur keamanan proses eksekusi aplikasi. JVM menyediakan garbage collector yang bertugas mencegah kebocoran memory. 3. Terintegerasi dengan baik J2ME bisa terhubung dengan back end J2EE server dan web service dengan mudah, karena J2ME menyediakan librar-library API RMI dan web service. 2. Berorientasi objek JavaTM merupakan salah satu bahasa pemograman yang murni berorientasi objek. Hal ini mempermudah dan mempercepat pengembangan sistem yang
30
dikembangkan dengan metode analisa dan desain berorientasi objek. (Tri Mardiono, 2006, chap.1). Configuration merupakan JavaTM library minimum dan kapabilitas yang dipunyai oleh para pengembang J2ME, yang maksudnya sebuah mobile device dengan kemampuan JavaTM akan dioptimalkan untuk menjadi sesuai (Shalhuddin M & Rossa, 2008, chap.1). Ada 2 (dua) konfigurasi yang didefenisikan dalam J2ME yaitu: CLDC (Connected Limited Device Configuration) untuk perangkat kecil dan CDC (Connected Device Configuration) untuk perangkat yang lebih besar. CLDC (Connected Limited Device Configuration) adalah perangkat dasar dari
J2ME,
spesifikasi
dasar
yang
berupa
Library
dan
API
yang
diimplementasikan pada J2ME, seperti yang digunakan pada telepon seluler, pager, dan PDA (Shalhuddin M & Rossa, 2008, chap.1). Perangkat tersebut dibatasi dengan keterbatasan memory, sumber daya, dan kemampuan memproses. Spesifikasi CLDC pada J2ME adalah spesifikasi minimal dari Package, kelas dan sebagian
fungsi
JavaTM
Virtual
Machine
yang
dikurangi
agar
dapat
diimplementasikan dengan keterbatasan sumber daya pada alat-alat tersebut, JVM yang digunakan disebut KVM (Kilobyte Virtual Machine). CDC (Connected Device Configuration) adalah spesifikasi dari konfigurasi J2ME. CDC merupakan komunitas proses pada JavaTM yang memiliki standarisasi. CDC terdiri dari virtual machine dan kumpulan library dasar untuk dipergunakan pada profile industri. Implementasi CDC pada J2ME adalah Source
31
code yang menyediakan sambungan dengan macam-macam Platform (Shalhuddin M & Rossa, 2008, chap.1). Profile berbeda dengan configuration, profile membahas sesuatu yang spesifik untuk sebuah perangkat. Dalam J2ME terdapat 2 (dua) buah profile yaitu: MIDP dan Foundation Profile. MIDP (Mobile Information Device Profile) adalah spesifikasi untuk sebuah profile J2ME. MIDP memiliki lapisan di atas CLDC, API tambahan untuk daur hidup tambahan aplikasi, antar muka, jaringan dan penyimpan persisten. Tabel II.4 Arsitektur J2ME
Profile (MIDP)
Configuratio n (CLDC/CDC )
Kumpula n Library KVM/JV M
Sistem Operasi Sumber : Shalhuddin M & Rossa, 2008, chap.1
MIDlet adalah aplikasi yang ditulis untuk MIDP. Aplikasi MIDlet adalah bagian dari kelas Javax.microedition.midlet.MIDlet. yang didefenisikan pada MIDP. MIDlet berupa sebuah kelas abstrak yang merupakan sub kelas dari bentuk dasar aplikasi sehingga antar muka antara aplikasi J2ME dan aplikasi manajemen pada perangkat dapat terbentuk.
32
Untuk memudahkan penulis mengetikan program JavaTM maka penulis menggunakan NetBeans. NetBeans merupakan perangkat lunak editor untuk JavaTM. Tampilan menu utama NetBeans dapat dilihat pada gambar II.4 berikut :
Gambar II.5 Menu Utama Jcreator Sumber: Yuniar Supardi Ir,,2008, chap.1 Untuk menjalankan program JavaTM yang telah diketikan pada NetBeans, penulis menggunakan Sun Java Wireless Toolkit 2.5.2 for CLDC sebagai emulatornya. Sun Java WTK (Wireless Toolkit) merupakan perangkat lunak atau tool emulator mensimulasikan kerja handphone, sehingga pada waktu membuat program
handphone,
pemogram
mengkoneksikan ke internet.
tidak
perlu
mencoba
langsung
atau
33
Gambar II.6 Menu Utama Sun Java Wireless Toolkit 2.5.2 for CLDC Sumber: Rangsang Purnama,2010, chap.1
Gambar II.7 Emulator +5550000 Sumber: Rangsang Purnama, 2010, chap.1
II.6.2. RMS (Record Management System) Pemograman J2ME tidak mengenal database, untuk menyimpan data dikenal dengan nama RMS (Record Management System) yang merupakan mekanisme penyimpanan berbentuk record. Dalam pemograman MIDP terdapat 3 ruang
34
penyimpanan data yang dapat digunakan, yaitu: Volatile (sementara) RAM, ruang persisten (tetap), dan penyimpanan secara remote. Data yang disimpan didalam RAM bersifat voletile (sementara), jika peralatan dimatikan atau MIDlet ditutup (dimatikan) data akan hilang. Pengaturan RAM sudah diatur oleh JVM (JavaTM Virtual Machine) dengan teknologi garbage collector tanpa intervensi programmer (Yuniar Supardi Ir, 2008, chap.2). Pada MIDlet
yang terhubung dengan suatu jaringan internet, dapat
mengakses atau menyimpan data pada ruang penyimpanan remote misalnya server database. (Yuniar Supardi Ir, 2008, chap.4). Record pada RMS disimpan sebagai array dari byte yang cara kerjanya berdasarkan record (baris data). RMS memiliki orientasi record basis data yang sederhana sehingga tidak mengenal field (kolom data) seperti database pada umumnya. Dalam RMS tidak bisa mengambil data per field per record seperti yang biasa dilakukan pada database yang umum, sehingga perlu dipetakan dahulu datanya Paket RMS terdapat pada javax.microedition.rms yang memiliki beberapa interface dan satu kelas. Satu-satunya kelas yang digunakan untuk memanipulasi data adalah kelas RecordStore. Kelas dan Interface yang terdapat pada paket RMS adalah : 1. Kelas RecordStore. Kelas ini digunakan untuk membuka, membaca, menulis, mengubah, menghapus dan menutup data RMS. 2. Interface RecordEnumeration. Interface ini digunakan untuk menelusuri data RMS akan tetapi tidak dapat digunakan untuk menambah, mengubah atau
35
menghapus data RMS. Fungsi lain dari interface ini adalah untuk menyaring dan mengurutkan data. 3. Interface RecordComparator. Interface ini berguna untuk membandingkan dua
record
dengan
metode
compare()
terimplementasi.
Hasil
dari
perbandingan ini akan berupa konstanta integer statis: PRECEDES (parameter pertama bernilai lebih kecil), EQUIVALENT (kedua parameter bernilai sama) dan FOLLOW (parameter pertama bernilai lebih besar). Fungsi lain dari interface ini adalah menampilkan data yang urut pada
interface
RecordEnumeration. 4. Interface RecordFilter. Interface ini digunakan untuk menguji record dengan metode matches() terimplementasi yang akan mengembalikan nilai boolean: true (bila lulus uji) dan false (bila tidak lulus uji). Kegunaan lain dari interface ini yaitu untuk menyaring data pada interface RecordEnumeration. J2ME tidak menyediakan API untuk mengakses inbox dan outbox handphone. Dengan keterbatasan tersebut maka dibuat suatu inbox dan outbox buatan yang fungsinya hampir sama dengan inbox dan outbox pada handphone. Pesan yang masuk atau keluar akan disimpan ke dalam suatu tabel di dalam RMS, khusus disediakan untuk menampung isi SMS yang akan diberi nama tabel tInbox (untuk menyimpan pesan yang ditampilkan pada inbox buatan) dan tOutbox (untuk menyimpan pesan yang ditampilkan pada outbox buatan).