TINJAUAN PUSTAKA
Keamanan Komputer (Computer Security) Stallings
pada
tahun
2003
berpendapat
bahwa
dengan
mulai
diperkenalkannya komputer, kebutuhan untuk melindungi data dan informasi lainnya ya ng tersimpan dalam komputer menjadi hal yang utama. Hal ini terjadi terutama apabila komputer tersebut merupakan bagian dari shared system dan distributed system. Istilah general untuk sekumpulan alat yang didesain untuk melindungi data dan mencegah hacker adalah keamanan komputer (computer security). Aspek keamanan komputer. Bishop (2003) mengemukakan bahwa keamanan komputer melingkupi tiga aspek utama, yaitu kerahasiaan, integritas, dan availability. Interpretasi setiap aspek pada lingkungan suatu orgnisasi ditentukan oleh kebutuhan dari individu yang terlibat, kebiasaan, dan hukum yang berlaku pada organisasi tersebut. Kerahasiaan adalah suatu usaha untuk menjaga kerahasian informasi atau sumberdaya. Mekanime kontrol akses dalam penyediaan informasi memb erikan aspek kerahasiaan. Salah satu mekanisme kontrol akses yang menyediakan kerahasiaan adalah kriptografi, mekanisme pengacakan data sehingga sulit dipahami oleh pihak yang tidak berwenang. Aspek penting lainnya dalam kerahasiaan adalah penyembunyian informasi atau data. Mekanisme kontrol akses terkadang lebih mengutamakan kerahasian ‘keberadaan data”, daripada isi data itu sendiri. Salah satu contoh mekanisme kontrol akses tersebut adalah steganografi. Aspek integritas menekankan pada tingkat kepercayaan-kebenaran, dengan penjagaan terhadap perubahan yang dilakukan dengan cara diluar standar atau oleh pihak yang tidak berwenang. Integritas meliputi data integritas (isi informasi) dan origin integritas (sumber data, sering disebut otentikasi). Mekanisme integritas terbagi dalam dua kelas, yakni mekanisme pencegahan (prevention) dan mekanisme deteksi (detection), dengan tujuan integritas yang
berbeda. Mekanisme pencegahan menghalangi seorang pemakai berusaha mengubah suatu data, dimana dia tidak mempunyai wewenang untuk mengubah data tersebut. Sedangkan, mekanisme deteksi menghalangi seorang pemakai yang mempunyai wewenang ubah data berusaha mengubah data tersebut diluar cara standar. Aspek availability atau ketersedian berhubungan dengan ketersediaan informasi atau sumberdaya ketika dibutuhkan. Sistem yang diserang keamanannya dapat menghambat atau meniadakan akses ke informasi. Usaha untuk menghalangi ketersediaan disebut denial of service attackc (DoS Attack ), sebagai contoh suatu server menerima permintaan (biasanya palsu) yang bertubi- tubi atau diluar perkiraan sehingga tidak dapat melayani permintaan lain atau bahkan server tersebut menjadi down atau crash. Ancaman (Threat). Threat atau ancaman berpotensi untuk merusak keamanan. Tindakan yang munculnya akibat dari threat dinamakan serangan (attack). Pihak yang melakukan tindakan serangan atau menyebabkan tindakan serangan disebut penyerang (attacker). Shirey (1994) dalam Bishop (2003) membagi ancaman dalam empat kelas besar, yaitu : 1
Disclousure, atau akses tak-berwenang terhadap informasi
2
Deception, atau penerimaan terhadap data yang salah
3
Disruption, atau interupsi terhadap operasi yang sah
4
Usurpation, atau kontrol tak-berwenang untuk suatu bagian dari sistem. Menezes et al. (1997) mengklasifikasikan dua tipe serangan, yakni serangan
pasif (passive attack ), dimana penyerang hanya memonitor kanal komunikasi, sedangkan pada serangan aktif (active attack ), penyerang berusaha menghapus, menambah, atau bentuk pengubahan lainnya dalam kanal komunikasi. Keempat kelas besar yang telah tersebutkan di atas melingkupi jenis-jenis serangan-serangan umum lainnya. Pengintaian (Snooping) merupakan salah satu bentuk dari disclousure. Sifat serangan yang muncul dari snooping adalah pasif, dengan dicontohkan adanya pihak yang “mendengarkan” suatu komunikasi atau
6
browsing pada suatu berkas sistem informasi. Layanan kerahasiaan dapat digunakan untuk mengatasi ancaman ini. Modifikasi (modification atau alteration) adalah pengubahan tak-berwenang terhadap informasi yang mencakup tiga jenis kelas ancaman. Sifat serangan modikasi adalah serangan aktif, dimana terdapat pihak yang bertindak mengubah informasi. Penyamaran (masquerading atau spoofing) identitas suatu pihak yang dilakukan oleh pihak lain merupakan bentuk ancaman jenis deception dan usurpation. Sifat serangan penyamaran bisa bersifat pasif dan aktif. Layanan otentikasi dapat digunakan untuk mengatasi ancaman tersebut. Kebijakan (Policy) dan Mekanisme . Bishop pada tahun 2003 mengemukakan bahwa kebijakan keamanan adalah pernyataan tentang apa yang dilarang dan apa yang diperbolehkan. Mekanisme keamanan merupakan metode, alat, atau prosedur untuk menerapkan kebijakan keamanan. Mekanisme tidak harus bersifat teknik, misalnya pada kebutuhan pembuktian identitas sebelum mengganti password. Kebijakan terkadang juga membutuhkan mekanisme prosedural yang tidak dapat dipenuhi oleh teknologi. Kebijakan dapat disajikan secara matematika, sebagai sederetan kondisi yang diperbolehkan (aman) dan kondisi yang dilarang (tidak aman), dimana untuk setiap kebijakan memberikan deskripsi aksioma dari kondisi aman dan tidak aman. Spesifikasi kebijakan keamanan dari tindakan “ aman” dan “tidak aman” memberikan mekanisme kebijakan yang dapat mencegah serangan, mendeteksi serangan atau memulihkan kondisi setelah serangan. Prevention merupakan pencegahan serangan atau menggagalkan serangan. Detection dilakukan bila suatu serangan tidak dapat dicegah, dan sekaligus mengindikasikan efektifitas dari prevention. Recovery mempunyai dua bentuk. Bentuk pertama recovery adalah menghentikan serangan, mengevaluasi dan memperbaiki kerusakan yang disebabkan oleh serangan tersebut. Pada bentuk kedua, sistem akan tetap melanjutkan fungsi dengan benar meskipun terjadi serangan. Tipe ini sulit untuk diimplementasikan karena kompleksitas dari sistem komputer.
7
Kriptografi Menezes et al. (1997) mengemukakan kriptografi adalah studi teknik matematika yang berkaitan dengan aspek keamanan informasi seperti kerahasiaan, integritas data, otentikasi entitas, dan otentikasi asal data. Dari definisi tersebut tersirat bahwa kriptografi tidak hanya sebagai alat yang memberikan keamanan informasi, melainkan juga berupa seperangkat teknik-teknik atau prosedurprosedur yang berhubungan dengan keamanan informasi. Menezes et al. (1997) juga menjabarkan sejumlah alat kriptografi (primitif) yang digunakan untuk memberikan keamanan informasi. Pada kriptografi tujuan keamanan informasi yang ingin diperoleh : 1
Kerahasiaan, yaitu suatu layanan yang digunakan untuk menjaga isi informasi dari semua pihak yang tidak berwenang memilikinya.
2
Integritas data, yaitu suatu layanan yang berkaitan pengubahan data dari pihak-pihak yang tidak berwenang. Untuk menjamin integritas data, kita harus mampu mendeteksi manipulasi data dari pihak-pihak yang tidak berwenang. Manipulasi data diartikan sebagai hal- hal yang berkaitan dengan penghapusan, penyisipan, dan penggantian data.
3
Otentikasi, yaitu adalah suatu layanan yang berhubungan dengan identifikasi kedua entitas dan informasi itu sendiri. Dua pihak terlibat dalam komunikasi seharusnya mengidentifikasi dirinya satu sama lain. Informasi yang dikirim melalui suatu kanal seharusnya dapat diotentikasi asal data, isi data , tanggal dan waktu pengiriman data. Atas dasar ini otentikasi terbagi menjadi dua kelas besar, yaitu: otentikasi entitas dan otentikasi asal data.
4
Non-repudiasi, yaitu adalah suatu layanan yang ditujukan untuk mencegah terjadinya pelanggaran kesepakatan yang telah dibuat sebelumnya oleh entitas. Apabila sengketa muncul ketika suatu entitas mengelak telah melakukan komitmen tertentu, maka suatu alat untuk menangai situasi tersebut diperlukan. Misalnya, suatu entitas mendapatkan wewenang dari entitas lainnya untuk melakukan aksi tertentu, kemudian dia mengingkari wewenang yang diberikan, maka suatu prosedur yang melibatkan pihak ketiga yang terpercaya diperlukan untuk menyelesaikan sengketa itu.
8
Scheneir (1996) mengemukakan istilah- istilah yang dipergunakan dalam kriptografi, yakni : -
Pihak yang ingin mengirim pesan disebut pengirim (sender).
-
Pihak yang menerima pesan disebut penerima (receiver).
-
Pesan asal disebut plaintext (atau disebut juga cleartext).
-
Proses transformasi untuk mengubah plaintext menjadi bentuk yang tidak terbaca disebut enkripsi (encryption).
-
Pesan yang sudah terenkripsi disebut ciphertext.
-
Proses kebalikan dari enkripsi, untuk mengembalikan ciphertext menjadi plaintext disebut dekripsi (decryption)
-
Informasi yang hanya diketahui antara pengirim dan penerima, dan untuk mengamankan plaintext disebut kunci (key).
Gambar 1 mengilustrasikan hubungan antar istilah- istilah yang telah dikemukakan di atas dalam bentuk sistem kriptografi.
Gambar 1 Skema sistem kriptografi. Otentikasi Otentikasi merupakan suatu alat yang digunakan untuk menjamin bahwa entitas atau informasi yang sah belum dimanipulasi oleh pihak-pihak yang tidak berwenang. Beberapa contoh tujuan keamanan otentikasi secara spesifik meliputi: kontrol akses, otentikasi entitas, otentikasi pesan, integritas data, non repudiasi, dan otentikasi kunci. Otentikasi merupakan salah satu bagian terpenting dari seluruh tujuan keamanan informasi. Secara garis besar otentikasi dikelompokkan
9
menjadi dua, yaitu otentikasi entitas (identifikasi) dan otentikasi asal data (otent ikasi pesan). Perbedaan utama antara otentikasi entitas dan otentikasi pesan adalah otentikasi pesan tidak memberikan jaminan rentang waktu diciptanya pesan, sedangkan otentikasi entitas mencakup pembuktian identitas penuntut melalui komunikasi nyata oleh pemeriksa terkait, selama eksekusi protokol di dalam waktu nyata (real-time). Perbedaan lainnya adalah bahwa otentikasi pesan melibatkan pesan yang mempunyai makna, sedangkan otentikasi entitas hanya sekedar membuktikan entitas tanpa melibatkan pesan. Skema umum, suatu identifikasi melibatkan penuntut (claimant) A dan pemeriksa (verifier) B. Pemerika dihadirkan dengan praduga sebelumnya bahwa penuntut
mengakui
identitas
berasal
darinya.
Tujuannya
adalah
untuk
membuktikan bahwa identitas benar-benar dari A. Dalam suatu transakasi yang melibatkan dua partai, teknik identikasi atau otentikasi entitas menjamin agar pihak kedua meyakini (melalui bukti yang kuat) identitas pihak pertama, sementara itu pihak pertama aktif menciptakan bukti yang diperlukan (Guritman 2003). Stallings pada tahun 2003 mengemukakan bahwa mekanisme otentikasi pada dasarnya mempunyai 2 level, level terendah berisi fungsi yang digunakan untuk menghasilkan otentikator,
nilai yang digunakan untuk melakukan
otentikasi. Fungsi ini yang digunakan sebagai dasar bagi otentikasi pada level yang lebih tinggi untuk melakukan verikasi dan secara garis besar dapat dikelompokkan menjadi 3 bagian, yaitu : 1
Enkripsi pesan: hasil enkripsi (siperteks) digunakan sebagai otentikator
2
Message Authenticator Code (MAC), fungsi publik dan kunci untuk menghasilkan nilai dengan panjang tetap yang digunakan sebagai otentikator
3
Fungsi hash, fungsi publik yang memetakan pesan panjang sembarang dengan nilai hash panjang tetap yang digunakan sebagai otentikator
10
Fungsi Hash Menezes et al. (1997) menyatakan secara umum fungsi hash dibagi menjadi dua kelas, yaitu fungsi hash tak-berkunci (unkeyed hash function) dan fungsi hash berkunci (keyed hash function). Fungsi hash tak-berkunci mempunyai spesifikasi mengatur satu parameter input, yakni pesan. Fungs i hash berkunci mempunyai spesifikasi mengatur dua input parameter yang berbeda, yakni pesan dan kunci. Fungsi hash adalah fungsi h yang mempunyai minimal dua sifat berikut : -
kompresi (compression): h memetakan input x dengan sembarang panjang bit yang berhingga, ke output h(x) dengan panjang bit tetap n,
-
kemudahan komputasi (ease of computation): diketahui h dan suatu input x dan h(x) mudah dihitung.
Berdasarkan kegunaanya, fungsi hash dibedakan atas dua tipe: 1
Modification detection code (MDC) MDC disebut juga dengan manipulation detection code (MDC) atau message integritas code (MIC). Tujuan dari MDC adalah menghasilkan image atau nilai hash suatu pesan untuk memberikan jaminan integritas data sebagaimana diperlukan dalam suatu aplikasi khusus. MDC merupakan subkelas dari fungsi hash tak-berkunci dan dapat diklasifikasikan lagi dalam dua kelas, yaitu : (a) fungsi hash satu-arah (one-way hash function - OWHF) fungsi hash ini mempunyai sifat apabila diketahui suatu nilai hash maka tidak layak secara komputasi untuk menentukan inputnya . (b) fungsi hash tahan tumbukan (collision resistant hash function -CRHF) fungsi hash ini mempunyai sifat bahwa tidak layak secara komputasi untuk menemukan 2 input yang menghasilkan nilai hash yang sama.
2
Message authentication codes (MAC) MAC merupakan subkelas dari fungsi hash berkunci. MAC mempunyai dua parameter berbeda, yaitu: input pesan dan kunci rahasia. Sesuai dengan namanya, tujuan MAC (tanpa terkait dengan mekanisme yang lain) adalah untuk menjamin integritas pesan dan asal pesan.
11
Hash Message Authentication Code (HMAC) Pada umumnya MAC digunakan oleh dua buah pihak yang berbagi kunci rahasia untuk melakukan otentikasi informasi yang terkirim antar mereka. HMAC merupakan salah satu algoritma yang dapat digunakan untuk mengkonstruksi nilai MAC menggunakan sebuah kunci rahasia pada fungsi hash yang digunakan. Menurut Stallings tahun 2003, HMAC dalam dokumen Request for Comments (RFC2104) dinyatakan sebagai pilihan utama dalam mengimplementasikan MAC untuk keamanan Internet Protocol (IP), dan protokol internet lainnya seperti Secure Sockets Layer (SSL). Dokumen tersebut juga menjelaskan alasan pemilihan HMAC, yaitu : -
Menggunakan fungsi hash yang sudah ada, tanpa perlu melakukan modifikasi terhadap fungsi hash tersebut.
-
Kemudahan untuk mengganti fungsi hash yang telah digunakan.
-
Tidak mengurangi kinerja fungsi hash yang digunakan.
-
Menggunakan dan mengelola kunci dengan cara yang sederhana.
-
Mempunyai analisis kriptografik terhadap kekuatan mekanisme otentikasi yang mudah dipahami berdasarkan asumsi-asumsi dari fungsi hash yang digunakan. Dalam FIPS PUB 198 (2002) menjelaskan cara untuk mengkonstruksi nilai
MAC dari data ‘teks’ menggunakan fungsi HMAC, yaitu : MAC(teks)t = HMAC(K,teks)t=H((K 0 ⊕ opad)||H((K 0 ⊕ ipad)||teks))t Keterangan simbol yang digunakan pada fungsi HMAC diatas adalah : B
= panjang blok (dalam byte) input fungsi hash
H
= fungsi hash yang digunakan (misal : SHA-256 atau MD5 )
ipad
= 00110110 (36 dalam heksadesimal) yang diulang B kali
K
= kunci rahasia antara pengirim dan penerima
K0
= kunci K setelah pra-proses untuk membentuk kunci B byte
L
= panjang blok (dalam byte) ouput fungsi hash
opad
= 01011100 (5c dalam heksadesimal) yang diulang B kali
t
= panjang MAC (dalam byte), dimana 4 = t = L, disarankan
12
L/2 = t = L teks
= input data yang akan dihitung nilai HMAC dengan panjang n bit, dimana 0 = n < 2B – 8B
||
= operasi penggabungan
⊕
= operasi XOR
Secure Hash Algorithm (SHA) Tahun 2002 National Institute of Standards and Technology (NIST) mempulikasikan Federal Information Processing Standards Publication (FIPS PUB) 180-2 yang berisi standar empat buah algoritma aman, yaitu SHA-1 1 , SHA256, SHA-384, SHA-512 untuk komputasi data elektronik (pesan) yang lebih ringkas. Pesan dengan panjang < 264 bit (untuk SHA-1 dan SHA-256) atau 2128 bit (untuk SHA-384 dan SHA-512) sebagai input bagi algoritma dan akan menghasilkan output yang disebut message digest. Panjang message digest berkisar antara 160 sampai 512 bit, bergantung pada algoritma yang digunakan. Tabel 1 dibawah ini mendeskripsikan secara lengkap karakteristik dari ke-4 algoritma tersebut. Tabel 1 Karakteristik varian algoritma SHA Ukuran Ukuran Ukuran Algoritma
Ukuran
Pesan
Blok
Kata
Message Digest
Keamanan *
(bit)
(bit)
(bit)
(bit)
(bit)
SHA-1
64
<2
512
32
160
80
SHA-256
< 264
512
32
256
128
SHA-384
< 2128
1024
64
384
192
SHA-512
< 2128
1024
64
512
256
* Kata “keamanan” ditujukan untuk ketahanan terhadap serangan tanggal lahir (birthday attack ) pada message digest dengan panjang n akan menghasilkan collision mendekati 2n/2
Setiap algoritma dapat dideskripsikan dalam dua tahap: pra-proses dan komputasi hash. Tahap pra-proses meliputi padding pesan, parsing pesan yang telah di-pad dalam m-bit blok, dan penentuan nilai inisialisasi untuk komputasi nilai hash. Komputasi hash akan membangkitkan message schedule dari pesan 1
Algoritma SHA-1 merupakan algoritma SHA-1 yang dipublikasikan dalam FIPS180-1
13
yang telah di-pad, kemudian menggunakan schedule tersebut bersama fungsi, kontanta, dan operasi kata yang secara iterasi akan membangkitkan barisan nilai hash. Nilai hash akhir yang dibangkitkan oleh komputasi hash digunakan sebagai message digest. Secara teoritis, semua algoritma hash dapat dipatahkan menggunakan serangan brute force dan tanggal lahir. Hal tersebut bergantung pada waktu yang dibutuhkan dan spesifikasi komputer yang digunakan. Wang et al. (2005) telah berhasil mematahkan SHA-1 dengan mengembangkan suatu teknik baru dalam mencari collision pada SHA-1. Berdasarkan analisis mereka, collision pada SHA1 dengan 80 langkah operasi dapat ditemukan melalui operasi hash yang komplesitasnya kurang dari 269 , lebih lebih kecil dari nilai teoritisnya, yaitu 280 . Mereka juga membuat dugaan bahwa collision pada SHA-1 dengan langkah yang sudah direduksi menjadi 70 dapat ditemukan sekarang ini menggunakan komputer super. SHA-256 menggunakan input pesan M, dengan panjang λ bit, dimana 0 = λ = 264 dan menghasilkan output message digest dengan panjang 256 bit. Input pada algoritma tersebut akan diproses dalam blok-blok dengan panjang 512 bit. Proses yang dilakukan dalam algoritma tersebut terbagi atas 2 tahap, yakni pra-proses dan komputasi hash, dimana proses secara lengkap dapat dilihat pada FIPS PUB 180-2 (2002). Penyembunyian Informasi (Information Hiding) Petitcolas et al. (1999) membuat skema klasifikasi teknik penyembunyian informasi yang diilustrasikan pada Gambar 2. Covert channels didefinisikan Lampson (1973) yang diacu dalam Petitcolas (2000), pada konteks sistem keamanan multilevel (contohnya sistem komputer militer), sebagai suatu jalur komunikasi yang tidak didesain atau direncanakan untuk mentransfer informasi apapun. Kanal tersebut biasanya digunakan oleh program tak terpercaya dalam hal kehilangan informasi selama melakukan layanan terhadap program lain. Kanal komunikasi ini telah diteliti sejak lama untuk menemukan cara menyimpan suatu program.
14
,QIRUPDWLRQ+LGLQJ 3HQ\HPEXQ\LDQ, QIRUP DVL
&RYHUW&KDQQHOV
6WHJ DQRJUDSK\
/ LJXLVWLF 6WHJDQRJUDSK\
$QRQ\PLW \
&RS\ULJKW 0 DUNLQJ
5REXVW &RS\ULJKW 0 DUNLQJ
7HFKQLFDO 6WHJDQRJUDSK\
) LQJHUSULQWLQJ
) UDJLOH &RS\ULJKW 0 DUNLQJ
: DWHUPDUNLQJ
,PSHUFHSWLEOH : DWHUP DUNLQJ
9LVLEOH : DWHUPDUNLQJ
Gambar 2 Skema klasifikasi teknik penyembunyian informasi. Anonymity adalah cara penyembunyian metadata suatu pesan, yaitu pengirim dan penerima pesan. Teknik anonymity dapat dibedakan berdasarkan kebutuhan pihak mana yang akan "anonymized"; pengirim, penerima atau keduanya. Pada aplikasi web terfokus pada anonymity penerima sedangkan pengguna email lebih berkepentingan dengan anonymity pengirim. Steganografi (Steganography) merupakan cabang ilmu penting dalam penyembunyian informasi. Bila kriptografi berkaitan dengan proteksi isi pesan, maka steganografi berkaitan dengan penyembunyian keberadaannya. Steganografi merupakan bentuk adaptasi modern dari steganographia (Trithemius, 1462–1516) dari Yunani, yang secara literal berarti “tulisan terkubur” dan biasanya diinterpretasikan sebagai penyembunyian informasi dalam informasi lain. Watermarking hampir mirip dengan steganografi, tapi dengan perbedaan kebutuhan “ketahanan” terhadap serangan. Kriteria “ketahanan” pada steganografi berkaitan dengan ketahanan terhadap deteksi pesan tersembunyi, sedangkan pada watermaking
berkaitan
dengan
ketahanan
terhadap
penghapusan
pesan.
Penyembunyian pesan dengan sistem watermarking biasanya digunakan untuk obyek digital yang terproteksi. Watermaks tidak selalu tersembunyi, seperti pada sistem yang menggunakan visible digital watermarks, tapi sebagian besar literatur menfokuskan pada imperceptible (tidak terlihat, transparan, atau tidak terdengar, bergantung pada media yang digunakan) digital watermarks yang mempunyai
15
daerah aplikasi lebih luas. Visible digital watermarks biasanya digunakan oleh photographer untuk menandai foto digital yaitu berupa pola visual (seperti logo perusahaan atau tanda hak cipta) yang berada diatas foto digital tersebut. Steganografi Steganografi merupakan seni untuk menyembunyikan keberadaan informasi pada pembawa yang terlihat tidak mencurigakan. Steganografi dan kriptografi digunakan untuk keamanan informasi, dan secara teknologi keduanya bersifat konvergen tapi dengan tujuan yang berbeda. Teknik kriptografi bertujuan mengacak pesan, sehingga bila terjadi penyadapan pesan, pesan tersebut tidak dapat dipahami oleh pihak penyadap. Pada steganografi bertujuan menyamarkan pesan untuk menyembunyikan keberadaannya agar tidak terlihat sehingga tidak diketahui bahwa ada suatu pesan lain ikut terkirim. Pesan terenkripsi mungkin akan menimbulkan kecurigaan tapi sebaliknya pesan yang tersembunyi diharapkan tidak akan menimbulkan kecurigaan. Pfitzmann (1996) telah me ndefinisikan istilah- istilah yang dipergunakan dalam steganografi beserta diagram kerjanya (Gambar 3) dan disetujui oleh Workshop Internasioanal Pertama untuk Information Hiding. Kunci (Stego)
Cover
Fungsi Penyisipan
Kunci (Stego) Stego-
Embedded
Fungsi Ekstraksi Embedded
Gambar 3 Cara kerja steganografi. Keterangan istilah dari gambar 3 diperinci sebagai berikut : -
Cover-, input awal dari pesan stego atau dengan kata lain tempat untuk menyembunyikan sesuatu yang dirahasiakan. Pada beberapa aplikasi, covermessage berasal dari luar sistem, atau sebaliknya dipilih
16
selama proses penyembunyian (inner) ditandai dengan kotak bergaris-garis putus. -
Embedded-, data atau sesuatu yang disembunyikan.
-
Stego-
data>,
stegomessage
merupakan
hasil
dari
proses
penyembunyian, dimana didalamnya tersembunyi suatu pesan. -
Kunci (Stego), kunci stego merupakan data rahasia tambahan yang dapat digunakan dalam proses penyembunyian. Proses penyisipan dan ekstraksi pesan membutuhkan kunci yang sama.
-
Tipe data, jenis data yang digunakan, bisa berupa image (gambar), audio (suara), dan teks atau secara umum disebut “message (pesan)” saja. Simmons (1983) mengemukan suatu contoh yang menjelaskan steganografi
dengan sangat baik yang disebut Prisoner’s Problem. Pada problem ini terdapat 2 orang yang bernama Alice dan Bob 2 yang ditangkap polisi karena berbuat suatu kejahatan dan dipenjara dalam dua sel yang berbeda. Mereka berencana untuk melarikan diri tapi permasalahannya adalah semua komunikasi mereka diawasi oleh seorang sipir penjara, bernama Wendy. Wendy tidak mengizinkan mereka melakukan komunikasi terenkripsi, dan akan menempatkan mereka ketempat terisolasi jika ditemukan bukti adanya bentuk komunikasi yang mencurigakan antara mereka berdua. Alice dan Bob harus melakukan komunikasi tersembunyi (Gambar 4) agar tidak menimbulkan kecurigaan Wendy yaitu dengan membuat kanal subliminal3 . Cara yang dapat dilakukan adalah menyembunyikan
suatu
informasi dalam pesan yang tidak mencurigakan. Sebagai contoh Bob membuat gambar sapi berwarna biru sedang berbaring diatas rumput hijau kemudian mengirimkannya kepada Alice. Wendy yang tidak dapat menangkap makna tertentu dari warna sapi pada gambar tersebut akan menerusknnya kepada Alice. Prisoner’s problem berasumsi bahwa Alice dan Bob dapat menggunakan komputer dan mempertukarkan pesan digital dalam berbagai format (teks, gambar
2
Protokol komunikasi pada kriptografi pada umumnya menggunakan dua karakter orang rekaan bernama Alice dan Bob. Konvensi yang berlaku umum adalah nama pihak-pihak yang terlibat dalam suatu protokol berurutan secara abjad (Carol dan Dave setelah Alice dan Bob) atau nama yang awalan abjadnya sesuai dengan abjad pertama dari perannya dalam protokol, seperti Wendy sebagai warden. 3 Kanal dimana warden (Wendy) atau pengintai dapat melihat dan mengubah pesan yang melewati kanal tersebut (Simmon 1993)
17
maupun audio). Permasalahan akan muncul jika Wendy dapat mengubah pesan Bob yang dikirimkan untuk Alice. Sebagai contoh, Wendy dapat mengubah warna sapi Bob menjadi merah, sehingga merusak informasi tersebut; pada situasi ini Wendy disebut active warden. Situasi akan diperburuk bila Wendy bertindak sebagai malicious warden, dimana dia dapat memalsukan pesan dan mengirimkan kepada seorang narapidana melalui kanal subliminal sehingga seolah-olah berasal dari seorang narapidana lainnya.
Gambar 4 Ilustrasi Prisoner’s Problem (Craver 1997). Johnson dan Katzenbeisser (2000) menjelaskan bahwa terdapat beberapa pendekatan dalam pengklasifikasian sistem steganografi. Pengklasifikasian tersebut didasarkan pada tipe cover yang digunakan ataupun berdasarkan metode modifikasi yang dilakukan terhadap cover tersebut. Johnson dan Katzenbeisser (2000) menggunakan pendekatan kedua dan mengelompokkannya dalam 6 kategori : 1
Sistem subsitusi, mensubstitusi bagian yang tidak berguna dari suatu cover dengan pesan rahasia, contohnya Substitusi Least Significant Bit (LSB)
2
Teknik transformasi domain, menyisipkan informasi rahasia dalam signal yang mengalami transformasi ruang (misalnya pada domain frekuensi), contohnya steganografi dalam domain Discrete Cosine Transform (DCT).
3
Teknik penyebaran spektrum, mengadaptasi ide dari komunikasi penyebaran sprektrum dimana suatu signal ditransmisi dalam suatu bandwith melewati batas minimal untuk pengiriman informasi. Dengan kata lain, pesan “menyebar” pada suatu wide frequency bandwith.
18
4
Metode Statistika, mengkodekan informasi dengan cara mengubah beberapa karakteristik statistik cover dan menggunakan pengujian hipotesa dalam proses ekstraksi.
5
Teknik distorsi, menyimpan informasi dengan distorsi signal dan menghitung deviasi dari cover asal pada tahapan decoding.
6
Metode
pembangkitan
cover,
mengkodekan
informasi
dengan
cara
membangkitkan suatu cover yang dibutuhkan untuk komunikasi rahasia, contohnya Automated generation of English Text. Suatu media cover pada steganografi dapat berupa file teks, gambar atau suara. Simsek (2004) mengemukakan bahwa steganografi dapat juga dibagi menjadi dua kelompok berdasarkan tipe media cover yang digunakan : -
Steganografi Linguistik Steganografi yang menggunakan media cover teks, maka steganografi tersebut bertipe linguistik. Teknik yang dapat dipergunakan oleh steganografi tipe ini diantaranya adalah Line Shift Coding, Word Shift Coding, Feature Coding, Open Code Methods (Null Cipher), Syntactic Methods, dan Semantics Methods.
-
Steganografi Teknik Bila media cover yang digunakan bertipe non-teks, maka tipe steganografi tersebut adalah steganografi teknik. Cover media dapat berupa gambar dan audio. a. Steganografi pada Gambar. Gambar mempunyai daerah noisy tidak dapat dideteksi oleh penglihatan manusia atau Human Visual System (HVS) yang dapat digunakan untuk menyembunyikan suatu pesan. Teknik yang biasa dipergunakan antara lain Penyisipan LSB, Masking and Filtering. b. Steganografi pada Audio Signal audio mempunyai noise yang tidak dapat dideteksi oleh pendengar manusia atau Human Auditory System (HAS). Teknik yang
19
biasa dipergunakan untuk penyembunyian data audio adalah penyisipan pada LSB, phase coding, spread spectrum, dan echo data hiding .
Least Significant Bit (LSB) Metode LSB merupakan salah satu jenis metode penyembunyian informasi dengan mensubstitusi bagian yang tidak berguna dari suatu media dengan pesan rahasia. Bagian yang tidak berguna tersebut terletak pada posisi bit LSB. Metode ini dapat dilakukan pada media gambar dengan model warna RGB. Model warna RGB merupakan gambar yang tiap pixelnya direpresentasikan oleh kombinasi intensitas tiga buah komponen warna yaitu, Red(R), Green(G), dan Blue(B). Masing- masing komponen tersebut terdiri atas 8 bit. Sebuah warna dalam pixel gambar RGB dapat direpresentasikan dalam tiga byte atau 24-bit. Sehingga, kombinasi ketiga intensitas warna tersebut dapat menghasilkan 16 juta (224 = 16.777.216) variasi warna. Contoh gambar RGB dapat lihat pada Gambar 5.
Gambar 5 Contoh gambar RGB (Sentosa 2005). Nilai bit media setelah disubtitusi akan mengalam perubahan tetapi perubahan tersebut tidak akan berpengaruh secara nyata terhadap tampilan kombinasi warna yang dihasilkan oleh tiga komponen warna Red Green Blue (RGB). Pada Gambar 6 terlihat bit-bit LSB pada 1 pixel warna, penyembunyian informasi dapat dilakukan pada bit-bit tersebut.
Gambar 6 Bit pada posisi LSB (Least Significant Bit).
20
Contoh lain untuk mengilustrasikan cara kerja LSB adalah sebagai berikut : Data awal, tiga pixel dari gambar 24-bit (00100111 11101001 11001000) (00100111 11001000 11101001) (11001000 00100111 11101001) Informasi yang disembunyikan adalah karakter A. Nilai biner dari karakter ‘A’ adalah 10000011. Data setelah penanaman karakter ‘A’ (00100111 11101000 11001000) ? 100 (00100110 11001000 11101000) ? 000 (11001000 00100111 11101001) ? 011 Perubahan nilai biner pada data awal hanya pada bit-bit yang digarisbawahi. Protokol Protokol menurut Schneier (1996) adalah serangkaian langkah- langkah yang melibatkan dua pihak atau lebih dan didesain untuk menyelesaikan suatu permasalahan. Serangkaian langkah- langkah dalam protokol bersifat berurutan, dimana suatu langkah dapat dikerjakan bila langkah sebelumnya telah diselesaikan. Karakterisik protokol lainnya adalah : 1
Semua pihak yang terlibat dalam suatu protokol harus mengetahui keberadaan protokol tersebut dan setuju untuk mengikuti keseluruhan langkah- langkah yang harus diikutinya dalam protokol tersebut.
2
Protokol tidak boleh membingungkan; setiap langkah dideskripsikan dengan jelas sehingga tidak menimbulkan salah pengertian.
3
Protokol harus lengkap; selalu tersedia suatu tindakan untuk setiap kemungkinan situasi. Menezes et al. pada tahun 1997 mendefinisikan protokol (kriptografi)
adalah algoritma terdistribusi yang didefiniskan sebagai sebarisan langkahlangkah yang secara jelasmenspesifikasikan tindakan-tindakan dua entitas atau
21
lebih untuk mencapai tujuan keamanan tertentu. Protokol memegang peranan penting dalam kriptografi terutama dalam mempertemukan tujuan-tujuan kriptografi. Skema enkripsi, penanda digital, fungsi hash dan pembangkit bilangan acak merupakan primitif-primitif yang digunakan untuk membangun suatu protokol . Sebagai perbandingan untuk pengertian protokol, mekanisme mempunyai pengertian lebih umum yang meliputi makna protokol itu sendiri, yakni algoritma-algoritma yang menspesifikasikan langkah- langkah setiap entitas dan teknik-teknik keamanan non kriptografi (misalnya perlindungan perangkat keras dan prosedur kontrol) untuk mencapai tujuan keamanan tertentu. Kegagalan protokol atau mekanisme terjadi ketika protokol atau mekanisme gagal mencapai tujuan yang diinginkan, dalam suatu cara dimana musuh mendapatkan keuntungan dengan tidak membobol primitif-primitif penyusunnya, tetapi dengan memanipulasi protokol atau mekanisme itu sendiri. Beberapa alasan penyebab terjadinya kegagalan protokol, yaitu : 1
Kelemahan-kelemahan
pada
kriptografi
primitif
penyusunnya
yangmempengaruhi keseluruhan protokol 2
Asumsi jaminan keamanan terlampau ketat sehingga sulit untuk dipenuhi atau dimengerti secara jelas
3
Kesalahan penerapan beberapa prinsip pada sejumlah primitif seperti enkripsi.
Dua langkah penting yang harus dilakukan ketika mendesain suatu protokol (kriptografi) : a
Identifikasi semua asumsi yang digunakan
b
Untuk setiap asumsi, tentukan akibat bagi tujuan keamanan jika asumsi tersebut dilanggar. Protokol Steganografi. Protokol Steganografi adalah protokol yang
melibatkan algoritma steganografi. Dalam beberapa literatur seperti yang diungkapkan Katzenbeisser (2000), pada dasarnya protokol steganografi terbagi atas 3 tipe, yaitu : 1
steganografi murni (pure steganograpy),
22
2
stegano grafi kunci rahasia (secret key steganography),
3
steganografi kunci publik (public key steganography). Protokol steganografi murni adalah sistem steganografi yang tidak
membutuhkan pertukaran informasi rahasia (seperti kunci stego) ketika akan memulai komunikasi disebut steganografi murni. Keamanan sistem bergantung sepenuhnya pada kerahasian komunikasi tersebut. Steganografi murni tidak sepenuhnya aman karena bertentangan dengan prinsip Kerckhoffs. Kerckhoffts (1883) yang diacu dalam Petitcolas (2002) memberikan saran untuk menggunakan asumsi bahwa metode penyandian pesan telah diketahui musuh, sehingga keamanan bergantung pada pemilihan kunci4 . Bila Wendy diasumsikan mengetahui algoritma yang digunakan oleh Alice dan Bob selama pertukaran informasi, maka secara teori Wendy dapat mengekstraksi informasi pada setiap cover yang terkirim antara Alice dan Bob. Selain itu protokol ini tidak dapat melakukan otentikasi pesan, jika Wendy bertindak aktif dengan menggantikan pesan Alice dengan pesan miliknya sendiri, maka Bob tidak akan mengetahui bahwa pesan yang diterimanya bukan berasal dari Alice. Keamanan suatu sistem steganografi sebaiknya bergantung pada informasi rahasia yang dimiliki oleh Alice dan Bob, yaitu kunci stego. Tanpa memiliki pengetahuan terhadap kunci tersebut, tidak seorangpun diharapkan dapat mengekstraksi informasi rahasia dari cover. Sistem steganografi kunci rahasia mempunyai metode kerja yang sama dengan sandi simetris. Pengirim memilih suatu cover c dan menyisipkan pesan rahasia ke dalam c menggunakan kunci rahasia k. Bila penerima mengetahui kunci k tersebut maka dia dapat melakukan proses kebalikannya yaitu mengekstraksi pesan rahasia dari cover. Steganografi kunci publik membutuhkan dua macam kunci, yaitu kunci pribadi dan kunci publik, seperti halnya pada kriptografi kunci publik. Kunci publik digunakan dalam proses penyisipan, sedangkan kunci rahasia digunakan untuk penyusunan pesan rahasia. Diasumsikan, Alice dan Bob dapat melakukan pertukaran kunci publik sebelum dipenjarakan. Salah satu cara untuk membangun 4
Il faut qu’il n’exige pas le secret, et qu’il puisse sans inconvenient tomber entre les mains de l’ennemi
23
sistem steganografi kunci publik adalah menggunakan algoritma kriptografi kunci publik. Diasumsikan Alice dan Bob dapat melakukan pertukaran kunci publik menggunakan algoritma kriptografi kunci publik sebelum dipenjarakan. Steganografi kunci publik menggunakan asumsi bahwa fungsi decoding D dalam sistem steganografi dapat digunakan untuk semua cover, terlepas cover tersebut mengandung pesan rahasia atau tidak. Selanjutnya, elemen acak dari M , dapat kita sebut sebagai “acak alami” dari cover. Bila diasumsikan keteracakan alami ini secara statistika tidak dapat dibedakan dengan ciphertext yang dihasilkan oleh sistem kripto kunci publik, maka sistem steganografi yang lebih aman dapat dibangun melalui penyisipan ciphertext dibandingkan pesan rahasia tidak terenkripsi. Anderson (1996, 1998) menyusun suatu protokol yang menggunakan steganografi kunci publik dengan langkah berikut : 1
Alice mengenkripsi pesan rahasianya M, dengan fungsi enkripsi E, menggunakan kunci publik milik Bob, Pub B .
2
Alice menyisipkan hasil langkah ke-satu menggunakan fungsi penyisipan S, pada suatu kanal yang diketahui oleh Bob (termasuk juga Wendy) T. Protokol tersebut mengasumsikan bahwa algoritma kriptografi dan fungsi penyisipan diketahui oleh publik.
3
Walaupun Bob tidak mempunyai pengetahuan pendahulu bila ada informasi rahasia telah terkirimkan dalam suatu cover tertentu, Bob akan mengekstraksi dengan fungsi S’, setiap pesan yang datang dan kemudian mendekripsi hasil ekstraksi dengan fungsi D menggunakan kunci pribadi yang dimiliki Bob. Bila cover merupakan pesan T, maka informasi hasil dekripsi merupakan pesan Alice, yaitu M. Protokol ini mengasumsikan bahwa Wendy mengetahui metode penyisipan
yang digunakan oleh Alice, Wendy akan berusaha mengekstraksi pesan rahasia yang dikirimkan Alice untuk Bob. Metode enkripsi yang digunakan Alice akan menghasilkan teks sandi yang terlihat acak, sehingga Wendy tidak dapat memutuskan apakah informasi hasil ekstraksi tersebut bermakna atau tidak, kecuali Wendy dapat mematahkan sistem kripto yang ada.
24
Satu hal yang cukup menganggu pada protokol ini adalah Bob harus menduga teknik steganografi yang digunakan dan melakukan decode setiap cover yang Bob terima dari Alice. Situasi akan menjadi lebih buruk jika pesan stego dikirimkan tidak khusus untuk penerima tertentu, misalnya melalui internet newgroups, dimana setiap anggota newsgroups tersebut akan berusaha decode setiap obyek yang dikirim, walapun bukan ditujukan untuk dia. Craver
(1997)
mengembangkan
protokol
milik
Anderson
untuk
mensimulasikan steganografi murni menggunakan steganografi kunci publik dan pribadi. Sebagian besar aplikasi lebih memilih steganografi murni, karena tidak memerlukan berbagi kunci stego antar pelaku komunikasi, walaupun disisi lain protokol tersebut tidak dapat memberikan jaminan keamanan bila penyerang mengetahui fungsi penyisipan yang digunakan. Dengan protokol pertukaran kunci menggunakan steganografi kunci publik, Alice dan Bob dapat melakukan pertukaran kunci rahasia k yang akan mereka gunakan nant i pada sistem steganografi kunci rahasia. Protokol diawali dengan Alice membangkitkan pasangan kunci publik dan pribadi secara acak untuk digunakan dalam sistem kripto kunci publik. Alice akan menyisipkan kunci publik pada kanal yang telah diketahui oleh Bob (termasuk Wendy). Bob akan membuat dugaan bahwa kanal berisi kunci publik Alice dan berusaha mengektraksinya. Bob akan menyisipkan kunci k yang terpilih secara acak beserta pesan pendek sebagai pemberitahuan penerimaan, dengan terlebih dahulu mengenkripsi keduanya menggunakan kunci publik milik Alice yang diterimanya, pada suatu cover dan mengirimkannya kepada Alice. Alice akan mengekstraksi
pesan
dari
Bob
kemudian
mendekripsi
hasil
ekstraksi
menggunakan kunci pribadinya. Sekarang, Alice dan Bob mempunyai kunci stego k yang diketahui berdua. Protokol steganografi pertukaran pesan ini rawan terhadap serangan man-inthe-midlle. Bila Wendy berlaku aktif, dia akan mengambil objek stego pertama dari Alice untuk Bob dan mengganti kunci publik Alice dengan miliknya sendiri. Bob akan mengenkripsi kunci rahasia k menggunakan kunci publik Wendy karena Bob mengira kunci tersebut milik Alice. Oleh karena itu, Wendy dapat
25
mengetahui kunci k yang dipilih Bob dan meneruskannya kepada Alice dengan cara mengenkripsi kunc i tersebut menggunakan kunci publik Alice, kemudian menyisipkannya pada suatu cover dan mengirimkan hasil penyisipan tersebut kepada Alice. Walaupun Alice menerima kunci k yang benar (pilihan Bob), Alice tidak mengetahui bahwa pada kenyataannya Wendy juga mengetahui kunci tersebut. Kompresi Data Kompresi data adalah proses mengurangi ukuran fisik data sehingga membutuhkan tempat penyimpanan yang lebih kecil atau waktu pengiriman yang lebih pendek dibandingkan bila data tersebut tidak mengalami kompresi (Simsek 2004). Progran kompresi digunakan untuk melakukan kompresi dan pemadatan. Algoritma dekompresi digunakan untuk mendapatkan kembali data awal hanya bisa dioperasikan bila mengetahui
dan
algoritma kompresi yang telah
digunakan. Beberapa teknik kompresi data yang telah berkembang saat ini adalah : RLE, Huffman Encoding, Arithmetic Encoding, LZW, BWT, dan Kompresi DCT-JPEG. Murray dan Ripper (1994) dalam Simsek (2004) mengemukakan bahwa isstilah
data
tak-terkodekan
(unencoded
data),
data
tak-terkompresi
(uncompressed data), dan data awal digunakan untuk menyebut data sebelum mengalami kompresi, dan istilah data terkodekan (encoded data) serta data terkompresi (compressed data) digunakan untuk menyebutkan data yang mengalami kompresi. Rasio kompresi adalah rasio dari data tak-terkompresi terhadap data terkompresi. Sebagai contoh, suatu file data dengan ukuran 100KB, menggunakan algoritma kompresi ukuran file tersebut dapat dikurangi mencapai 50 KB. Pada kasus tersebut algoritma kompresi dapat mengurangi ukuran file data dengan rasio kompresi sebesar 2:1. Algoritma kompresi data dapat dikategorikan menjadi 2 jenis, yaitu lossless dan lossy (Steven 2002 dalam Simsek (2004)). Pada metode kompresi lossless data awal dapat dibangun kembali dari data terkompresi, sama persis seperti kondisi awal. Metode ini disebut juga metode tidak merusak (non-destructive). File teks mengunakan kompresi metode lossless; karena pada kasus terburuk
26
kehilangan sebuah karakter pada file teks dapat membuat teks tersebut tidak dapat dipahami. Contoh jenis file lainnya yang menggunakan kompresi metode lossless adalah executable program, source code, file pemrosesan kata, dan angka tertabulasi. Algoritma kompresi yang menggunakan metode lossless antara lain : RLE, Huffman, Arithmetic, LZW, dan BWT. Metode kompresi lossy bekerja dengan asumsi bahwa data tidak harus tersimpan secara utuh. Metode ini disebut juga metode merusak (destructive). Algortima kompresi lossy membuang sebagian informasi pada data gambar, video, dan suara , tapi dengan tetap memperhatikan kualitas data. Algoritma kompresi yang menggunakan metode lossy diantaranya adalah DCT. Steven 2002 dalam Simsek (2004) mengemukakan bahwa metode lossy lebih efektif penggunaannya dibandingkan dengan metode lossless. Tranmisi gambar melalui koneksi internet merupakan contoh yang tepat untuk alasan mengapa kompresi data dibutuhkan dan keefektifan kompresi lossy. Sebagai contoh kasus sebuah gambar berwarna berukuran 600 KB akan di-download melalui modem komputer. Bila gambar tersebut dikompresi menggunakan metode lossless, maka gambar tersebut akan berkurang ukuran fisiknya sebesar setengah kali dari kondisi awal, yaitu 300 KB. Jika gambar tersebut menggunakan kompresi lossy, maka ukuran fisik nya dapat mencapai 50 KB. Semakin besar ukuran file yang di-download, semakin besar pula waktu yang dibutuhkan untuk dowonload gambar tersebut. Pengkodean Huffman. Pengkodean Huffman sebagai salah satu teknik kompresi lossless. dikembangkan oleh David A. Huffman tahun 1955. Pengkodean ini merupakan salah satu contoh dari algoritma pengkodean entropi (Simsek 2004). Pengkodean entropi adalah suatu skema pengkodean yang memberikan kode pendek untuk blok input berpeluang besar dan kode pendek untuk blok input berpeluang kecil. Pengkodean Huffman membuat pohon biner dari simbol-simbol, dan menerapkan serangkaian langkah : 1
Langkah pertama dalam membangun kode Huffman adalah mengurutkan karakter mulai dari frekuensi tertinggi sampai terendah
27
2
Bila terdapat lebih dari satu pohon : a. Menemukan dua pohon dengan total peluang terkecil b. Mengkombinasikan pohon menjadi satu, masing- masing pada sisi kiri dan
kanan.
Langkah
ini
merupakan
langkah
awal
dalam
mengkonstruksi struktur pohon biner. 3
Hasil yang didapat pada langkah kedua disebut pohon Huffman, yang terdiri dari simbol-simbol. Simbol ‘0’ mewakili anak sebelah kiri dan simbol ‘1’ mewakili anak sebelah kanan.
4
Penelusuran kebawah pohon ya ng merepresentasikan kode Huffman, dimana kode pendek diberikan kepada karakter dengan frekuensi tertinggi. Gambar 7 menampilkan skema kompresi Huffman. Karakter ‘a’ sampai ‘j’
muncul sebagai aliran data dengan peluang p(x). Karena karakter ‘e’ paling sering muncul pada data, maka karakter tersebut dikodekan dengan dua bit, yaitu 10. Urutan karakter berikutnya adalah ‘a’, yang juga dikodekan dengan dua bit, yaitu 00. Hal tersebut akan berulang sampai pada karakter dengan frekeunsi terkecil yaitu ‘j’, yang dikodekan dengan enam bit, 111111. Berikut ini contoh dari proses kode Huffman dengan rasio kompresi 2:1, dimana data 8 byte dikompresi menjadi 4 byte :
Aliran data awal
:B
A
E
C
H
Kompresi Huffman
:111110 00 10 0110 010 1110 111110 11111
Pengelompokkan (byte): 111110 00 10011001 Dekompresi
: 111110
àB
00à
D
G
01110111 A
J
10111111
10àE
0110àC
010àH 1110àD 111110àG 111111àJ Aliran data akhir
: B A E C H D G J (hasilnya sama dengan data awal)
Pada implementasi pengkodean Huffman, algoritma kompresi dan dekompresi harus menggunakan kode biner yang sama untuk setiap representasi
28
karakter. Hal ini dapat diwujudkan melalui dua cara, yaitu menggunakan tabel yang sudah terdefinisi terlebih dahulu, terlepas dari isi informasi yang akan dikompresi. Cara kedua adalah menggunakan pengkodean yang disesuaikan dengan data yang akan digunakan. Algoritma dekompresi pada cara kedua ini membutuhkan tabel pengkodean yang digunakan oleh algoritma kompresi.
Gambar 7 Pengkodean Huffman (EFF 2003) Masalalah yang timbul pada pengkodean Huffman adalah pada saat menjumpai karakter yang jarang sekali digunakan seperti :!, @, #, $, dan %. Karakter tersebut membutuhkan pengkodean sampai belasan bit. Menurut Nelson (1991) dalam istilah matematika, jumlah optimal bit yang digunakan untuk merepresentasikan suatu karakter adalah log basis 2 dari (1/p), dimana p adalah peluang dari karakter tersebut. Jika peluang dari suatu karakter adalah ½, maka jumlah optimum jumlah bit dari kode karakter tersebut adalah log basis 2 dari 2, yaitu 1. Bila diasumsikan kode yang optimal untuk suatu simbol adalah 0.15 bit, sistem pengkodean Huffman dimungkinkan akan menentukan kode 1 bit untuk simboltersebut, yang berarti enam kali lebih panjang daripada yang dibutuhkan.
Algoritma Menurut Cormen et al. (1990) algoritma adalah prosedur well-defined computational yang mengambil suatu nilai, atau sekumpulan nilai sebagai input dan menghasilkan suatu nilai atau sekumpulan nilai sebagai output. Sehingga dapat dikatakan algoritma merupakan serangkaian langkah komputasional untuk
29
mengubah input menjadi output. Algoritma juga dapat dipandang sebagai suatu alat untuk menyelesaikan well-specified computational problem. Suatu algoritma dikatakan benar bila untuk setiap input menghasikan output yang benar. Kebenaran suatu algoritma diperlukan agar dapat menyelesaikan masalah komputasional yang ada. Suatu algoritma dapat dideskripsikan dalam bahasa percakapan (misalnya bahasa Indonesia atau Inggris),
bahasa komputer
atau juga dalam desain perangkat keras. Pseudocode adalah deskripsi algoritma dalam bentuk yang mirip dengan bahasa pemrograman (komputer), seperti C, Pascal atau Algol.
30