Implementasi Kompresi-Enkripsi SMS Pada
Implementasi Kompresi-Enkripsi SMS Pada
Trias Fahrudin
1110000356
DOSEN PEMBIMBING
Dwi Yulian RL, S.Kom
i
LEMBAR PERSETUJUAN
PROPOSAL SKRIPSI
Judul : IMPLEMENTASI KOMPRESI - ENKRIPSI SMS
PADA TELEPHON SELULER BERBASIS J2ME
DENGAN ALGORITMA HUFFMAN-VIGENERE CHIPER
Menyetujui:
Dosen Pembimbing:
ii
IMPLEMENTASI KOMPRESI-ENKRIPSI SMS PADA
TELEPHON SELULER BERBASIS J2ME DENGAN
ALGORITMA HUFFMAN-VIGENERE CHIPER
ABSTRAK
iii
diulang secara periodik hingga panjang kunci tersebut sama dengan panjang
plainteksnya
Tujuan utama dari implementasi ini adalah menyediakan keamanan bagi
pengguna SMS dan juga penghematan biaya karena adanya proses kompresi.
iv
LEMBAR PERSETUJUAN
ABSTRAK ............................................................................................................................iii
DAFTAR ISI .........................................................................................................................v
DAFTAR GAMBAR .............................................................................................................vii
DAFTAR TABEL .................................................................................................................viii
BAB 1 PENDAHULUAN........................................................................................................1
1.1 Latar Belakang..........................................................................................................1
1.2. Perumusan Masalah................................................................................................2
1.3.Batasan Masalah......................................................................................................2
1.4. Tujuan dan Manfaat Penelitian...............................................................................2
BAB 2 KAJIAN PUSTAKA......................................................................................................3
2.1 Short Message Service (SMS)...................................................................................3
2.2 Teknologi Java 2.......................................................................................................4
2.3 Java 2 Micro Edition.................................................................................................4
2.3.1 Konfigurasi J2ME...............................................................................................4
2.3.2 Profil J2ME........................................................................................................5
2.4 MIDP dan MIDlet......................................................................................................5
2.4.1 Daur Hidup MIDlet...........................................................................................5
2.4.2 Antarmuka Pemakai..........................................................................................6
2.5 Wireless Messaging API (WMA)...............................................................................7
2.5.1 Interface TextMesage dan BinaryMessage........................................................8
2.5.2 Interface MessageConnection...........................................................................8
2.6 Mengirim SMS........................................................................................................10
2.7 Menerima SMS.......................................................................................................11
2.8 Kompresi Data........................................................................................................11
2.9 Kode Huffman........................................................................................................12
2.4 Dekompresi Algoritma Huffman.............................................................................18
2.10 Kriptografi............................................................................................................19
2.10.1 Algoritma Sandi.............................................................................................20
2.10.2 Algoritma Kunci Simetris...............................................................................22
2.10.3 Algoritma Kunci Asimetris.............................................................................22
2.11 Kriptografi Vigenere.............................................................................................23
v
BAB III METODE PENELITIAN............................................................................................26
3.1 Metode Penelitian................................................................................................26
3.2. Rancangan Algoritma............................................................................................27
3.3 Jadwal Kegiatan.....................................................................................................28
DAFTAR PUSTAKA............................................................................................................29
vi
DAFTAR GAMBAR
Gambar 2.1 Daur hidup MIDlet
Gambar 2.2 Hirarki kelas Displayable
Gambar 2.3 Interface pada paket WMA
Gambar 2.4 Diagram alir pohon Huffman
Gambar 2.5 Pembuatan node
Gambar 2.6 Dua node anak yang membentuk node orang tua
Gambar 2.7 Pohon Huffman yang terbentuk
Gambar 2.8 Pohon Huffman yang telah diberi tanda
Gambar 2.9 Struktur SMS setelah dikompresi
Gambar 2.10 Diagram alir kompresi algoritma Huffman
Gambar 2.11 Diagram alir dekompresi algoritma Huffman
Gambar 2.12 Table Vigenere
Gambar 3.1 Langkah-langkah penelitian.
Gambar 3.2 Proses enkripsi-kompresi SMS
Gambar 3.3 Proses dekompresi-dekripsi SMS
DAFTAR TABEL
vii
Tabel 2.1 Contoh kode ASCII untuk beberapa karakter
Tabel 2.2 Tabel probabilitas dan kode Huffman untuk string MISSISIPPI.
Tabel 2.3. Contoh inputan
Tabel 2.4. Perbandingan Kode ASCII dan Kode Huffman
Tabel 3.1. Perencanaan Jadwal Kegiatan
viii
BAB 1
PENDAHULUAN
1
aman, yaitu dengan cara menghapus pesan secara otomatis segera setelah 40 detik
pesan dibaca atau yang dikenal dengan nama self-destruct text message. Kini
dengan memanfaatkan Wireless Messaging API (Application Programming
Interface) dari J2ME para pembuat program Java dapat mengembangkan sendiri
sebuah aplikasi pengiriman pesan singkat atau SMS yang dimodifikasi untuk
mengamankan pesan.
Oleh karena itu, dalam penelitian ini diusulkan metode untuk melakukan
implementasi metode kompresi-enkripsi pada SMS yang tujuan akhirnya adalah
menyediakan keamanan bagi pengguna SMS dan juga penghematan biaya karena
adanya proses kompresi.
1.3.Batasan Masalah
Input berupa SMS tanpa image
Spesifikasi SMS (panjang satu pesan SMS) disesuaikan dengan standart
teknologi Global System for Mobile Communication (GSM)
Telephon seluler yang digunakan harus mendukung fitur MIDP minimal versi
2.0
2
BAB 2
KAJIAN PUSTAKA
3
Pesan-pesan SMS dikirim dari sebuah telepon genggam ke pusat pesan
atau Short Message Service Center (SMSC), di sini pesan disimpan dan dicoba
dkirim selama beberapa kali. Setelah selama waktu yang telah ditentukan,
biasanya 1 hari atau 2 hari, lalu pesan dihapus. Seorang pengguna bisa
mendapatkan konfirmasi dari pusat pesan ini.
4
ada pada J2SE karena hanya fitur-fitur penting yang berkaitan dengan perangkat
tanpa kabel (Wireless) saja yang diimplementasikan.
Ada 2 konfigurasi pada J2ME, yaitu:
CLDC (Connected Limited Device Configuration)
CLDC merupakan perangkat atau konfigurasi dasar dari J2ME. CLDC
sebenarnya berupa library dan API (Application Programming Interface)
yang diimplementasikan pada J2ME. Konfigurasi ini biasanya untuk alat
kecil seperti telepon seluler (handphone), pager dan PDA. Peralatan tersebut
biasanya mempunyai keterbatasan memori (RAM), sumber daya, dan
kemampuan memproses.
CDC (Connected Device Configuration)
CDC merupakan perangkat atau konfigurasi superset dari CLDC.Konfigurasi
ini biasanya dipakai untuk alat seperti Internet TV, Nokia Communicator dan
Car TV.
5
Daur hidup dari sebuh MIDlet ditangani oleh Aplication Management
Software (AMS). AMS adalah sebuah lingkungan tempat siklus dari sebuah
MIDlet diciptakan, dijalankan, dihentikan, maupun dihilangkan. AMS sering
disebut dengan Java Aplication Manager (JAM). Dalam daur hidupnya MIDlet
memiliki tiga status, yaitu Pause, Active dan, Destroy. Ketika masing-masing
status dipanggil, beberapa fungsi standar yang bersesuaian akan dipanggil.
6
kelas Displayable. Melalui kelas-kelas inilah sebuah aplikasi dapat berinteraksi
dengan pemakai. Pada MIDP, antarmuka terdiri dari API tingkat tinggi (High-
level) dan API tingkat rendah (Low-level). API tingkat tinggi berbasis pada kelas
Screen, sedangkan API tingkat rendah berbasis pada kelas Canvas. Diagram
hirarki dari kelas Displayable dapat dilihat pada gambar 2.2.
Dari gambar 2.2 dapat dilihat bahwa kelas Screen terdiri dari beberapa kelas,
yaitu:
Alert, merupakan kelas yang menyediakan informasi kecil kepada pemakai
yang ditampilkan ke layar sebelum kemudian berpindah ke objek lain.
Biasanya digunakan untuk menampilkan informasi kesalahan (error).
TextBox, merupakan kelas yang menyediakan media untuk menerima
masukan berupa teks.
List, merupakan kelas yang menyediakan masukan pilihan (multiple choice)
pada layar.
Form, merupakan kelas yang menyediakan fasilitas untuk menampung
beberapa item dalam satu layar, seperti gambar (images), kolom tanggal
(datefield), kolom teks (textfield), gauge dan daftar pilihan (choice group).
7
Service Center) maupun MMSC (Multimedia Messaging Service Center). WMA
1.0 menyediakan API (Application Programming Interface) dasar untuk mengirim
dan menerima pesan SMS. WMA 1.0 ini dikembangkan oleh JSR 120. Untuk
menambahkan fitur kedalam WMA, lahirlah WMA 2.0 oleh JSR 205, yang
memiliki fasilitas untuk pengiriman pesan multimedia (MMS). kelas-kelas dalam
paket ini tersimpan dalam paket javax.wireless.messaging.
Dalam proses pengiriman dan penerimaan SMS, terdapat tiga buah
interface yang penting diketahui kegunaannya. Adapun ketiga interface tersebut
adalah TextMessage,BinaryMessage,dan MessageConnection.
8
melakukan proses pengiriman maupun penerimaan pesan. Instance dari
MessageConnection dapat didapatkan dengan cara melewatkan URL tertentu
kedalam method Connector.open() . Berikut ini aturan penulisan URL yang
diizinkan di dalam WMA.
sms://no_telepon. MessageConnection akan mengirimkan pesan ke
nomor telephon tujuan. Pesan akan terkirim ke inbox SMS dari device
tujuan. Dengan demikian, pesan secara otomatis akan diterima oleh
aplikasi yang telah disediakan oleh device bersangkutan, bukan oleh
aplikasi penerima SMS yang di kembangkan sendiri.
sms://no_telephon:port. MessageConnection akan mengirimkan pesan ke
nomor telephon tujuan untuk port yang ditentukan. Disini Pesan tidak akan
terkirim ke inbox SMS dari device tujuan, melainkan akan dikirim desuatu
MIDlet pada device penerima yang bertugas mendengarkan port tersebut
sms://port. MessageConnection akan mendengarkan port yang ditentukan.
Disini MIDlet SMS yang berada di client berperan sebagai server pada
port tertentu. Pesan akan terkirim melalui port tersebut. Koneksi jenis ini
dinamakan dengan koneksi mode server.
cbs://:port. MessageConnection akan mendengarkan pada port tertentu
yang ditetapkan untuk pesan CBS (Cell Broadcast Service)
Interface MessageConnection mendeklarasikan beberapa buah method untuk
keperluan pengiriman dan penerimaan pesan, yaitu sebagai berikut:
Message newMessage(String type)
Message newMessage(String type,String address)
int numOfSegments(Message msg)
Message receive()
void send(Message msg)
void setMessageListener(MessageListener msgListener)
9
bersangkutan dan akan dijalankan ketika terdapat pesan yang masuk. Berikut ini
gambar yang menunjukkan daftar interface pada paket WMA.
Connector
MessageConnection
Message
10
2.7 Menerima SMS
Untuk menerima SMS, kode yang ada sebaiknya ditempatkan dalam
object Thread tersendiri secara terpisah. Method yang diperlukan untuk menerima
pesan adalah method receive() dari object MessageConnection(). Dalam
pembuatan aplikasi yang dapat menerima SMS, diperlukan implementasi interface
MessageListener, yaitu dengan cara mendefinisikan ulang method
notifyIncomingMessage(). Method tersebut memiliki satu buah parameter bertipe
MessageConnection dan akan dieksekusi pada saat terdapat SMS yang masuk.
Berikut ini contoh potongan kode yang diperlukan untuk menerima SMS:
String smsPort = "50000";
String address = "sms://:" + smsPort;
MessageConnection conn =
(MessageConnection) Connector.open(address);
Message msg = conn.receive();
if (msg instanceof TextMessage) {
TextMessage tmsg = (TextMessage) msg;
String text = tmsg.getPayloadText();
//lakukan sesuatu terhadap pesanbersangkutan
}
2. Lossless Compression
11
Sebaliknya Lossless Compression memiliki derajat kompresi yang
lebih rendah tetapi dengan akurasi data yang terjaga antara sebelum dan
sesudah proses kompresi. Kompresi ini cocok untuk basis data, dokumen atau
preadsheet. Pada lossless compression ini tidak diijinkan ada bit yang hilang dari
data pada proses kompresi.
Secara umum kompresi data terdiri dari dua kegiatan besar, yaitu
Modeling dan Coding. Proses dasar dari kompresi data adalah menentukan
serangkaian bagian dari data (stream of symbols) mengubahnya menjadi kode
(stream of codes). Jika proses kompresi efektif maka hasil dari stream of
codes akan lebih kecil dari segi ukuran daripada stream of symbols.
Keputusan untuk mengindentikan symbols tertentu dengan codes tertentu
adalah inti dari proses modeling. Secara umum dapat diartikan bahwa sebuah
model adalah kumpulan data dan aturan yang menentukan pasangan antara
symbol sebagai input dan code sebagai output dari proses kompresi. Sedangkan
coding adalah proses untuk menerapkan modeling tersebut menjadi sebuah
proses kompresi data.
M 01001101
P 01010000
S 01010011
12
I 01001001
Tabel 2.2 Tabel probabilitas dan kode Huffman untuk string MISSISIPPI.
Karakter Probabilitas Peluang Kode Huffman
M 1 1/10 100
P 2 2/10 101
S 3 3/10 11
I 4 1/10 0
13
akan memperoleh kode terpendek, sedangkan karakter dengan probabilitas
terendah akan memperoleh kode terpanjang. Penelusuran pada kode Huffman
dilakukan dari simpul daun ke simpul akar, dari setiap bit akan diperoleh kode
Huffman dan penelusuran selesai jika berakhir pada akar. Setelah penelusuran
selesai, selanjutnya akan menutup jalur yang telah ditelusuri.
Mulai
Node bebas y
>= 2 ?
Selesai
14
M 1/10 100
P 2/10 101
S 3/10 11
I 4/10 0
3. Buatlah node dari tiap karakter serta urutkan karakter dari probabilitas
terkecil sampai probabilitas yang paling besar. Untuk karakter yang memiliki
probabilitas sama, maka disusun berdasarkan susunan dalam standar ASCII.
4. Buat pohon Huffman dari karakter yang sudah diurutkan tadi, dengan
cara mengambil dua node karakter yang paling kecil lalu gabungkan keduanya
dan tambahkan probabilitasnya. Hasil penggabungan dijadikan akar
sedangkan daunnya adalah masing-masing karakter. Lakukan langkah kedua
dan ketiga secara terus-menerus sehingga seluruh karakter tergabung menjadi
akar dengan akumulatif probabilitasnya.
Dari langkah ini akan terbentuk pohon Huffman (Gambar 2.6).
MP = 3
M=1 P=2
Gambar 2.6 Dua node anak yang membentuk node orang tua
5. Setelah pohon terbentuk maka selanjutnya beri tanda tiap daun sebelah
kanan dengan 1, dan sebelah kiri dengan angka 0. (Gambar 2.7 dan Gambat
2.8).
15
IMPS
= 10
I=4 MPS = 6
MP = 3 S=3
M=1 P=2
IMPS
= 10
0 1
I=4 MPS = 6
0 1
MP = 3 S=3
0 1
M=1 P=2
16
Karakter Kode ASCII Kode Huffman
M 01001101 100
P 01010000 101
S 01010011 11
I 01001001 0
000000000000 100011110110
00000100 01001101 01010000 01010011 0100100
000000000000 1011010
Header 24 bit Jenis Karakter Ascii M Ascii P Ascii S Ascii I Isi Pesan
Keterangan:
17
Dengan langkah-langkah diatas, akan diperoleh hasil kompresi. Dengan demikian
kompresi data selesai. Gambar 2.2 adalah diagram alir pohon Huffman, dan
Gambar 2.10 adalah diagram alir kompresi data.
Mulai
Teks/karakter
yang akan
dikompres
Baca teks/karakter
Diperoleh kode
Huffman
Setiap t
karakter telah mendapat
kode Huffman ?
Selesai
18
2. Bentuk pohon Huffman.
3. Telusuri pohon Huffman untuk mendapatkan kode Huffman masing-
masing karakter.
4. Ubah hasil kompresi ke dalam karakter yang sebenarnya.
Alur dekompresi ditunjukkan seperti pada gambar 2.11.
Mulai
Pisahkan kode
Huffman dan modelnya
Sesuai t
tablel kode ?
Lakukan pengembalian
Simpan karakter
Hasil pengembalian
Selesai
2.10 Kriptografi
Kriptografi, secara umum adalah ilmu dan seni untuk menjaga
kerahasiaan berita (Scheneier,2005:22). Selain pengertian tersebut terdapat pula
pengertian ilmu yang mempelajari teknik-teknik matematika yang berhubungan
dengan aspek keamanan informasi seperti kerahasiaan data, keabsahan data,
integritas data, serta autentikasi data. Tidak semua aspek keamanan informasi
ditangani oleh kriptografi.
Ada empat tujuan mendasar dari ilmu kriptografi ini yang juga
merupakan aspek keamanan informasi yaitu :
19
1. Kerahasiaan, adalah layanan yang digunakan untuk menjaga isi dari
informasi dari siapapun kecuali yang memiliki otoritas atau kunci rahasia
untuk membuka/mengupas informasi yang telah disandi.
2. Integritas data, adalah berhubungan dengan penjagaan dari perubahan data
secara tidak sah. Untuk menjaga integritas data, sistem harus memiliki
kemampuan untuk mendeteksi manipulasi data oleh pihak-pihak yang
tidak berhak, antara lain penyisipan, penghapusan, dan pensubsitusian data
lain kedalam data yang sebenarnya.
3. Autentikasi, adalah berhubungan dengan identifikasi/pengenalan, baik
secara kesatuan sistem maupun informasi itu sendiri. Dua pihak yang
saling berkomunikasi harus saling memperkenalkan diri. Informasi yang
dikirimkan melalui kanal harus diautentikasi keaslian, isi datanya, waktu
pengiriman, dan lain-lain.
4. Non-repudiasi., atau nirpenyangkalan adalah usaha untuk mencegah
terjadinya penyangkalan terhadap pengiriman/tercipta nya suatu informasi
oleh yang mengirimkan/membuat.
20
Dasar matematis yang mendasari proses enkripsi dan dekripsi adalah relasi
antara dua himpunan yaitu yang berisi elemen teks terang /plaintext dan yang
berisi elemen teks sandi/ciphertext. Enkripsi dan dekripsi merupakan fungsi
transformasi antara himpunan-himpunan tersebut. Apabila elemen-elemen teks
terang dinotasikan dengan P, elemen-elemen teks sandi dinotasikan dengan C,
sedang untuk proses enkripsi dinotasikan dengan E, dekripsi dengan notasi D.
21
2.10.2 Algoritma Kunci Simetris
Skema algoritma sandi akan disebut kunci-simetris apabila untuk setiap
proses enkripsi maupun dekripsi data secara keseluruhan digunakan kunci yang
sama. Skema ini berdasarkan jumlah data per proses dan alur pengolahan data
didalamnya dibedakan menjadi dua kelas, yaitu block-cipher dan stream-cipher.
a. Block-Cipher
b. Stream-Cipher
Stream-cipher adalah algoritma sandi yang mengenkripsi data persatuan
data, seperti bit, byte, nible atau per lima bit(saat data yang di enkripsi berupa data
Boudout). Setiap mengenkripsi satu satuan data di gunakan kunci yang
merupakan hasil pembangkitan dari kunci sebelumnya.
22
untuk mendekripsi pesan. Berbeda dengan skema kunci-simetris, jumlah kunci
yang dibuat adalah sebanyak jumlah pihak yang diajak berkorespondensi.
Apabila pengirim dan penerima hendak bertukar informasi, maka dilakukan
langkah-langkah sebagai berikut:
23
dengan geseran 3, A menjadi D, B menjadi E and dan seterusnya. Sandi Vigenère
terdiri dari beberapa sandi Caesar dengan nilai geseran yang berbeda.
Untuk menyandikan suatu pesan, digunakan sebuah tabel alfabet yang
disebut tabel Vigenère, sebagaimana terlihat pada Gambar 2.12. Tabel Vigenère
berisi alfabet yang dituliskan dalam 26 baris, masing-masing baris digeser satu
urutan ke kiri dari baris sebelumnya, membentuk ke-26 kemungkinan sandi
Caesar. Setiap huruf disandikan dengan menggunakan baris yang berbeda-beda,
sesuai kata kunci yang diulang.
serbuberlin
Sedangkan kata kunci antara pengirim dan tujuan adalah "Pizza"."PIZZA" diulang
sehingga jumlah hurufnya sama banyak dengan plaintext:
PIZZAPIZZAP
24
Huruf pertama pada plaintext, S, disandikan dengan menggunakan baris
berjudul P, huruf pertama pada kata kunci. Pada baris P dan kolom S di tabel
Vigenère, terdapat huruf H. Demikian pula untuk huruf kedua, digunakan huruf
yang terletak pada baris I (huruf kedua kata kunci) dan kolom E (huruf kedua teks
terang), yaitu huruf M. Proses ini dijalankan terus sehingga
Plaintext: Serbuberlin
Chipertext: HMQAUQMQKIC
Proses dekripsi dilakukan dengan mencari huruf teks bersandi pada baris
berjudul huruf dari kata kunci. Misalnya, pada contoh diatas, untuk huruf pertama,
kita mencari huruf H (huruf pertama teks tersandi) pada baris P (huruf pertama
pada kata kunci), yang terdapat pada kolom S, sehingga huruf pertama adalah S.
Lalu M terdapat pada baris I di kolom E, sehingga diketahui huruf kedua teks
terang adalah E, dan seterusnya hingga didapat perintah "serbuberlin".Enkripsi
(penyandian) dengan sandi Vigenère juga dapat dituliskan secara matematis,
dengan menggunakan penjumlahan dan operasi modulus, yaitu:
dan dekripsi,
dengan:
BAB III
METODE PENELITIAN
25
3.1 Metode Penelitian
Langkah-langkah dalam menyelesaikan penelitian ini di perlihatkan
pada gambar 3.1. Prinsip pengerjaannya menggunakan metode waterfall
yaitu pengerjaan dari atas ke bawah secara berurutan, dengan rincian
perencanaan sebagai beriku :
Studi pustaka
Penulisan laporan
26
2. Perancangan dan pengembangan perangkat lunak. Lebih detailnya
disajikan pada bagian 3.2.
3. Uji coba dan evaluasi diperlukan untuk melihat sejauh mana aplikasi yang
dibuat berhasil dalam melakukan enkripsi dan dekripsi teks SMS dan juga
kompresi dan dekompresi teks SMS.
4. Penulisan laporan dilakukan untuk mendokumentasikan semua kegiatan-
kegiatan dan temuan-temuan selama pelaksanaan penelitian.
kirim SMS
tampilkan SMS
27
dilanjutkan dengan kompresi, sedangkan gambar 3.3 merupakan proses yang
menggambarkan dekompresi-dekripsi teks SMS yang diterima. Proses ini
merupakan dimulai dengan dekompresi, karena teks SMS yang diterima
merupakan teks yang telah dikompresi. Langkah selanjutnya adalah mendekripsi
teks SMS yang sudah di dekompresi tadi.
Bulan
Jenis Kegiatan
April Mei Juni Juli Agustus
Perancangan dan
pengembangan perangkat
lunak
28
DAFTAR PUSTAKA
Bodic, G.L., 2003, "Mobile Messaging Technologies And Services : SMS, EMS
and MMS," John Wiley & Sons.
Bruce Schneier, 1997," Applied Cryptography, 2nd edition", New York: John-
Wiley & Sons
29