Penyembunyian Pesan Terenkripsi Pada Citra GIF Menggunakan ...

20
1 Pendahuluan Teknologi informasi yang berkembang pesat memungkinkan manusia dapat berkomunikasi dan saling bertukar pesan melalui berbagai media. Proses pengiriman data yang dilakukan media seperti Local Area Network (LAN), internet, email, handphone maupun media lain perlu diperhatikan dalam segi keamanan data akan sangat diperhatikan, terutama apabila data yang akan dikirim merupakan data atau pesan rahasia. Berbagai usaha akan dilakukan untuk menjamin agar pesan rahasia yang dikirim tidak dapat diakses oleh pihak lain. Salah satu penyembunyian pesan rahasia dilakukan dengan mengacak isi pesan tersebut yang merupakan prinsip utama dari kriptografi yaitu pengacakan data asli yang menghasilkan data dengan hasil terenkripsi. Isi pesan yang acak membuat pihak lain mencurigai adanya pesan tersembunyi, namun jika ditambah dengan menyisipkan pesan acak ke dalam sebuah media lain, maka akan menambah aspek keamanan. Dengan demikian pihak lain tidak mencurigai terhadap pesan rahasia yang dikirim, dikarenakan yang terlihat hanyalah media penampung dari pesan tersebut. Hal ini dirasa lebih aman jika dibandingkan hanya dengan mengacak atau mengenkripsi isi pesan, yang dapat membuat pihak lain ingin mengetahui isi pesan tersebut. Penyembunyian pesan terhadap sebuah media disebut sebagai Steganografi. Dalam kamus English Oxford kata steganografi diartikan sebagai teknik penyembunyian pesan atau informasi dengan menggunakan teks publik maupun data. Media yang akan digunakan akan menentukan pula algoritma steganografi yang digunakan. Salah satu format berkas citra digital yang digunakan adalah format gambar GIF yang diperkenalkan oleh CompuServe pada tahun 1987. Format GIF umum digunakan dalam web dikarenakan ukurannya yang relatif lebih kecil dibanding dengan format lainya. Hal itu disebabkan karena dalam sebuah citra berformat GIF menggunakan 8-bit untuk setiap pikselnya sehingga format GIF hanya menampung maksimal 256 warna [1]. Berbeda dengan citra berformat JPEG yang dapat menampung jutaan warna dikarenakan format tersebut menggunakan 24-bit untuk setiap pikselnya. Salah satu algoritma steganografi pada citra dengan format GIF adalah Gifshuffle. Algoritma Gifshuffle memanfaatkan palet warna berkas GIF sebagi media penyisipan pesan. Berdasarkan hal tersebut maka akan dilakukan penelitian dengan topik penyembunyian pesan terenkripsi pada citra GIF menggunakan algoritma Gifshuffle. 2. Tinjauan Pustaka Penelitian sebelumnya tentang steganografi pada citra berformat GIF menggunakan algoritma Gifshuffle. Penelitian ini menggunakan ilustrasi untuk menjelaskan algoritma Gifshuffle dan melakukan pengujian ketahanan media stego. Media stego yang digunakan adalah citra GIF. Kesimpulan yang didapat adalah algoritma ini mudah diterapkan, karena mengandung langkah-langkah yang tidak rumit, selain itu algoritma ini tidak merubah kualitas dari citra yang digunakan sebagai media stego [2].

Transcript of Penyembunyian Pesan Terenkripsi Pada Citra GIF Menggunakan ...

1

Pendahuluan

Teknologi informasi yang berkembang pesat memungkinkan manusia dapat

berkomunikasi dan saling bertukar pesan melalui berbagai media. Proses

pengiriman data yang dilakukan media seperti Local Area Network (LAN),

internet, email, handphone maupun media lain perlu diperhatikan dalam segi

keamanan data akan sangat diperhatikan, terutama apabila data yang akan dikirim

merupakan data atau pesan rahasia. Berbagai usaha akan dilakukan untuk

menjamin agar pesan rahasia yang dikirim tidak dapat diakses oleh pihak lain.

Salah satu penyembunyian pesan rahasia dilakukan dengan mengacak isi pesan

tersebut yang merupakan prinsip utama dari kriptografi yaitu pengacakan data asli

yang menghasilkan data dengan hasil terenkripsi. Isi pesan yang acak membuat

pihak lain mencurigai adanya pesan tersembunyi, namun jika ditambah dengan

menyisipkan pesan acak ke dalam sebuah media lain, maka akan menambah aspek

keamanan. Dengan demikian pihak lain tidak mencurigai terhadap pesan rahasia

yang dikirim, dikarenakan yang terlihat hanyalah media penampung dari pesan

tersebut. Hal ini dirasa lebih aman jika dibandingkan hanya dengan mengacak

atau mengenkripsi isi pesan, yang dapat membuat pihak lain ingin mengetahui isi

pesan tersebut.

Penyembunyian pesan terhadap sebuah media disebut sebagai Steganografi.

Dalam kamus English Oxford kata steganografi diartikan sebagai teknik

penyembunyian pesan atau informasi dengan menggunakan teks publik maupun

data. Media yang akan digunakan akan menentukan pula algoritma steganografi

yang digunakan.

