bab 2 landasan teori 2.1 java™ - thesis.binus.ac.idthesis.binus.ac.id/doc/bab2/2010-1-00264-if-bab...
TRANSCRIPT
10
BAB 2
LANDASAN TEORI
2.1 JAVA™
JAVA™ merupakan bahasa pemograman yang dikembangkan Sun
Microsystem yang dirilis pada tahun 1995 sebagai komponen utama dari Sun
Microsystem Lingkungan (Platform) Java. Bahasa ini dikembangkan dengan
model yang mirip dengan bahasa C++ dan Smalltalk, namun dirancang agar lebih
mudah dipakai dan platform independent, yaitu dapat dijalankan di berbagai jenis
sistem operasi dan arsitektur komputer. Bahasa ini juga dirancang untuk
pemograman di Internet sehingga dirancang agar aman dan portable.
Proyek Java dimulai pada bulan Juni tahun 1991 oleh James Gosling. Pada
mulanya bahasa ini disebut Oak yang berasal dari pohon oak yang berada di luar
kantor Gosling, selain itu juga pernah berubah menjadi Greendon dan akhirnya
dinamakan Java yang berasal dari kumpulan kata acak. Gosling bertujuan untuk
mengimplementasikan sebuah mesin virtual dan bahasa yang mirip dengan notasi
C / C++. Sun merilis implementasi publik pertamanya Java 1.0 di tahun 1995 yang
menjanjikan “Write Once, Run Anywhere” (WORA) dimana dapat dijalankan
11
dengan baik pada platform popular, cukup aman, dan menyediakan fitur keamanan
yang dapat dikonfigurasi.
Berdasarkan white paper resmi dari Sun, Java memiliki karakteristik
sebagai berikut :
1. Sederhana (Simple)
Bahasa pemrograman Java menggunakan sintaks mirip dengan C++,
namun sintaks pada Java merupakan penyederhanaan dari bahasa C++.
Penyederhanaan dilakukaan dengan menambahkan fitur-fitur pendukung
yang belum terdapat dalam C++ dan menghilangkan penggunaan pointer
yang rumit dan multiple inheritance. Java sederhana karena hanya memiliki 3
(tiga) tipe angka data primitive, boolean, dan array. Selebihnya, semua yang
ada di dalam Java adalah kelas. Fitur yang tidak terdapat dalam C++, yang
ditawarkan java, dua diantaranya automatic memori allocation dan memori
garbage collection (pengumpulan sampah). Dengan mekanisme ini, user
tidak perlu membebaskan memori yang dialokasikan, karena semua
dilakukan oleh Mesin Virtual Java. Java juga mendukung penulisan program
multi jalinan, yaitu suatu program yang dapat melakukan lebih dari satu
pekerjaan dalam waktu yang bersamaan.
2. Berorientasi Objek (Object Oriented)
Java mengunakan pemrograman berorientasi objek yang membuat
program dapat dibuat secara modular dan dapat dipergunakan kembali.
12
Pemrograman berorientasi objek memodelkan dunia nyata kedalam objek
dan melakukan interaksi antar objek-objek tersebut.
3. Terdistribusi (Distributed)
Java dibuat untuk membuat aplikasi terdistribusi secara mudah
dengan adanya libraries networking yang terintegrasi pada Java.
4. Interpreted
Program Java dijalankan menggunakan interpreter yaitu Java Virtual
Machine (JVM). Hal ini menyebabkan source code Java yang telah
dikompilasi menjadi Java bytecodes dapat dijalankan pada platform yang
berbeda-beda.
5. Robust
Java mempuyai reliabilitas yang tinggi. Compiler pada Java
mempunyai kemampuan mendeteksi error secara lebih teliti dibandingkan
bahasa pemrograman lain. Java mempunyai Runtime-Exception handling
untuk membantu mengatasi error pada pemrograman.
6. Secure
Sebagai bahasa pemrograman untuk aplikasi internet dan terdistribusi,
Java memiliki beberapa mekanisme keamanan untuk menjaga aplikasi tidak
digunakan untuk merusak sistem komputer yang menjalankan aplikasi
tersebut.
7. Architecture Neutral
13
Program Java merupakan platform independent. Program cukup
mempunyai satu buah versi yang dapat dijalankan pada platform berbeda
dengan Java Virtual Machine(JVM).
8. Portabel
Source code maupun program Java dapat dengan mudah dibawa ke
platform yang berbeda-beda tanpa harus dikompilasi ulang.
9. Performance
Performance pada Java sering dikatakan kurang tinggi. Namun
performance Java dapat ditingkatkan menggunakan kompilasi Java lain.
10. Multithreaded
Java mempunyai kemampuan untuk membuat suatu program yang
dapat melakukan beberapa pekerjaan secara sekaligus dan simultan.
11. Dynamic
Java didesain untuk dapat dijalankan pada lingkungan yang dinamis.
Perubahan pada suatu class dengan menambahkan properti ataupun metode
dapat dilakukan tanpa menggangu program yang menggunakan class
tersebut.
Kode Java diproses melalui 2 (dua) tahap, yaitu fase kompilasi dan
interpretasi. Dalam fase kompilasi, source code dari Java (file .java) akan
diterjemahkan menjadi sebuah bahasa penengah (intermediate language) yang
14
disebut Java Bytecode (file .class). Setelah itu,bytecode siap untuk
diinterpretasikan atau dijalankan dengan menggunakan Java Virtual Machine
(JVM). (http://wikipedia.org).
Gambar 2.1-1 : Proses Kompilasi dan Interpretasi Kode Java
2.1.1 Teknologi Java
Dengan berkembangnya versi terbaru dari Java yang disebut Java
2, teknologi Java dibagi menjadi 3 (tiga) macam edisi, yaitu :
2.1.1.1 Teknologi Java pada perangkat mobile (J2ME)
Micro edition dari platform Java memenuhi permintaan
dari pengembang untuk menciptakan aplikasi guna memenuhi
kebutuhan pasar dan konsumen. J2ME merupakan teknologi
Java yang menyediakan aplikasi robust untuk berbagai tipe dan
ukuran peralatan wireless dan wireline dari mobile phone, PDA
dan sistem telematik pada kendaraan.
15
2.1.1.2 Teknologi Java pada PC Desktop (J2SE)
Merupakan edisi standar dari platform Java yang
didesain untuk mengembangkan keamanan, kemudahan, dan
aplikasi berperforma tinggi untuk desktop dengan jangkauan
yang luas meliputi sistem operasi seperti Apple Macintosh,
Linux, Microsoft Windows, dan Sun Solaris. Kompatibel
dengan desktop terutama pada lingkungan yang heterogen
sehingga dapat menambah produktifitas pengguna, komunikasi,
dan kolaborasi dengan biaya yang sesuai.
2.1.1.3 Teknologi Java untuk bisnis menengah dan besar (J2EE)
Edisi Enterprise dari Platform Java ini dikhususkan
untuk membantu perkembangan bisnis dengan keperluan
pengembangan yang besar, sebagai contoh server dan aplikasi
desktop dan juga aplikasi wireless mobile dan wireline. Hingga
saat ini telah lebih dari 5 (lima) juta download teknologi Java
Enterprise (J2EE) yang digunakan untuk kepentingan segala
idustri dan tipe aplikasi dari proses manajemen bisnis,
otomatisasi penjualan dan layanan serta produktifitas kantor.
(http://www.sun.com/java)
16
Gambar 2.1-2 : Setiap Edisi Java untuk Perangkat Platform
yang Berbeda
(http://users.telenet.be/javapda/java%20platform.gif)
Dari gambar di atas dapat dilihat bahwa setiap Virtual
Machine digunakan pada lingkungan yang berbeda. Hotspot VM
merupakan Virtual Machine default yang disediakan oleh Sun
untuk mengeksekusi segala skala versi dari Java. CVM (Compact
Virtual Machine) dan KVM (Kilobyte Virtual Machine)
merupakan Virtual Machine yang lebih kecil yang digunakan
untuk menjalankan perangkat mikro, sedangkan Card VM
merupakan Virtual Machine yang digunakan pada kartu
elektronik, sebagai contoh simcard pada mobile phone.
17
2.2 J2ME (Java 2 Micro Edition)
J2ME yang didesain oleh Sun Microsystem, merupakan sekumpulan dari
Java API untuk pengembangan software bagi perangkat kecil seperti PDA, Mobile
Phone, dan aplikasi untuk konsumen lainnya. J2ME dibuat sebagai pengganti dari
teknologi sejenis yang bernama Personal Java. J2ME menjadi pilihan populer
dalam membuat aplikasi seperti games, instant messaging, dan aplikasi lainnya
untuk mobile phone, J2ME juga bias diemulasikan pada PC selama tahap
pengembangan dan dapat dengan mudah diaplikasikan di mobile phone.
(http://en.wikipedia.org)
2.2.1 Arsitektur J2ME
Arsitektur J2ME dibagi menjadi 2 (dua) lapisan, yaitu lapisan
konfigurasi dan profile. Hal ini bertujuan untuk meningkatkan fleksibilitas
dari desain. Pada lapisan konfigurasi, J2ME memiliki 2 (dua) lapisan, yaitu
Connected Limited Device Configuration (CLDC) dan Connected Device
Configuration (CDC). Pada lapisan profile, J2ME memiliki beberapa
lapisan, yaitu Mobile Information Device Profile (MIDP), Foundation
Profile (FP), Personal Profile, Personal Digital Assistance (PDA), Game
Profile, Personal Basis Profile, RMI Profile.
18
Gambar 2.2-1 : Arsitektur J2ME
Dilihat pada Gambar 2.2-1 di atas, J2ME mempunyai lapisan
konfigurasi dan profile yang didukung oleh Java Virtual Machine (C-
Virtual Machine dan K-Virtual Machine).
2.2.1.1 Konfigurasi
Sun memperkenalkan konfigurasi untuk mendukung
jangkauan produk yang luas yang sesuai dengan scope dari
J2ME. Konfigurasi mendefinisikan sebuah Platform Java untuk
perangkat dengan jangkauan yang luas. Konfigurasi terikat erat
dengan Java Virtual Machine. Kenyataannya, konfigurasi
mendefinisikan fitur bahasa Java dan Library Java utama dari
Java Virtual Machine khusus untuk konfigurasi yang berbasis
pada memori, tampilan, konektifitas jaringan, dan kekuatan
proses. Dua konfigurasi yang sudah didefinisikan sekarang ini
19
adalah Connected Device Configuration (CDC) dan Connected
Limited Device Configuration(CLDC).
2.2.1.1.1 Connected Device Configuration (CDC)
CDC bertujuan untuk mengaplikasikan
kemampuan-kemampuan utama dari tiap jenis device,
dimana target CDC tersebut adalah memiliki minimal
memori 2MB termasuk RAM dan ROM. CDC
menspesifikasikan penggunaan Java 2 Platform
Virtual Machine secara penuh disebut juga Compact
Virtual Machine (CVM).
Walaupun CVM mendukung fitur yang sama
seperti J2SE Virtual Machine, CVM dirancang untuk
konsumen dan embedded device. Ini berarti J2SE VM
telah dikembangkan ulang untuk disesuaikan dengan
batasan-batasan dari device yang memiliki sumber
daya terbatas.
2.2.1.1.2 Connected Limited Device Configuration(CLDC)
Menurut buku “Advanced Java 2 Platform –
HOW TO PROGRAM ” karangan Deitel, Deitel, dan
Santry (2002, p758), Connected Limited Device
Configuration (CLDC) merupakan sekumpulan dari
API yang memungkinkan pengembang untuk
20
membuat aplikasi pada peralatan yang memiliki
sumber daya terbatas (keterbatasan besar layer,
memori, power, dan bandwith). J2ME CLDC
memiliki virtual machine dan penerjemah (interpreter)
yang menjalankan aplikasi-aplikasi dan sekumpulan
class yang bisa digunakan pengembang untuk
mengembangkan dan menjalankan program pada
peralatan yang memiliki sumber daya terbatas.
Tujuan dari CLDC adalah untuk
menggambarkan suatu Platform Java standart untuk
device dengan spesifikasi memori kurang dari 512
KB. CLDC untuk Kilo VM (KVM), yang merupakan
JVM yang sudah dioptimalisasi untuk battery –
operated devices (perangkat yang beroperasi dengan
baterai) berdasarkan dari 16-bit atau 32-bit
microprocessor dengan 160 s.d 512 KB memori untuk
Java. Kebutuhan minimal sebagai tempat
penyimpanan untuk KVM dan library yang
berhubungan adalah sekitar 128 KB. Karena variasi
sistem perangakat lunak yang luas pada berbagai
personal divice, contoh : sebuah OS mungkin akan
mendukung berbagai proses secara bersamaan
21
sedangakan OS yang lainnya mungkin atau tidak
mungkin mendukung sistem file.
Berikut persyaratan minimum hardware untuk
menggunakan CLDC :
o Setidaknya terdapat 160 kilobytes dari memorinon-
volatile untuk library virtual machine dan CLDC.
o Setidaknya terdapat 32 kilobytes dari memori
volatile atau heap untuk proses menjalankan
Virtual Machine.
(http://codeidol.com/java/wireless-java/Goals,-
Requirements,-and-Scope/Requirements/)
2.2.1.2 Profile
Lapisan profile merupakan lapisan kedua dari arsitektur
J2ME. Lapisan ini terdiri dari sekumpulan Application
Programming Interface (API). Profile merupakan perpanjangan
dari konfigurasi, yaitu mengatur segala hal yang spesifik untuk
sebuah device. Profile terdiri dari kelas-kelas java yang
menyediakan implementasi dari fitur-fitur untuk small
computing device. Saat ini, terdapat tujuh profile dalam J2ME :
2.2.1.2.1 Mobile Information Device Profile (MIDP)
MIDP digunakan dengan Connected Limited
Device Configuration (CLDC) dan berisi kelas-kelas
22
yang menyediakan penyimpanan lokal, sebuah user
interface, dan kemampuan jaringan untuk sebuah
aplikasi yang berjalan pada perangkat mobile.
2.2.1.2.2 Foundation Profile (FP)
Foundation Profile (FP) digunakan dengan
Connected Device Configuration (CDC). Terdapat
keseluruhan dari kelas-kelas Java yang utama dan
menjadi dasar hampir pada semua Connected Device
Configuration (CDC) profile lain.
2.2.1.2.3 Personal Profile
Personal profile digunakan dengan Connected
Device Configuration (CDC) dan menambah fungsi
user interface dasar untuk foundation profile. Profile
ini menyediakan class yang mengimplementasikan
user interface muktahir yang mampu menampilkan
banyak windows pada waktu yang bersamaan.
2.2.1.2.4 Personal Digital Assistance (PDA) profile
Personal digital assistance digunakan dengan
Connected Limited Device Configuration (CLDC).
PDA menyediakan user interface library yang lebih
muktahir dan java-based API (Application
Programming Interface) untuk mengakses fitur
23
penting dari Host Operating Sistem. PDA profile mirip
dengan MIDP (Mobile Information Device Profile),
namun PDA profile mengacu pada PDA yang
memiliki lapisan yang lebih baik dan lebih banyak
memori dari pada mobile phone.
2.2.1.2.5 Game Profile
profile digunakan dengan Connected Device
Configuration (CDC). Pada game profile disediakan
platform untuk mengembangkan aplikasi game pada
perangkat CDC.
2.2.1.2.6 Personal Basis Profile
Profile ini mirip dengan personal profile. Pada
profile ini disediakan RMI (Remote Invocation)
classes untuk kelas-kelas utama yang terdapat pada
Foundation Profile, digunakan dengan Connected
Device Configuration (CDC) dan Foundation Profile
(FP). Tetapi pada personal basis profile disediakan
kelas-kelas untuk mengimplementasikan sebuah user
interface yang sederhana yang mampu menampilkan
sebuah windows pada satu waktu.
24
2.2.1.2.7 RMI Profile
Profile ini juga digunakan dengan Connected
Device Configuration (CDC).
2.3 Mobile Information Device Profile (MIDP)
MIDP merupakan sekumpulan API (Application Programming Interface)
yang mempermudah pengembang dalam menangani masalah-masalah khusus pada
aplikasi mobile seperti membuat user interface, mengijinkan dalam penyimpanan
lokal, dan mendefinisikan daur hidup dari aplikasi client MIDP (MIDlet). Alat
yang digunakan untuk menjalankan aplikasi menggunakan MIDP disebut MIDP
device. Alat tersebut termasuk mobilephone dan pager.
MIDP merupakan versi dari platform java yang berdasarkan atas CLDC
(Connected Limited Divice Configuration) dan KVM (Kilobyte Virtual Machine)
yang mengacu untuk digunakan pada perangakat informasi mobile dengan
tampilan dan storage (media penyimapanan) yang terbatas, seperti mobile phone
dan beberapa jenis PDA. Oleh karena itu, MIDP menyediakan user interface yang
sederhana dan jaringan. MIDP merupakan profile J2ME yang paling dikenal
karena merupakan dasar bagi wireless java.
Kebutuhan spesifikasi software dan hardware untuk menjalankan MIDP
adalah sebagai berikut :
25
Syarat minimum spesifikasi hardware :
• Memori
o 256 kilobyte dari non-volatile memori untuk komponen MIDP.
Karena MIDP berjalan di atas CLDC, jadi ukuran statistik dari CLDC
harus dimasukkan juga.
o 8 kilobyte dari non-volatile memori untuk aplikasi data yang tetap.
o 128 kilobyte dari volatile memori/heap untuk run time virtual.
• Display
o Ukuran layar : 96 x 54
o Kedalaman tampilan : 1-bit
o Ukuran pixel (aspect radio) : sekitar 1:1
• Input
o ” One – handed keypad ”
o ” Two – handed keyboard ”
o ” Touch screen ”
• Jaringan
o Koneksi 2 arah (two - way), wireless, intermittent, dengan bandwidth
terbatas.
• Suara
o Kemampuan untuk memainkan nada, baik via hardware atau
algoritma software.
Syarat minimum spesifikasi software :
26
• Kemampuan untuk menjalankan beberapa proses dalam waktu yang
bersamaan, masing-masing dengan lokasi memori yang berbeda-beda.
• Kernel minimal untuk mendukung hardware (interupt handling, exception,
dan minimal scheduling).
• Mekanisme untuk membaca dan menulis dari non-volatile memori untuk
mendukung MIDP.
• Kemampuan untuk membaca dan menulis akses untuk jaringan perangkat
wireless untu mendukung jaringan MIDP API.
• Mekanisme untuk menyediakan waktu untuk menulis ke media penyimpanan
dan menyediakan timer dasar API (timer support).
• Kemampuan minimal untuk menulis tampilan grafik bitmap.
• Mekanisme untuk menerima input dari pengguna.
2.3.1 MIDlet (MIDP Application)
MIDlet merupakan program yang ditulis untuk dieksekusikan
pada micro information devices. MIDP memungkinkan eksekusi banyak
MIDlet. MIDlet merupakan bagian dari javax.microedition.midlet.
MIDlet yang terdapat pada MIDP, memiliki file descriptor bernama JAD
pada setiap MIDlet-nya, yang memungkinkan software manejemen
aplikasi pada perangkat mengidentifikasi apa yang diperlukan dalam
instalasi terlebih dahulu.
27
Ada beberapa aturan MIDlet berdasarkan dari run time
environment-nya. Pengatur aplikasi yang ada di dalam perangkat
bertanggung jawab untuk memulai MIDlet. Sebuah aplikasi memiliki
akses sumber daya hanya pada :
• Semua files dalam aplikasi file JAR.
File JAR harus memiliki semua kelas-kelas yang dibutuhkan
untuk menjalankan aplikasi dengan semua sumber daya, seperti file
image dan data pengguna.
• Isi dari MIDlet descriptor file.
• Kelas-kelas yang ada sebagai bagian dari library CLDC dan MIDP.
2.3.2 Siklus hidup MIDlet
Siklus hidup dari sebuah MIDlet ditangani oleh Application
Management Software (AMS). AMS ini adalah sebuah lingkungan
dimana siklus dari sebuah MIDlet mampu diciptakan, dijalankan,
dihentikan, maupun dihilangkan. AMS sering pula dinamakan dengan
Java Application Manager (JAM).
MIDlet memiliki beberapa state atau keadaan yaitu pause, active,
dan destroy. Ketika masing-masing state dipanggil, beberapa metode-
metode standard yang bersesuaian dipanggil. Metode-metode ini
merupakan bawaan dari J2ME.
28
Gambar 2.3-1 : MIdlet Lifecycle
Urutan eksekusi MIDlet :
1. Ketika MIDlet pertama kali diciptakan dan diinisialisasi, maka MIDlet akan
barada dalam state “pause”.
2. Apabila terjadi kesalahan selama konstruksi MIDlet, maka MIDlet akan
berpindah ke state ”destroy”, dan MIDlet batal diciptakan dengan jalan
memanggil fungsi standar destroyApp().
3. Selanjutnya, ketika MIDlet dijalankan, maka MIDlet akan berada pada state
”active”, dalam hal ini fungsi stnadar yang dipanggil adalah startApp().
4. Akan terjadi jika di tengah jalan MIDlet dihentikan sementara, maka MIDlet
akan berada dalam state ”pause” dengan jalan memanggil fungsi standar
pauseApp(). Pada state ini diperlukan proses cleanup terhadap garbage
collector yang dihasilkan.
29
2.4 SMSLib
SMSLib adalah pustaka java (java library) yang dapat digunakan untuk
menerima atau mengirim SMS (Short Message Service) dengan menggunakan
modem GSM atau seluler GSM yang sesuai. SMSLib juga mendukunga beberapa
operator SMS besat (hanya untuk pesan outbound ). Secara umum, SMSLib
mempunyai fungsi :
• Mendukung seluler GSM dan modem GSM yang dikoneksikan menggunakan
serial port atau IP
• Bekerja pada PDU atau protokol teks
• Mendukung inbound dan outbound teks pesan sederhana
• Pesan kilat
• Pesan outbound dengan informasi atau alamat port
• Outbound pesan WAP PUSH SI
• Laporan status (pengiriman) pesan
• Informasi dasar GSM yang tersedia : modem, manufaktur, S/W revisi, level
sinyal, dan lain-lain.
SMSLib mempunyai konsep gateway, dimana antarmuka pada perangkat
atau servis dapat mengirim dan atau menerima pesan SMS. Gateway dapat berupa
modem GSM atau SMS provider. SMSLib dapat mengatasi beberapa gateway
dalam waktu yang bersamaan. SMSLib menawarkan tanpa terbatas prioritas setiap
pesan yang dapat digunakan untuk mengirim pesan. Ketika ini mungkin, prioritas
30
SMSLib dapat dipetakan secara langsung ke fungsi gateway, jika tidak mereka
akan disimulasikan.
SMSLib memberikan dua pilihan untuk menerima pesan :
• Synchronously : kita dapat mengambil tanggung jawab dan secara periode
memanggil metode baca()/read().
• Asynchronously: menunggu SMSLib untuk memanggil sampai pesan
diterima.
SMSLib memberikan dua pilihan untuk mengirim pesan :
• Synchronously : ketika SMSLib dipanggil untk mengirim pesan, thread di
blok sampai pesan diterima atau gagal terkirim.
• Asynchronously: ketika SMSLib dipanggil untuk mengirim pesan, thread
tidak diblok dan SMSLib kembali secepatnya. SMSLib mengurutkan pesan
dan mengirim pesan-pesan tersebut di belakang .
SMSLib memberi pilihan untuk mendefinisikan metode callback dimana
akan dipanggil ketika sesuatu terjadi :
• Inbound voice calls : SMSLib dapat diatur untuk memanggil saat diterima
oleh voice call.
• Inbound message : Setiap pesan diterima, SMSLib dapat mengatur
panggilan dalam metode yang spesifik.
• Outbound: ketika pesan yang dikirim diasynchronomiskan, SMSLib dapat
diatur untuk memanggil metode spesifik dengan pesan dikirim.
31
• Perubahan status gateway : SMSLib dapat memberitahukan setiap gateway
mengubah status.
• Queque operasi mengirim:SMSLib dapat memberitahukan bahwa setiap
saat untuk siap mengirim pesan dengan urutan background.
2.5 Keamanan (Security)
Aspek-aspek yang berkaitan dengan ancaman keamanan yaitu :
• Interruption
Data atau informasi yang berada pada sistemkomputer rusak atau dibuang
sehingga menjadi tidak ada dan tidak berguna.
• Interception
Orang yang tidak berhak berhasil mendapatkan akses informasi dari dalam
sistem komputer.
• Modification
Orang yang tidak berhak, tidak hanya berhasil mendapatkan akses informasi
dari dalam sistem komputer, tetapi juga dapat melakukan perubahan terhadap
informasi.
• Fabrication
Orang yang tidak berhak, meniru atau memalsukan suatu objek ke dalam
sistem.
32
Klasifikasi keamanan pada sistem informasi :
• Network Security
Fokus kepada media pembawa informasi / data, seperti jaringan komputer.
• Komputer Security
Fokus kepada komputer (server, workstation, terminal), termasuk masalah di
dalamnya yang berhubungan dengan sistem operasi.
• Application Security
Fokus kepada program aplikasi (software) dan database.
2.6 Kriptografi
Serangan terhadap sistem jaringan komputer dan keamanan data membuat
teknik untuk pengamanan data terhadap serangan tersebut pun semakin
berkembang. Berbagai macam cara dikembangkan untuk menghindari serangan
terhadap keamanan data dan sistem jaringan komputer, cara yang sering digunakan
adalah dengan proses enkripsi dan dekripsi.
Enkripsi adalah pengubahan bentuk dari data asli menjadi data yang tidak
mudah dimengerti, sedangkan deskripsi adalah pengubahan dari data yang tidak
mudah dimengerti dikembalikan menjadi data semula atau data asli. Pesan asli
biasanya disebut plaintext, sedangkan pesan yang sudah disandikan disebut
ciphertext. Proses enkripsi dan deskripsi ini disebut dengan kriptografi.
33
Gambar 2.6-1 : Proses Enkripsi dan Dekripsi
Kriptografi, secara umum adalah ilmu dan seni untuk menjaga kerahasian
berita (bruce Schneier – Applied Cryptography). Dalam ilmu ini, dipelajari
bagaimana membuat suatu pesan yang dikirim oleh pengirim, dapat
tersampaikan dengan aman pada penerima dengan cara menyamarkan dalam
bentuk sandi yang tidak mempunyai makna. Kriptografi berfungsi untuk
menjamin penerima bahwa data yang dikirim benar-benar dari pihak pengirim
yang sah dan begitu juga sebaliknya menjamin pengirim bahwa data yang
dikirim sampai pada penerima yang sah. Selain itu, kriptografi menjamin bahwa
data yang mengalami modifikasi akan terdeteksi dan antara pengirim dan
penerima masing-masing tidak dapat menyangkal bahwa telah mengirim atau
menerima data.
Dalam mengantisipasi ancaman keamanan terutama interception,
modification, dan fabrication dalam literature telah diperkenalkan 3 jenis
algoritma kriptografi yaitu :
• Algoritma kriptografi kunci rahasia (algoritma simetris)
Algoritma yang menggunakan kunci yang sama pada enkripsi dan
deskripsinya.
34
Gambar 2.6-2 : Enkripsi dan Deskripsi Kunci Simetris
Berdasarkan jumlah data per proses dan alur pengolahan data di
dalamnya, algoritma kunci simetris ini dibedakan menjadi dua kelas, yaitu block-
cipher dan stream-cipher. Block-cipher adalah algoritma yang akan membagi-
bagi plaintext yang akan dikirim dengan ukuran tertentu (disebut blok) dengan
panjang t, dan setiap blok dienkripsi dengan menggunakan kunci yang sama.
Pada umumnya, block-cipher memproses teks pada plaintext dengan blok yang
relatif panjangnya lebih dari 64 bit. Hal ini dilakukan untuk mempersulit
penggunaan pola-pola serangan yang ada untuk membongkar kunci. Sedangkan,
stream-cipher adalah algoritma yang mengenkripsikan data persatuan data,
seperti bit, byte, nible, atau per lima bit. Setiap mengenkripsikan satu satuan
data, digunakan kunci yang merupakan hasil pembangkitan dari kunci
sebelumnya.
Penggunaan metode algoritma simetris ini membutuhkan persetujuan
antara pengirim dan penerima tentang kunci sebelum mereka saling mengirim
pesan. Keamanan dari kunci simetris tergantung pada kerahasiaan kunci, apabila
35
seorang penyusup dapat menemukan kunci maka dengan mudah dapat membaca
pesan yang sudah dienkripsi.
Contoh algoritma kriptografi kunci rahasia (algoritma simetris) : DES,
IDEA, AES (blok chiper), OTP, A5, RC4 (stream chiper).
• Algoritma kriptografi kunci publik (algoritma asimetris)
Algoritma yang mempergunakan kunci yang berbeda-beda enkripsi
dan deskripsinya.
Gambar 2.6-3: Enkripsi dan Deskripsi Kunci Asimetris
Pada metode ini, kunci untuk enkripsi boleh disebarluaskan kepada
umum. Sedangkan, kunci untuk mendeskripsikan hanya disimpan oleh orang
yang bersangkutan. Seperti pada gambar 2.6-3, bila seseorang ingin mengirim
pesan kepada orang lain maka orang tersebut mengenkripsi pesan yang kita kirim
kepadanya lalu orang tersebut akan mendeskripsikan pesan tersebut dengan
36
kunci privat miliknya. Contoh algoritma Asimetris : Knapsack, RSA(Rivert-
Shamir-Adelman), Diffie-Hellman.
Contoh algoritma kunci public (algoritma asimetris) : RSA, DH, ECC,
DSA
• Fungsi hash satu arah
Fungsi ini biasanya digunakan bila kita menginginkan pengambilan
sidik jari suatu pesan. Dinamakan juga sebagai fungsi kompresi karena
biasanya, masukkan dari fungsi satu arah ini selalu lebih besar dari pada
keluarannya. Hal inilah yang menyebabkan terjadinya kompresi. Namun,
kompresi hasil fungsi ini tidak dapat dikembalikan ke asalnya. Hal inilah
yang menyebabkan fungsi ini disebut fungsi satu arah.Contoh algoritma
fungsi hash antara lain, MD4, MD5, SHA-0, SHA-1, SHA-256, SHA-512.
Terdapat empat tujuan dasar dari ilmu kriptografi yang juga
merupakan aspek keamanan data yaitu :
• Authority
Informasi yang berada pada sistem jaringan hanya dapat dimodifikasi
oleh pihak yang memiliki otoritas atau kunci rahasia.
• Non-Repudiation
Usaha untuk mencegah terjadinya penyangkalan terhadap pengiriman
atau terciptanya suatu informasi oleh yang mengirimkan atau membuat.
• Integrity
37
Berhubungan dengan penjagaan dari perubahan data secara tidak sah.
Sistem dirancang untuk mampu mendeteksi menipulasi data oleh pihak-
pihak yang tidak berhak, antara lain penyisipan, penghapusan, dan
pensubsitusian data lain kedalam data yang sebenarnya.
• Authentication
Berhubungan dengan indentifikasi atau pengenalan, baik secara kesatuan
sistem maupun informasi itu sendiri. Dua pihak yang saling
berkomunikasi harus saling memperkenalkan diri. Informasi yang
dikirimkan melalui kanal harus diautentifikasi keaslian, isi data, waktu
pengiriman, dan lain-lain.
2.7 Algoritma Twofish
Pada tahun 1972 dan 1974, National of Standart (yang sekarang bernama
NIST) mengumumkan adanya standar enkripsi, yaitu DES yang sangat beralasan
karena penggunaannya yang luas dan merupakan algoritma yang sangat sukses di
dunia. Dalam proses perkembangannya ternyata key-key dalam DES dirasa terlalu
pendek bagi keamanan komersial sehingga membuat gusar para kriptografer yang
menginginkan proses algoritma yang “closed door”. Akhirnya, NIST
mengumumkan Advanced Encryption Standard (AES) pada tahun 1997. Salah
satu kandidat AES adalah Twofish.
38
Twofish merupakan 128-bit block sandi/cipher yang bisa menerima
panjang varibel kunci/key sebesar 256 bit. Cipher tersebut berasal 16-round
jaringan Feitsel dengan fungsi bijektif F yang dilanjutkan dengan empat key-
dependent 8-by-b-bit S-boxes, satu fixed 4-by-4 maximum distance separable
matrix over GF(28), satu pseudo-Hadamard transform, satu rotasi bitwise dan satu
desain key schedule.
2.7.1 Mekanisme Kerja Twofish
Desain Twofish ditekankan pada kinerjanya. Implementasi dari
Twofish sangat efisien pada beragam platform, yaitu CPU 32 bit, smart
card 8 bit, dan perangkat VLSI. Desain twofish memungkinkan kinerja
beberapa layer, tergantung pada kepentingan relative terhadap kecepatan
enkripsi, key setup, penggunaan memori, hardware gate count, dan
parameter implementasi yang lain. Hasilnya adalah algoritma yang sangat
fleksibel yang dapat diimplementasikan secara efisien dalam beragam
aplikasi kriptografi.
Algoritma Twofish telah diimplementasikan empat macam pilihan
keying yang berbeda. Terdapat beberapa pilihan keying yang mungkin,
dimana masing – masing mempunyai perbedaasn tipis dalam hal key setup.
Empat macam keying tersebut adalah :
1. Full Keying
39
Pilihan ini melakukan parkomputasi terhadap kunci. Dalam
menggunakan pilihan ini, suatu komputasi dari g berisi empat buah
tabel pencarian, dan tiga buah operasi XOR. Sementara itu, kecepatan
enkripsi dan deskripsinya bernilai konstan tanpa menghiraukan ukuran
kunci.
2. Partial Keying
Pada aplikasi yang sebagian kecil blok dienkripsikan dengan
kunci tunggal tidak akan menjadi masalah dalam membangun key
schedule yang lengkap. Pilihan ini melakukan prakomputasi terhadap
empat S-boxes dalam tabel berukuran 8 x 8 bit, dan menggunakan
empat buah tabel MDS 8 x 32 bita untuk melakukan perkalian MDS.
Kecepatan deskripsi dan enkripsi tidak menghiraukan ukuran kunci.
3. Minimal Keying
Pada aplikasi yang mengenkripsikan sangat sedikit bagian dari
blok dengan kunci tunggal, terdapat kemungkinan optimasi yang lebih
jauh. Penggunaan pilihan Minimal Keying ini hanya memerlukan
sebuah tabel 1 Kb untuk menampung S-boxes yang diprakomputasi
secara parsial. Pentingnya byte key dari S yang diprakomputasi adalah
leyaknya mereka diperlukan dalam setiap round.
4. Zero Keying
Pilihan ini tidak melakukan prakomputasi terhadap S-boxes,
dan juga tidak memerlukan tabel ekstra. Sebagai gantinya, setiap entri
di komputasi secara melayang. Waktu key setup secara murni
digunakan untuk melakukan komputasi terhadap nilai Ki dan S. Untuk
40
aplikasi yang tidak memiliki waktu key setup sama sekali, waktu yang
digunakan untuk mengenkripsikan satu blok adalah penjumlahan dari
waktu key setup dan waktu enkripsi zero keying.
2.7.2 Proses Algoritma Twofish
Gambar 2.7-1 : Struktur Algoritma Twofish
2.7.3 Kriptanalis pada Twofish
Lebih dari seribu jam telah dilakukan kriptanalis terhadap twofish.
Sebuah catatan penting dari attack yang berhasil dilakukan terhadapnya
adalah sebagai berikut:
41
a. 5- round twofish dengan 2 22,5 pasangan plaintext terpilih dan 251
komputasi fungsi g
b. 10 round twofish dengan sebuah key attack terpilih,memerlukan 232
palintext terpilih dan sekitar 232 plaintext terpilih yang adaptif dan
sekitar 232 usaha.
Fakta bahwa twofish mampu menahan related key attack dengan
baik merupakan fakta yang paling menarik dan beralasan, karena related-
key memberikan kepada attacker hampir semua kontrol terhadap input
cipher. Kriptanalis konvensional memungkinkan suatu attacker
mengontrol input plaintext dan ciphertext didalam cipher, yaitu key-
schedule.
Berdasarkan hasil analisis ini, dapat diterka bahwa tidak lagi
terdapat attack yang efisien terhadap twofish selain brute force yaitu
attack yang paling efisien untuk melawan twofish dengan key 128 bit
harus memiliki kompleksitas 2128, sementara untuk twofish dengan key
192 bit harus menggunakan attack dengan kompleksitas 2192 dan untuk
twofish dengan key 256 bit harus menggunakan attack dengan
kompleksitas 2 256.
Salah satu attack yang dibahas disini adalah adalah Partial Key
Guessing Attack. Sebuah key schedule yang bagus harus memiliki
properti dimana ketika attacker menebak beberapa subset dari bit- bit
key, attacker tidak memahami tentang urutan subkey atau operasi internal
lainnya di dalam cipher tersebut. Dan twofish memiliki tipe key schedule
yang seperti itu.
42
Misalnya, ada sebuah attacker yang menebak suatu kata genap
dari key Mc. Attacker tidak mempelajari apapun dari key S, untuk tiap
round blok subkey, ia mengetahui Ai. Jika ia menebak dengan suatu Ko, ia
dapat menghitung K1 yang besesuaian. Ia dapat melakukan attack round
subkey sebanyak yang dia suka, tapi tiap tebakan memakan 32 bit. Dapat
dilihat bahwa tidak ada jalan bagi attacker untuk menguji tebakan 96 bit
sekalipun hanya satu round subkey dengan cara ini terhadap full Twofish.
Jalan lainnya adalah dengan menebak input key S terhadap G. Cara ini
hanyalah setengah jalan dari full key M , tapi tidak memberikan informasi
tentang round key AI. Dapat dilihat bahwa dengan cara ini pun tak ada
jalan bagi attacker untuk menguji tebakan s terhadap twofish 16 round
yang penuh sehingga analisis menyarankan bahwa attack terhadap full
Twofish dengan menggunakan diferensial realeted key , adalah suatu
pekerjaan yang sia- sia karena resistensi cipher Twofish yang handal
terhadap attacker sejenis.
2.7.4 Keunggulan Twofish
Keunggulan algoritma kriptografi Twofish adalah sebagai berikut :
• Memiliki varian dengan sebuah nomor variabel dari setiap round.
• Memiliki key schedule yang dapat diprakomputasikanuntuk kecepatan
maksimum dan penggunaan memori manimum.
43
• Cocok sebagai stream chipper, fungsi hash satu arah, MAC dan
pseudo random number generator, dengan menggunakan metode
konstruksi yang dapat dimengerti.
• Memiliki varian famili-key untuk memungkinkan versi chipper yang
berbeda dan non-interrupterable.
Selain itu, algoritma twofish memenuhi kriteria yang ditetapkan
oleh NIST yaitu :
• Block chiper simetris 128-bit
• Memiliki panjang kunci antara lain : 128 bit, 192 bit, dan 256 bit.
• Tidak terdapat kunci – kunci yang lemah.
• Memiliki efisiensi pada software dan hardware dari platform yang
berbeda.
• Memiliki rancangan yang fleksibel, misalnya menerima panjang
kunci tambahan, dapat diterapkan pada software dan hardware dari
platform berbeda, cocok untuk stream chipper, fungsi hash dan MAC.
• Desain yang sederhana, memudahkan baik untuk analisa maupun
implementasi.
Pemenuhan Twofish terhadap kriteria yang dibutuhkan NIST,
yaitu 128-bit block, 128 bit, dan 192 bit, dan 256 bit membuat Twofish
efisien terhadap platform manapun. Twofish mampu melakukan :
a. Melakukan enkripsi data pada 285 siklus per block di atas Pentium
Pro setelah menjalankan key setup 12700 siklus clock.
44
b. Melakukan enkripsi data pada 860 siklus per block di atas Pentium
Pro setelah menjalankan key setup 1250 siklus clock.
c. Melakukan enkripsi data pada 26500 siklus per block di atas sebuah
6805 smart card setelah mejalankan key setup 1750 siklus clock.
2.8 MD5 (Message – Digest Algorithm)
MD5 (Message-Digest algorithm) ialah fungsi hash kriptografik yang
digunakan secara luas dengan nilai hash 128-bit. MD5 di desain oleh Ronald
Rivest pada tahun 1991 untuk menggantikan hash function sebelumnya, MD4.
Enkripsi MD5 memang irreversible namun penggunaannya adalah dengan
membandingkan data yang tersimpan (sudah terenkripsi) dengan hasil enkripsi
data yang akan dibandingkan. Sehingga pengujian dapat dilakukan tanpa harus
mengembalikan (dekrip) data.
2.8.1 Algoritma MD5
Terdapat empat langkah pokok dalam proses pembuatan message
digest pada algoritma MD5, yaitu :
1. Penambahan Bit-Bit Pengganjal
45
Pesan ditambah dengan bit-bit pengganjal hingga panjang
pesan (dalam satuan bit) kongruen dengan 448 modulo 512. Hal ini
berarti bahwa panjang pesan setelah ditambahi bit-bit pengganjal
adalah 64 bit kurang dari kelipatan 512. Angka 512 muncul karena
MD5 memproses pesan dalam blok-blok yang berukuran 512. Pesan
dengan pankang 448 bit pun tetap ditambah dengan bit-bit
pengganjal. Jika panjang pesan 448 bit, maka pesan tersebut
ditambah dengan 512 bit menjadi 960 bit. Jadi, panjang bit-bit
pengganjal adalah antara 1 sampai 512. Bit-bit pengganjal terdiri
dari sebuah bit 1 diikuti dengan sisanya 0 bit.
2. Penambahan Nilai Panjang Pesan Semula
Pesan yang telah diberi bit-bit pengganjal selanjutnya
ditambah lagi dengan 64 bit yang menyatakan panjang pesan
semula. Jika panjang pesan > 264 maka yang diambil adalah
panjangnya dalam modulo 264. Dengan kata lain, jika panjang
pesan semula adalah K bit, maka 64 bit yang ditambahkan
menyatakan K modulo 264. Setelah ditambah dengan 64 bit,
panjang pesan sekarang menjadi kelipatan 512 bit.
3. Inisialisasi Penyangga (Buffer) MD Sebagai Nilai Awal
MD5 membutuhkan 4 buah penyangga (buffer) yang
masing-masing panjangnya 32 bit. Total panjang penyangga adalah
4 x 32 = 128 bit. Keempat penyangga ini menampung hasil antara
dan hasil akhir. Keempat penyangga ini diberi nama A, B, C, D.
46
Setiap penyangga diinisialisasi dengan nilai-nilai (dalam notasi
HEX) sebagai berikut :
(Catatan : beberapa versi MD5 menggunakan nilai inisialisasi
yang berbeda, yaitu :
A = 67 45 23 01
B = EF CD AB 89
C = 98 BA DC FE
D = 10 32 54 67
4. Pengolahan Pesan dalam Blok Berukuran 512 Bit
Pesan dibagi menjadi L buah blok yang masingmasing
panjangnya 512 bit (Y0 sampai YL-1). Setiap blok 512-bit diproses
bersama dengan penyangga MD menjadi keluaran 128-bit, dan ini
disebut proses HMD5, Gambar proses HMD5 diperlihatkan pada
Gambar 2.8-1.
47
Gambar 2.8-1 : Proses Manipulasi Blok 512 bit dalam MD5
48
Proses H terdiri dari 4 putaran, dan masing-masing putaran melakukan
operasi dasar MD5 sebanyak 16 kali dan setiap kali operasi dasar memakai
sebuah elemen T. Jadi setiap putaran memakai 16 elemen tabel T. Pada gambar,
Yq di atas menyatakan blok 512 bit ke-q dari pesan yang telah ditambah bit-bit
pengganjal dan tambahan 64 bit nilai panjang pesan semula. MDq adalah nilai
message digest 128 bit dari proses H ke-q . pada awal proses, MDq berisi nilai
inisialisasi penyangga MD.
Fungsi-fungsi fF, fG, fH, dan fI masing-maisng berisi 16 kali operasi dasar
terhadap masukkan, setiap operasi dasar menggunakan elemen tabel T.
a b c d
g
+
+
+
CLSs
+
X[k]
T[i]
Gambar 2.8-2 : Operasi Dasar MD5
49
Operasi dasar MD5 ditulis dengan sebuah persamaan sebagai berikut :
a ← b + CLSs(a + g(b,c,d) + X[k] + T[i])
dimana,
• a,b,c,d = empat buah variable penyangga 32 bit (berisi nilai
penyangga A,B,C,D)
• g = salah satu fungsi F,G,H,I
• CLSs = Circular Left Shift sebanyak s bit (notasi : <<<s)
• X[k] = kelompok 32 bit ke-k dari blok 512 bit message ke-q. Nilai
k=0 sampai 15
• T[i] = elemen Tabel T ke-i (32 bit)
• + = operasi penjumlahan modulo 232
Karena ada 16 kali operasi dasar, maka setiap kali selesai satu operasi
dasar, penyangga-penyangga tersebut ke kanan secara sirkuler dengan cara
pertukaran sebagai berikut :
temp ← d
d ← c
c ← b
b ← a
a ← temp
50
2.8.2 Kelemahan MD5
kekurangan MD5 adalah proses perubahan data asli menjadi MD5
perlu waktu relatif lama, memerlukan hardware komputer yang cukup
besar, semakin besar kemampuan komputer makin cepat kinerjanya.
2.8.3 Kelebihan MD5
Kelebihan dari MD5 adalah sulit untuk dipecahkan walaupun
dengan serangan brute force, tingkat keamanan MD5 adalah salah satu
yang terbaik, tidak bisa diubah kembali menjadi data asli (irreversible),
hasil keluaran MD5 selalu 32 karakter.
2.9 SHA
SHA adalah fungsi hash satu arah yang didesain oleh National Security
Agency (NSA) dan dipublikasikan oleh National Institute of Standarts and
Technology (NIST) sebagai Federal Information Processing Standard (FIPS) pada
tahun 1993. Fungsi hash ini disebut SHA-0 yang pada dua tahun kemudian
dipublikasikan SHA-1 sebagai generasi lanjutan yang juga merupakan revisi dan
perbaikan dari SHA-0. Lalu pada tahun 2002 dipublikasikan empat variasi lainnya,
51
yaitu : SHA-224, SHA-256, SHA-384, dan SHA-512. Keempat variasi ini
termasuk dalam keluarga SHA-2. Detail struktur dan algoritma keluarga SHA
hampir sama.
Perbedaan pada masing-masing variasi SHA dapat dilihat pada tabel di
bawah ini :
SHA-1 SHA-256 SHA-384 SHA-512
Ukuran
message digest
160 256 384 512
Ukuran pesan <264 <264 <2128 <2128
Ukuran block 512 512 1024 1024
Ukuran huruf 32 32 64 64
Number of
steps
80 80 80 80
Keamanan 80 128 192 256
Catatan : 1. Satuan ukuran dalam bits.
2. Referensi keamanan merupakan fakta dari serangan “birthd ay
attack” terhadap message digets dari ukuran n produces
bertubrukan dengan workfaktor sekitar 2n/2.
Tabel 2.9-1 : Perbandingan SHA
52
Keamanan SHA dinyatakan karena secara komputasi tidak dapat
ditemukan isi pesan dari message digest yang dihasilkan, dan tidak dapat
dihasilkan dua pesan yang berbeda menghasilkan message digest yang sama.
Setiap perubahan yang terjadi pada pesan akan menghasilkan message digest yang
berbeda.
2.9.1 SHA -1
SHA-1 menerima masukkan berupa pesan dengan ukuran
maksimum adalah 264 bit dan menghasilkan message digest yang
panjangnya 160 bit. Panjang message digest pada SHA-1 pebih panjang
dari pada yang dihasilkan oleh MD5 yang menghasilkan panjang message
digest 128 bit. Proses SHA-1 secara garis besar adalah sebagai berikut :
1. Penambahan bit-bit pengganjal (padding bits)
Pesan ditambah dengan sejumlah bit pengganjal yang
sedemikian sehingga panjang pesan (dalam satuan bit) kongruen
dengan 448 modul 512. Ini berarti, panjang pesan setelah ditambah
dengan bit-bit pengganjal adalah 64 bit kurang sari kelipatan 512.
Pesandengan panjang 448 bit pun tetapditambah dengan bit-
bitpengganjal.Jika panjang pesan 448 bit, maka pesantersebut ditambah
dengan 512 bitmenjadi 960 bit. Jadi, panjang bit-bitpengganjal adalah
53
antara 1 sam pai 512.Bit-bit pengganjal terdiri dari sebuah bit1 diikuti
dengan sisanya 0.
2. Penambahan nilai panjang pesan semula
Pesan yang telah diberi bit-bit pengganjal, selanjutnya ditambah
lagi dengan 64 bit yang menyatakan panjang pesan semua. Setelah
ditambah dengan 64 bit, panjang pesan sekarang menjadi kelipatan 512
bit.
3. Inisialisasi penyangga (buffer) MD
SHA membutuhkan 5 buah penyangga (buffer) yang masing-
masing panjangnya 32 bit. Total panjang penyangga adalah 5 x 32 bit =
160 bit. Kelima penyangga ini menampung hasil antara dan hasil akhir.
Kelima penyangga tersebut diberi nama A, B, C, D, dan E. Dimana
setiap penyangga diinisialisai dengan nilai-nilai (dalam notasi HEX)
sebagai berikut :
A = 67452301
B = EFCDAB89
C = 98BADCFE
D = 10325476
E = C3D2E1F0
54
Sebagai 32 bit string, setiap penyangga diinisialisasikan dengan
nilai-nilai (dalam notasi HEX) sebagai berikut :
Word A = 67 45 23 01
Word B = EF CD AB 89
Word C = 98 BA DC FE
Word D = 10 32 54 76
Word E = C3 D2 E1 F0
4. Pengelolaan pesan dalam blok berukuran 512 bit
Pseudocode untuk SHA-1 adalah sebagai berikut :
Note 1: All variables are unsigned 32 bits and wrap modulo 232 when
calculating
Note 2: All constants in this pseudo code are in big endian.
Within each word, the most significant byte is stored in the leftmost
byte position
Initialize variables:
h0 = 0x67452301
h1 = 0xEFCDAB89
h2 = 0x98BADCFE
55
h3 = 0x10325476
h4 = 0xC3D2E1F0
Pre-processing:
append the bit '1' to the message
append 0 ≤ k < 512 bits '0', so that the resulting message length (in
bits)
is congruent to 448 ≡ −64 (mod 512)
append length of message (before pre-processing), in bits, as 64-bit
big-endian integer
Process the message in successive 512-bit chunks:
break message into 512-bit chunks
for each chunk
break chunk into sixteen 32-bit big-endian words w[i], 0 ≤ i ≤ 15
Extend the sixteen 32-bit words into eighty 32-bit words:
for i from 16 to 79
w[i] = (w[i-3] xor w[i-8] xor w[i-14] xor w[i-16]) leftrotate 1
Initialize hash value for this chunk:
a = h0
b = h1
56
c = h2
d = h3
e = h4
Main loop:
for i from 0 to 79
if 0 ≤ i ≤ 19 then
f = (b and c) or ((not b) and d)
k = 0x5A827999
else if 20 ≤ i ≤ 39
f = b xor c xor d
k = 0x6ED9EBA1
else if 40 ≤ i ≤ 59
f = (b and c) or (b and d) or (c and d)
k = 0x8F1BBCDC
else if 60 ≤ i ≤ 79
f = b xor c xor d
k = 0xCA62C1D6
temp = (a leftrotate 5) + f + e + k + w[i]
e = d
d = c
c = b leftrotate 30
57
b = a
a = temp
Add this chunk's hash to result so far:
h0 = h0 + a
h1 = h1 + b
h2 = h2 + c
h3 = h3 + d
h4 = h4 + e
Produce the final hash value (big-endian):
digest = hash = h0 append h1 append h2 append h3 append h4
Tabel 2.9-2 : Psedeucode SHA-1
Contoh (SHA-1) :
• SHA1("The quick brown fox jumps over the lazy dog")
= 2fd4e1c6 7a2d28fc ed849ee1 bb76e739 1b93eb12
• // Efek ketika terdapat perubahan di akhir kata "cog" :
SHA1("The quick brown fox jumps over the lazy cog")
= de9f2c7f d25e1b3a fad3e85a 0bd17d9b 100db4b3
• SHA1("")
58
= da39a3ee 5e6b4b0d 3255bfef 95601890 afd80709
2.9.2 SHA-256 dan SHA-512
Psedeucode untuk SHA-256 dan SHA-512 adalah sebagai berikut :
Note 2: All constants in this pseudo code are in big endian
Initialize variables
(first 32 bits of the fractional parts of the square roots of the first 8 primes
2..19):
h0 := 0x6a09e667
h1 := 0xbb67ae85
h2 := 0x3c6ef372
h3 := 0xa54ff53a
h4 := 0x510e527f
h5 := 0x9b05688c
h6 := 0x1f83d9ab
h7 := 0x5be0cd19
Initialize tabel of round constants
(first 32 bits of the fractional parts of the cube roots of the first 64 primes
2..311):
59
k[0..63] :=
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,
0x59f111f1, 0x923f82a4, 0xab1c5ed5,
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74,
0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f,
0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3,
0xd5a79147, 0x06ca6351, 0x14292967,
0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354,
0x766a0abb, 0x81c2c92e, 0x92722c85,
0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,
0xd6990624, 0xf40e3585, 0x106aa070,
0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3,
0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa,
0xa4506ceb, 0xbef9a3f7, 0xc67178f2
Pre-processing:
append the bit '1' to the message
append k bits '0', where k is the minimum number >= 0 such that the
resulting message
length (in bits) is congruent to 448 (mod 512)
60
append length of message (before pre-processing), in bits, as 64-bit big-
endian integer
Process the message in successive 512-bit chunks:
break message into 512-bit chunks
for each chunk
break chunk into sixteen 32-bit big-endian words w[0..15]
Extend the sixteen 32-bit words into sixty-four 32-bit words:
for i from 16 to 63
s0 := (w[i-15] rightrotate 7) xor (w[i-15] rightrotate 18) xor (w[i-
15] rightshift 3)
s1 := (w[i-2] rightrotate 17) xor (w[i-2] rightrotate 19) xor (w[i-2]
rightshift 10)
w[i] := w[i-16] + s0 + w[i-7] + s1
Initialize hash value for this chunk:
a := h0
b := h1
c := h2
d := h3
e := h4
f := h5
61
g := h6
h := h7
Main loop:
for i from 0 to 63
s0 := (a rightrotate 2) xor (a rightrotate 13) xor (a rightrotate 22)
maj := (a and b) xor (a and c) xor (b and c)
t2 := s0 + maj
s1 := (e rightrotate 6) xor (e rightrotate 11) xor (e rightrotate 25)
ch := (e and f) xor ((not e) and g)
t1 := h + s1 + ch + k[i] + w[i]
h := g
g := f
f := e
e := d + t1
d := c
c := b
b := a
a := t1 + t2
Add this chunk's hash to result so far:
h0 := h0 + a
62
h1 := h1 + b
h2 := h2 + c
h3 := h3 + d
h4 := h4 + e
h5 := h5 + f
h6 := h6 + g
h7 := h7 + h
Produce the final hash value (big-endian):
digest = hash = h0 append h1 append h2 append h3 append h4 append
h5 append h6 append h7
Tabel 2.9-3 : Psedeucode SHA-256
Psedeucode pada SHA-512 identik dengan psedeucode pada SHA-
256, tetapi :
• Semua angka panjangnya 64-bit
• Terdapat 80 putaran bukan 64 putaran
• Nilai awal dan konstanta aditif diperluas menjadi 64-bit
• Shift dan jumlah putaran yang digunakan berbeda
Perbedaan standar SHA, antara SHA versi 256 (SHA-256) dan
SHA versi 512 (SHA-512) dapat dilihat pada tabel di bawah ini :
63
SHA-256 SHA-512
Konstanta 32 bit pertama dari
pagian fraksional
cube root dari 64
angka prima pertama
64 bit pertama dari
pagian fraksional cube
root dari 80 angka prima
pertama
Padding 448 mod 512 896 mod 1024
Panjang Panjang pesan asli
ditambah 64 bit
Panjang pesan asli
ditambah 128 bit
Inisialisasi buffer 6A09E667
BB67AE85
3C6EF372
A54FF53A
510E527F
9B05688C
1F83D9AB
5BE0CDI9
6A09E667F3BCC908
BB67AE8584CAA73B
3C6EF372FE94F82B
A54FF53A5F1D36F1
510E527FADE682D1
9B05688C2B3E6C1F
1F83D9ABFB41BD6B
5BE0CDI913E2179
Tabel 2.9-4 : Standar SHA-256 dan SHA-512
(Contoh SHA-256)
• SHA256("The quick brown fox jumps over the lazy dog")
= d7a8fbb3 07d78094 69ca9abc b0082e4f 8d5651e4 6d3cdb76
2d02d0bf 37c9e592
64
• // Efek ketika terdapat perubahan di akhir kata "cog" :
SHA256("The quick brown fox jumps over the lazy cog")
= e4c4d8f3 bf76b692 de791a17 3e053211 50f7a345 b46484fe 427f6acc
7ecc81be
• SHA256("")
= e3b0c442 98fc1c14 9afbf4c8 996fb924 27ae41e4 649b934c a495991b
7852b855
(Contoh SHA-512 )
• SHA512("The quick brown fox jumps over the lazy dog")
= 07e547d9 586f6a73 f73fbac0 435ed769 51218fb7 d0c8d788 a309d785
436bbb64 2e93a252 a954f239 12547d1e 8a3b5ed6 e1bfd709 7821233f
a0538f3d b854fee6
• // Efek ketika terdapat perubahan di akhir kata "cog" :
SHA512("The quick brown fox jumps over the lazy cog")
= 3eeee1d0 e11733ef 152a6c29 503b3ae2 0c4f1f3c da4cb26f 1bc1a41f
91c7fe4a b3bd8649 4049e201 c4bd5155 f31ecb7a 3c860684 3c4cc8df
cab7da11 c8ae5045
• SHA512("")
65
= cf83e135 7eefb8bd f1542850 d66d8007 d620e405 0b5715dc 83f4a921
d36ce9ce 47d0d13c 5d85f2b0 ff8318d2 877eec2f 63b931bd 47417a81
a538327a f927da3e
2.10 AES (Advanced Encryption Standard) Rijndael
AES atau Advanced Encryption Standard merupakan Federal Information
Proccess Standard (FIPS) yang baru. AES merupakan pengganti DES yang
diumumkan usaha pembuatan algoritmanya pada tanggal 2 Januari 1997, oleh
NIST yang merupakan badan penelitian milik pemerintah Amerika Serikat. Untuk
menghindari kontoversi dari standar baru ini, NIST mengadakan lomba terbuka
untuk membuat standart algoritma kriptografi yang baru sebagai pengganti DES.
Persyaratan yang diajukan oleh NIST tentang algoritma yang baru tersebut
adalah :
1. Algoritma yang ditawarka termasuk ke dalam kelompok algoritma kriptografi
simetri berbasis chipper blok.
2. Seluruh rancangan algoritma harus bebas dari royalty.
3. Panjang kunci fleksibel : 128, 192, dan 256 bit.
4. Ukuran blok yang dienkripsi adalah 128 bit.
NIST menerima 15 proposal algoritma yang masuk. Berdasarkan aspek
keamanan algoritma, efisiensi, fleksibilitas, dan kebutuhan memori, pada bulan
66
Agustus 1998, NIST memilih lima finalis yaitu Rijndael, Twofish, Serpent, RC6,
MARS. Dari ke lima finalis ditetapkan Rijndael sebagai AES.
Rijndael termasuk dalam jenis algoritma kriptografi yang sifatnya simetri
dan chipper block. Dengan demikian algoritma ini mempergunakan kunci yang
sama saat enkripsi dan dekripsi serta masukkan dan keluarannya berupa blok
dengan jumlah bit tertentu.
Algoritma Rijndael memiliki operasi dasar matematika yang meliputi
penjumlahan, perkalian, dan perkalian dengan x. Operasi matematika ini berbeda
dengan operasi inter biasa, karena diperasikan dalam operasi finite field.
Rijndael mendukung berbagai variasi ukuran blok dan kunci yang akan
digunakan. Rijndael mendukung panjang kunci 128 bit sampai 256 dengan
kelipatan 32 bit. Namun Rijndael dalam versi AES mempunyai ukuran blok dan
kunci yang tetap sebesar 128, 192, 256 bit. Pemilihan ukuran blok data dan kunci
akan menentukan jumlah proses yang harus dilalui untuk proses enkripsi dan
dekrispsi.
Secara garis besar, operasi algoritma Rijndael pada blok 128-bit dengan
kunci 128-bit adalah sebagai berikut :
1. ArrRoundKey : operasi untuk melakukan XOR antara state awal (plainteks)
dengan chipper key. Tahap ini disebut juga initial round.
2. Putaran sebanyak Nr-1 kali. Proses yang dilakukan pada setiap putaran adalah
:
a. ByteSub : substitusi byte dengan menggunakan tabel substitusi (S-box).
67
b. ShiftRow : pergeseran baris-baris array state secara wrapping.
c. MixColumn : mengacak data di masing-masing kolom array state.
d. AddRoundKey : melakukan XOR antara state sekarang dengan round key.
3. Final round : proses untuk putaran terakhir adalah ByteSub, ShiftRow,
AddRoundKey.
Algoritma Rijndaelmempunyai 3 parametersebagai berikut:
1. plainteks : array yangberukuran 16 byte, yang berisi datamasukan.
2. cipherteks : array yangberukuran 16 byte, yang berisi hasilenkripsi.
3. key : array yang berukuran 16 byte, yang berisi kunci ciphering
(disebutjuga cipher key).
68
2.10.1 Proses Enkripsi Algoritma AES Rijndael
Gambar 2.10-1 : Diagram Proses Enkripsi AES
69
2.10.2 Proses Dekripsi Algoritma AES Rijndael
Gambar 2.10-2 : Diagram Proses Deskripsi AES
70
2.11 CBC (Chiper Block Chaining)
Pada CBC (Chiper Block Chining), input algoritma enkripsi CBC adalah
XOR dari 64 bit selanjutnya pada plaintext dan 64 bit sebelumnya pada chipertext,
kunci yang sama digunakan pada setiap blok. Operasi yang dilakukan di CBC
adalah operasi umpan balik atau yang dikenal dengan umpan berantai (chaining).
Efeknya, kita mempunyai rantai proses urutan blok plaintext yang sama. Untuk
dekripsi, setiap chiper block telah melalui algoritma deskripsi. Kesimpulannya,
karena mekanisme rantai dari CBC, hal ini sesuai untuk panjang enkripsi pesan
yang lebih dari 64 bit.
2.12 Algoritma Pengkodean Base64
Algoritma base64 dirancang untuk menyandikan data biner manapun, ke
dalam sebuah byte, menjadi byte yang bisa dicetak berformat 64-karakter yang
bisa terbaca melalui pesan singkat atau SMS.
Transformasi Base64 merupakan salah satu algoritma untuk Encoding dan
Decoding suatu data ke dalam format ASCII, yang didasarkan pada bilangan dasar
64 atau bisa dikatakan sebagai salah satu metoda yang digunakan untuk
melakukan encoding (penyandian) terhadap data binari. Karakter yang dihasilkan
pada transformasi Base64 ini terdiri dari A..Z, a..z dan 0..9, serta ditambah dengan
71
dua karakter terakhir yang bersimbol yaitu + dan / serta satu buah karakter sama
dengan (=) yang digunakan untuk penyesuaian dan menggenapkan data binary
atau istilahnya disebut sebagai pengisi pad. Karakter simbol yang akan dihasilkan
akan tergantung dari proses algoritma yang berjalan.
Untuk lebih mudah membayangkannya, dalam proses enkripsi dekripsi
data menggunakan algortima transformasi Base 64 akan kita gunakan dua buah
tabel, pertama adalah tabel data encoding dengan 64 radix yang berfungsi untuk
proses pengkorversian dari data binary ke karakter base 64 atau sebaliknya dari
karakter base 64 ke data binary. Selain itu, juga diperlukan tabel ASCII (American
Standard Code for Information Interchange), yang merupakan kode standar yang
digunakan di seluruh dunia untuk “menerjemahkan” jenis huruf besar/kecil,
angka-angka atau simbol-simbol yang berfungsi sebagai standard inputan pertama
kali untuk proses encode decode pada algoritma transformasi Base 64.
Dengan memanfaatkan kedua tabel diatas, maka kita dapat melakukan
proses encoding decoding base64 dari suatu data, baik bersifat text maupun file
.txt. Teknik algoritma Encoding decoding transformasi base64 pun dapat dilihat
pada Gambar 2.12-1 dibawah ini.
72
Gambar 2.12-1 : Algoritma Base64 Encoding
Dari Gambar 2.12-1, terlihat mula-mula data inputan yang sudah berupa
kumpulan binary (hasil ekstrak dari karakter dengan menggunakan tabel ASCII)
dimana satu karakter diwakili 8 bits kemudian kumpulan 8 bits tersebut di ekstrak
menjadi kumpulan per 6 bits yang mewakili satu karakter yang disusun
membentuk 4 bagian per blok (jadi tersusun beberapa blok dimana satu blok
terdapat 24 bit data). Untuk kemungkinan jika terdapat data bit yang tidak
mencapai 6 bits setelah proses ekstrak tadi, solusinya adalah dengan
menambahkan bit 0 pada bit 6 hingga mencapai 6 bit dan bit 1 sisanya hingga
mencapai 24 bit pada blok yang tersisa. Setelah kumpulan bit tersusun menjadi 24
73
bits dimana setiap blok nya dibagi menjadi 4 bagian, yang terdiri dari susunan-
susunan 6 bits, barulah dari setiap bagian 6 bits tersebut data-data binary dapat
dikonversikan menjadi karakter encoding base64 berdasarkan tabel data encoding
64 radix diatas dimana satu bagian 6 bits mewakili satu karakter encoding base64.
Gambar 2.12-2 : Algoritma Base64 Decoding
Pada proses dekripsi berdasarkan gambar algortima decoding diatas,
terlihat inputan data berupa data karakter base64 hasil encoding pada proses
sebelumnya, pertama-tama dengan menggunakan tabel Data Encoding64 Radix,
data karakter di ubah menjadi binary, dimana satu karakter di wakili oleh 6 bits
74
data yang dikelompokkkan dalam blok yang berisi 24 bits data, setelah semua
kumpulan bits data tersusun, kumpulan-kumpulan bits tersebut akan diekstrak
menjadi kumpulan 8 bits data, dimana satu blok berisi 24 bits data akan di ekstrak
menjadi 3 karakter ASCII 8 bits. Kemudian barulah dengan menggunakan tabel
ASCII, kumpulan 8 bits data tersebut di ekstrak menjadi karakter plaintext (8 bits
data mewakili satu karakter Plaintext). 64 karakter yang mampu dicetak yang
digunakan oleh Base64 adalah:
0 A 17 R 34 i 51 z
1 B 18 S 35 j 52 0
2 C 19 T 36 k 53 1
3 D 20 U 37 l 54 2
4 E 21 V 38 m 55 3
5 F 22 W 39 n 56 4
6 G 23 X 40 o 57 5
7 H 24 Y 41 p 58 6
8 I 25 Z 42 q 59 7
9 J 26 a 43 r 60 8
10 K 27 b 44 s 61 9
11 L 28 c 45 t 62 +
12 M 29 d 46 u 63 /
13 N 30 e 47 v
14 O 31 f 48 w
15 P 32 g 49 x
75
16 Q 33 h 50 y
Tabel 2.12-1 : 64 Karakter yang Menggunakan Base64
Proses pengkodean Base64 ini digunakan untuk :
• Membagi byte input stream ke blok dari 3 byte.
• Membagi 24 bit dari sebuah 3-byte blok menjadi 4 kelompok dari 6 bit.
Peta setiap kelompok dari 6 bit ke 1 dicetak karakter, yang didasarkan pada
nilai 6-bit.
• Jika 3-byte terakhir blok memiliki hanya 1 byte dari data input, pad 2 byte dari
nol (\ x0000). Setelah encoding sebagai blok yang normal, menggantikan 2
karakter terakhir dengan 2 tanda sama dengan (==), sehingga proses decoding
tahu 2 bytes dari nol telah di pad.
• Jika 3-byte terakhir blok memiliki hanya 2 byte data input, pad 1 byte nol (\
x00). Setelah encoding sebagai blok yang normal, menimpa 1 terakhir karakter
dengan 1 tanda sama dengan (=), sehingga proses decoding tahu 1 byte dari
nol telah di pad.
• Carriage return (\ r) dan baris baru (\ n) dimasukkan ke dalam karakter output
stream. Mereka akan diabaikan oleh proses decoding.
76
Contoh 1: Input data, 1 byte, "A". Dikodekan output, 4 karakter, "QQ =="
Input Data A
Input Bits 01000001
Padding 01000001 00000000 00000000
\
Groups bit 010000 010000 000000 000000
Pemetaan T T A A
Override Q Q = =
Contoh 2: Input data, 2 byte, "AB". Dikodekan output, 4 karakter, "qui ="
Input Data A B
Input Bits 01000001 01000010
Padding 01000001 01000010 00000000
\
Groups bit 010000 010100 001000 000000
Pemetaan T U aku A
Override Q U I =
Contoh 3: Input data, 3 byte, "ABC". Dikodekan output, 4 karakter, "QUJD"
Input Data A B C
77
Bit input 01000001 01000010 01000011
\
Groups bit 010000 010100 001001 000011
Pemetaan Q U J D
2.13 Arsitektur GSM (Global Sistem for Mobile Communication)
Gambar 2.13-1 : Arsitektur GSM (Global System for Mobile Communication)
Keterangan Gambar 2.13-1 :
• MS (Mobile Station) terdiri dari ME (Mobile Equipment) dan SIM (Subcriber
Identification Module).
78
ME merupakan perangkat keras dan perangkat lunak untuk melakukan
transmisi rasi yang dikenal dengan istilah telepon seluler (ponsel). ME secara
dunik diidentifikasikan dalam format IMEI (International Mobile Equipment).
SIM Card berisi IMSI (International Mobile Subscriber Identity) yang
digunakan untuk menyimpan informasi lainnya seperti phone book atapun
pesan SMS. Walaupun pengguna tidak terotorisasi dengan password ataupun
Personal Identity Number (PIN), SIM card dapat terproteksi.
• BTS (Base Transceiver Station) merupakan alat transceiver (transmitter
receiver) radio pada suatu area. BTS didefinisikan sebagai suatu cell dan
menangani protokol radio-link dengan Mobile Station lewat radio link. BTS
berfungsi sebagai pengirim dan penerima sinyal.
• BSC (Base Station Controller) digunakan untuk mengontrol dan mengatur
bebetara BTS. Selain itu, BSC juga bertanggungjawab untuk memelihara
koneksi saat panggilan dan kepadatan lalu lintas panggilan pada areanya dan
meneruskannya ke network subsystem yang terdiri dari MSC, HLR, VLR,
AUC, dan EIR.
• MSC (Mobile Switch Center) merupakan sebuah network element central dalam
sebuah jaringan GSM. MSC sebagai inti dari jaringan seluler, dimana MSC
berperan untuk interkoneksi hubungan pembicaraan, baik antar selular maupun
dengan jaringan kabel PSTN, ataupun dengan jaringan data.
• OMC (Operation and Management Center) berperan untuk memonitor
operasional jaringan dalam system serta melakukan fungsi konfigurasi remote.
79
• SMSC (Short Message Service Center) bertanggung jawab dalam penyampaian,
penyimpanan dan pengajuan suatu pesan singkat.
• ISC (International Switching Center)
• EIR (Equipment Identity Register) merupakan database yang berisi suatu daftar
valid mobile equipment pada jaringan.
• AUC (Authentication Center) merupakan database proteksi yang menyimpan
salinan dari kunci rahasi (secret key) yang terdapat pada setiap SIM card
pelanggan. Proteksi ini digunakan untuk autentifikasi dan enkripsi pada
channel radio.
• HLR (Home Location Registry) berisi semua informasi administrasi dari setiap
pelanggan yang tersambung pada jaringan GSM. Semua data dan informasi
tersimpan secara permanen.
• VLR (Visitor Location Registry) berisi informasi administrasi terpilih dari HLR
yang digunakan untuk control panggilan dan provisi dari layanan pelanggan
serta control posisi untuk setiap ponsel pada area geografis.
80
2.14 Arsitektur CDMA (Code Division Multiple Access)
2.14.1 Generasi CDMA 2G
Gambar 2.14-1 : Arsitektur Jaringan CDMA 2G
Keterangan Gambar 2.14-1:
• BTS (Base Transceiver Station) : Merupakan perangkat yang langsung
berhubungan dengan End User. BTS akan memancarkan gelombang radio
dalam frekuensi dan jumlah kanal yang disesuaikan dengan lisensi dari
operator telekomunikasi.
• BSC (Base Sistem Controller) : Merupakan perangkat yang menghubungkan
beberapa BTS dan MSC, menggunakan protokol klasik yaitu SS7 (TDM).
81
• MSC (Mobile Switching Center) : Merupakan pusat pengolahan dara pelanggan,
salah satu fungsinya seperti menyambungkan pembicaraan antar pelanggan
dan mencatat data pembicaraan tersebut. MSC juga melakukan koordinasi dan
membangun komunikasi dengan semua perangkat (maupun antar MSC)
dengan mengolah data signalling.
• VLR (Visitor Location Register) : Merupakan tempat penyimpanan semestara
database pelanggan yang berada dalam area layanan dari suatu MSC.
• HLR (Home Location Register) : Merupakan tempat penyimpanan database
pelanggan.
• SMC (Short Message Center) : Merupakan pusat pengolahan layanan pesan
pendek (SMS).
• VMS (Voice Mail Service) : Merupakan tempat penyimpanan pesan suara jika
pelanggan tidak dapat dihubungi (Mailbox).
• PDSN (Packet Data Switching Node) : Merupakan pusat pengendali jaringan
data berbasis paket, yang menghubungkan End User dengan dunia berbasis IP,
contoh: internet.
82
2.14.2 Generasi CDMA 3G
Gambar 2.14-2 : Arsitektur jaringan CDMA 3G
Perbedaan mendasar antara 2G dan 3G adalah adanya pemisah
antara pengolahan signaling (Media Gateway Controller) dan pengolahan
Voice / Trunk (Media Gateway). Selain itu, interface signaling pada MGC
berbasis SS7 (IOS, IS-41, dan ISUP); IP PRI/IUA, SIP-T, dan MEGACO;
R2.
Jenis Protokol di dalam arsitektur 3G beserta fungsinya adalah
sebagai berikut :
• Protokol Signaling (pengontrol panggilan)
83
SIP (Session Initiation Protokol), yaitu protokol yang digunakan untuk
membangun koneksi, memodifikasi, dan menterminasi komunikasi
voice, multimedia, dan conference antara MGC.
SIP-T (SIP for Telephony) : Merupakan protokolsignaling standard
SIP yang memiliki kemampuan untuk mendefinisikan payload ISUP
dari PSTN. Protokol ini digunakan untuk membangun hubungan antar
MGC untuk menirukan fungsi sentral local pada PSTN. Selain itu, SIP-
T juga digunakan untuk mengontrol user yang sedang melakukan
roaming di MGC lain.
• Protokol pengontrol Media Gateway (MGW)
MIGC (Media Gateway Controll Part) adalah protokol yang
digunakan oleh MGC untuk mengontrol operasi (routing) voice (trunk),
data, dan video.
Megaco (H.248 ITU-T) merupakan protokol yang digunakan oleh
MGC untuk mengontrol MGW dalam hal panggilan. Protokol ini
merupakan penyempurnaan dari MGCP dan memiliki kelebihan antara
lain dalam hal efisiensi dan perbaikan sintaks serta dukungan terhadap
protokol UDP dan TCP.
• Protokol Transport
RTP (Real-time Transport Protokol) yaitu protokol dengan fungsi
transportend-to-end yang sesuai dengan aplikasi real-time, contohnya :
suara dan video.
• Protokol Signaling Gateway
84
SIDTRN (Signaling Transport), digunakan oleh MGC sebagai
signaling gateway untuk membawa pesan SS7 ke jaringan yang
berbasis IP.
2.14.3 “Next CDMA” Evolution
Gambar 2.14-3 : Arsitektur Jaringan “Next CDMA” Evolusi
2.15 SMS (Short Message Service)
2.15.1 Definisi SMS
85
SMS (Short Message Service) adalah sebuah mekanisme
penyampaian pesan pendek dalam jaringan bergerak. SMS saat ini menjadi
sebuah fitur mendasar dari setiap telepon seluler. SMS memungkinkan dua
orang atau lebih yang memiliki telepon seluler dapat saling mengirimkan
pesan teks pendek satu sama lain.
Sebuah pesan SMS maksimal terdiri dari 140-bytes, dengan kata
lain, sebuah pesan bias memuat 140 karakter 8-bit, 160 karakter 7-bit, atau
70 karakter 16-bit untuk Bahasa Jepang, Bahasa Mandarin, dan Bahasa
Korea yang memakai Hanzi (Aksara Kanji/Hanja).
Teknologi yang mendukung SMS antara lain adalah Global System
for Mobile Communication (GSM), Time Division Multiple Access
(TDMA), dan Code Division Multiple Access (CDMA). Dengan dukungan
oleh ketiga teknologi ini, SMS menjadi layanan data bergerak yang bersifat
universal.
SMS terdiri dari 2 layanan dasar, yaitu :
• Short Message Mobile Terminated (SMMT),
Yaitu kemampuan sistem GSM untuk menyampaikan pesan
pendek yang dikirimkan dari Service Center (SC) ke Mobile Station
(MS), dan menghasilkan informasi tentang pengirimanitu baik delivery
report atau status report dengan mekanisme tertentu.
• Short Message Mobile Oriented (SMMO),
86
Yaitu kemampuan dari sistem GSM untuk menyampaikan
pesan pendek yang dikirimkan dari Mobile Station (MS) ke satu Short
Message Entity (SME) melalui sebuah Service Center (SC), dan
menghasilkan informasi tentang pengiriman itu, baik delivery report
atau failure report.
2.15.2 Karakteristik SMS
Ada beberapa hal yang menjadi karakteristik pada pesan SMS, yaitu :
• Satu pesan SMS pasti sampai atau tidak sama sekali ke ponsel tujuan.
Jika terjadi kegagalan sistem, time-out, atau karena faktor lain yang
menyebabkan pesan SMS tidak dapat dikirim, akan diberikan
informasi (report) yang menyatakan pesan SMS gagal dikirimkan.
• Jika ponsel yang dituju dalam keadaan tidak aktif maka SMS akan
masuk ke antrian dulu dengan status tertunda (pending) selama belum
time-out, jika sudah time-out maka statusnya menjadi gagal (failed),
SMS akan segera dikirimkan jika ponsel tujuan sudah aktif dengan
status terkirim (delivered).
• SMS berbasis teks menggunakan bandwith yang rendah.
2.15.3 Mekanisme Kerja SMS
87
SMS memiliki prinsip kerja sebagai berikut, ketika pengguna
mengirimkan pesan SMS ke suatu nomor, SMS tersebut tidak akan
langsung dikirimkan ke nomor tujuan, namun akan masuk terlebih dahulu
ke SMSCenter (SMSC) operator telepon yang digunakan oleh pengguna.
SMSCenter sendiri dapat diartikan sebagai sebuah server yang
bertanggung jawab pada proses pengiriman SMS dalam suatu operator.
SMS yang dikirimkan dari suatu ponsel akan masuk dan disimpan ke
dalam SMSC ini, kemudian baru diteruskan ke nomor tujuan SMS
tersebut. Apabila nomor yang dituju sedang mati (offline), SMSC ini akan
menyimpan SMS tersebut untuk sementara waktu hingga nomor tujuan
hidup kembali. Lamanya waktu penyimpanan SMS pada SMSC, sangat
tergantung dari lamanya waktu yang telah ditetapkan oleh operator untuk
menyimpan SMS tersebut. Kemudian nomor yang telah menerima SMS
akan mengirimkan laporan ke SMSC yang menyatakan bahwa SMS telah
diterima. Laporan tersebut kemudian akan diteruskan kembali ke nomor
pengirim SMS.
2.15.4 SMSC (Short Message Service Center)
2.15.4.1 Definisi SMSC
Elemen utama dalam jaringan SMS adalah SMSC.,
dimana di dalamnya terdapat berbagai proses pengolahan pesan
88
pendek. SMSC merupakan sebuah alat yang berada dalam sebuah
jaringan wireless service provider yang dapat melakukan routing
semua SMS. Seperti sebuah email server. SMSC dapat menangani
banyak pertukaran SMS antara dua telepon seluler ataupun dari
sebuah telepon seluler dengan sebuah aplikasi software.
Program SMSC secara khusus melibatkan pesan-pesan
yang didikte oleh operator. Pesan ini dicatat pada komputer dan
dikirim ke pelanggan. Proses penyimpanan dan pengiriman telah
diatur sedemikian rupa sehingga pelanggan yang mematikan
telepon selulernya atau yang berada di luar wilayah cakupan
masih dapat menerima pesan tersebut dalam jangka waktu
tertentu.
2.15.4.2 Mekanisme Kerja SMSC
Mekanisme kerja sebuah SMSC adalah menyimpan dan
melanjutkan. Dengan mekanisme ini, seluruh pesan yang masuk
akan langsung disimpan tanpa melihat status keberadaan tujuan.
Penyampaian ke tujuan akan dilakukan kemuadian dengan terlebih
dahulu mengidentifikasi tujuan dengan mengurutkan entitas-
entitas yang terlibat. Jika nomor tujuan tidak terjangkau, maka
SMSC akan mengulanginya sampai terkirim selama jangka waktu
yang telah ditetapkan. Apabila telah melebihi jangka waktu, maka
pesan akan dihapus. Lama waktu SMS dapat ditampung di SMSC
89
sebelum dapat diterima oleh pelanggan merupakan parameter
yang dapat diatur di dalam SMSC.
Sebuah SMSC harus memiliki keterhandalan yang tinggi,
kapasitas yang cukup, dan harus bersifat fleksibel agar dapat
mengakomodasi pertumbuhan layanan SMS. Selain itu, aplikasi
tersebut harus mampu dioperasikan dengan mudah, begitu juga
dengan pemeliharaannya
2.15.4.3 SMS Gateway
SMS Gateway adalah suatu platform yang menyediakan
mekanisme untuk menghantar dan menerima SMS dari peralatan
mobile (HP, PDA phone, dan lain-lain) yang menggunakan
keyword tertentu. SMS Gateway merupakan SMS interaktif yang
memiliki komunikasi dua arah. SMS Gateway juga bisa
dimanfaatkan untuk keperluan lain seperti halnya melakukan
polling, transaksi perbankan, kuis berhadiah, dan sebagainya.
Mekanisme pada SMS Gateway, ketika SMS Gateway
menerima SMS dari user sesuai dengan format SMS (keyword)
yang telah ditentukan sebelumnya kemudian akan melakukan
validasi data serta melakukan pemrosesan terhadap data-data yang
telah dikirimkan oleh user melalui SMS Gateway. Kemudian
selanjutnya sistem akan mengirimkan informasi hasil dari
pemrosesan data tersebut dalam bentuk format pesan singkat
90
SMSyang berdasarkan keyword sesuai dengan permintaan user
tersebut.
2.16 AT Command
AT Command (Acces Terminal Command) merupakan perintah-perintah
yang dberikan kepada handphone atau GSM/CDMA untuk digunakan dalam
komunikasi telepon dengan Serial Port pada komputer. Dengan perintah AT
Command ini komputer dapat berinteraksi dengan telepon seluler, misalnya
seperti: melihat vendor dari telepon seluler yang digunakan, mengecek koneksi
telepon seluler dengan komputer, membaca pesan yang terdapat pada SIM Card,
mengirim pesan, mendeteksi pesan SMS baru yang masuk secara otomatis,
menghapus pesan dan sebagainya.
Adapun beberapa contoh dalam penggunaan perintah AT Command seperti
tampak pada Tabel 2.16-1.
Perinta Fungsi
AT Mangecek koneksi telepon seluler
AT+CGMI Mengetahui vendor telepon seluler
AT+CNMI Untuk mendeteksi pesan SMS baru
91
AT+CMGL Membuka daftar SMS
AT+CMGR Membaca pesan SMS
AT+CMGS Mengirim pesan SMS
AT+CMGD Menghapus pesan SMS
Tabel 2.16-1 : Perintahw AT Command
2.17 PDU (Protokol Data Unit)
Dalam proses pengiriman atau penerimaan pesan pendek (SMS), data yang
dikirim maupun diterima oleh stasiun bergerak menggunakan salah satu dari 2
mode yang ada, yaitu : mode teks dan mode PDU (Protokol Data Unit).
Model teks hanya digunakan oleh beberapa model telepon seluler. Cara
teks ini hanya merupakan cara enkripsi arus bit yang diwakili PDU. Jika cara ini
digunakan, aplikasi harus dibatasi dengan menetapkan pilihan enkripsi. Jika cara
PDU, enkripsi apapun dapat digunakan.
Dalam mode PDU, pesan yang dikirim berupa informasi dalam bentuk data
dengan beberapa kepala-kepala informasi. Hal ini akan memberikan kemudahan
apabila dalam pengiriman akan dilakukan kompresi data, atau akan dibentuk
sistem enkripsi data dari karakter dalam bentuk untaian bit-bit biner.
92
2.17.1 PDU untuk Mengirim SMS
Contoh:
0691261801000001000C91261832547698000005E8329BFD06
Beberapa pasangan di atas harus kita baca secara dibalik-balik,
misalnya 26 adalah 62, dst. Arti dari data PDU di atas adalah sebagai
berikut :
Bagian Arti
06 Jumlah pasangan nomor SMSCenter (6 pasang = 1
pasang jenis penomoran + 5 pasang nomor SMSC)
91 Jenis penomoran SMSCenter (91 = menggunakan
penomoran internasional)
2618010000 Nomor SMSCenter (6281100000 = SMSC Telkomsel)
01 Tipe SMS (01 = SMS kirim)
93
00 Nomor Referensi SMS (otomatis jadi biarkan 00)
0C Jumlah digit nomor tujuan dalam bilangan heksa (0C =
12 digit)
91 Jenis penomoran pengirim (91 = menggunakan
penomoran internasional)
261832547698 Nomor tujuan pengiriman SMS (628123456789)
00 Bentuk SMS (00 = SMS teks)
00 Skema encoding (00 = skema 7 bit)
05 Jumlah karakter isi pesan dalam heksa (5 karakter)
E8329BFD06 Isi pesan dalam susunan encoding yang dipilih
(E8329BFD06 jika diterjemahkan 7 bit -7 bit adalah
'Hello')
Tabel 2.17-1 : PDU untuk Mengirim SMS
2.17.2 PDU untuk Menerima SMS
Contoh:
94
06912618010000240C9126183254769800008070605103218005E8329BF
D06
Beberapa pasangan di atas harus kita baca secara dibalik-balik,
misalnya 26 adalah 62, dst. Arti dari data PDU di atas adalah sebagai
berikut.
Bagian Arti
06 Jumlah pasangan nomor SMS Center (6 pasang = 1
pasang jenis penomoran + 5 pasang nomor SMSC)
91 Jenis penomoran SMS Center (91 = menggunakan
penomoran internasional)
2618010000 Nomor SMS Center (6281100000 = SMSC Telkomsel)
24 Tipe SMS (24 = SMS terima)
0C Jumlah digit nomor pengirim dalam bilangan heksa (0C
= 12 digit)
91 Jenis penomoran tujuan (91 = menggunakan penomoran
internasional)
261832547698 Nomor pengirim SMS (628123456789)
95
00 Bentuk SMS (00 = SMS teks)
00 Skema encoding (00 = skema 7 bit)
807060 Tanggal pengiriman SMS yaitu 6/7/2008
510321 Jam pengiriman SMS yaitu 15:30:12
80 Standar waktu yang digunakan (GMT+7 Indonesia)
05 Jumlah karakter isi pesan dalam heksa (5 karakter)
E8329BFD06 Isi pesan dalam susunan encoding yang dipilih
(E8329BFD06 jika diterjemahkan 7 bit -7 bit adalah
'Hello')
Tabel 2.17-2 : PDU untuk Menerima SMS
2.18 IMEI (International Mobile Equipment Indentity)
IMEI merupakan sejumlah nomor unik yang biasanya terdapat pada
telepon seluler. IMEI dapat dilihat pada bagian bawah baterai atau dengan cara
mengetik *#06# pada telepon seluler, maka akan muncul di layer nomor IMEI
telepon seluler tersebut (contoh : 351234009564585).
96
Angka-angka inilah yang disebut dengan IMEI (15 digit) atau yang biasa
kita sebut nomor seria. IMEI digunakan pada jaringan GSM untuk
mengidentifikasikan validitas device dan dapat digunakan untuk menghentikan
tindak pencurian akses jaringan telepon.
2.19 Serial Port
Serial port merupakan interface dari komputer yang digunakan untuk
mentransmisikan satu bit data dalam satuan waktu. Secara umum, istilah “serial
port ” mengacu pada port-port tertentu yang menggunakan protokol asinkron.
Serial port ini termasuk port RS-232 pada PC (Personal Komputer) dan serial port
lainnya yang tertanam di dalam sistem.
Serial port ideal digunakan untuk komunikasi antar sistem dengan sistem
atau antar sistem dengan PC. Serial port juga sebuah pilah yang tepat ketika kita
membutuhkan kabel yang panjang atau jaringan dasar antar PC, sistem, atau
kombinasinya.
Satu buah PC dapat memiliki banyak port COM. Untuk memutuskan port
mana yang lebih tepat digunakan, sebuah aplikasi biasanya menyediakan sebuah
combo box, dimana user dapat memilih sendiri port mana yang ingin digunakan.
Aplikasi itu juga dapat menyimpan nama dari port yang terakhir digunakan dan
memilih port tersebut sebagai yang utama jika tersedia. Sebuah aplikasi dapat
97
menyimpan parameter lain seperti bit rate. Pada setiap port COM, sistem operasi
akan memberikan nama pada setiap link seperti COM1, COM2, dan seterusnya.
2.20 Protokol
Protokol adalah sebuah aturan atau standar yang mengatur atau
mengijinkan terjadinya hubungan, komunikasi, dan perpindahan data antara dua
atau lebih titik komputer. Protokol dapat diterapkan pada perangkat keras,
perangkat lunak atau kombinasi dari keduanya. Pada tingkatan yang terendah,
protokol mendefinisikan koneksi perangkat keras.
Protokol perlu diutamakan pada penggunaan standar teknis, untuk
menspesifikasi bagaimana membangun komputer atau menghubungkan peralatan
perangkat keras. Protokol secara umum digunakan pada komunikasi real-time
dimana standar digunakan untuk mengatur struktur dari informasi untuk
penyimpanan jangka panjang.
Sangat susah untuk menggeneralisir protokol dikarenakan protokol
memiliki banyak variasi didalam tujuan penggunaanya. Kebanyakan protokol
memiliki salah satu atau beberapa dari hal berikut:
• Melakukan deteksi adanya koneksi fisik atau ada tidaknya komputer atau
mesin lainnya.
• Melakukan metode "jabat-tangan" (handshaking).
98
• Negosiasi berbagai macam karakteristik hubungan.
• Bagaimana mengawali dan mengakhiri suatu pesan.
• Bagaimana format pesan yang digunakan.
• Yang harus dilakukan saat terjadi kerusakan pesan atau pesan yang tidak
sempurna.
• Mendeteksi rugi-rugi pada hubungan jaringan dan langkah-langkah yang
dilakukan selanjutnya
• Mengakhiri suatu koneksi.
Protokol mendefinisikan apa yang dikomunikasikan, bagaimana, dan kapan
terjadinya komunikasi. Elemen-elemen penting daripada protokol adalah : syntax,
semantics dan timing.
• Syntax mengacu pada struktur atau format data, yang mana dalam urutan
tampilannya memiliki makna tersendiri. Sebagai contoh, sebuah protokol
sederhana akan memiliki urutan pada delapan bit pertama adalah alamat
pengirim, delapan bit kedua adalah alamat penerima dan bit stream sisanya
merupakan informasinya sendiri.
• Semantics mengacu pada maksud setiap section bit. Dengan kata lain adalah
bagaimana bit-bit tersebut terpola untuk dapat diterjemahkan.
• Timing mengacu pada 2 karakteristik yakni kapan data harus dikirim dan
seberapa cepat data tersebut dikirim. Sebagai contoh, jika pengirim
99
memproduksi data sebesar 100 Megabits per detik (Mbps) namun penerima
hanya mampu mengolah data pada kecepatan 1 Mbps, maka transmisi data
akan menjadi overload pada sisi penerima dan akibatnya banyak data yang
akan hilang atau musnah.
Setiap jenis topologi jaringan memiliki protokol tertentu, misalnya pada
topologi Bus dikenal protokol Ethernet, dan pada topologi Cincin dikenal
protokol Token-Ring. Protokol standart komunikasi data yang menjadi acuan
dalam perancangan hardware maupun software jaringan adalah: Model
Referensi OSI (Open System Interconnection) yang ditetapkan oleh organisasi
acuan sedunia ISO (International Standard Organization). Menurut OSI
komunikasi antara dua komponen dalam jaringan memerlukan 7 lapisan, mulai
dari lapisan Aplikasi, dimana pengguna memulai pengiriman datanya, hingga ke
lapisan Fisik, dimana data dalam bentuk sinyal listrik di-transmisikan melalui
media komunikasi.