You are on page 1of 32

1

A. PENDAHULUAN
1. Latar Belakang
Komunikasi adalah salah satu cara yang baik untuk menyampaikan perasaan,
ide-ide dan ekspresi. Proses penyampaian perasaan, ide-ide dan ekspresi disampaikan dari seseorang kepada orang lain, dalam situasi yang tertentu komunikasi
menggunakan sebuah media untuk merubah sikap atau tingkah laku seorang atau
sejumlah orang sehingga ada efek yang diharapkan, media yang digunakan berupa
surat, short message service (SMS), lukisan, gambar, grafik dan lain-lain.
Short message service (SMS) adalah bentuk-bentuk komunikasi yang paling
banyak diminati oleh pengguna smartphone Android. Permasalahan keamanan
muncul mengingat beberapa fasilitas transaksi dilakukan menggunakan media ini.
SMS pada awalnya dirancang untuk komunikasi dimana konten yang dikirimkan
adalah plaintext. Bagaimanapun data plaintext seperti ini dapat diketahui oleh
siapa saja yang memiliki akses ke sistem SMS. Server SMS milik operator
merupakan salah satu pihak yang dapat mengambil data ini, walaupun dalam
setiap perjanjian terdapat klausul tentang kerahasiaan data, akan tetapi data
plaintext yang terkirim dan berkasnya tersimpan di berbagai tempat baik di server
milik operator maupun milik content provider. Kemudahan dalam bertukar
informasi melalui SMS ini disalahgunakan oleh beberapa pihak, beberapa orang
dengan berbagai cara mencoba mencuturi informasi yang bukan hak mereka. Hal
ini tentunya akan sangat berbahaya untuk pengguna smartphone Android,
terutama bagi mereka yang sering mengirimkan data dan informasi rahasia
melalui SMS.
Karena itu, dibutuhkan suatu cara untuk mengamankan informasi yang
sifatnya penting atau rahasia. Dengan melakukan enkripsi terhadap teks SMS,

maka tingkat keamanan informasi dari pesan tersebut dapat ditingkatkan. Saat ini,
algoritma Blowfish merupakan algoritma kriptografi modern kunci simetris
berbentuk cipher block yang digunakan sebagai standar algoritma kriptografi
terbaru. Dengan memanfaatkan algoritma Blowfish ini, maka dapat dikembangkan suatu aplikasi SMS yang memungkinkan pengguna smartphone Android
untuk mengirimkan pesan singkat dengan enkripsi teks dan dapat melakukan
dekripsi terhadap pesan terenkripsi. Aplikasi SMS ini akan dibangun berbasis
mobile pada platform Android.
2.

Rumusan Masalah
Berdasarkan latar belakang yang telah diuraikan, maka yang menjadi

rumusan masalah pada penulisan ini adalah :


1. Bagaimana membuat aplikasi short message service (SMS) yang dapat
mengirim dan menerima pesan berbasis mobile pada platform Android.
2. Bagaimana cara membangkitkan kunci private untuk proses enkripsi dan
dekripsi menggunakan algoritma Blowfish.
3. Bagaimana mengenkripsi plaintext pesan dan mendekripsi ciphertext pesan
menggunakan algoritma Blowfish.
4. Bagaimana cara kompresi dan dekompresi jumlah karakter short message
service (SMS) dengan menggunakan algoritma Huffman.
3.

Tujuan
Tujuan dari penelitian Tugas Akhir ini yaitu menghasilkan suatu aplikasi

smartphone berbasis mobile pada platform Android yang dapat digunakan


masyarakat umum untuk mengamankan pengiriman dan penerimaan short
message service (SMS) dengan memanfaatkan algoritma Blowfish dan algoritma
Huffman.
4.

Batasan Masalah

Agar pembahasan dalam penelitian ini terarah dan tidak melebar. Maka,
permasalahan dibatasi pada :
1. Aplikasi ini hanya dapat mengenkripsi dan mendekripsi data berupa teks
SMS.
2. Aplikasi ini difokuskan untuk pengamanan SMS berbasis mobile pada
platform Android.
3. Proses enkripsi dan dekripsi teks SMS menggunakan algoritma Blowfish.
4. Aplikasi ini hanya dapat mengkompresi dan dekompresi jumlah karakter
SMS.
5. Aplikasi ini hanya dapat mengkompresi jumlah karakter SMS yang telah di
enkripsi dan dekompresi jumlah karakter SMS sebelum di dekripsi dengan
menggunakan algoritma Huffman.

5.

Manfaat Penelitian
Manfaat dari penelitian Tugas Akhir ini yaitu menghasilkan aplikasi enkripsi

dan dekripsi teks sms, dengan aplikasi ini maka pengguna smartphone dapat
mengirimkan suatu teks SMS yang berisi informasi rahasia tanpa takut diketahui
isi pesan tersebut oleh pihak-pihak yang tidak berhak.
6.

Rood Map Penelitian


Beberapa penelitian yang berhubungan dengan penelitian ini yang pernah

dibuat sebelumnya antara lain :


1. Tahun 2012, Asst. Prof. Pratap Chnadra Mandal dari B.P.Poddar Institute of
Management & technology, West Bengal, India menjelaskan dalam
penelitiannya tentang Superiority of Blowfish Algorithm, bahwa Keamanan
Informasi sangatlah penting dalam komunikasi data. Segala kerugian atau
ancaman terhadap informasi dapat menjadi kehilangan besar bagi organisasi.
Teknik enkripsi memainkan peran utama dalam sistem keamanan informasi.