Salah satu format berkas citra digital yang digunakan adalah format gambar

GIF yang diperkenalkan oleh CompuServe pada tahun 1987. Format GIF umum

digunakan dalam web dikarenakan ukurannya yang relatif lebih kecil dibanding

dengan format lainya. Hal itu disebabkan karena dalam sebuah citra berformat

GIF menggunakan 8-bit untuk setiap pikselnya sehingga format GIF hanya

menampung maksimal 256 warna [1]. Berbeda dengan citra berformat JPEG yang

dapat menampung jutaan warna dikarenakan format tersebut menggunakan 24-bit

untuk setiap pikselnya. Salah satu algoritma steganografi pada citra dengan format

GIF adalah Gifshuffle. Algoritma Gifshuffle memanfaatkan palet warna berkas

GIF sebagi media penyisipan pesan. Berdasarkan hal tersebut maka akan

dilakukan penelitian dengan topik penyembunyian pesan terenkripsi pada citra

GIF menggunakan algoritma Gifshuffle.

2. Tinjauan Pustaka Penelitian sebelumnya tentang steganografi pada citra berformat GIF

menggunakan algoritma Gifshuffle. Penelitian ini menggunakan ilustrasi untuk

menjelaskan algoritma Gifshuffle dan melakukan pengujian ketahanan media

stego. Media stego yang digunakan adalah citra GIF. Kesimpulan yang didapat

adalah algoritma ini mudah diterapkan, karena mengandung langkah-langkah

yang tidak rumit, selain itu algoritma ini tidak merubah kualitas dari citra yang

digunakan sebagai media stego [2].

2

Pada penelitian ini, mengembangkan kriptografi dengan algoritma

Vigenere Cipher, yang menggunakan masukan kunci bertipe data string yang

berjumlah hingga 96 karakter yang diambil pada urutan karakter ASCII yang

dapat dicetak. Kemudian untuk melengkapi kriptografi tersebut, ditambahkan

teknik steganografi dengan menggunakan algoritma Gifshuffle dengan media

objek gambar dengan format GIF, yang digunakan untuk menambah keamanan

dalam penyembunyian pesan.

Kriptografi Vigenere Cipher

Sistem sandi Vigenere adalah sistem sandi substitusi multi-alfabet, yaitu

sistem sandi Caesar tetapi dengan pergeseran alfabet yang berlainan

disesuaikan dengan kata kuncinya. Pada kriptografi Vigenere, plaintext akan

dienkripsi dengan pergeseran huruf seperti pada kriptografi Caesar, tetapi setiap

huruf di dalam plaintext akan mengalami pergeseran yang berbeda. Kunci pada

kriptografi Vigenere adalah sebuah kata bukan sebuah huruf. Kata kunci ini

akan dibuat berulang sepanjang plaintext, sehingga jumlah huruf pada kunci

akan sama dengan jumlah huruf pada plaintext. Pergeseran setiap huruf pada

plaintext, akan ditentukan oleh huruf pada kunci yang mempunyai posisi yang

sama dengan huruf pada plaintext. Kriptografi Vigenere dikenal sebagai

polyalphabetic substitution cipher, karena enkripsi terhadap satu huruf yang sama

bisa menghasilkan huruf yang berbeda. Pergeseran huruf pada plaintext

ditentukan oleh tabel yang sama dengan tabel pada kriptografi Caesar. Rumus

kriptografi Caesar tetap berlaku pada kriptografi Vigenere, baik pada enkripsi

maupun dekripsi.

Algoritma Gifshuffle

Gifshuffle merupakan algoritma steganografi yang digunakan untuk

menyembunyikan pesan dalam media citra berformat GIF. Algoritma Gifshuffle

pada intinya memanfaatkan palet warna berkas GIF sebagai media penyisipan

pesan. Dikarenakan berkas GIF hanya menggunakan maksimal 256 palet warna,

maka pesan yang akan disisipkan akan terbatas hingga 1683 bits atau 210 byte

dengan kata lain maksimal menampung 210 karakter jika masukannya berupa

karakter [3].

Sesuai dengan namanya Gifshuffle, maka prinsip utama algoritma ini akan

melakukan shuffle terhadap palet warna dari sebuah berkas GIF. Algoritma

Gifshuffle dalam bentuk flowchart ditunjukkan pada Gambar 1.

3

Gambar 1 Flowchart Algoritma Gifshuffle

Adapun langkah-langkah encoding dari algoritma Gifshuffle adalah

sebagai berikut[3]:

1. Proses encoding dimulai dengan pesan yang akan disisipkan. Pesan diubah ke

dalam bentuk biner dengan representasi 1 atau 0.

2. Kemudian disisipkan angka 1, di depan rangkaian biner tersebut. Langkah

selanjutnya rangkaian biner tersebut dikonversikan menjadi bilangan desimal

dan menghasilkan sebuah bilangan yang dinamakan sebagai .

3. Menghitung jumlah warna yang terkandung dalam berkas Gif yang menjadi

objek steganografi dan akan menghasilkan sebuah bilangan. Bilangan

tersebut dinamakan sebagai , maka apabila maka pesan yang

ingin disisipkan berukuran terlalu besar sehingga proses penyisipan tidak

