1
1. Pendahuluan
Internet memberikan kemudahan untuk bertukar informasi. Informasi yang dilewatkan di Internet, berjalan dari satu komputer, ke komputer yang lain, hingga
akhirnya sampai ke komputer tujuan. Proses tersebut berlangsung begitu cepat sekalipun melalui beberapa titik. Pada dasarnya, informasi melakukan perjalanan
di internet dengan cara yang tidak aman. Ini berarti bahwa pesan dapat disadap atau dirusak pada setiap titik perangkat yang dilewati [1].
Untuk menjamin keamanan pertukaran informasi yang bersifat rahasia atau pribadi, diperlukan suatu metode yang membatasi akses ke informasi ini.
Pembatasan dapat berupa penyandian informasi kriptografi [2], atau dengan menyembunyikan informasi pada media yang umum steganografi [3], sehingga
tidak menyebabkan kewaspadaan awareness pihak lain yang mengakses informasi ini.
Metode penyembunyian informasi pada media lain disebut dengan steganografi. Steganografi membutuhkan media sebagai cover, yang merupakan
wadah penyembunyian informasi. Cover dapat berupa file image, audio, video ataupun jenis file yang lain. Informasi yang disembunyikan dapat berupa pesan
singkat dalam bentuk kalimat, atau berupa file dokumen rahasia. Ukuran file dokumen rahasia yang disembunyikan bergantung pada ukuran cover tempat
data rahasia disembunyikan.
Keberhasilan suatu steganografi bergantung pada mencolok atau tidaknya perubahan yang terjadi pada cover dan kemampuan algoritma yang digunakan
untuk menyembunyikan [4]. Untuk memperkecil perubahan, digunakan bit terendah LSB pada tiap piksel citra digital, sebagai lokasi penyisipan informasi.
Steganografi pada citra digital pada umumnya mengganti bit-bit LSB tersebut secara berurutan, dari ujung kiri atas gambar, atau mundur dari ujung kanan
bawah gambar. Hal ini memberikan kelemahan yaitu bit-bit informasi ini dapat diekstrak dengan mudah oleh pihak lain. Enkripsi dapat ditambahkan sebelum
proses penyisipan, namun hal ini akan memberikan tambahan waktu proses.
Pada penelitian ini diajukan suatu metode steganografi pada citra digital, yang menyisipkan informasi secara acak. Tujuannya adalah agar tanpa proses
enkripsi sekalipun, informasi yang disisipkan akan lebih aman daripada steganografi LSB pada umumnya. Metode pengacakan yang digunakan adalah
algoritma Fisher-Yates [5]. Data yang diacak adalah lokasi penyisipan.
2. Tinjauan Pustaka
Pada penelitian yang berjudul “Implementasi Teknik Steganografi dengan Metode LSB pada Citra Digital”, disebutkan tentang perlunya pengamanan
pengiriman pesan melalui jaringan Internet. Pada penelitian tersebut digunakan media gambar sebagai cover. Hasil penelitian tersebut adalah sebuah aplikasi
steganografi dengan algoritma LSB Embedding, yang dapat menyembunyikan pesan, sehingga orang lain tidak menyadari keberadaan pesan di dalam media. [6]
Berbeda dengan penelitian ini adalah, pada penelitian ini sebelum pesan disisipkan, digunakan algoritma Fisher-Yates Shuffle untuk mengacak lokasi
2 penyisipan. Hal ini dilakukan dengan tujuan untuk meningkatkan keamanan pesan
yang disisipkan. Pada penelitian “Perancangan dan Implementasi Kriptografi Menggunakan
Vigenere Cipher dan Fisher-Yates Shuffle Pada Data Citra Digital” [7],
diimplementasikan algoritma Fisher-Yates shuffle untuk melakukan enkripsi dan dekripsi citra digital. Algoritma Fisher-Yates dimanfaatkan untuk melakukan
pengacakan piksel pada citra digital, kemudian untuk meningkatkan keamanan ditambahkan proses enkripsi dengan algoritma Vigenere. Beda dengan penelitian
tersebut, pada penelitian ini, Fisher-Yates digunakan bukan untuk mengacak informasi yang perlu diamankan, namun mengacak lokasi penyisipan, sehingga
sukar ditebak.
Berdasarkan penelitian - penelitian yang telah dilakukan tentang steganografi pada citra digital dengan teknik LSB, dan implementasi Fisher-Yates
untuk pengamanan informasi, maka dilakukan penelitian yang bertujuan untuk merancang dan mengimplemetasikan aplikasi steganografi pada image PNG
dengan algoritma Fisher-Yates Shuffle, sehingga diperoleh stego image. Pada penelitian ini digabungkan antara teknis steganografi LSB dengan Fisher-Yates
shuffle. Steganografi LSB memiliki kelebihan dalam kecilnya perubahan yang tampak setelah proses penyisipan. Fisher-Yates shuffle berfungsi untuk
meningkatkan keamanan, dengan cara mengacak posisi penyisipan bit. Proses pengacakan dilakukan sebelum proses penyisipan.
Batasan masalah dalam penelitian ini adalah sebagai berikut: 1 Pengamanan data dilakukan dengan cara menyembunyikan ke dalam citra digital;
2 Citra digital yang digunakan memiliki format PNG 24 bit warna; 3 Algoritma Fisher-Yates Shuffle digunakan untuk mengacak lokasi penyisipan,
bukan untuk mengacak pesan yang akan disisipkan.
Steganografi adalah ilmu dan seni menyembunyikan pesan rahasia di dalam pesan lain sehingga keberadaan pesan rahasia tersebut tidak dapat
diketahui. Steganografi berasal dari bahasa Yunani, yaitu “steganos” yang artinya “tulisan tersembunyi covered writing” [8]. Steganografi yang dibahas adalah
penyembunyian data di dalam citra image. Meskipun demikian, penyembunyian data dapat juga dilakukan pada media berupa suara digital, teks, ataupun video.
Penyembunyian data rahasia ke dalam image akan mengubah kualitas image tersebut. Kriteria yang harus diperhatikan dalam penyembunyian data adalah: 1
Mutu citra penampung tidak jauh berubah. Setelah penambahan data rahasia, citra hasil steganografi masih terlihat dengan baik. Pengamat tidak mengetahui kalau di
dalam citra tersebut terdapat data rahasia. Data yang disembunyikan harus tahan terhadap manipulasi yang dilakukan pada citra penampung. Bila pada citra
dilakukan operasi pengolahan citra, maka data yang disembunyikan tidak rusak; 2 Data yang disembunyikan harus dapat diungkapkan kembali recovery. Dalam
penyembunyian pesan, steganografi menggunakan dua properti yaitu pesan rahasia dan media penampung. Ada beberapa tipe media yang dapat digunakan
untuk menyisipkan pesan rahasia. Tipe media ini dapat berfungsi sebagai media pembawa pesan rahasia, yang disebut dengan host message. Terdapat beberapa
media yang dapat digunakan sebagai media steganografi, media penampung tersebut dapat berupa text, image, audio, atau video [9].
3 Cara untuk mengaplikasikan steganografi pada file image terdiri dari
beberapa cara yang lazim digunakan dan prinsip kerja atau algoritma yang digunakan sama seperti pada metode steganografi pada data audio. Berikut adalah
beberapa teknik yang digunakan: 1 Least Significant Bit Insertion LSB adalah metode yang digunakan untuk menyembunyikan pesan pada media digital tersebut
berbeda-beda. Contohnya, pada berkas audio, pesan dapat disembunyikan dengan menggunakan cara menyisipkannya pada bit rendah atau bit yang paling kanan
LSB pada data piksel yang menyusun file tersebut; 2 Redundant Pattern Encryption adalah menggambar pesan kecil pada kebanyakan image. Keuntungan
dari metode ini adalah dapat bertahan dari cropping kegagalan. Kerugiannya yaitu tidak dapat menggambar pesan yang lebih besar; dan 3 Spread Spectrum
steganografi terpencar-pencar sebagai pesan yang diacak encrypted melalui image tidak seperti dalam LSB. Untuk membaca suatu pesan, penerima
memerlukan algoritma yaitu crypto-key dan stego-key. Metode ini juga masih mudah diserang yaitu penghancuran atau pengrusakan dari kompresi dan proses
image gambar [9].
Cara paling mudah untuk menyembunyikan pesan adalah dengan memanfaatkan Least Significant Bit LSB. Jika digunakan image 24 bitcolor
sebagai cover, sebuah bit dari masing-masing komponen Red, Green, dan Blue, dapat digunakan, sehingga tiga bit dapat disimpan pada setiap piksel. Sebuah
image 800 x 600 piksel dapat digunakan untuk menyembunyikan 1.440.000 bit 180.000 bytes data rahasia. Misalkan terdapat piksel-piksel dari image 24 bit
color :
00111000 01010110 11000111 00110011 Jika ada pesan rahasia yang memiliki nilai 1101, maka dihasilkan:
00111001 01010111 11000110 00110011 Dapat dilihat bahwa bit-bit pesan rahasia mengubah bit-bit terakhir citra
gambar. Perubahan pada LSB ini akan terlalu kecil untuk terdeteksi oleh mata manusia sehingga pesan dapat disembunyikan secara efektif. Akan lebih baik jika
digunakan grayscale image karena perubahan warnanya akan lebih sulit dideteksi oleh mata manusia. Proses ekstraksi pesan dapat dengan mudah dilakukan, yaitu
dengan mengekstrak LSB dari masing-masing piksel pada stego secara berurutan dan menuliskannya ke output file yang akan berisi pesan tersebut. Kekurangan
dari metode modifikasi LSB ini adalah bahwa metode ini membutuhkan tempat penyimpanan yang relatif besar. Kekurangan lain adalah bahwa stego yang
dihasilkan tidak dapat dikompres dengan format lossy compression [9].
Pada penelitian ini digunakan algoritma shuffle Fisher-Yates. Fisher-Yates shuffle diambil dari nama Ronald Fisher dan Frank Yates atau juga dikenal
dengan nama Knuth shuffle diambil dari nama Donald Knuth, adalah sebuah algoritma untuk menghasilkan suatu permutasi acak dari suatu himpunan
terhingga, dengan kata lain untuk mengacak suatu himpunan tersebut [10]. Jika diimplementasikan dengan benar, maka hasil dari algoritma ini tidak akan berat
sebelah, sehingga setiap permutasi memiliki kemungkinan yang sama. Metode dasar yang digunakan untuk menghasilkan suatu permutasi acak untuk angka 1
sampai N adalah sebagai berikut [5]: 1.
Tuliskan angka dari 1 sampai N.
4 2.
Pilih sebuah angka acak K di antara 1 sampai dengan jumlah angka yang belum dicoret.
3. Dihitung dari bawah, coret angka K yang belum dicoret, dan tuliskan
angka tersebut di lain tempat. 4.
Ulangi langkah 2 dan langkah 3 sampai semuat angka sudah tercoret. 5.
Urutan angka yang dituliskan pada langkah 3 adalah permutasi acak dari angka awal.
Pada versi modern yang digunakan sekarang, angka yang terpilih tidak dicoret, tetapi posisinya ditukar dengan angka terakhir dari angka yang belum
terpilih. Contoh pengerjaan dari versi modern ditunjukkan pada Tabel 1. Range adalah jumlah angka yang belum terpilih, roll adalah angka acak yang terpilih,
scratch adalah daftar angka yang belum terpilih, dan result adalah hasil permutasi yang akan didapatkan.
Tabel 1 Contoh Langkah Fisher-Yates Shuffle
Range Roll
Scratch Result
1 2 3 4 5 6 7 8 1
– 8 6
1 2 3 4 5 8 7 6
1 – 7
2 1 7 3 4 5 8
2 6 1
– 6 6
1 7 3 4 5 8 2 6
1 – 5
1 5 7 3 4
1 8 2 6 1
– 4 3
5 7 4 3 1 8 2 6
1 – 3
3 5 7
4 3 1 8 2 6 1
– 2 1
7 5 4 3 1 8 2 6
LSB embedding merupakan teknik steganografi yang menggunakan pendekatan tergolong sederhana dan langsung. Sesuai dengan namanya, teknik
LSB embedding menyisipkan pesan ke dalam LSB least significant bit. Hal ini hanya akan mempengaruhi nilai warna pada piksel sebesar + 1, maka secara
umum diasumsikan bahwa degradasi warna yang terjadi dapat tidak dikenali oleh mata[11]. LSB embedding memiliki kelebihan dibandingkan dengan algoritma
EOF steganography [3], dalam hal perubahan ukuran dokumen yang disisipi. LSB embedding tidak menambahkan ukuran dokumen, karena proses yang terjadi
adalah mengganti bit akhir tiap warna. EOF bekerja dengan menambahkan informasi pada akhir dokumen. Algoritma steganografi yang lain adalah algoritma
DCT. Algoritma ini menggunakan frekuensi domain dari citra digital untuk menyisipkan informasi. Kelemahan dari algoritma DCT adalah mata manusia
dapat mengenali perubahan yang terjadi pada frekuensi rendah [12]. Karena kelebihan - kelebihan dari algoritma LSB embedding, maka pada penelitian ini
dipilih LSB embedding dalam proses penyisipan Digital signature dalam dokumen digital.
Pada penelitian ini, format file citra digital yang digunakan adalah PNG. PNG merupakan True Color image, yang berarti tiap piksel direpresentasikan
dengan 3 byte, terbagi ke dalam red, green, dan blue masing-masing 1 byte. Hal ini sering disebut dengan warna RGB, atau True Color 24 bit. Selain 24 bit warna,
file PNG juga mendukung 32 bit warna. True Color 32 bit sama dengan 24 bit,
5 dengan perbedaan adalah adanya 1 byte tambahan yang disebut komponen alpha
[13][14].
Gambar 1 True Color 24 bit dan 32 bit [14]
Microsoft .NET Framework merupakan sebuah perangkat lunak kerangka kerja yang berjalan pada sistem operasi Microsoft Windows. Saat ini .NET
Framework umumnya telah terintegrasi dalam distribusi standar Windows mulai dari Windows Server 2003 dan versi-versi Windows yang lebih baru. Kerangka
kerja ini menyediakan sejumlah besar pustaka pemrograman komputer dan mendukung beberapa bahasa pemrograman serta interoperabilitas yang baik
sehingga memungkinkan bahasa-bahasa tersebut berfungsi satu dengan lain dalam pengembangan sistem. Berbeda halnya dengan tipikal aplikasi konvensional
umumnya, program yang ditulis dengan memanfaatkan .NET Framework berjalan pada lingkungan perangkat lunak melalui Common Language Runtime, dan bukan
perangkat keras secara langsung. Hal ini memungkinkan aplikasi yang dibuat di atas .NET secara teoritis dapat berjalan pada perangkat keras apapun yang
didukung oleh .NET Framework. Perangkat lunak ini adalah kunci penawaran utama dari Microsoft, dan dimaksudkan untuk digunakan oleh sebagian besar
aplikasi-aplikasi baru yang dibuat untuk platform Windows [15].
Pada penelitian ini, .NET Framework 4.5 digunakan untuk membangun aplikasi steganografi. Beberapa pustaka pemrograman yang digunakan adalah
pustaka untuk membuat Graphical User Interface GUI, pustaka pemrosesan gambar Bitmap, dan pustaka pembangkitan bilangan acak Random.
3.
Metode dan Perancangan Sistem
Penelitian yang dilakukan, diselesaikan melalui tahapan penelitian yang terbagi dalam empat tahapan, yaitu: 1 Identifikasi masalah dan studi literatur, 2
Perancangan sistem, 3 Perancangan Prototype sistem, dan 4 Pengujian prototype sistem dan analisis hasil pengujian.
6
Identifikasi Masalah dan Studi Literatur Perancangan Sistem
Implementasi Sistem Pengujian Sistem dan Analisis Hasil Pengujian
Gambar 2 Tahapan Penelitian
Tahapan penelitian pada Gambar 2, dapat dijelaskan sebagai berikut. Tahap pertama: identifikasi masalah, yaitu rentannya informasi yang dilewatkan
di InterNet, dan diperlukan mekanisme untuk mengamankan informasi tersebut; Tahap kedua: perancangan sistem yang meliputi perancangan proses penyisipan
dan proses ekstrasi; Tahap ketiga: perancangan prototype sistem, yaitu membuat aplikasi sesuai perancangan proses pada tahap kedua; dan Tahap keempat:
pengujian sistem dan analisis hasil pengujian, yaitu dilakukan pengujian terhadap proses yang telah dirancang, dan melihat kesesuaian solusi terhadap masalah yang
telah teridentifikasi sebelumnya.
Aplikasi dikembangkan melalui tahap pengembangan perangkat lunak prototype model [16]. Pada proses implementasi dihasilkan beberapa prototype
yang dapat dijelaskan sebagai berikut. Tahap pertama: mengetahui kebutuhan sistem. Hal ini dapat dicapai dengan cara mendengarkan atau wawancara
customeruser; Tahap kedua; merancang program kemudian membuat perbaikan terhadap hasil yang diperoleh; Tahap ketiga: melakukan evaluasi ke customer atau
user dimana pada tahap ini proses akan kembali lagi ketahap pertama. Diagram prototype model ditunjukkan pada Gambar 3.
Gambar 3
Prototype Model[16]
Proses penyisipan adalah proses menyembunyikan bit-bit informasi pesan ke dalam cover image. Gambar 5 menunjukkan langkah-langkah penyisipan
dalam bentuk flowchart. Proses ini secara garis besar terdiri dari: 1.
Input dari proses ini adalah citra digital sebagai cover image, pesan dalam bentuk string, dan user key.
7 2.
Memetakan koordinat warna pada cover image. Yaitu proses pemberian indeks pada tiap-tiap warna pada cover image. Pada 1 piksel terdapat 3
warna. Jika suatu gambar terdapat 10 piksel, maka terdapat 30 warna dengan indeks dari 0 sampai dengan 29.
3. Mengacak shuffle angka-angka indeks tersebut dengan algoritma Fisher-
Yates. Fisher-Yates memerlukan algoritma random, dan .NET Framework telah menyediakan kelas ini. Class random memerlukan seed sebagai nilai
inisialisasi proses pembangkitan bilangan acak. Nilai seed diperoleh dengan cara menjumlahkan nilai ASCII tiap-tiap karakter pada kunci yang
dimasukkan oleh user. Kemudian class random digunakan pada proses shuffle, untuk membangkitkan indeks-indeks acak. Lebih jelasnya,
ditunjukkan pada Kode Program 3.
4. Mengubah pesan ke dalam bentuk kode ASCII, kemudian dari nilai kode
ASCII diubah ke dalam bentuk biner. 5.
Lakukan sub proses berikut: a.
Inisialiasi variabel indeks I dengan nilai 0 I=0. b.
Berdasarkan hasil pengacakan, ambil koordinat warna indeks ke-I. c.
Ambil bit pesan pada indeks ke-I. d.
Sisipkan bit tersebut ke dalam warna pada koordinat indeks ke-I e.
Lanjutkan proses penyisipan untuk bit indeks selanjutnya, pada koordinat warna indeks selanjutnya I=I+1.
6. Proses berhenti ketika semua bit pesan telah disisipkan.
7. Output dari proses ini adalah citra digital yang telah disisipi, disebut
dengan stego image.
8
Gambar 4 Proses Penyisipan
Gambar 5 Proses Ekstraksi
Proses ekstraksi adalah proses mendapatkan kembali bit informasi pesan yang sebelumnya telah disisipkan ke dalam stego image. Gambar 4 menunjukkan
langkah-langkah ekstraksi dalam bentuk flowchart. Proses ini secara garis besar terdiri dari:
1. Input dari proses ini adalah stego image, dan user key.
2. Memetakan koordinat warna cover image. Yaitu proses pemberian indeks
pada tiap-tiap warna pada cover image. 3.
Mengacak shuffle angka-angka indeks tersebut dengan algoritma Fisher- Yates. Proses shuffle dilakukan dengan menggunakan user key, sebagai
random seed. Penggunaan user key yang sama akan menghasilkan urutan
9 shuffle yang sama. Sehingga proses ekstraksi dapat dilakukan dengan
urutan yang sama dengan proses penyisipan. 4.
Lakukan sub proses berikut: a.
Inisialiasi variabel indeks I dengan nilai 0 I=0. b.
Berdasarkan hasil pengacakan, ambil koordinat warna indeks ke-I. c.
Baca nilai LSB dari warna tersebut ekstraksi bit pesan. d.
Lanjutkan proses ekstraksi pada warna selanjutnya I=I+1. 5.
Bit-bit pesan yang telah terkumpul, diubah ke dalam bentuk kode ASCII, kemudian diterjemahkan ke dalam karakter ASCII untuk tiap-tiap kode
ASCII. 6.
Output dari proses ini adalah pesan yang disisipkan. Untuk menjelaskan proses embedding, diberikan contoh sebagai berikut.
Jika diketahui potongan piksel pada suatu gambar adalah:
R G B R G B R G B R G B R G B R G 200 200 100 0 255 255 160 155 200 160 155 200 0 0 255 10 20
Kunci yang digunakan adalah “rahasia”. Maka proses penyisipan dilakukan dengan cara demikian:
1. Tentukan nilai seed dari kunci yang dimasukan. Seed diperoleh dengan cara
melakukan menjumlahkan nilai ASCII tiap-tiap karakter. Hasil operasi ini adalah satu bilangan, yaitu 729.
Tabel 2 Mencari nilai Seed
r a
h a
s i
a 114
97 104
97 115
105 97 =729
2. Nilai seed kemudian digunakan untuk melakukan shuffle.
Tabel 3 Hasil Shuffle Indeks Warna
R G
B R
G B
R G
B R
G B
R G B
R G 200 200 100 0 255 255 160 155 200 160 155 200 0 0 255 10 20
INDEKS 0 1
2 3 4 5
6 7
8 9 10 11 12 13 14 15 16
INDEKS SHUFFLE
8 12 7 11 15 3 13 0 16 1 5
6 14 2 4 10 9
3. Pesan yang disisipkan diubah ke bentuk binary. Jika pesan adalah huruf “F”,
maka nilai ASCII nya adalah 70, dalam bentuk biner 01000110. 4.
Sisipkan bit pesan satu per satu, ke dalam warna, dengan menggunakan urutan indeks acak.
Tabel 4 Hasil Penyisipan
BIT PESAN
Embed ding
Indeks acak
Nilai warna sesuai indeks
acak Hasil
Penyisipan pada LSB
8
200 200
1
12 1
7
155 154
11
200 200
15
10 10
10
1
3 1
1
13 1
200
200
Pada baris pertama, Tabel 4, yang terjadi adalah bit pesan “0” disisipkan
pada warna indeks ke 8, yaitu warna dengan nilai 200. Sehingga 200 binernya: 11001000 disisipi dengan nilai bit
“0” pada posisi LSB, hasilnya adalah tetap 11001000. Baris kedua, nilai warna 0 binernya: 00000000 disisipi dengan nilai
bit “1”, hasilnya adalah 1.
Untuk menjelaskan proses extracting, diberikan contoh sebagai berikut. Jika diketahui potongan piksel pada suatu gambar hasil penyisipan adalah:
R G B R G B R G B R G B R G B R G 200 200 100 1 255 255 160 154 200 160 155 200 1 1 255 10 20
Kunci yang digunakan adalah “rahasia”. Maka proses ekstraksi dilakukan dengan cara demikian:
5. Tentukan nilai seed dari kunci yang dimasukan. Seed diperoleh dengan cara
melakukan menjumlahkan nilai ASCII tiap-tiap karakter. Hasil operasi ini adalah satu bilangan, yaitu 729.
Tabel 5
Mencari nilai Seed
r a
h a
s i
a 114
97 104
97 115
105 97 =729
6. Nilai seed kemudian digunakan untuk melakukan shuffle.
Tabel 6 Hasil Shuffle Indeks Warna
R G B R G B R G B R G B R G B R G 200 200 100 1 255 255 160 154 200 160 155 200 1 1 255 10 20
INDEKS 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 INDEKS
ACAK 8 12 7 11 15 3 13 0 16 1 5 6 14 2 4 10 9
7. Berdasarkan urutan indeks acak, baca bit LSB pada tiap warna.
Tabel 7 Hasil Ekstraksi
Indeks acak
Nilai Warna Ekstraksi
BIT PESAN
8 200
12
1
1 7
154
11 200
15
10
3 1
1
13 1
1
200
Setelah diperoleh keseluruhan bit pesan, maka bit-bit tersebut diubah ke nilai ASCII, kemudian diperoleh karakter ASCII yang bersesuaian. 01000110
70 “F”.
11
4. Hasil dan Pembahasan