Pada penelitian ini memberikan perbandingan yang adil antara empat simetris
algoritma kunci yang paling umum digunakan: DES, 3DES, AES dan
Blowfish. Perbandingan telah dibuat berdasarkan parameter ini: putaran blok
ukuran, ukuran kunci, dan waktu enkripsi / dekripsi, waktu proses CPU dalam
bentuk throughput dan konsumsi daya. Hasil ini menunjukkan bahwa
blowfish lebih baik daripada algoritma lainnya.
2. Tahun 2013, Nishika dan Rahul Kumar Yadav dari PDM College of
Engineering Bahadurgarh, India menjelaskan dalam penelitiannya tentang
Cryptography on Android Message Applications A Review, bahwa Short
Message Service (SMS) adalah layanan komponen pesan teks dari telepon,
web, atau sistem komunikasi mobile yang menggunakan protokol komunikasi
standar dan memungkinkan pertukaran pesan teks singkat antara fixed line
atau perangkat ponsel. Keamanan SMS masih merupakan tugas yang
menantang.

Berbagai

algoritma

kriptografi

telah

diterapkan

untuk

mengamankan SMS.
3. Tahun 2013, Miss Kirti . P. Lokhande dan Prof. Avinash . P.Wadhe dari G.H.
Raisoni College of Engineering, Amravati, India menjelaskan dalam
penelitiannya tentang Security in Android File System, bahwa smartphone
dan tablet merupakan gadget terbaru. Perangkat ini mengandung Personal
Information diidentifikasi. Seorang penyerang bisa mendapatkan kontrol
penuh dengan menghubungkan perangkat komputer lain menggunakan kabel
USB. Dalam penelitian ini membahas file sistem yang aman dan terenkripsi
di sistem operasi Android dan mengoptimalkan kinerjanya menggunakan
sertifikat enkripsi algoritma Blowfish yang disediakan di OPENSSL.

4. Tahun 2010, Galih Wahyu Prasetyo dari Institut Teknologi Sepuluh


Nopember Surabaya menjelaskan dalam penelitiannya tentang Aplikasi
Enkripsi SMS Menggunakan Metode Blowfish, bahwa Perangkat lunak
yang dibangun ini meningkatkan keamanan pesan dengan melakukan enkripsi
terhadap pesan yang akan dikirimkan menggunakan metode enkripsi
Blowsh. Algoritma Blowsh adalah suatu algoritma enkripsi simetris yang
berarti bahwa algoritma ini menggunakan kunci yang sama baik untuk
melakukan proses enkripsi dan dekripsi. Aplikasi ini dibangun menggunakan
J2ME.
5. Fitri Apriani dari Universitas Maritim Raja All Haji Tanjung Pinang
menjelaskan dalam penelitiannya tentang Aplikasi Chatting dengan Sistem
Enkripsi Menggunakan Algoritma Blowfish Berbasis Android, bahwa
Aplikasi ini dapat mengirimkan pesan yang sifatnya rahasia dengan
memasukkan kunci terlebih dahulu sebelum dienkripsi, kunci yang dikirim
akan disimpan dalam database untuk melakukan dekripsi.
6. Tahun 2013, Sonny Theo Tumbur dari Institut Teknologi Bandung
menjelaskan dalam penelitiannya tentang Implementasi Algoritma Blowfish
dalam Layanan Pesan Singkat pada Platform Android, bahwa Pengguna
layanan pesan singkat terus bertumbuh, sedangkan pengembangan aplikasi
lebih cenderung mengarah ke aplikasi instant messaging. Karena itu,
dibutuhkan suatu pengembangan lanjut terkait layanan pesan singkat
khususnya dalam bidang keamanan pesan. Makalah ini membahas
implementasi algoritma Blowfish dalam layanan pesan singkat (Short

Message Service) pada platform Android. Platform Android dipilih dengan


alasan platform yang relatif lebih reliable dan banyak digunakan.

B. TINJAUAN PUSTAKA
1.

Short Message Service (SMS)


Short message service (SMS) merupakan sebuah layanan yang banyak

diaplikasikan pada sistem komunikasi tanpa kabel, memungkinkan dilakukannya


pengiriman pesan dalam bentuk teks ( Wiharto, 2011:2 ). SMS termasuk ke dalam
bentuk komunikasi verbal. Setiap pesan dalam komunikasi mobile dapat berisi
paling banyak 140 byte (1120 bit) data, setara dengan hingga 160 karakter.
Disebut pesan text pendek karena pesan yang dikirimkan hanya berupa
karakter text dan tidak lebih dari 160 karakter. Pentransmisian SMS menggunakan
kanal signalling, bukan kanal suara, sehingga kita dapat saja menerima SMS
walaupun kita sedang melakukan komunikasi suara.
Dalam perkembangannya, SMS menjadi salah satu service yang banyak
diminati dan digunakan oleh user, hal ini karena teknologi SMS memiliki
beberapa keunggulan, antara lain :

Harganya murah.

Merupakan deliver oriented service, artinya pesan akan selalu diusahakan


untuk dikirimkan ke tujuan. Jika suatu saat nomor tujuan sedang tidak aktif
atau diluar area, maka pesan akan disimpan di SMSC server dan akan
dikirimkan segera setelah nomor tujuan aktif kembali. Pesan juga akan tetap

terkirim

ke

tujuan

walaupun

nomor

tujuan

sedang

melakukan

pembicaraan(sibuk).

Dapat dikirim ke banyak penerima sekaligus pada saat yg bersamaan.

Pesan dapat dikirmkan ke berbagai jenis tujuan, seperti e-mail, IP ataupun


aplikasi lain.

Kegunaannya banyak, dengan cara diintegrasikan dengan applikasi content,