dapat dilakukan.

4. Warna dalam palet warna diurutkan sesuai dengan urutan yang “natural”.

Setiap warna dengan format RGB dikonversikan ke dalam bilangan integer

dengan aturan . Kemudian

diurutkan berdasarkan besar bilangan integer yang mewakili warna tersebut.

5. Setelah itu dilakukan iterasi terhadap variabel dengan nilai adalah dari 1

sampai n. Setiap warna dengan urutan dipindahkan ke posisi baru yaitu

, kemudian dibagi dengan .

6. Kemudian palet warna yang baru hasil iterasi pada langkah ke-4 dimasukkan

ke dalam palet warna berkas Gif. Apabila ada sebuah tempat yang diisi oleh

dua buah warna, maka warna yang sebelumnya yang menempati tempat

tersebut akan digeser satu tempat ke samping.

7. Apabila ternyata besar dari palet warna yang baru lebih kecil dari 256 maka

palet warna akan disi dengan warna terakhir dari palet warna sebelumnya.

8. Kemudian berkas Gif akan dikompresi ulang dengan palet warna yang baru

untuk menghasilkan berkas yang baru dengan ukuran dan gambar yang sama

namun telah disisipi pesan.

4

3. Metode dan Perancangan Metode pengembangan sistem yang dipakai dalam penelitian ini adalah

metode waterfall, dapat dilihat pada Gambar 2.

Gambar 2. Metode Permodelan Waterfall [4]

Adapun tahap-tahap metode pengembangan dalam perancangan aplikasi

antara lain :

1. Penentuan dan Analisis Spesifikasi; Pada tahap ini dilakukan

pengumpulan kebutuhan sistem secara lengkap. Setelah itu dilakukan

analisis dan didefinisikan kebutuhan yang harus dipenuhi oleh program

yang dibangun. Adapun beberapa hal yang diperlukan sebelum

membangun sistem adalah : (1) Masukan berupa citra GIF non animated;

(2) Sofware pemrograman untuk menyusun kode dalam sistem; (3)

Software image manipulation untuk melakukan pengujian terhadap media

penampung; (4) Software pembanding gambar untuk melakukan

perbandingan antara citra asli dan citra stego.

2. Desain sistem dan Perangkat lunak; Tahap ini terdiri dari proses desain

sistem yang membagi kebutuhan-kebutuhan sistem perangkat lunak,

termasuk menghasilkan fungsi sistem perangkat lunak dalam bentuk

transformasi ke dalam satu atau lebih program yang dapat dijalankan.

3. Implementasi dan Uji Coba Unit; Pada tahap ini desain perangkat lunak

diterjemahkan ke dalam kode-kode dengan menggunakan bahasa

pemrograman. Kemudian dilakukan pengujian terhadap unit program yang

telah dibuat. Uji unit termasuk pengujian bahwa setiap unit sesuai

spesifikasi.

4. Intergrasi dan uji coba system; Pada Tahap ini, unit program diintegrasikan

dan diuji menjadi sistem yang lengkap untuk meyakinkan bahwa

persyaratan perangkat lunak telah dipenuhi.

5. Operasi dan pemeliharaan; Ini adalah fase terpanjang dari proses

sebelumnya. Sistem digunakan dan dilakukan pemeliharaan termasuk

perbaikan kesalahan yang tidak ditemukan pada langkah sebelumnya.

Analisis Kebutuhan Sistem

Analisis kebutuhan sistem merupakan proses identifikasi dan evaluasi

permasalahan-permasalahan yang ada, sehingga nantinya sistem yang dibagun

sesuai dengan kriteria yang diharapkan. Tahapan analisis kebutuhan digunakan

5

untuk mengetahui kebutuhan sistem agar dapat bekerja dengan baik dan optimal,

sehingga tidak terjadi kesalahan perancangan dan kerusakan pada program.

Aplikasi steganografi menggunakan metode Gifshuffle, dibuat untuk memenuhi

kebutuhan sebagai berikut: (1) Dapat melakukan embedding pesan terenkripsi

pada citra berformat GIF; (2) Dapat melakukan ekstrak pesan terenkripsi yang

tersimpan dalam stego image. Berdasarkan kriteria kebutuhan sistem, maka

masukan yang diperlukan oleh sistem adalah sebagai berikut : (1) File gambar

dengan format GIF sebagai media cover untuk embedding pesan; (2) Pesan

rahasia yang berupa text dengan masukan segala karakter. Analisis keluaran

berfungsi untuk mengetahui keluaran yang dihasilkan oleh sistem yang dibangun.

Sistem yang dibangun ini akan menghasilkan keluaran dalam bentuk : (1) File

stego image yaitu file gambar cover yang di dalamnya terdapat file rahasia yang

telah di-embedding; (2) Pesan rahasia berupa teks yang telah diekstrak.

Perancangan Sistem Perancangan sistem meliputi perancangan algoritma yang digunakan

dalam sistem. Dalam penelitian ini menggunakan algoritma Vigenere Cipher,

Sedangkan untuk steganografi menggunakan algoritma Gifshuffle. Algoritma

steganografi digunakan untuk menambah tingkat keamanan algoritma kriptografi.

Pembuatan aplikasi dalam penelitian ini menggunakan kriptografi untuk