SMS dapat digunakan untuk berbagai macam keperluan seperti kuis, voting,
chatting, reservasi, request informasi, sensus/survey, dan lainnya tergantung
dengan kegunaan dan fungsi aplikasi content yang terhubungan dengan
SMSC

1.1. Arsitektur Jaringan SMS


Gambar di bawah ini menunujukan salah satu contoh arsitektur jaringan GSM
dengan SMS center (SMSC) di dalamnya.

Gambar 2.1. Arsitektur Jaringan GSM dengan SMS Center


Dengan SMS, dapat mentransmisikan pesan singkat dari dan ke Mobile
Subscriber (MS). Pengiriman pesan singkat ini (SMS) dimungkinkan dengan
adanya sebuah SMSC (Short Message Service Center). Secara umum SMSC
berfungsi menerima SMS yang dikirim, menyimpannya untuk sementara, dan
memforward (mengirimkan) SMS tersebut ke mobile subscriber (MS) ataupun
ESME tujuan.
External Short Message Entities (ESME) adalah device selain MS yang dapat
berfungsi untuk menerima atau mengirim SMS. Pada umumnya ESME dipakai
untuk menciptakan layanan yang lebih beragam kepada pelanggan ataupun untuk
meningkatkan performance jaringan telekomunikasi dari operator telekomunikasi
wireless yang bersangkutan. ESME dapat berupa antara lain :

VMS (Voice Mail Service). VMS berfungsi untuk menerima, menyimpan dan
memainkan/memperdengarkan voice mail (pesan suara) yang ditujukan
kepada subscriber.

Web. Dengan teknologi internet yang berkembang pesat, MS dapat


mengirimkan SMS dan langsung ditampilkan dalam suatu halamanan web.

E-Mail. MS dapat juga mengirimkan SMS ke suatu alamat e-mail dan akan
diterima sebagai sebuah e-mail.
Bila sebuah SMS dikirimkan dari MS A ke MS B, maka SMS itu akan

diteruskan oleh BSS ke MSC dan kemudian ke SMSC. SMSC berfungsi


mengirimkan SMS tersebut ke MS B. Untuk keperluan ini, SMSC harus tahu
bagaimana status subscriber (aktif/tidak aktif), dimana lokasi MS B berada.
Informasi-informasi mengenai MS B ini didapat dari HLR.
Jika MS B dalam keadaan aktif, maka SMSC akan mengirimkan SMS ke
MS B melalui MSC A, MSC B dan kemudian MS B. Bila misalnya MS B dan MS
A adalah MS dari 2 operator yang berbeda, maka pada saat pengirman SMS dari A
ke B, maka SMS tersebut hanya akan melalui SMSC A, tidak singgah lagi di
SMSC B atau jika MS B dalam keadaan tidak aktif, maka SMS tidak akan
diforward dan diteruskan ke MSB, tapi akan disimpan untuk sementara di SMSC.
Pada kondisi ini, SMSC A akan selalu berkomunikasi dengan HLR untuk
mengetahui kondisi MS B. Bila suatu saat SMSC mendapatkan informasi dari
HLR bahwa MS B aktif kembali, maka SMS akan diteruskan ke MSC A, MSCB,
dan MS B.

10

1.2. Elemen dasar jaringan SMS


Terdapat enam macam elemen dasar jaringan SMS, yaitu:
1. Short Messaging Entities (SME), suatu piranti yang dapat menerima dan

mengirim pesan pendek.


2. Short Message Service Center (SMSC), kombinasi perangkat lunak dan

perangkat keras yang bertanggung jawab memperkuat, menyimpan dan


meneruskan pesan pendek antar SME dan piranti bergerak (mobile phone).
3. Signaling System 7 (SS7), protokol signalling yang umum digunakan dalam

jeringan telepon seluler.


4. Base Station System (BSS), berfungsi mengendalikan satu atau lebih BTS dan

bertanggung jawab dalam pemberian sumber data dan transmisi sinyal radio
elektromagnetis antara MSC dan mobile phone.
5. Home Location Register (HLR), basis data yang digunakan untuk

penyimpanan permanen, pengelolaan dan profil layanan.


6. Visitor Location Register (VLR), basis data yang berisi informasi temporal

mengenai pelanggan yang berasal dari suatu HLR yang roaming ke HLR
lainnya.

1.3. Mekanisme Distribusi Pesan SMS


Terdapat empat macam mekanisme distribusi pesan SMS oleh aplikasi SMS,
yaitu:
a. Pull, yaitu pesan yang dikirimkan ke pengguna berdasarkan permintaan
pengguna.

11

b. Push Event based, yaitu pesan yang diaktivasi oleh aplikasi berdasarkan
kejadian yang berlangsung.
c. Push - Schedule, yaitu pesan yang diaktivasi oleh aplikasi berdasarkan waktu
yang telah terjadwal.
d. Push Personal Profile, yaitu pesan yang diaktivasi oleh aplikasi
berdasarkan profile dan preference dari pengguna.

1.4. Protocol Data Unit (PDU)


Satuan paket data yang dipertukarkan pada lapisan aplikasi dalam protokol
SMS Manager disebut Protocol Data Unit (PDU). Data yang mengalir ke atau dari
SMSC harus berbentuk PDU (Protocol Data Unit). PDU berisi bilangan-bilangan
heksadesimal yang mencerminkan bahasa I/O ( Wiharto, 2011:5 ).
Dalam protokol tersebut terdapat beberapa macam format PDU dimana
penggunaan masing-masing PDU terebut harus sesuai dengan fungsinya, sebagai
contoh untuk mengirim sebuah pesan, harus digunakan PDU dengan format
submit_sm, deliver_sm, atau data_sm. Umumnya cara pengiriman paket data dari
satu titik ke titik lain, slah satu titik harus bertindak sebagai server dan titik
lainnya sebagai client, Inisiatif dan pembentukan sebuah session (jenis permintaan
atau perintah) dilakukan oleh client. Jenis session yang dipilih sepenuhnya
diserahkan kepada client (otorisasi diterima atau tidak tetap dipegang oleh server),
terdapat tiga buah session yang dapat dipilih yaitu:
-

Receiver (RX), bila client ingin dapat menerima paket data.

Transmitter (TX), bila client ingin dapat mengirimkan paket data.

12

Transceiver (TRX), bila client ingin dapat mengirim dan menerima paket
data.

2.

Kriptografi
Kriptografi, secara umum adalah ilmu dan seni untuk menjaga kerahasiaan

berita. Selain pengertian tersebut terdapat pula pengertian ilmu yang mempelajari
teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi
seperti kerahasiaan data, keabsahan data, integrasi data, serta autentifikasi. Tidak
semua aspek keamanan informasi ditangani oleh kriptografi. Kriptografi selalu
menjadi tugas penting.
Tujuan utama dari setiap kegiatan kriptografi adalah keamanan data, selain
bertujuan untuk meningkatkan keamanan, juga berfungsi untuk melindungi
pesan, data, atau informasi agar tidak dapat dibaca oleh orang yang tidak berhak,
mencegah agar orang orang yang tidak berhak menyisipkan atau menghapus
pesan, data, atau informasi ( Defni, 2014:66 ).
Dalam menjaga kerahasiaan data dengan kriptografi, data sederhana yang
dikirim (plainteks) diubah ke dalam bentuk data sandi (cipherteks), kemudian data
sandi tersebut hanya dapat dikembalikan ke bentuk data sebenarnya hanya dengan
menggunakan kunci (key) tertentu yang dimiliki oleh pihak yang sah saja.
Tentunya hal ini menyebabkan pihak lain yang tidak memiliki kunci tersebut tidak
akan dapat membaca data yang sebenarnya sehingga dengan kata lain data akan
tetap terjaga.

2.1. Tujuan Kriptografi

13

Kriptografi tidak hanya memberikan kerahasiaan dalam komunikasi


( Defni, 2014:67 ), namun kriptografi juga bertujuan untuk memberikan layanan
pada aspek-aspek keamanan antara lain:
-

Kerahasiaan (confidentiality), yaitu menjaga supaya pesan tidak dapat dibaca


oleh pihak-pihak yang tidak berhak.

Integritas data (data integrity), yaitu memberikan jaminan bahwa untuk tiap
bagian pesan tidak akan mengalami perubahan dari saat data dibuat/dikirim
oleh pengirim sampai dengan saat data tersebut dibuka oleh penerima data.

Otentikasi (authentication), yaitu berhubungan dengan identifikasi, baik


mengidentifikasi kebenaran pihak-pihak yang berkomunikasi maupun
mengidentifikasi kebenaran sumber pesan.

Nirpenyangkalan

(non

repudiation),

yaitu

memberikan

cara

untuk

membuktikan bahwa suatu dokumen datang dari seseorang tertentu sehingga


apabila ada seseorang yang mencoba mengakui memiliki dokumen tersebut,
dapat dibuktikan kebenarannya dari pengakuan orang tersebut.

2.2. Jenis Algoritma Kriptografi


Berdasarkan kunci yang digunakan untuk enkripsi dan dekripsi, kriptografi
dapat dibedakan menjadi 2 macam, yaitu kriptografi simetri (symetric cryptography) dan kriptografi asimetri (asymetric cryptography) ( Dafid, 2006:21 ).

2.2.1. Kriptografi Simetri (Symetric Cryptography)

14

Pada sistem kriptografi simetri, kunci untuk proses enkripsi sama dengan
kunci untuk proses dekripsi. Keamanan sistem kriptografi simetri terletak pada
kerahasiaan kunci. Istilah lain untuk kriptografi simetri adalah kriptografi kunci
privat (private key cryptography) atau kriptografi konvensional (conventional
cryptography).
Kunci Private, K

Kunci Private, K

Enkripsi

Enkripsi
Plainteks, P

Cipherteks, C

E k (P) = C

Plainteks, P

D k (P) = C

Gambar 2.2. Kriptografi Simetri (Symetric Cryptography)

Algoritma kriptografi simetri dapat dikelompokkan menjadi dua kategori antara


lain :
1. Stream Cipher, Algoritma kriptografi beroperasi pada plainteks/cipherteks
dalam

bentuk

bit

tunggal

yang

dalam

hal

ini

rangkaian

bit

dienkripsikan/didekripsikan bit per bit. Stream cipher mengenkripsi satu bit


setiap kali.
2. Cipher

blok

(block

cipher) Algoritma

kriptografi

beroperasi

pada

plainteks/cipherteks dalam bentuk blok bit, yang dalam hal ini rangkaian bit
dibagi menjadi blok-blok bit yang panjangnya sudah ditentukan sebelumnya.
Cipher blok mengenkripsi satu blok bit setiap kali.

2.2.2. Kriptografi Asimetri (Asymetric Cryptography)

15

Pada sistem kriptografi asimetri, kunci untuk proses enkripsi tidak sama
dengan kunci untuk proses dekripsi. Istilah lain untuk kriptografi asimetri adalah
kriptografi kunci publik (public key cryptography), sebab kunci untuk enkripsi
tidak rahasia dan dapat diketahui oleh siapapun, sementara kunci untuk dekripsi
hanya diketahui oleh penerima pesan.

Kunci Private, SK