mengenkripsi pesan. Algoritma kriptografi yang digunakan adalah algoritma

Vigenere Cipher dengan memanfaatkan Square Table Vigenere.

Penerapan enkripsi algoritma Vigenere

Contoh enkripsi dengan masukan plaintext “TEKNIKINFORMATIKA” dengan

kunci “UKSW”, maka :

1. Plaintext = “TEKNIKINFORMATIKA”

2. Kunci = “UKSW”

3. Dilakukan enkripsi dengan kunci = UKSWUKSWUKSWU. Secara detil

dapat dilihat pada Tabel 3. Tabel 3 Perubahan Kunci Vigenere

T E K N I K I N F O R M A T I K A Plaintext

U K S W U K S W U K S W U K S W U Kunci

4. c(„T‟) = („T‟ + „U‟) mod 26 = L

T = 51 dan U= 52 (51+52)%96=7 „

c(„E‟) = („E‟ + „K‟) mod 96 = p, dst

Perancangan Steganografi Dengan Algoritma Steganografi

Algoritma steganografi yang digunakan adalah algoritma Gifshuffle.

Gifshufle memanfaatkan palet warna dari citra Gif. Algoritma Gifshuffle memiliki

dua proses utama, yaitu proses encoding dan proses decoding.

Contoh penyisipan pesan “T” ke dalam berkas GIF dengan jumlah warna

pada palet warna sebanyak 6 buah, adalah sebagai berikut:

6

1. Pesan yang akan disisipkan adalah “T” yang diubah ke dalam bentuk biner

dengan pengkodean ASCII menghasilkan bilangan biner : 1010100. Untuk

mendapatkan nilai M disisipkan angka 1 pada rangkaian biner maka :

2. Jumlah warna pada palet warna citra tersebut adalah 6, maka apabila

(menggunakan cara pada halaman 4) proses encoding dapat

dilakukan. Karena nilai m tidak lebih besar dengan n!-1.

3. Urutan warna pada palet warna citra tersebut secara “natural” dapat dilihat

pada Gambar 3.

Gambar 3 Pengkonversian RGB ke Nilai Integer.

Pada Gambar 3 ditunjukkan nilai “natural” dari beberapa warna, nilai

tersebut didapat dari besar nilai RGB. Contoh pada warna A, nilai Red dalam

heksadesimal adalah f7, dan dikonversikan ke dalam desimal menjadi 247,

nilai Green dalam heksadesimal adalah 47 dan dikonversikan ke dalam

desimal menjadi 71, dan nilai Blue dalam heksa-desimal adalah 47 dan

dikonversikan ke dalam desimal menjadi 71. Berdasarkan nilai-nilai desimal

tersebut didapat nilai “natural” dengan rumus berikut :

Sehingga didapat nilai integer yaitu 16205639.

Susunan palet warna setelah diurutkan berdasarkan besar nilai integer

terkecil dapat dilihat pada Gambar 4.

Gambar 4 Susunan Palet Warna Diurutkan berdasarkan Besar Nilai Integer.

4. Iterasi variabel i mulai dari 1 sampai n :

Warna indeks ke- dipindahkan ke- .

a) Untuk

Maka, warna indeks ke-5 dipindahkan ke indeks ke-0 pada susunan palet warna

yang baru.

b) Untuk

Maka, warna indeks ke-4 dipindahkan ke indeks ke-0 pada susunan palet warna yang baru.

7

c) Untuk

Maka, warna indeks ke-3 dipindahkan ke indeks ke-2 pada susunan palet warna

yang baru.

d) Untuk

Maka, warna indeks ke-2 dipindahkan ke indeks ke-0 pada susunan palet warna

yang baru.

e) Untuk

Maka, warna indeks ke-1 dipindahkan ke indeks ke-3 pada susunan palet warna

yang baru.

f) Untuk

Maka, warna indeks ke-0 dipindahkan ke indeks ke-1 pada susunan palet warna yang baru.

5. Pada tahap kelima, apabila ada beberapa warna yang menempati indeks yang

sama, maka Setiap warna yang menempati indeks tersebut akan bergeser

sekali ke indeks berikutnya. Susunan palet warna yang baru sesuai aturan

tersebut dapat dilihat pada Gambar 5.

Gambar 5 Susunan Palet Warna yang Baru Setelah Dilakukan Iterasi Terhadap Variabel i.

6. Urutan palet warna ini kemudian dimasukkan ke dalam berkas citra GIF untuk

menghasilkan citra yang telah disisipi pesan.

Untuk skema decoding berupa pembalikan dari skema encoding. Inti dari

proses decoding adalah untuk mencari nilai . Setelah nilai diperoleh maka

pesan asli dapat mudah didapat. Adapun langkah-langkah untuk mengekstrak

kembali pesan dari sebuah citra GIF menggunakan algoritma Gifshuflle adalah

sebagai berikut :

8

1. Masukkan nomor sesuai dengan posisi setiap warana pada palet warna citra

GIF yang telah disisipkan pesan.

2. Warna diurutkan berdasarkan konversi RGB ke nilai integer dengan rumus :

3. diberi nilai 0.

4. Iterasi variabel dari 0 sampai .