Kunci Public, PK

Enkripsi
Plainteks, P

E pk (P) = C

Enkripsi
Cipherteks, C

Plainteks, P

D sk (P) = C

Gambar 2.3. Kriptografi Asimetri (Asymetric Cryptography)


3.

Algoritma Kriptografi Blowfish


Blowfish adalah sebuah algoritma kriptografi yang beroperasi pada mode

blok. Algoritma Blowfish ditujukan untuk diimplementasikan pada sebuah


mikroprosesor berskala besar ( Apriani, 2014:3 ). Algoritma Blowfish sendiri
tidak dipatenkan sehingga dapat digunakan oleh orang banyak.
Blowfish dirancang untuk memenuhi kriteria-kriteria sebagai berikut
( Pratiwi, dkk. 2011:3 ) :
1. Cepat.

Blowfish dirancang agar dapat mengenkripsikan data pada

mikroprosesor 32 bit dengan kecepatan 26 clock cycles per byte.


2. Kompak. Blowfish dirancang agar dapat berjalan dengan penggunaan memori

kurang dari 5 kB.

16

3. Sederhana.

Blowfish

dirancang

hanya

menggunakan

operasi-operasi

sederhana. Operasi-operasi yang digunakan dalam Blowfish adalah


penambahan, XOR, dan table lookup dalam operand 32 bit. Rancangan yang
sederhana ini mempermudah proses analisa yang membuat Blowfish
terhindar dari kesalahan implementasi.
4. Keamanan yang beragam. Panjang kunci yang digunakan dalam algoritma
Blowfish bervariasi dengan panjang kunci maksimal 448 bit.

3.1. Pembangkitan Kunci


Blowfish adalah algoritma dengan kunci blok cipher simetris yang
menggunakan ukuran blok 64 bit dan panjang kunci 32 448 bit. Algoritma ini
mengiterasi algoritma enkripsi sederhana sebanyak 16 putaran (round). Algoritma
ini terdiri dari dua bagian: key expansion dan enkripsi data. Key expansion
merubah kunci yang dapat mencapai 448 bit menjadi beberapa array subkunci
(subkunci) dengan total 4168 Byte dan enkripsi data terdiri dari iterasi fungsi
sederhana sebanyak 16 kali. Setiap putaran terdiri dari permutasi kunci-dependent
dan substitusi kunci dan data-dependent. Seluruh operasi adalah penambahan dan
XOR pada variable 32-bit. Tambahan operasi lainnya hanyalah empat penelusuran
tabel (table lookup) array berindeks untuk setiap putaran. Blowfish menggunakan
subkunci yang besar. Kunci ini harus dihitung sebelum enkripsi atau dekripsi data.
P-array terdiri dari 18 buat subkunci dengan ukuran 32 bit:
P1,P2, . . . ,P18

17

Empat buat kot ak-S dengan ukuran 32 bit mempunyai entry sebanyak 256
buah. Kotak-kotak tersebut adalah:
S1,0, S1,1, . . . , S1,255
S2,0, S2,1, . . . , S2,255
S3,0, S3,1, . . . , S3,255
S4,0, S4,1, . . . , S4,255

Subkunci dibangkitkan dengan menggunakan algoritma Blowfish. Metode


pembangkitan subkunci ini dilakukan dengan langkah-langkah sebagai berikut:
1. Pertama-tama inisialisasi P-array dan kemudian keempat kotak-S, secara
berurutan dengan sebuah string yang sama. String yang digunakan ini terdiri
dari digit heksadesimal dari p.
2. Lakukan operasi XOR antara P1 dengan 32 bit pertama dari kunci, lakukan

operasi XOR antara P2 dengan 32 bit kunci berikutnya, dan begitu seterusnya
untuk semua bit pada kunci (hingga P18). Ulangi langkah ini melalui
perputaran bit-bit kunci hingga seluruh elemen pada P-array telah dilakukan
operasi XOR dengan bit-bit kunci.
3. Lakukan proses enkripsi terhadap string dengan keseluruhan elemen nol

dengan algoritma Blowfish, menggunakan subkunci yang dijelaskan pada


langkah 1 dan 2.
4. Ubah nilai P1 dan P2 dengan hasil keluaran pada langkah 3.
5. Lakukan proses enkripsi terhadap hasil keluaran dari langkah 3 menggunakan

algoritma Blowfish dengan subkunci yang telah dimodifikasi.

18

6. Ubah nilai P3 dan P4 dengan hasil keluaran pada langkah 5.

7. Lanjutkan proses mengubah semua elemen yang terdapat pada P-array, dan
kemudian keempat kotak-S secara berurutan, dengan hasil keluaran algoritma
Blowfish yang terus menerus berubah.

Secara keseluruhan terdapat 521 iterasi atau putaran yang dibutuhkan untuk
membangkitkan seluruh subkunci yang dibutuhkan. Aplikasi kemudian dapat
STAR
T
menyimpan subkunci

yang telah dihasilkan. Proses pembangkitan kunci ini tidak

P(1) - P(18)

perlu selalu dilakukan setiap saat. Blowfish menggunakan


For i = 1 To jaringan Feistel yang
4

terdiri
dari <16> S-Box
buah (1,255)
putaran. Skema jaringan Feistel pada algoritma Blowfish
S-Box (1,0)
S-Boxdilihat
(2,0) < pada
> S-Box
(2,255) 2.5. Masukan terhadap jaringan Feistel ini adalah x,
dapat
Gambar
S-Box (3,0) < > S-Box (3,255)

yang merupakan elemen data dengan ukuran 64 bit.


S-Box (4,0) < > S-Box (4,255)

For j = 0
To 255
step 2
,)

For i = 1 To
18

S-Box (i,j) =
S-Box (i,j + 1) =

P(i) = P(i) XOR 32-BitKey(i)


END
=0;=0

For N = 1 To
18 step 2

,)

P (N+1) =

19

Gambar 2.4. Skema Pembangkitan Kunci Algoritma Blowfish

3.2. Jaringan Feistel


Banyak algoritma menggunakan Jaringan Feistel, ide ini muncul pada tahun
1970 yang ditemukan oleh Horst Feitsel. Jaringan Feistel yaitu sebuah metode
umum untuk mentrans-formasikan sebuah fungsi menjadi sebuah permutasi. Bila
kita ambil sebuah blok dengan panjang n dan bagilah blok tersebut dengan dua
bagian sepanjang n / 2 yaitu bagian L (kiri) dan bagian R (kanan).
Fungsi F yang terdapat pada jaringan Feistel difinisikan sebagai berikut:
1. Bagi XL, menjadi empat bagian yang berukuran 8 bit. Keempat bagian
yang dihasilkan adalah a, b,c, dan d.
2. Fungsi F(XL) didefinisikan sebagai berikut:
F(

= ((S1,a + S2,b mod 2) xor S3,c)) + S4,c mod 2

20

S-BOX 1

= XOR

S-BOX 2

= SUM

32 BIT

S-BOX 3

32 BIT

S-BOX 4

Gambar 2.5. Skema Fungsi Feistel (F) pada Algoritma Blowfish

Gambar 2.5. menunjukan fungsi F dengan dekripsi sebagai berikut, 32-bit


elemen kiri dibagi menjadi 4 X 8 bit, fungsi F merupakan array 2 dimensi yang
ditunjukan pada algoritma diatas, dimana S-BOX 1 menjadi elemen x dan 8-bit
pertama menjadi elemen y, S-BOX 2 menjadi elemen x dan 8-bit kedua menjadi
elemen y, dan seterusnya sampai elemen ke-4, empat bagian tersebut
menghasilkan keluaran masing-masing 32-bit, 32-bit pertama dijumlahkan dengan
32-bit bagian kedua, keluarannya di-XOR-kan dengan 32-bit bagian ketiga, dan
keluarannya dijumlahkan lagi dengan 32-bit bagian keempat menghasilkan 32-bit
keluaran. Keluaran tersebut digunakan untuk masukan pada operasi peng XOR-an
antara elemen kanan dengan fungsi F.

3.3. Proses Enkripsi

21

Blowfish adalah algoritma yang menerapkan jaringan feistel yang terdiri dari
16 putaran. Inputnya merupakan elemen 64 bit, X (plaintext) dan outputnya
adalah ciphertext dengan elemen 64 bit. Untuk proses enkripsi dapat dilakukan
sebagai berikut :
1. Bagi X menjadi setengah bagian, yaitu dengan ukuran 32 bit. Hasil
pembagian ini adalah : XL, XR
2. Lakukan langkah-langkah berikut dalam 16 putaran:
XL = XL xor Pi
XR = F(XL) xor XR
Tukar XL dan XR
Keterangan : untuk i = 1 sampai 16 ( menunjukkan nomor putaran)
3. Tukar XL dan XR (membatalkan pertukaran terakhir)
4. XR = XR xor P17
5. XL = XL xor P18
6. Kombinasikan kembali XL dan XR

END

STAR
T

XOR

XOR

XOR

XOR
Y
i < 16

22

Gambar 2.6. Enkripsi Algoritma Blowfish

3.4. Proses dekripsi


Dekripsi sama dengan enkripsi, kecuali bahwa P1, P2, P3,.....P18 digunakan
pada urutan yang berbalik, dekripsi juga terdiri dari iterasi 16 kali putaran. Hanya
saja nilai X yang digunakan adalah ciphertext. Inputnya merupakan elemen 64 bit
ciphertext dan outputnya adalah plaintext dengan elemen 64 bit.

Untuk proses dekripsi dapat dilakukan sebagai berikut :


1. Bagi X menjadi setengah bagian, yaitu dengan ukuran 32 bit. Hasil
pembagian ini adalah : XL, XR
2. Lakukan langkah-langkah berikut dalam 16 putaran:
XL = XL xor Pi
XR = F(XL) xor XR
Tukar XL dan XR
Keterangan : untuk i = 1 sampai 16 ( menunjukkan nomor putaran)
3. Tukar XL dan XR (membatalkan pertukaran terakhir)
4. XR = XR xor P1
5. XL = XL xor P2
6. Kombinasikan kembali XL dan XR

23

END

STAR
T

XOR

XOR

XOR

XOR
Y
i < 16

Gambar 2.7. Dekripsi Algoritma Blowfish


4.

Algoritma Huffman
Algoritma Huffman, yang dibuat oleh seorang mahasiswa MIT bernama

David Huffman pada tahun 1952, merupakan salah satu metode paling lama dan
paling terkenal dalam kompresi teks. Kode Huffman salah satu algoritma dasar
untuk kompresi data, yang bertujuan untuk mengurangi jumlah bit yang
diperlukan untuk merepresentasikan informasi/pesan ( Amrullah, dkk. 2008:3 ).
Algoritma Huffman menggunakan prinsip tiap karakter (simbol) dikodekan hanya
dengan rangkaian beberapa bit, dimana karakter yang sering muncul dikodekan
dengan rangkaian bit yang pendek dan karakter yang jarang muncul dikodekan
Plaintext

dengan rangkaian bit yang lebih panjang.

4.1. Metode Huffman Statis

24