posisi warna ke- .

Iterasi variabel dari sampai .

Jika nilai posisi warna ke nilai posisi warna ke-i, maka posisi warna ke

dikurangkan 1.

5. Setelah nilai diperoleh, maka nilai dikonversikan ke bilangan biner

untuk memperoleh pesan asli.

Berdasarkan contoh pada proses encoding, maka pesan asli dapat diekstrak

dengan mengikuti langkah-langkah berikut:

1. Warna pada palet warna diberikan nomor sesuai dengan posisinya. Lebih

jelasnya dapat dilihat pada Gambar 6.

Gambar 6 Penomoran Posisi Palet Warna.

2. Nilai natural setiap warna dapat dilihat pada Gambar 7.

Gambar 7 Nilai Natural Setiap Warna

Kemudian diurutkan berdasarkan nilai integer terkecil, maka posisi palet

warna baru terdapat pada Gambar 8.

Gambar 8 Urutan Palet Warna Baru Berdasarkan Nilai Integer Terkecil.

3. diberi nilai 0.

4. Iterasi variabel i dari 0 sampai 5. posisi ke-i.

Iterasi variabel j dari i+1 sampai 5.

Jika nilai posisi warna ke nilai posisi warna ke-i, maka posisi warna ke

dikurangkan 1.

a) Untuk

9

posisi ke-0

o Untuk Posisi ke-1 > posisi ke-0

, ya maka posisi ke-

o Untuk Posisi ke-2 > posisi ke-0

, tidak

o Untuk Posisi ke-3 > posisi ke-0

, ya maka posisi ke-

o Untuk Posisi ke-4 > posisi ke-0

, tidak

o Untuk Posisi ke-5 > posisi ke-0

, ya maka posisi ke-

1 2 3 4 5 i

Warna C Warna E Warna D Warna F Warna A 4 0 3 1 2 Posisi

b) Untuk

o Untuk

Posisi posisi

, tidak

o Untuk

Posisi posisi

, tidak

o Untuk

Posisi posisi

, tidak

o Untuk

Posisi posisi

, tidak

2 3 4 5 i

Warna E Warna D Warna F Warna A 0 3 1 2 Posisi

c) Untuk

10

o Untuk

Posisi posisi

, ya maka posisi ke-

o Untuk

Posisi posisi

, ya maka posisi ke-

o Untuk

Posisi posisi

, ya maka posisi ke-

3 4 5 I

Warna D Warna F Warna A 2 0 1 Posisi

d) Untuk

o Untuk

Posisi posisi

, tidak

o Untuk

Posisi posisi

, tidak 4 5 I

Warna

F Warna

A

0 1 Posisi

e) Untuk

o Untuk

Posisi posisi

, ya maka posisi ke

f) Untuk

5.

Angka 1 dalam rangkaian biner dihilangkan, maka :

11

T

Perancangan Proses

Perancangan proses menggunakan Unified Modeling Language (UML).

Langkah pertama yang dilakukan untuk memetakan fungsionalistas adalah dengan

menyusun use case diagram.

Encoder

(f rom Actors)Decoder

(f rom Actors)

Pilih Gambar

Set Password Kripto

Input passwordStego

Change passwordKripto

Menulis pesan

Mendapat pesan

SetPasswordStego

cekTabelViginere

Input PasswordKripto

Change passwordStego

Gambar 9 Use Case Diagram Sistem

Use case diagram sistem pada Gambar 9, terdiri dari dua aktor yaitu

Encoder dan Decoder. Kedua aktor tersebut memiliki hak untuk memilih gambar.

Untuk aktor Encoder sendiri memiliki hak untuk menulis pesan, menggunakan

cekTabelVigenere, SetPasswordStego dan Set PasswordVigenere. Dalam kedua

SetPassword terdapat generalisasi ChangePassword. Sedangkan untuk aktor

Decoder sendiri berhak melakukan input passwordStego dan passwordKripto dan

terakhir Mendapat Pesan.

5. Pembahasan Sistem dalam penelitian ini berbentuk desktop application yang disertai

dengan GUI (Graphical User Interface), bertujuan untuk mempermudah user

dalam pengoperasian sistem. GUI pada sistem ini terdiri dari beberapa form antara

lain adalah form utama, from encode, dan form decode.

Gambar 10 Tampilan Utama Sistem

Pada Gambar 10 bagian teratas terdapat menu strip “File” yang berisikan

“Encode” untuk membuka form Encode dan “Decode” untuk membuka form

12

Decode. Pada bagian tengah terdapat tab page dan tab yang terbuka pertama

adalah “Start Page” berisikan tombol Encode dan Decode yang berfungsi sama

dengan menu strip di bagian atas. Form-form yang terbuka akan muncul di dalam

tab page sehingga user mudah mengoperasikannya.

Pada form Encode berfungsi untuk mengenkripsi pesan dan

menyembunyikan pesan ke dalam Gambar. Proses enkripsi pesan dan proses

encoding pesan dalam Gambar dilakukan dalam form Encode. Pada tampilan awal

from encode hanya berupa textbox dan tombol Encript untuk mengenkripsi pesan

plaintext. Dalam proses enkripsi terdapat form password untuk memasukkan