Metode Huffman Statis Metode ini tergantung pada probabilitas dari setiap
simbol yang hadir pada suatu data (pesan). Berdasarkan probabilitas tersebut
kemudian dibentuk daftar kode untuk setiap simbol dengan ketentuan karakter
yang paling sering muncul di dalam data dikodekan dengan kode yang jumlah
bitnya lebih sedikit, sedangkan karakter yang jarang mucul dikodekan dengan
kode yang jumlah bitnya lebih panjang.
Contoh: Kode ASCII string 4 huruf ALAM membutuhkan representasi
4 8 bit = 32 bit, dengan rincian sebagai berikut: A = 01000001 L = 01001100 A
= 01000001 M = 01001101. Pada string di atas, frekuensi kemunculan A = 2, L =
1 dan M= 1.

Maka Pengerjaan akan seperti berikut:


-

L dan M menjadi 1 (LM) sehingga probabilitas menjadi 1/4 + 1/4 = 2/4

LM dan A menjadi 1 (ALM) sehingga probabilitas menjadi 2/4 + 2/4 = 1


Setiap simpul yang terletak dengan frekuensi lebih besar diberi nilai 0 dan

simpul yang terletak dengan frekuensi lebih kecil diberi nilai 1. Untuk frekuensi
yang sama besar maka simpul yang terletak pada cabang kiri diberi nilai 0 dan
untuk simpul yang terletak pada cabang kanan diberi nilai 1.

25

Gambar 2.8. Pohon Huffman untuk Karakter ALAM

Dihasilkan kode baru yaitu A menjadi 1 bit dengan frekuensi kemunculan

kali sehingga 2 x 1 = 2, L: 1 x 2 = 2 dan M: 1 x 2 = 2. Sehingga hanya


membutuhkan representasi 6 bit. Dapat dihemat sebanyak 32 6 = 26 bit.

4.2. Metode Huffman Dinamis


Metode ini merupakan kelanjutan dari metode Huffman statis dengan
menambah atau mengurangi suatu proses tertentu pada metode Huffman statis. Ide
dasar dari metode ini adalah meringkas tahapan metode Huffman tanpa perlu
menghitung jumlah karakter keseluruhan dalam membangun pohon biner.
Metode Huffman dinamis adalah suatu metode dengan kemungkinan
kemunculan dari setiap simbol tidak dapat ditentukan dengan pasti selama
pengkodean. Hal ini disebabkan oleh perubahan pengkodean secara dinamis
berdasarkan frekuensi dari simbol yang telah diolah sebelumnya. Metode ini
dikembangkan oleh trio Faller, Gallager dan Knuth, kemudian dikembangkan
lebih lanjut oleh Vitter.

4.3. Prinsip Kerja Algoritma Huffman


Prinsip kerja algoritma Huffman adalah mengkodekan setiap karakter dalam
representasi bit. Representasi bit untuk setiap karakter berbeda satu sama lain
berdasarkan frekuensi kemunculan karakter. Semakin sering karakter itu muncul

26

semakin pendek representasi bitnya. Sebaliknya semakin jarang karakter untuk


muncul, maka semakin panjang representasi bit untuk karakter tersebut.
Proses mengkompresi algoritma huffman tidak menggunakan Huffman tree,
untuk menggantikan informasi mengenai Huffman tree tersebut maka dibuat suatu
tabel Huffman yang terbentuk dari tree itu sendiri dalam bentuk biner, yang berisi
kode-kode Huffman dari karakter-karakter SMS default yang akan digunakan.
Tabel ini bersifat statis dan akan digunakan oleh aplikasi, baik aplikasi pengirim
maupun penerima, sebagai acuan untuk melakukan proses kompresi atau
dekompresi terhadap teks SMS.

C. METODOLOGI
Adapun metodologi yang digunakan dalam penelitian tugas akhir ini
menggunakan spesifikasi alat dan flowchart sebagai berikut :

1.

Spesifikasi Alat

Perangkat yang digunakan dalam perancangan aplikasi ini, yaitu :


a. Laptop DELL dengan spesifikasi prosessor Intel Core 2 Duo 2.13 Ghz, RAM
2 GB dan Harddisk 320 GB.
b. Smartphone Samsung Galaxy Ace dengan spesifikasi Chipset Qualcomm
MSM7227 Snapdragon, CPU 800 MHz ARM 11, GPU Adreno 200 dan
RAM 278 MB.

27

2.

Flowchart
Metodologi yang digunakan dalam penelitian tugas akhir ini secara umum

yaitu pengirim pesan dapat mengenkripsi dan mengkompres pesan yang akan
dikirim melalui layanan sms. Karena pesan yang diterima dalam keadaan
terkompresi dan terenkripsi, maka harus ada pendekompresi dan pendekripsi
1

START

pesan supaya pesan aslinya bisa dibaca oleh penerima pesan.


Gunakan Jaringan Feistel 16 Putaran.

Buat Pesan Baru

F( = ((S1,a + S2,b mod 2)) xor S3,c) +


S4,c mod 2
Tulis
Pesan
Masukkan Nomor
Penerima

Masukkan Kunci
Private

STAR
T
Terima Pesan Baru

Enkripsi Pesan

x / 2 = dan

= XOR ; = F (XOR
Masukkan Kunci
For i < 16
Private

Y
Bangkitkan Kunci
Dekompresi Pesan
Inisialisasi P-Array
dan keempat
Mengubah rangkaian bit
kode
S-Box.
Huffman menjadi teks sesuai
tabel huffman

Kunci = True
?

T
Kompresi
?

Alert Kunci
Salah !
T

Y
Ganti tiap karakter dengan kode
Huffman sesuai tabel Huffman

P(i) = P(i) XOR 32-BitKey(i)


For
i = 1 To 18
String : Menyusun
karakter
menjadi kalimat

Byte[] : Menggabungkan semua


kode Huffman dari masingmasing karakter

=0; =0
Dekripsi Pesan
P (N) = ; P (N+1) =
For N = 1 To 18
xGambar
/ 2 = dan 3.1. Blok Diagram
= XOR ; = F (XOR

Enkripsi dan Kompresi Pesan SMS


END

For i < 16
S-Box (i,j) =
TampilkanS-Box
Pesan (i,j + 1) =

END

Kirim Pesan

28

Gambar 3.2. Blok Diagram Dekripsi dan Dekompresi Pesan SMS

3.

Tabel Statis Kode Huffman


Aplikasi kompresi ini akan dibangun dengan menggunakan daftar kode

Huffman yang telah ada, kode Huffman ini terdiri atas awalan dan badan. Awalan
dan badan merupakan pengelompokan agar tabelnya lebih kompleks dan rapi.
Tabel 3.1. Tabel Statis Kode Huffman
Karakter
Spasi
a
b
c
d
e
f
g
h
i
j
k
l
m

Awalan
101
0

Badan
1
0
00100
0101000
0000
0001
110001
00101
01011
0011
10100
10101
0100
0110

Ubahan
1011
1010
000100
00101000
00000
00001
0110001
000101
001011
00011
010100
010101
00100
00110

29

n
o
p
q
r
s
t
u
v
w
x
y
z
0
1
2
3
4
5
6
7
8
9
@
/
:
(
)
Sisa huruf
.
,
?
!

A
B
G
H
J
K
O
P

111

111

110

111
10110
10111
0101001
0111
1000
1001
1101
0101010
0101011
1100000
11001
011001
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1111
1110
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110

0111X
010110
010111
00101001
00111
01000
01001
01101
00101010
00101011
01100000
011001
01100001
1110000
1110001
1110010
1110011
1110100
1110101
1110110
1110111
1111000
1111001
1111010
1111011
1111100
1111101
1111111
1111110
1100000
1100001
1100010
1100011
1100100
1100101
1100110
1100111
1101000
1101001
1101010
1101011
1101100
1101101
1101110

30

Y
C
D
E
F
I
L
M
N
Q
R
S
T
U
V
W
X
Z

1111
0000
0001
0010
0011
0100
0101
0110
111
11000
0111
1000
1001
1010
11001
1011
11010
11011

100

1101111
1000000
1000001
1000010
1000011
1000100
1000101
1000110
100111
10011000
1000111
1001000
1001001
1001010
10011001
1001011
10011010
10011011

D. LOKASI DAN WAKTU PENELITIAN


Judul : Rancang Bangun Aplikasi Kriptografi untuk Keamanan Short Message
Service (SMS) dengan menggunakan Algoritma Blowfish dan Algoritma
Huffman.
Lokasi : Politeknik Negeri Lhokseumawe
Tahun 2015
No.

Kegiatan

Bulan
I

1.

Persiapan Infrastruktur

2.

Perancangan Aplikasi
Perancangan Unified Modeling

3.
Language (UML)
4.

Perancangan User Interfaces

5.

Pembuatan Aplikasi

II

III

IV

VI

31

6.
7.
8.
9.

Pengujian Aplikasi
Analisis Data
Pembuatan Laporan Dan Sidang
Revisi Dan Jilid Laporan Akhir

DAFTAR PUSTAKA

Amrullah, Ata. dkk. Kompresi dan Enkripsi SMS dengan Metode Huffman Code
dan Algoritma Enigma. Surabaya : Politeknik Negeri Surabaya.
Anjari, Becik Gati. Enkripsi SMS (Short Message Service) Pada Telepon Selular
Berbasis Android. Surabaya : Institut Teknologi Sepuluh Nopember.
Apriani, Fitri. 2014. Aplikasi Chatting dengan Sistem Enkripsi Menggunakan
Algoritma Blowfish Berbasis Android. Tanjung Pinang : Universitas Maritim
Raja All Haji.
Dafid. 2006. Kriptografi Kunci Simetris dengan Menggunakan Algoritma
Crypton. Palembang : STMIK MDP.
Defni, Indri Rahmayun. 2014. Enkripsi SMS (Short Message Service) pada
Telepon Selular Berbasis Android dengan Metode RC6. Padang : Politeknik
Negeri Padang.
Lokhande, Miss P. dan Wadhe, Avinash P. 2013. Security in Android File System.
India : G.H. Raisoni College of Engineering.
Mandal, Pratap Chnadra. Superiority of Blowfish Algorithm. India : B. P. Poddar
Institute of Management & Technology.
Nishika and Yadav, Rahul Kumar. 2013. Cryptography on Android Message
ApplicationsA Review. India : PDM College of Engineering Bahadurgarh.

32

Prasetyo, Galih Wahyu. 2010. Aplikasi Enkripsi SMS Menggunakan Metode


Blowfish. Surabaya : Institut Teknologi Sepuluh Nopember.
Pratiwi, Apriyanti E, dkk. 2011. Implementasi Enkripsi Data dengan Algoritma
Blowfish menggunakan Java pada Aplikasi Email. Bandung : Politeknik
Telkom Bandung.
Tumbur, Sonny Theo. 2013. Implementasi Algoritma Blowfish dalam Layanan
Pesan Singkat pada Platform Android. Bandung : Institut Teknologi
Bandung.
Wiharto, Yudi. 2011. Sistem Informasi Akademik Berbasis SMS Gateway.
Palembang : Politeknik PalComTech Palembang.

You might also like