kunci. rtxt_Plaintext diuraikan ke sebuah array dan menyimpannya, kemudian

menampilkan formPass. Pada formPass terdapat textbox untuk memasukkan kunci

dan textbox lain untuk mengkonfirmasi kunci, untuk menghindari kesalahan pada

kunci. Apabila tombol OK dijalankan, maka proses enkripsi dijalankan. Perintah

yang dijalankan pada tombol OK ditunjukkan pada Kode Program 1.

Kode Program 1 Perintah Pada Tombol OK. 1. private void btnOK_Click(object sender, EventArgs e)

2. {

3. virgin = new viginere(txtPassEncrypt.Text);

4. string pass = txtPassEncrypt.Text + new

5. String(this.plainText);

6. for (int i = 0; i < plainText.Length; i++)

7. {

8. int g = ((int)pass.ToCharArray()[i]) –

9. viginere.awalAscci;

10. TabelTemp = 11. virgin.Tabel()[((int)pass.ToCharArray()[i]) – 12. viginere.awalAscci].Split(' '); 13. hasil += TabelTemp[((int)plainText[i]) – 14. viginere.awalAscci]; 15. } 16. enkrip.rtxt_Plaintxt.Text = hasil;

Pada Kode Program 1 terdapat perintah untuk mengakses method Tabel

pada class Vigenere. Method Tabel pada class Vigenere dapat dilihat pada Kode

Program 2.

Kode Program 2 Method Tabel pada class Vigenere 1. public string[] tabel()

2. {

3. string[] hasil = new string[jumlahAscci] ;

4. char[] huruf = new char[jumlahAscci];

5. for (int i = 0; i < jumlahAscci; i++)

6. {

7. huruf[i] = (char)(awalAscci + i);

8. }

9. for (int i = 0; i < huruf.Length; i++

10. { 11. for (int j = i ; j < huruf.Length + i ; j++) 12. { 13. if (j >= huruf.Length) 14. { 15. hasil[i] += (huruf[j % huruf.Length] + " "); 16. } 17. else hasil[i] += (huruf[j] + " "); 18. } 19. } 20. return hasil;

21. }

13

Setelah proses enkripsi selesai, tampilan form berubah, untuk melanjutkan

proses encode yang ditunjukkan pada Gambar 11.

Gambar 11 Tampilan From Encode Setelah Proses Enkripsi

Tombol encript berubah menjadi tombol search image yang terlihat pada

Gambar 11. Tombol search image berfungsi untuk menampilkan open file dialog

untuk memilih Gambar. Tombol encode berfungsi untuk melakukan proses

penyisipan pesan yang sudah dienkripsi atau ciphertext. Tombol encode berfungsi

pula untuk menampilkan save file dialog, dimana Gambar hasil stego akan

disimpan. Ada pun perintah-perintah yang dijalankan saat tombol encode

dijalankan, dapat dilihat pada Kode Program 3.

Kode Program 3 Perintah shuffle Pada Kelas Stego. 1. public void shuffle(String message,String pathTujuan)

2. {

3. sorting(NaturalVal, colorPallete);

4. for (int i = 1; i <= n; i++)

5. {

6. int m2 = int.Parse((m % i) + "");

7. araylist3.Insert(m2, colorPallete[int.Parse((n – i) + "")]);

8. arraylist4.Insert(m2, NaturalVal[int.Parse((n – i) + "")]);

9. m = m / i;

10. } 11. pallete.save3(araylist3.ToArray(), pathTujuan); 12. }

Pada method shuffle mengakses method save3 pada kelas pallete yang

ditunjukkan pada Kode Program 4.

Kode Program 4 Method save3 Pada Kelas Pallete. 1. public void save3(object[] newPallete, String pathTujuan)

2. {

3. int merah, hijau, biru;

4. Bitmap newImage = new Bitmap(this.image);

5. ColorPalette palet = this.image.Palette;

6. for (int i = 0; i < newPallete.Length; i++)

7. {

8. merah = int.Parse(newPallete[i].ToString().Split(' ')[0]);

9. hijau = int.Parse(newPallete[i].ToString().Split(' ')[1]);

10. biru = int.Parse(newPallete[i].ToString().Split(' ')[2]); 11. palet.Entries[i] = Color.FromArgb(merah, hijau, biru); 12. } 13. ArrayList a = new ArrayList(palet.Entries.Length); 14. for (int q = 0; q < a.Capacity; q++) 15. { 16. a.Add(palet.Entries[q].ToArgb()); 17. } 18. System.IO.MemoryStream stream = new System.IO.MemoryStream(); 19. newImage.Save(stream, ImageFormat.Gif); 20. newImage = new Bitmap(stream);

21. newImage.Palette = palet;

14

22. newImage.Save(pathTujuan); 23. }

Gambar 12 Form Decode Setelah Pemilihan Gambar

Dalam tombol decode, perintah tombol decode berfungsi memanggil form

password untuk memasukkan password untuk proses dekripsi. Pada saat tombol

decode dijalankan terdapat perintah yang ditunjukkan pada Kode Program 5.

Kode Program 5 Perintah untuk Tombol Decode Pada Form Password 1. private void btnDecode_Click(object sender, EventArgs e)

2. {

3. decoding = new decode(path);

4. hasilDecode = decoding.decoding();

5. virgin = new viginere(txtPassEncrypt.Text);

6. plainText = hasilDecode.ToCharArray();

7. hasil = "";

8. string pass = txtPassEncrypt.Text;

9. for (int i = 0; i < plainText.Length; i++)

10. { 11. if (pass.Length > i) 12. { 13. TabelTemp = virgin.Tabel()[((int)pass.ToCharArray()[i]) -

viginere.awalAscci].Split(' ');

14. } 15. else 16. { 17. TabelTemp = virgin.Tabel()[((int)hasil.ToCharArray()[i - pass.Length]) -

viginere.awalAscci].Split(' ');

18. } 19. for (int j = 0; j < TabelTemp.Length; j++) 20. { 21. if (TabelTemp[j].Equals(plainText[i].ToString())) 22. { 23. hasil += (char)(j + viginere.awalAscci); 24. break; 25. } 26. } 27. } 28. if (txtPassEncrypt.Text == txtCfrmPassEncrypt.Text) 29. { 30. decript.setHasil(hasil); 31. Close(); 32. } 33. else if (txtPassEncrypt.Text != txtCfrmPassEncrypt.Text) 34. { 35. MessageBox.Show("Key do not match !", "Warning", MessageBoxButtons.OK,

MessageBoxIcon.Warning);

36. }

37. }

15

Form File Compare

Pada form ini terdapat tools untuk membandingkan file citra asli, citra stego, dan

citra stego setelah pesan diambil. Yang menjadi nilai pembanding adalah

perubahan pallete, nilai RGB tiap index, dan bit yang terkandung dalam file. Form

File Compare ditunjukkan pada Gambar 13.

Gambar 13 Tampilan Form File Compare

Pengujian Sistem

Pengujian Berdasarkan Aspek Imperceptibility

Penilaian pengujian dilakukan terhadap keberadaan pesan. Pengujian

menggunakan objek kucing.gif dengan masukan pesan “Universitas Kristen Satya

Wacana” dan kunci “FTI07”. Objek kucing.gif ditunjukkan pada Gambar 14.

Gambar 14 Objek Gambar kucing.gif

Tabel properties dari Gambar 14, dapat ditunjukkan pada Tabel 4.

Tabel 4 Properties Gambar Kucing.gif

Item Type, Version GIF, 89a

FileSize 721100 bytes

Size 1280x1024 Pixel

BacgroundColor clBlack

Bits per color 8

Transparent No

Transparent color clNone

Hasil pengujian berdasarkan aspek Imperceptibility ditunjukkan pada Tabel 5.

16

Tabel 5 Hasil Pengujian Imperceptibility

Objek Gambar Kucing.gif

Plaintext Universitas Kristen Satya Wacana

Kunci FTI07

Ciphertext ~D3'JdUkKgv7kKiu3blIZ^jbT9ZaCo9

Gambar Stego Kucing_stego.gif

Decode 100%

Hasil Gambar stego ditunjukkan pada Gambar 15.

Gambar 15 Gambar kucing_stego.gif

Tabel properties dari Gambar 15, ditunjukkan pada Tabel 6 Tabel 6 Properties File Gambar kucing_stego.gif

Item Type, Version GIF, 89a

FileSize 642123 bytes

Size 1280x1024 Pixel

BacgroundColor clBlack

Bits per color 8

Transparent No

Transparent color $0029ADE7

Berdasarkan hasil pengujian berdasarkan aspek Imperceptibility, pesan

mudah terdeteksi karena antara Gambar stego dan Gambar asli, secara visual

terlihat berbeda jelas hanya dengan penglihatan inderawi.

Dilakukan pula perbandingan antara citra asli dan citra stego berdasarkan

banyak jumlah karakter. Hasil pengujian dapat dilihat pada tabel 7.

Tabel 7 Properties File Gambar kucing_stego.gif

Citra Asli Citra Stego

Pengujian dengan masukan 10 karakter

17

Pengujian dengan masukan 100 karakter

Pengujian dengan masukan 210 karakter

Berdasarkan pengujian perbedaan gambar asli dengan gambar stego,

semakin banyak jumlah masukan semakin jauh perbedaan antara kedua gambar.

Pengujian Berdasarkan Aspek Fidelity

Pengujian dilakukan dengan mengukur perbedaan antara citra asli dengan

citra stego. Pengujian ini dibantu dengan software Compare Suite dan

menggunakan tool yang terdapat dalam sistem, untuk membandingkan citra.

Pengujian menggunakan objek pirate.gif, kucing.gif, dan lope.gif. Hasil Pengujian

berdasarkan aspek fidelity menggunakan tool dalam sistem, ditunjukkan pada

Tabel 8. Tabel 8 Perbedaan Citra Hasil Pengujian Fidelity

Objek Color Pallete Warna Tiap Index Susunan Tiap Bit

Pirate.gif 255 357821 239983 Kucing.gif 57 7322551 611454 Lope.gif 128 63187 21693

18

Perbandingan antara Gambar stego dan Gambar asli menggunakan software

Compare Suite ditunjukkan pada Gambar 16.

Gambar 16 Perbandingan Gambar Asli dan Gambar Stego.

Berdasarkan hasil pengujian pada Gambar 16, Gambar asli dan Gambar

stego memiliki perbedaan yang sangat jelas. Hal ini mengurangi aspek fidelity,

karena perbedaan jelas terlihat secara visual.

Pengujian Berdasarkan Aspek Recovery

Pengujian berdasarkan tingkat keberhasilan dalam pengekstrakan kembali pesan.

Dalam pengujian ini dilakukan beberapa pengujian dengan media cover sama,

hasil pengujian ditunjukkan pada Tabel 9. Tabel 9 Hasil Pengujian Berdasarkan Aspek Recovery

Percobaan 1

Objek Gambar Kucing.gif

Plaintext Steganografi

Kunci 123456

Ciphertext l'y}y)E\ZPOX

Gambar Stego Kucing_stego1.gif Decode 100%

Percobaan 2

Objek Gambar Kucing.gif

Plaintext 2^8=256

Kunci Binary

Ciphertext uH'&)7I

Gambar Stego Kucing_stego2.gif

Decode 100%

Percobaan 3

Objek Gambar Kucing.gif

Plaintext jl.Diponegoro 52-60

Kunci UKSW

Ciphertext @:Dh0V`3OXabUj'&7F

Gambar Stego Kucing_stego3.gif

Decode 100%

Percobaan 4

Objek Gambar Kucing.gif Plaintext Fakultas Teknologi Informasi

Kunci Fti

19

Ciphertext -VU=O`W`u7ZlCUX^WVp2Xg:aTQfX

Gambar Stego Kucing_stego4.gif

Decode 100%

Berdasarkan hasil pengujian pada Tabel 9, pesan dapat diekstraksi kembali

dengan utuh, sehingga dikatakan bahwa algoritma ini dapat mengekstrak kembali

pesan.

Pengujian Berdasarkan Aspek Robustness

Dalam pengujian berdasarkan ketahanan media penampung, media penampung

akan diberikan perubahan. Media stego yang digunakan adalah pirate.gif,

ditunjukkan pada Gambar 17.

Gambar 17 Media Percobaan pirate.gif

Beberapa pengujian yang dilakukan adalah :

1. Flip Canvas Horinzotal; Flip Canvas Horisontal merupakan teknik membalik

Gambar secara horizontal. Hasil Flip Canvas Horizontal ditunjukkan pada

Gambar 17.

Gambar 17 Media Citra Diberikan Efek Flip Canvas Horizontal

Setelah dilakukan perubahan pada media penampung, maka pesan tidak dapat

diekstraksi kembali.

2. Rotate 900; Rotate 90

0 merupakan teknik memutar canvas Gambar hingga 90

0.

Hasil pemutaran Gambar dapat dilihat pada Gambar 18.

Gambar 18 Media Citra Diberikan Efek Rotate 900

Setelah dilakukan perubahan pada media penampung, maka pesan tidak dapat

diekstraksi kembali.

3. Penambahan Efek Blur; Blur adalah perubahan warna tiap-tiap pixel dalam

Gambar agar membentuk distribusi normal. Hasil dari efek ini adalah

Gambar menjadi terlihat kabur. Hasil penambahan efek blur ditunjukkan

pada Gambar 19.

20

Gambar 19 Media Citra Diberikan Efek Blur

Setelah dilakukan perubahan pada media penampung, maka pesan tidak dapat

diekstraksi kembali. Berdasarkan pengujian Flip Canvas Horinzotal, Rotate 900, dan Penambahan Efek Blur yang sudah dilakukan, pesan yang telah disisipkan tidak dapat diekstrak kembali setelah media cover mendapatkan perubahan. Hal ini disebabkan karena palet warna ikut berubah saat citra GIF mengalami perubahan.

6. Simpulan Penelitian yang dilakukan telah berhasil menyembunyikan pesan

terenkripsi dan berhasil mengembalikan pesan dengan menggunakan algoritma

Gifshuffle pada image dengan citra GIF. Citra penampung dalam Algoritma

Gifshuffle tidak memiliki ketahanan yang baik terhadap gangguan karena apabila

image stego mendapat gangguan (rotating, cropping, dan lain-lain) pesan tidak

dapat diekstrak kembali. Saran untuk pengembangan sistem ke depan adalah (1)

Implementasi Algoritma Gifshuffle pada citra GIF animated; (2) Masukan kunci

tidak hanya berupa teks, melainkan dapat berupa file; (3) Tidak hanya

menggunakan citra GIF sebagai media penampung.

7. Daftar Pustaka [1]. Sitompul, Putri., 2011. “Analisis dan Implementasi Steganografi Pada

Citra GIF menggunakan Algoritma Gifshuflle”, Universitas Sumatera

Utara.

[2]. Penalosa, Ronald A., 2005. “Steganografi Pada Citra dengan Format GIF

Menggunakan Algoritma Gifshuffle”, Institut Teknologi Bandung.

[3]. Kwan, Matthew., 2010. “How Gifshuffle Works”,

http://www.darkside.com.au/gifshuffle/description.html, diakses tanggal

30 Desember 2011.

[4]. Pressman, Roger S. 2001. “Software Enginering a Praticioner’s

Approach” New York , McGraw-Hill Higer Education.