Implementasi Steganografi Least Significant Bit (LSB) Dengan Modifikasi Vigenere Cipher Pada Citra Digital

(1)

IMPLEMENTASI S

(LSB) DENGA

Diajukan untuk meleng

DEP

FAKULTAS MATEM

UNIV

I STEGANOGRAFI LEAST SIGNIFICA

GAN MODIFIKASI VIGENERE CIPHE

PADA CITRA DIGITAL

SKRIPSI

ngkapi tugas dan memenuhi syarat untuk menc Sarjana Sains

HASINA TONI

110803029

EPARTEMEN MATEMATIKA

EMATIKA DAN ILMU PENGETAHUA

IVERSITAS SUMATERA UTARA

MEDAN

2015

ICANT BIT

HER

encapai gelar


(2)

DEP

FAKULTAS MATEM

UNIVE

PADA CITRA DIGITAL

SKRIPSI

HASINA TONI

110803029

EPARTEMEN MATEMATIKA

EMATIKA DAN ILMU PENGETAHUA

VERSITAS SUMATERA UTARA

MEDAN

2015


(3)

i

PERSETUJUAN

Judul : Implementasi Steganografi Least Significant Bit (LSB) Dengan Modifikasi Vigenere Cipher Pada Citra Digital

Kategori : Skripsi

Nama : Hasina Toni

Nomor Induk Mahasiswa : 110803029

Program Studi : Sarjana (S1) Matematika

Departemen : Matematika

Fakultas : Matematika Dan Ilmu Pengetahuan Alam

(FMIPA) Universitas Sumatera Utara

Disetujui di Medan, Juli 2015

Komisi Pembimbing:

Pembimbing 2, Pembimbing 1,

Dr. Suyanto, M.Kom Dr. Syahriol Sitorus, M.IT

NIP. 19590813 198601 1 002 NIP. 19710310 199703 1 004

Disetujui oleh

Departemen Matematika FMIPA USU Ketua,

Prof. Dr. Tulus, M.Si


(4)

ii

IMPLEMENTASI STEGANOGRAFI LEAST SIGNIFICANT BIT (LSB) DENGAN MODIFIKASI VIGENERE CIPHER

PADA CITRA DIGITAL

SKRIPSI

Saya mengakui bahwa skripsi ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan, Juli 2015

Hasina Toni 110803029


(5)

iii

PENGHARGAAN

Assalamu’alaikum Wr. Wb.

Puji syukur penulis ucapkan kehadirat Allah SWT atas rahmat dan hidayah-Nya sehingga penulis dapat menyelesaikan skripsi yang berjudul Implementasi Steganografi Least Significant Bit (LSB) Dengan Modifikasi Vigenere cipher Pada Citra Digital ini dalam waktu yang telah ditetapkan. Terimakasih penulis sampaikan kepada:

1. Bapak Dr. Syahriol Sitorus, M.IT dan Bapak Dr. Suyanto, M.Kom selaku dosen pembimbing yang berkenan dan rela mengorbankan waktu, tenaga dan pikiran guna memberikan petunjuk dan bimbingannya dalam penulisan skripsi ini.

2. Ibu Dra. Normalina Napitupulu, M.Sc dan Bapak Dr. Sawaluddin, M.IT selaku dosen pembanding atas kritik dan saran yang membangun dalam penyempurnaan skripsi ini.

3. Bapak Prof. Dr. Tulus, M.Si dan Ibu Dr. Mardiningsih, M.Si selaku Ketua dan Sekretaris Departemen Matematika FMIPA USU beserta staf pegawai.

4. Bapak Dr. Sutarman, M.Sc selaku Dekan FMIPA USU beserta staf pegawai. 5. Terkhusus untuk Ayahanda Harian Toni, Ibunda Mas’ad Thalib Aziz, saudara

penulis Haifah Toni serta keluarga besar penulis yang telah memberikan banyak bantuan baik materi, moral maupun spiritual.

6. Teman-teman penulis Muni, Amik, Donna, Joe, Alin, Mitra, Ridwan, Iman, Ningsih, Eka, Rahmad, Ai, Fitri, Mala, Zahara dan teman-teman Matematika 2011 yang lainnya yang tidak dapat disebutkan satu per satu atas segala bentuk dukungannya.

7. M. Budiman Khanafi Manurung yang selalu memberikan semangat dan dukungannya.

8. Rekan – rekan Asisten Laboratorium S1 Matematika dan kepada semua pihak yang telah memberikan bantuan.


(6)

iv

mengharapkan kritik dan saran yang membangun demi penyempurnaan skripsi ini dan berharap semoga skripsi ini dapat bermanfaat bagi para pembaca. Amin.


(7)

v

IMPLEMENTASI STEGANOGRAFI LEAST SIGNIFICANT BIT (LSB) DENGAN MODIFIKASI VIGENERE CIPHER

PADA CITRA DIGITAL

ABSTRAK

Steganografi merupakan teknik menyembunyikan pesan rahasia di dalam media digital agar orang lain tidak menyadari ada suatu pesan rahasia di dalam media tersebut. Agar pesan rahasia yang disembunyikan lebih aman, dapat menggunakan teknik kriptografi untuk menyandikan pesan rahasia ke dalam karakter yang tidak dapat dimengerti maknannya. Algortima yang digunakan dalam penelitian ini adalah algoritma Steganografi Least Significant Bit (LSB) dan algoritma modifikasi Vigenere Cipher. Hasil akhir dari penelitian ini adalah sebuah aplikasi steganografi pada citra digital dengan metode Least Significant Bit (LSB) dan modifikasi Vigenere Cipher yang dapat dijalankan pada komputer. Aplikasi ini dapat menyisipkan pesan teks pada citra serta dapat melakukan proses enkripsi dan deskripsi pada pesan yang ingin disisipkan.


(8)

vi ABSTRACT

Steganography is a teachnique to hide a secret message in digital media so that other people can’t realize that is a message in that media. To keep the message safer, writer use cryptograph technique to encode the secret message into understanding character. Algorithm that use in the research is Steganograph Least Significant Bit (LSB) and Vigenere Cipher algorithm. The result of the research is an steganograph application in digital media with Least Significant Bit (LSB) and Vigenere Cipher that can run in computer. This application can insert text message in image also can do encryption and decryption process in text that want to insert.


(9)

vii DAFTAR ISI

Halaman

PERSETUJUAN i

PERNYATAAN ii

PENGHARGAAN iii

ABSTRAK v

ABSTRACT vi

DAFTAR ISI vii

DAFTAR TABEL ix

DAFTAR GAMBAR x

DAFTAR LAMPIRAN xii

BAB 1 PENDAHULUAN 1

1.1 Latar Belakang 1

1.2 Perumusan Masalah 2

1.3 Batasan Masalah 3

1.4 Tujuan Penelitian 3

1.5 Manfaat Penelitian 3

1.6 Kerangka Pemikiran 4

1.7 Metodologi Penelitian 4

BAB 2 LANDASAN TEORI 5

2.1 Kriptografi 5

2.1.1 Pengertian Kriptografi 5

2.1.2 Sejarah Kriptografi 5

2.1.3 Terminologi dan Konsep Dasar Kriptografi 7

2.1.4 Jenis Kriptografi 9

2.1.5 Algoritma Vigenere Cipher 10

2.1.6 Metode Kasiski 12

2.2 Steganografi 13

2.2.1 Pengertian Steganografi 13

2.2.2 Sejarah Steganografi 14

2.2.3 Terminologi dan Konsep Dasar Steganografi 14

2.2.4 Proses Steganografi 15

2.2.5 Least Significant Bit (LSB) 16

2.2.6 Ukuran Teks yang Disembunyikan 17

2.3 Teori Dasar Citra Digital 18

2.3.1 Pengertian Citra Digital 18

2.3.1.1 Citra Analog 18

2.3.1.2 Citra Digital 18

2.3.2 Jenis – Jenis Citra Digital 18

2.4 Penelitian Terdahulu 20


(10)

viii

BAB 4 IMPLEMENTASI 30

4.1 Kebutuhan Perangkat Lunak dan Perangkat Keras 30

4.2 Implementasi 30

4.2.1 Proses Enkripsi dan Encoding 31

4.2.2 Proses Decoding dan Deskripsi 35

4.3 Analisis dalam Aplikasi 38

4.4 Hasil Pengujian 43

4.4.1 Hasil Kriptografi 43

4.4.2 Hasil Steganografi 45

BAB 5 KESIMPULAN DAN SARAN 47

5.1 Kesimpulan 47

5.2 Saran 47

DAFTAR PUSTAKA 48


(11)

ix

DAFTAR TABEL

Nomor Judul Halaman Tabel

2.1 Persegi vigenere cipher 11

4.1 Kode ASCII pesan 38

4.2 Kode ASCII kunci 39

4.3 Proses enkripsi 40

4.4 Kode ASCII dan biner dari cipherteks 41


(12)

x

Nomor Judul Halaman Gambar

1.1 Diagram konsep proses penyembunyian pesan 4

2.1 (a) Sebuah scytale, (b) Pesan ditulis secara horizontal, baris

per baris 6

2.2 Mesin enigma 7

2.3 (a) Plainteks, (b) Cipherteks 8

2.4 (a) Skema enkripsi, (b) Skema deskripsi 8

2.5 (a) Skema enkripsi kriptografi simetri, (b) Skema deskripsi

kriptografi simetri 9

2.6 (a) Skema enkripsi kriptografi asimetri, (b) Skema deskripsi

kriptografi asimetri 10

2.7 Proses penyembunyian pesan rahasia ke dalam media digital

dengan teknik steganografi 15

2.8 (a) Skema encoding, (b) Skema decoding 16

2.9 Contoh MSB dan LSB 16

2.10 (a) Citra biner, (b) Representasi citra biner 19

2.11 (a) Citra grayscale, (b) Citra warna 20

3.1 (a) Flowchart enkripsi dan encoding, (b) Flowchart decoding

dan deskripsi 22

3.2 Flowchart proses enkripsi 24

3.3 Flowchart proses deskripsi 25

3.4 Flowchart proses encoding 27

3.5 Flowchart proses decoding 28

4.1 Halaman utama 31

4.2 Pemandangan.PNG 32

4.3 Halaman enkripsi dan encoding 1 32

4.4 Halaman enkripsi dan encoding 2 33

4.5 Pop-up window pilih gambar 1 33


(13)

xi

4.7 Pop-up window simpan gambar 34

4.8 HASIL.PNG 35

4.9 Halaman decoding dan deskripsi 1 35

4.10 Pop-up window pilih gambar 2 36

4.11 Halaman decoding dan deskripsi 2 36

4.12 Halaman decoding dan deskripsi 3 37

4.13 Halaman decoding dan deskripsi 4 37

4.14 Pixel citra 42

4.15 Citra dalam bentuk biner 43


(14)

xii

Nomor Judul Halaman

1 Fungsi utama 50

2 Fungsi enkripsi dan encoding 51

3 Fungsi decoding dan deskripsi 56

4 Fungsi peringatan pesan 60

5 Fungsi peringatan kunci 61

6 Fungsi peringatan gambar 62


(15)

v

IMPLEMENTASI STEGANOGRAFI LEAST SIGNIFICANT BIT (LSB) DENGAN MODIFIKASI VIGENERE CIPHER

PADA CITRA DIGITAL

ABSTRAK

Steganografi merupakan teknik menyembunyikan pesan rahasia di dalam media digital agar orang lain tidak menyadari ada suatu pesan rahasia di dalam media tersebut. Agar pesan rahasia yang disembunyikan lebih aman, dapat menggunakan teknik kriptografi untuk menyandikan pesan rahasia ke dalam karakter yang tidak dapat dimengerti maknannya. Algortima yang digunakan dalam penelitian ini adalah algoritma Steganografi Least Significant Bit (LSB) dan algoritma modifikasi Vigenere Cipher. Hasil akhir dari penelitian ini adalah sebuah aplikasi steganografi pada citra digital dengan metode Least Significant Bit (LSB) dan modifikasi Vigenere Cipher yang dapat dijalankan pada komputer. Aplikasi ini dapat menyisipkan pesan teks pada citra serta dapat melakukan proses enkripsi dan deskripsi pada pesan yang ingin disisipkan.


(16)

vi ABSTRACT

Steganography is a teachnique to hide a secret message in digital media so that other people can’t realize that is a message in that media. To keep the message safer, writer use cryptograph technique to encode the secret message into understanding character. Algorithm that use in the research is Steganograph Least Significant Bit (LSB) and Vigenere Cipher algorithm. The result of the research is an steganograph application in digital media with Least Significant Bit (LSB) and Vigenere Cipher that can run in computer. This application can insert text message in image also can do encryption and decryption process in text that want to insert.


(17)

BAB 1

PENDAHULUAN

1.1Latar Belakang

Dewasa ini, perkembangan ilmu dan teknologi telah mempengaruhi segala aspek kehidupan, tak terkecuali aspek komunikasi, seperti dalam pengiriman pesan melalui jaringan internet. Keamanan dan kerahasiaan merupakan aspek penting yang dibutuhkan dalam proses pengiriman pesan. Semakin berkembangnya teknologi, pengiriman suatu pesan juga menjadi semakin kurang aman. Tidak menutup kemungkinan saat proses pengiriman pesan ada pihak ketiga yang ingin mengambil ataupun merubah isi dari pesan tersebut.

Salah satu cara untuk mempertahankan kerahasiaan dari pesan tersebut adalah pesan yang akan dikirim disandikan terlebih dahulu menjadi kode – kode yang tidak dipahami maksudnya, sehingga bila ada pihak ketiga yang ingin mengambil ataupun merubahnya akan kesulitan dalam menterjemahkan isi pesan yang sebenarnya. Teknik tersebut dikenal dengan kriptografi (Munir, 2006).

Vigenere cipher merupakan salah satu algoritma kriptografi klasik yang menggunakan substitusi abjad majemuk, dimana dengan menggunakan bujursangkar vigenere tiap huruf pada plainteks akan disubstitusi menjadi huruf lain berdasarkan kunci yang digunakan. Namun vigenere cipher telah berhasil dipecahkan oleh Friedrich Kasiski pada tahun 1863 dengan menggunakan metode kasiski. Oleh karena itu, dalam penelitian ini penulis melakukan sebuah modifikasi, yaitu dengan menyisipkan huruf – huruf yang ada pada kunci ke dalam plainteks. Dengan metode ini, diharapkan algoritma ini menjadi lebih kuat dan akan lebih sulit untuk dipecahkan.


(18)

Tindakan pengamanan menggunakan teknik kriptografi ini ternyata dianggap belum cukup dalam mengamankan suatu pesan, karena cipherteks mengandung karakter – karakter yang tidak wajar sehingga menimbulkan kecurigaan. Untuk mengatasi hal tersebut dapat digunakan teknik lain yaitu steganografi. Steganografi adalah ilmu dan seni untuk menyembunyikan pesan rahasia di dalam media digital sedemikian rupa sehingga orang lain tidak menyadari ada suatu pesan rahasia di dalam media tersebut (Sutoyo, 2009).

Implementasi steganografi saat ini telah menggunakan media digital sebagai media untuk menyembunyikan pesan, salah satunya adalah media gambar (citra digital). Steganografi menyisipkan atau menyembunyikan pesan di dalam sebuah citra, agar pihak lain tidak menyadari keberadaan pesan yang ada di dalam citra tersebut.

Salah satu metode steganografi citra digital adalah Least Significant Bit (LSB), yaitu teknik penyembunyian pesan pada lokasi bit terendah dalam citra digital. Pesan dikonversi ke dalam bentuk biner dan disembunyikan pada citra digital dengan metode LSB. Dalam penelitian ini, penulis menggunakan citra digital sebagai media penyembunyian pesan karena hasil keluaran dari steganografi LSB ini memiliki perubahan yang tidak dapat dibedakan oleh mata manusia.

Kombinasi modifikasi vigenere cipher dan steganografi LSB dapat lebih meningkatkan keamanan pada pesan rahasia. Pesan rahasia terlebih dahulu dienkripsi dengan menyisipkan huruf – huruf pada kunci ke dalam plainteks, kemudian cipherteks hasil kriptografi tersebut disembunyikan didalam citra digital dengan metode steganografi LSB.

1.2Perumusan Masalah

Permasalahan yang akan dibahas adalah bagaimana menyembunyikan pesan rahasia sebaik mungkin sehingga keberadaannya tidak diketahui dengan


(19)

3

menggunakan metode steganografi LSB dan modifikasi vigenere cipher pada citra digital.

1.3Batasan Masalah

Adapun batasan masalah dalam penelitian ini adalah sebagai berikut: a. Pesan rahasia adalah pesan teks.

b. Menggunakan citra RGB dengan format *PNG sebagai wadah penampung pesan.

c. Format citra yang dihasilkan adalah *PNG.

d. Metode steganografi yang digunakan yaitu metode Least Significant Bit (LSB).

e. Metode kriptografi yang digunakan yaitu metode penyisipan kunci pada plainteks.

1.4Tujuan Penelitian

Tujuan penelitian ini adalah menerapkan modifikasi algoritma vigenere cipher dengan menyisipkan huruf – huruf pada kunci ke dalam plainteks untuk mendapatkan perlindungan yang lebih baik dalam menjaga keamanan dan kerahasiaan pesan, serta tergabung dengan steganografi untuk menyembunyikan pesan dalam sebuah citra guna melindungi keberadaan pesan rahasia.

1.5Manfaat Penelitian

Manfaat dari penelitian ini adalah sebagai berikut:

a. Dapat merahasiakan pesan tanpa diketahui keberadaan pesan tersebut.

b. Memberikan pengetahuan baru tentang modifikasi vigenere cipher dan steganografi LSB untuk pengamanan pesan.

c. Dapat digunakan sebagai referensi bacaan untuk mahasiswa Matematika, terlebih bagi mahasiswa yang akan melakukan penelitian serupa.


(20)

1.6Kerangka Pemikiran

Diagram konsep proses penyembunyian pesan pada citra dengan teknik kriptografi dan steganografi.

Gambar 1.1 Diagram konsep proses penyembunyian pesan

1.7Metodologi Penelitian

Penelitian ini dilakukan dengan langkah – langkah sebagai berikut:

1. Melakukan studi literature mengenai steganografi LSB dan modifikasi kriptografi vigenere cipher yang bersumber dari buku, jurnal, situs internet dan berbagai sumber lainnya.

2. Menganalisa proses enkripsi, deskripsi, encoding, dan decoding pada metode LSB dan modifikasi vigenere cipher.

3. Melakukan perancangan dan menerapkan LSB dan modifikasi vigenere cipher pada citra dengan menggunakan software MATLAB.

Input Pesan

Input Citra

Proses Kriptografi

Proses Steganografi


(21)

BAB 2

LANDASAN TEORI

2.1 Kriptografi

2.1.1 Pengertian Kriptografi

Kriptografi (cryptography) berasal dari Bahasa Yunani “cryptos” yang artinya rahasia, sedangkan “graphein” artinya tulisan. Jadi, kriptografi berarti tulisan rahasia. Secara umum, kriptografi adalah ilmu dan seni untuk menjaga kerahasiaan pesan dengan cara menyandikannya ke dalam bentuk yang tidak dapat dimengerti lagi maknanya (Munir, 2006).

2.1.2 Sejarah Kriptografi

Kriptografi mempunyai sejarah yang panjang. Informasi yang lengkap mengenai sejarah kriptografi dapat ditemukan di dalam buku David Kahn yang berjudul The Codebreakers. Buku yang tebalnya 1000 halaman ini menulis secara rinci sejarah kriptografi, mulai dari penggunaan kriptografi oleh Bangsa Mesir 4000 tahun yang lalu hingga penggunaan kriptografi abad ke – 20.

Sejarah kriptografi sebagian besar merupakan sejarah kriptografi klasik, yaitu metode enkripsi yang menggunakan kertas dan pensil atau menggunakan alat bantu mekanik sederhana. Kriptografi klasik secara umum dikelompokkan menjadi dua kategori, yaitu algoritma transposisi (transposition cipher) dan algoritma substitusi (substitution cipher). Algoritma transposisi adalah algoritma yang mengubah susunan – susunan huruf di dalam pesan, sedangkan algoritma


(22)

substitusi yaitu mengganti setiap huruf atau kelompok huruf dengan sebuah huruf atau kelompok huruf yang lain.

Penggunaan algoritma transposisi yaitu oleh tentara Sparta di Yunani pada permulaan tahun 400 SM. Mereka menggunakan alat yang namanya scytale. Scytale terdiri dari sebuah kertas panjang dari daun papyrus yang dililitkan pada sebuah silinder dengan diameter tertentu (diameter silinder merupakan kunci dari penyandian). Pesan ditulis baris per baris dan secara horizontal. Apabila kertas dilepas, maka setiap huruf akan tersusun secara acak membentuk pesan rahasia. Agar pesan tersebut dapat dibaca, maka kertas harus kembali dililitkan ke silinder yang diameternya sama dengan diameter silinder pengirim.

(a) (b)

Gambar 2.1 (a) Sebuah scytale; (b) Pesan ditulis secara horizontal, baris per baris.

Sedangkan algortima substitusi paling awal dan paling sederhana adalah Caesar cipher, yaitu digunakan oleh raja Yunani kuno, Julius Caesar. Caranya adalah dengan mengganti setiap karakter di dalam alfabet dengan karakter yang terletak pada tiga posisi berikutnya di dalam susunan alfabet. Pada perang dunia ke II, Pemerintah Nazi Jerman membuat mesin enkripsi yang dinamakan dengan Enigma. Mesin ini melakukan proses enkripsi yang sangat rumit. Namun Enigma cipher berhasil dipecahkan oleh pihak Sekutu dan keberhasilan memecahkan Enigma sering dikatakan sebagai faktor yang memperpendek perang dunia ke – 2.


(23)

Perkembangan kriptografi modern. De menghasilkan cipher ya klasik yang mengenkrip pada string biner. Cip Encryption Standard) da dunia kriptografi (Munir

2.1.3 Terminologi dan K

Di dalam kriptografi ak Berikut merupakan istila (Munir, 2006).

a. Plainteks dan Ciph

Pesan merupakan data maknanya. Nama lain un (melalui kurir, saluran t dalam media penyimpan

Agar pesan tidak perlu disandikan ke ben

Gambar 2.2 Mesin enigma

peralatan komputer digital memicu ter Dengan komputer digital, akan sangat mungk yang lebih kompleks dan rumit. Tidak seperti k ripsi karakter per karakter, kriptografi modern

ipher yang lebih kompleks seperti halnya D dan RSA adalah algoritma modern yang sangat nir, 2006).

n Konsep Dasar Kriptografi

akan sering ditemukan beberapa istilah atau te tilah penting untuk diketahui dalam memahami k

ipherteks

ata atau informasi yang dapat dibaca dan d untuk pesan adalah plainteks. Pesan tersebut dap n telekomunikasi, dan lain – lain) dan dapat juga anan. Pesan dapat berupa teks, gambar, suara, atau

ak dapat dimengerti maknanya oleh pihak lain, m entuk lain yang tidak dapat dipahami. Bentuk p

7

terbentuknya ngkin untuk ti kriptografi n beroperasi DES (Data t dikenal di

terminologi. i kriptografi

dimengerti dapat dikirim ga disimpan tau video.

, maka pesan pesan yang


(24)

telah tersandikan tersebut dinamakan dengan cipherteks. Cipherteks harus dapat ditransformasikan kembali menjadi plainteks semula agar pesan yang diterima bisa dibaca. Perbandingan antara plainteks dan cipherteks dapat dilihat pada Gambar 2.3.

(a) (b) Gambar 2.3 (a) Plainteks; (b) Cipherteks

b. Pengirim dan Penerima

Komunikasi data melibatkan pertukaran pesan antara dua entitas. Pengirim adalah entitas yang mengirim pesan kepada entitas lainnya. Penerima adalah entitas yang menerima pesan. Entitas disini dapat berupa orang, mesin (komputer), kartu kredit, dan sebagainya.

c. Enkripsi dan Deskripsi

Proses penyandian pesan, dari plainteks ke cipherteks dinamakan dengan enkripsi (encryption). Sedangkan proses mengembalikan pesan dari cipherteks ke plainteks dinamakan dengan deskripsi (decryption). Proses enkripsi dan deskripsi membutuhkan kunci sebagai parameter yang digunakan untuk transformasi.

(a) (b)


(25)

9

d. Kriptanalisis

Kriptografi berkembang sedemikian rupa sehingga melahirkan bidang yang berlawanan yaitu kriptanalisis. Kriptanalisis (cryptanalysis) adalah ilmu dan seni untuk memecahkan cipherteks menjadi plainteks tanpa mengetahui kunci yang digunakan. Pelakunya disebut kriptanalis. Jika seorang kriptografer (cryptographer) mentransformasikan plainteks menjadi cipherteks dengan suatu algoritma dan kunci maka sebaliknya seorang kriptanalis berusaha untuk memecahkan cipherteks tersebut untuk menemukan plainteks atau kunci.

2.1.4 Jenis Kriptografi

Berdasarkan kunci enkripsi dan deskripsinya algoritma kriptografi terbagi menjadi dua bagian (Munir, 2006) yaitu:

1. Kriptografi simetri

Konsep dasar dari kriptografi kunci simetri adalah di mana kunci untuk enkripsi sama dengan kunci untuk deskripsi. Istilah lain dari kriptografi simetri ini adalah kriptografi kunci privat (privat-key cryptography), kriptografi kunci rahasia (secret-key cryptography), atau kriptografi konvensional (conventional cryptography). Dalam kriptografi kunci simetri dapat diasumsikan bahwa si penerima dan pengirim pesan telah terlebih dahulu berbagi kunci sebelum pesan dikirimkan. Keamanan dari sistem ini terletak pada kerahasiaan kuncinya. Skema kriptografi simetri dapat dilihat pada Gambar 2.5.

(a) (b)

Gambar 2.5 (a) Skema enkripsi kriptografi simetri; (b) Skema deskripsi kriptografi simetri


(26)

2. Kriptografi asimetri

Berbeda dengan kriptografi kunci simetri, kriptografi asimetri memiliki dua buah kunci yang berbeda pada proses enkripsi dan deskripsinya. Nama lain dari kunci asimetri ini adalah kriptografi kunci publik (public – key cryptography). Kunci untuk enkripsi pada kriptografi asimetri ini tidak rahasia (diketahui oleh publik), sedangkan kunci untuk deskripsi bersifat rahasia (kunci privat). Pengirim akan mengenkripsi dengan menggunakan kunci publik, sedangkan penerima mendeskripsi menggunakan kunci privat. Skema kriptografi asimetri dapat dilihat pada Gambar 2.6.

(a) (b)

Gambar 2.6 (a) Skema enkripsi kriptografi asimetri; (b) Skema deskripsi kriptografi asimetri

2.1.5 Algoritma Vigenere Cipher

Vigenere cipher berasal dari nama penemunya Blaise de Vigenere seorang kriptografer asal Prancis. Vigenere cipher merupakan pengembangan dari caesar cipher. Pada caesar cipher, setiap huruf pada plainteks digantikan dengan huruf lain yang memiliki perbedaan tertentu pada urutan alfabet. Sedangkan pada vigenere cipher, setiap karakter pesan pada plainteks berkorespondensi dengan lebih dari satu karakter pada cipherteks. Misalnya, huruf A pada plainteks dapat menjadi huruf K atau M pada cipherteks yang berkaitan, tergantung pada kunci yang digunakan.

Algoritma vigenere cipher menggunakan Persegi vigenere untuk melakukan enkripsi dan deskripsi. Deretan huruf mendatar yang terletak pada


(27)

11

bagian atas persegi menyatakan plainteks, sedangkan deretan huruf menurun pada bagian sebelah kiri persegi menyatakan kunci. Setiap baris di dalam persegi menyatakan huruf - huruf cipherteks yang diperoleh dengan caesar cipher, yang mana jumlah pergeseran huruf plainteks ditentukan nilai numerik huruf kunci tersebut (yaitu A=0, B=1, C=2,…, Z=25). Jika panjang kunci yang digunakan lebih pendek dari plainteks, maka kunci tersebut akan diulang secara periodik sepanjang plainteks (Tjaru, 2012).

Tabel 2.1 Persegi Vigenere Cipher

Adapun langkah – langkah untuk proses enkripsi pada vigenere cipher sebagai berikut:

a. Menghilangkan spasi dan tanda baca pada plainteks.

b. Menuliskan kunci secara periodik sepanjang karakter plainteks.

c. Mengenkripsikan setiap karakter plainteks dengan karakter kunci menggunakan persegi vigenere cipher. Cipherteks diperoleh dari perpotongan antara baris karakter kunci dengan kolom karakter plainteks.


(28)

Untuk proses deskripsinya merupakan kebalikan dari proses enkripsi. Plainteks diperoleh dari perpotongan baris karakter kunci dengan karakter cipherteks yang dimaksud pada Persegi vigenere.

Sebagai contoh, untuk plainteks ‘MATEMATIKA’ dengan kunci ‘OKE’, mengacu pada Tabel 2.1 akan menghasilkan cipherteks sebagai berikut:

Plainteks : MATEMATIKA

Kunci : OKEOKEOKEO

Cipherteks : AKXSWEHSOO

Secara matematis, misalkan adalah karakter ke – pada plainteks, adalah karakter ke – pada cipherteks, dan adalah karakter ke – pada kunci, maka enkripsi pada vigenere cipher dapat dinyatakan sebagai:

= + 26 (2.1)

sedangkan untuk deskripsi pada vigenere cipher dapat dinyatakan sebagai:

= − 26 (2.2)

Harus diperhatikan bahwa angka 26 pada persamaan (2.1) dan (2.2) disebabkan karena banyak huruf yang dienkripsi hanya abjad biasa, yaitu 26 huruf. Apabila banyak karakter yang dienkripsi misalnya berupa karakter ASCII, maka angka 26 diganti dengan 256.

2.1.6 Metode Kasiski

Metode kasiski pertama kali di temukan oleh Friedrich Kasiski pada tahun 1863 untuk memecahkan vigenere cipher. Metode kasiski membantu untuk menemukan panjang kunci dari suatu plainteks memanfaatkan pengulangan pasangan 2 huruf atau lebih. Pengulangan pada cipherteks ini terjadi oleh karena kunci yang sama diterapkan pada karakter plainteks yang sama menghasilkan pengulangan pada hasil cipherteks. Interval munculnya pengulangan pada cipherteks kemudian dapat


(29)

13

difaktorkan dan dapat mengindikasikan kunci berserta panjangnya yang digunakan dalam proses enkripsi (Sidiq).

Berikut adalah langkah – langkah metode kasiski (Tjaru, 2012):

1. Temukan semua kriptogram yang berulang di dalam cipherteks (pesan yang panjang biasanya mengandung kriptogram yang berulang).

2. Hitung jarak antara kriptogram yang berulang. 3. Hitung semua faktor pembagi dari jarak tersebut.

4. Tentukan irisan dari himpunan faktor pembagi tersebut. Nilai yang muncul di dalam irisan menyatakan angka yang muncul pada semua faktor pembagi dari jarak – jarak tersebut. Nilai tersebut mungkin adalah panjang kunci.

Setelah panjang kunci diketahui, maka langkah berikutnya adalah menentukan kata kunci. Kunci dapat ditentukan dengan beberapa cara, antara lain: 1. Exhaustive key search, yakni dengan membangkitkan semua kemungkinan kunci. Jika panjang kunci adalah p, maka cara ini membutuhkan 26p kali percobaan.

2. Mengelompokkan huruf – huruf pada cipherteks ke sejumlah p kelompok (p = panjang kunci). Lalu, melakukan teknik analisis frekuensi pada tiap – tiap kelompok tersebut.

2.2 Steganografi

2.2.1 Pengertian Steganografi

Steganografi (steganography) berasal dari Bahasa Yunani, yaitu “steganos” yang artinya menyembunyikan dan “graphein” yang artinya tulisan. Jadi steganografi berarti juga tulisan yang disembunyikan. Steganografi adalah ilmu dan seni untuk menyembunyikan pesan rahasia di dalam media digital sedemikian rupa sehingga orang lain tidak menyadari ada suatu pesan rahasia di dalam media tersebut (Sutoyo, 2009).


(30)

2.2.2 Sejarah Steganografi

Herodotus adalah seorang sejarawan Yunani pertama yang menulis tentang steganografi, yaitu ketika seorang raja kejam Yunani bernama Histaeus dipenjara oleh Raja Darius di Susa pada abad ke-5 sebelum Masehi. Histaeus harus mengirim pesan rahasia kepada anak laki-lakinya, Aristagoras, di Militus. Histaues menulis pesan dengan cara menato pesan pada kulit kepala seorang budak. Ketika rambut budak itu mulai tumbuh, Histaues mengutus budak itu ke Militus untuk mengirim pesan di kulit kepalanya tersebut kepada Aristagoras.

Cerita lain yang ditulis oleh Herodotus, yaitu Demeratus seorang Yunani yang akan mengabarkan berita kepada Sparta bahwa Xerxes bermaksud menyerbu Yunani. Agar tidak diketahui pihak Xerxes, Demartus menulis pesan dengan cara mengisi tabung kayu dengan lilin dan menulis pesan dengan cara mengukirnya pada bagian bahwah kayu. Papan kayu tersebut dimasukkan ke dalam tabung kayu, kemudian tabung kayu ditutup kembali dengan lilin.

Teknik steganografi yang lain adalah tinta yang tak terlihat. Teknik ini pertama digunakan pada zaman Romawi kuno, yaitu dengan menggunakan air sari buah jeruk, urin, atau susu sebagai tinta untuk menulis pesan. Cara membacanya adalah dengan dipanaskan di atas nyala lilin. Tinta yang sebelumnya tidak terlihat, ketika terkena panas akan berangsur – angsur menjadi gelap sehingga pesan dapat dibaca (Sutoyo, 2009).

2.2.3 Terminologi dan Konsep Dasar Steganografi

Ada beberapa istilah yang berkaitan dengan steganografi (Munir, 2006) yaitu:

1. Embedded Message

Pesan atau informasi yang disembunyikan. Contohnya dapat berupa teks, gambar, suara, video, dll.


(31)

15

2. Cover – object

Pesan yang digunakan untuk menyembunyikan embedded message. Contohnya dapat berupa teks, gambar, suara, video, dll.

3. Stego – object

Pesan yang sudah berisi pesan embedded message.

Steganografi membutuhkan dua properti, yaitu wadah penampung dan pesan rahasia yang akan disembunyikan. Steganografi digital menggunakan media digital sebagai wadah penampung, misalnya gambar, suara, teks, dan video. Pesan rahasia yang disembunyikan juga dapat berupa gambar, suara, teks, dan video (Sutoyo, 2006). Gambar 2.7 adalah ilustrasi untuk menggambarkan proses penyembunyian pesan ke dalam media digital dengan teknik steganografi.

Gambar 2.7 Proses penyembunyian pesan rahasia ke dalam media digital dengan teknik steganografi

2.2.4 Proses Steganografi

Secara umum, terdapat dua proses didalam steganografi, yaitu proses encoding untuk menyisipkan pesan ke dalam cover – object dan proses decoding untuk ekstraksi pesan dari stego – object. Kedua proses ini mungkin memerlukan kunci rahasia (stegokey) agar hanya pihak yang berhak saja yang dapat melakukan penyisipan pesan dan ekstraksi pesan (Munir, 2006).


(32)

(a) (b) Gambar 2.8 (a) Skema encoding; (b) Skema decoding

2.2.5 Least Significant Bit (LSB)

Metode Least Significant Bit (LSB) merupakan metode steganografi yang paling sederhana dan paling mudah diimplementasikan. Untuk menjelaskan metode LSB ini kita menggunakan citra digital sebagai cover – object. Setiap pixel di dalam citra berukuran 1 sampai 3 byte. Pada susunan bit di dalam sebuah byte (1 byte = 8 bit), ada bit yang paling berarti yaitu MSB (most significant bit) dan bit yang paling kurang berarti yaitu LSB (least significant bit) (Munir, 2005).

Gambar 2.9 Contoh MSB dan LSB

Dari contoh byte pada Gambar 2.9, bit 1 yang pertama (digarisbawahi) adalah MSB dan bit 0 yang terakhir (digarisbawahi) adalah LSB. Bit yang cocok untuk diganti dengan bit pesan adalah LSB, karena modifikasi hanya menggunakan nilai byte tersebut satu lebih tinggi atau satu lebih rendah dari nilai sebelumnya. Misalnya byte tersebut di dalam citra memberikan persepsi warna merah, maka perubahan satu bit LSB hanya mengubah persepsi warna merah tidak terlalu berarti. Mata manusia tidak dapat membedakan perubahan sekecil ini.

Sebagai ilustrasi, misalkan segmen pixel - pixel citra sebelum disisipkan pesan adalah


(33)

17

00110011 10100010 11100010 01101111

dan misalkan pesan rahasia (yang telah dikonversi ke biner) adalah 0110. Setiap bit pesan menggantikan posisi LSB dari segmen pixel – pixel citra menjadi:

00110010 10100011 11100011 10010000

Kekurangan dari metode LSB ini adalah jika citra penampung dimanipulasi (misalnya kompresi, mengubah kontras gambar, dan sebagainya), maka bit – bit LSB dari stego – object menjadi rusak sehingga pesan tidak dapat diungkap kembali.

2.2.6 Ukuran Teks Yang Disembunyikan

Ukuran maksimal teks yang dapat disembunyikan bergantung pada ukuran citra penampung yang digunakan. Semakin besar citra yang digunakan maka akan semakin banyak pula jumlah karakter yang dapat disembunyikan. Rumus untuk menghitung jumlah maksimal karakter yang dapat disembunyikan pada citra adalah

=

8

Misalnya citra yang digunakan sebagai wadah penampung berukuran 200 x 200, artinya citra ini mempunyai panjang 200 pixel dan lebar 200 pixel, sehingga total pixel citra tersebut adalah 40.000 pixel, karena 1 karakter terdiri dari 8 bit maka karakter disembunyikan pada setiap 8 pixel sehingga maksimal karakter yang dapat disemunyikan adalah sebanyak 40.000 / 8 = 5.000 karakter.

Sedangkan untuk citra 24 bit yang berukuran 256 x 256, terdapat 65.536 piksel. Karena setiap pixel berukuran 3 byte (komponen RGB), berarti seluruhnya ada 65.536 x 3 = 196.608 byte. Setiap byte hanya bisa menyembunyikan satu bit maka maksimal karakter yang dapat disembunyikan adalah 196.608 / 8 = 24.576 karakter (Munir, 2006).


(34)

2.3 Teori Dasar Citra Digital

2.3.1 Pengertian Citra Digital

Citra adalah suatu representasi (gambaran), kemiripan atau imitasi dari suatu objek. Citra yang berupa keluaran dari suatu sistem perekaman data dapat bersifat optik berupa foto, bersifat analog berupa sinyal – sinyal video seperti gambar pada monitor televisi atau bersifat digital yang dapat langsung disimpan pada suatu media penyimpanan (Sutoyo, 2009).

2.3.1.1 Citra Analog

Citra analog adalah citra yang bersifat kontinu, seperti gambar pada monitor televisi, foto sinar-X, foto yang tercetak dikertas foto, dan lain sebagainya. Citra analog tidak dapat direpresentasikan dalam komputer sehingga tidak bisa diproses di komputer secara langsung. Agar citra ini dapat diproses di komputer, proses konversi analog ke digital harus dilakukan terlebih dahulu (Sutoyo, 2009).

2.3.1.2 Citra Digital

Citra digital adalah citra yang bersifat diskrit yang dapat diolah oleh komputer yang merupakan suatu array dari bilangan yang merepresentasikan intensitas terang pada point yang bervariasi (pixel). Citra ini dapat dihasilkan melalui kamera digital dan scanner ataupun citra yang telah mengalami proses digitalisasi. Citra digital disimpan juga secara khusus di dalam file 24 bit atau 8 bit. Citra 24 bit menyediakan lebih banyak ruang untuk menyembunyikan informasi (Sutoyo, 2009).

2.3.2 Jenis - jenis Citra Digital

Berdasarkan warna – warna penyusunannyan, citra digital dapat dibagi menjadi tiga macam (Wildan, 2010) yaitu:


(35)

19

1. Citra Biner

Citra biner adalah citra yang hanya memiliki 2 warna, yaitu hitam dan putih. Oleh karena itu, setiap pixel pada citra biner cukup direpresentasikan dengan 1 bit.

(a) (b)

Gambar 2.10 (a) Citra biner; (b) Representasi citra biner

Alasan penggunaan citra biner adalah karena citra biner memiliki sejumlah keuntungan sebagai berikut:

a. Kebutuhan memori kecil karena nilai derajat keabuan hanya membutuhkan representasi 1 bit.

b. Waktu pemrosesan lebih cepat di bandingkan dengan citra hitam – putih ataupun warna.

2. Citra Grayscale

Citra grayscale adalah citra yang nilai pixel-nya merepresentasikan derajat keabuan atau intensitas warna putih. Nilai intensitas paling rendah merepresentasikan warna hitam dan nilai intensitas paling tinggi merepresentasikan warna putih. Pada umumnya citra grayscale memiliki kedalaman pixel 8 bit (256 derajat keabuan), tetapi ada juga citra grayscale yang kedalaman pixel-nya bukan 8 bit, misalnya 16 bit untuk penggunaan yang memerlukan ketelitian tinggi. Gambar 2.11 (a) adalah contoh citra grayscale.

3. Citra Warna

Citra warna adalah citra yang nilai pixel-nya merepresentasikan warna tertentu. Setiap pixel pada citra warna memiliki warna yang merupakan kombinasi dari tiga


(36)

warna dasar RGB (red, green, blue). Setiap warna dasar menggunakan penyimpanan 8 bit = 1 byte, yang berarti setiap warna mempunyai gradasi sebanyak 255 warna. Berarti setiap pixel mempunyai kombinasi warna sebanyak 28.28.28 = 224 = 16 juta warna lebih. Itulah yang menjadikan alasan format ini disebut dengan true color karena mempunyai jumlah warna yang cukup besar sehingga bisa dikatakan hampir mencakup semua warna di alam. Gambar 2.11 (b) adalah contoh citra warna.

(a) (b)

Gambar 2.11 (a) Citra grayscale; (b) Citra warna

2.4 Penelitian Terdahulu

Dalam melakukan penelitian, penulis membutuhkan beberapa bahan penelitian yang sudah pernah dilakukan peneliti – peneliti lainnya mengenai masalah implementasi steganografi LSB dan kriptografi vigenere cipher. Salah satunya seperti yang pernah dilakukan Tri cahyadi (2012) dalam jurnalnya yang berjudul “Implementasi Steganografi LSB dengan Enkripsi Vigenere Cipher pada Citra JPEG” meneliti tentang enkripsi vigenere cipher dengan implementasi metode steganografi LSB pesan pada citra digital. Pada proses penyisipan teks ke dalam gambar, nilai pixel gambar yang telah dipilih akan di konversi ke biner. Setelah itu memasukan file teks yang akan disisipkan dan dilanjutkan dengan proses enkripsi. Setelah proses enkripsi pesan selesai maka pilih koefisien LSB, selanjutnya sistem akan menghitung daya tampung maksimal citra, jika cipherteks melebihi kapasitas kemampuan dari cover – object maka sistem akan menolak untuk melanjutkan dan


(37)

21

meminta untuk mengurangi jumlah pesan. Jika cover – object mampu menampung maka proses melanjutkan mengkonversi nilai cipherteks ke biner, selanjutnya menyisipkan biner cipherteks tersebut ke LSB terpilih. Proses selanjutnya transformasikan kembali nilai citra yang telah disisipkan pesan ke nilai pixel dan kemudian simpan citra yang telah disisipkan pesan (stego – object).

Pada proses ekstrasi pesan yang terkandung di dalam stego – object dipilih dan nilai pixel citra akan dikonversi ke biner, kemudian masukan stegokey dan ambil nilai bit terakhir dari LSB terpilih. Konversikan nilai biner cipherteks ke desimal. Proses selanjutnya adalah deskripsi pesan dan hasilnya merupakan pesan rahasia.


(38)

PERANCANGAN APLIKASI

Secara garis besar penelitian ini terdiri dari dua proses, yaitu proses enkripsi dan proses encoding. Dimana untuk proses enkripsi penulis akan menggunakan algoritma modifikasi vigenere cipher. Sedangkan untuk proses encoding penulis akan menggunakan metode steganografi Least Significant Bit (LSB). Di samping kedua proses tersebut, penulis juga akan melengkapi penelitian ini dengan proses decoding dan deskripsi. Hal ini bertujuan agar pesan yang telah dienkripsi dan disembunyikan dapat kembali menjadi pesan awal yang dapat dimanfaatkan oleh orang yang berhak.

(a) (b)

Gambar 3.1 (a) Flowchart enkripsi dan encoding; (b) Flowchart decoding dan deskripsi

Mulai

Input plainteks, kunci, citra

Enkripsi

Encoding

Stego-object

Selesai

Mulai

Input kunci, stego-object

Decoding

Deskripsi

Plainteks


(39)

23

3.1 Analisis Algoritma Modifikasi Vigenere Cipher

Seperti yang telah dijelaskan sebelumnya, vigenere cipher dapat dengan mudah dipecahkan dengan metode kasiski, yaitu dengan memanfaatkan pengulangan yang mungkin terjadi untuk menentukan panjang kunci, yang kemudian dilanjutkan dengan melakukan analisis frekuensi. Dari fakta – fakta tersebut, bahwa apabila pengulangan dapat dikacaukan, serta frekuensi kemunculan huruf – huruf dapat dimanipulasi, tingkat keamanan vigenere cipher akan menjadi lebih kuat.

Untuk mengacaukan pengulangan serta memanipulasi kemunculan huruf – huruf pesan, penulis memilih cara yaitu dengan melakukan penyisipan huruf – huruf yang ada pada kunci ke dalam plainteks, kemudian dienkripsi seperti vigenere cipher biasa.

Berikut adalah langkah – langkah dari proses enkripsi: 1. Masukan pesan (plainteks).

2. Masukan kunci.

3. Hitung panjang plainteks.

4. Ulang kunci sepanjang plainteks.

5. Sisipkan setiap huruf pada kunci diantara huruf – huruf plainteks, dan akan didapat plainteks baru.

6. Hitung panjang plainteks baru. 7. Ulang kunci sepanjang plainteks baru.

8. Ubah huruf plainteks dan kunci menjadi kode ASCII.

9. Plainteks dan kunci dienkripsi dengan persamaan = + 256, sehingga akan menghasilkan cipherteks.

Gambar 3.2 merupakan flowchart proses enkripsi dari suatu pesan dengan menggunakan modifikasi vigenere cipher.


(40)

Gambar 3.2 Flowchart proses enkripsi

Setelah diperoleh cipherteks, dengan begitu pesan tersebut tidak akan dapat dibaca oleh pihak yang tidak berhak tanpa melalui proses deskripsi. Proses deskripsi pada modifikasi vigenere cipher ini memerlukan kunci yang sama pada saat proses enkripsi.

Langkah – langkah dari proses deskripsi adalah sebagai berikut: 1. Masukan cipherteks.

2. Masukan kunci.

3. Hitung panjang cipherteks. 4. Ulang kunci sepanjang cipherteks.

5. Ubah cipherteks dan kunci menjadi kode ASCII. Mulai

Input plainteks dan kunci

Hitung panjang plainteks

Ulang kunci sepanjang

plainteks

Sisipkan kunci pada plainteks

plainteks baru

A

A

Hitung panjang plainteks baru

Ulang kunci sepanjang plainteks baru

Ubah plainteks dan kunci

ASCII

= + 256

Cipherteks


(41)

25

6. Cipherteks dan kunci dideskripsi dengan persamaan = − 256, sehingga akan menghasilkan plainteks yang mengandung huruf – huruf kunci. 7. Hapus huruf – huruf kunci yang ada pada plainteks, sehingga diperoleh

plainteks yang asli.

Gambar 3.3 merupakan flowchart dari proses deskripsi pada modifikasi vigenere cipher.

Gambar 3.3 Flowchart proses deskripsi

3.2 Analisis Algoritma Steganografi Least Significant Bit (LSB)

Strategi penyisipan pesan kedalam citra yang digunakan adalah dengan metode Least Significant Bit (LSB). Dimana setiap bit pesan akan menggantikan bit paling rendah didalam citra. Pesan disini merupakan cipherteks hasil proses enkripsi. Dalam penelitian ini teknik LSB yang digunakan adalah LSB biasa yaitu

Mulai

Input cipherteks dan kunci

Hitung panjang cipherteks

Ulang kunci sepanjang cipherteks

Ubah cipherteks dan kunci

ASCII

A

= − 256

A

Hapus huruf – huruf kunci pada

plainteks

Plainteks


(42)

menggantikan bit – bit citra baris per baris dimulai dari bit penanda warna hijau, dilanjutkan ke bit penanda warna merah dan terakhir bit penanda warna biru.

Berikut adalah langkah – langkah dari proses encoding: 1. Masukan pesan (cipherteks).

2. Masukkan citra.

3. Jika ukuran teks lebih besar daripada ukuran citra, maka akan diminta untuk memasukan kembali citra yang lebih besar. Jika tidak, proses akan berlanjut ke langkah selanjutnya.

4. Ubah pesan menjadi kode ASCII. 5. Ubah kode ASCII pesan ke dalam biner. 6. Pilih lokasi pixel dari citra.

7. Ubah pixel citra ke dalam biner. 8. Ganti LSB citra dengan bit pesan.

9. Ubah biner citra yang telah mengandung bit pesan ke pixel.

10. Ubah pixel menjadi citra, maka akan diperoleh citra baru yang mengandung pesan (stego-object).


(43)

27

ya

tidak

Gambar 3.4 Flowchart proses encoding Mulai

Input pesan

Pilih lokasi pixel dari citra

Stego-object

Selesai Ubah pesan

ASCII Input citra

Ukuran teks > Ukuran citra

Ubah pixel citra biner

Ganti LSB citra dengan bit pesan

Ubah biner citra pixel Ubah ASCII


(44)

Dari proses encoding akan dihasilkan citra baru yang telah mengandung pesan. Jika diperhatikan dengan mata manusia, tidak terdapat perbedaan antara citra tidak mengandung pesan dengan citra yang telah mengandung pesan. Hal inilah yang menjadi kelebihan dari metode Least Significant Bit (LSB).

Untuk dapat mengambil kembali pesan yang terkandung dalam citra harus dengan proses decoding. Adapun langkah – langkah dari proses decoding adalah sebagai berikut:

1. Masukan citra yang mengandung pesan (stego-object). 2. Pilih lokasi pixel dari citra.

3. Ubah pixel citra ke dalam biner.

4. Ambil LSB citra sehingga menghasilkan biner pesan. 5. Ubah biner pesan ke dalam kode ASCII.

6. Ubah kode ASCII pesan menjadi karakter, sehingga menghasilkan pesan (cipherteks).

Gambar 3.5 merupakan flowchart proses decoding

Mulai

Input Stego-object

Pilih lokasi pixel dari citra

Ubah pixel citra biner


(45)

29

Gambar 3.5 Flowchart proses decoding A

Ambi LSB citra biner pesan

Ubah ASCII

pesan karakter

Ubah biner pesan ASCII

Pesan (cipherteks)


(46)

IMPLEMENTASI

Pada bab ini akan diperlihatkan hasil dan pembahasan dari penelitian yang diperoleh berdasarkan penjelasan – penjelasan yang telah dipaparkan pada bab – bab sebelumnya. Hasil dan pembahasan dari penelitian ini adalah mengenai implementasi Steganografi Least Significant Bit (LSB) dengan modifikasi Vigenere Cipher pada citra digital.

4.1 Kebutuhan Perangkat Lunak dan Perangkat Keras

Penelitian ini menggunakan perangkat lunak berupa: 1. Sistem Operasi Windows 7

2. MATLAB R2009a

Spesifikasi perangkat keras yang digunakan berupa: 1. Processor Intel core i3 2.20 GHz

2. RAM 2 GB 3. Harddisk 500 GB 4. Monitor 14.0 inch

4.2 Implementasi

Pada implementasi sistem ini secara keseluruhan penulis membuat tiga buah halaman antarmuka, yang terdiri dari halaman utama yang berisikan tentang pilihan proses apa yang akan dilakukan. Bentuk antarmuka halaman utama dapat dilihat pada Gambar 4.1.


(47)

31

Gambar 4.1 Halaman utama

Dari Gambar 4.1 dapat dilihat bahwa di dalam halaman utama terdapat tiga buah tombol. Tombol tersebut yaitu tombol encoding, decoding dan keluar. Tombol encoding digunakan untuk memulai proses enkripsi dan encoding, tombol decoding digunakan untuk memulai proses decoding dan deskripsi, dan tombol keluar digunakan untuk keluar dari program.

4.2.1 Proses Enkripsi dan Encoding

Rio dan Ica adalah pegawai di suatu perusahaan. Rio ingin menyampaikan pesan penting kepada Ica mengenai akan diadakannya pertemuan tertutup di kantor pusat. Isi pesan penting tersebut adalah “Tolong besok hadir di kantor pusat jam 9. Akan diadakan pertemuan tertutup membahas tentang adanya perbedaan laporan keuangan dari kantor cabang”. Karena pesan bersifat rahasia, maka pesan tersebut dienkripsi dahulu oleh Rio dengan menggunakan kunci “penting”. Namun Rio merasa hanya dengan dienkripsi pesan belum sepenuhnya aman. Maka dari itu cipherteks hasil dari enkripsi akan disembunyikan dalam citra, sehingga keberadaan pesan tidak diketahui. Gambar 4.2 merupakan citra yang akan digunakan Rio untuk menyembunyikan pesan.


(48)

Untuk memulai p halaman utama, maka a Gambar 4.3.

Gamba

Selanjutnya yan disembunyikan dan kun terlebih dahulu akan menghasilkan cipherteks dalam citra. Pesan yang pusat jam 9. Akan dia perbedaan laporan keuan

Gambar 4.2 Pemandangan.PNG

i proses enkripsi dan encoding, tekan tombol enco akan muncul halaman enkripsi dan encoding se

bar 4.3 Halaman enkripsi dan encoding 1

yang dilakukan adalah masukan pesan ya kunci pada kolom yang disediakan. Pesan dan n dienkripsi dengan modifikasi vigenere ciph eks, yang mana cipherteks inilah yang akan disem ang akan dienkripsi adalah “Tolong besok hadir

diadakan pertemuan tertutup membahas tentan angan dari kantor cabang” dengan kunci “penting

ncoding pada seperti pada

yang akan an kunci ini ipher untuk sembunyikan dir di kantor tang adanya ng”.


(49)

33

Gambar 4.4 Halaman enkripsi dan encoding 2

Kemudian pilih citra yang akan dijadikan wadah penampung dengan cara menekan tombol Pilih Gambar, maka akan muncul pop-up window untuk mengakses lokasi citra disimpan.


(50)

Setelah citra dipilih akan ditampilkan pada halaman enkripsi dan encoding.

Gambar 4.6 Halaman enkripsi dan encoding 3

Langkah selanjutnya adalah memulai proses enkripsi dan encoding dengan menekan tombol Proses. Jika proses enkripsi dan encoding selesai akan muncul pop-up window untuk menyimpan citra yang telah mengandung pesan hasil proses enkripsi dan encoding.


(51)

35

Citra pada Gambar 4.8 merupakan citra yang telah mengandung pesan, hasil proses enkripsi dan encoding.

Gambar 4.8 HASIL.PNG

4.2.2. Proses Decoding dan Deskripsi

Setelah Ica menerima citra yang telah dikirimkan oleh Rio, Ica harus melakukan proses decoding dan deskripsi agar dapat membaca isi dari pesan tersebut.

Untuk proses decoding dan deskripsi dilakukan dengan menekan tombol decoding pada halaman utama, maka akan muncul halaman decoding dan deskripsi seperti pada Gambar 4.9.


(52)

Selanjutnya yang dilakukan adalah pilih citra yang mengandung pesan dengan cara menekan tombol Pilih Gambar, maka akan muncul pop-up window untuk mengakses lokasi citra disimpan.

Gambar 4.10 Pop-up window pilih gambar 2

Setelah citra dipilih akan ditampilkan pada halaman decoding dan deskripsi.

Gambar 4.11 Halaman decoding dan deskripsi 2

Langkah selanjutnya adalah masukan kunci pada kolom yang disediakan. Kunci pada proses deskripsi dan decoding ini adalah sama dengan kunci yang digunakan pada proses encoding dan enkripsi.


(53)

37

Gambar 4.12 Halaman decoding dan deskripsi 3

Setelah kunci dimasukan, tekan tombol Proses untuk memulai proses decoding dan deskripsi. Jika proses ini selesai akan muncul pesan yang disembunyikan pada kolom yang disediakan. Pesan inilah yang merupakan pesan penting yang ingin disampaikan Rio kepada Ica.


(54)

4.3 Analisis Dalam Aplikasi

Pada tahap ini akan dijelaskan bagaimana tahapan – tahapan sistem mengamankan pesan. Gambar 4.2 akan dijadikan wadah penampung pesan. Citra ini menggunakan format pewarnaan RGB, artinya tiap piksel dari citra ini direpresentasikan dengan nilai sepanjang 24 bit. Pesan rahasia yang akan dicoba untuk disembunyikan adalah “Tolong besok hadir jam 9” dengan kunci “penting”. Sebelum pesan disembunyikan dalam citra, terlebih dahulu pesan dienkripsi sehingga akan menghasilkan cipherteks.

Plainteks “Tolong besok hadir jam 9” memiliki panjang 24 karakter sehingga kunci “penting” diulang sepanjang plainteks “pentingpentingpentingpen”. Kemudian sisipkan huruf – huruf kunci diantar huruf – huruf plainteks, diperoleh plainteks yang baru

“Tpoelnotnign gbpeesnotki nhgapdeinrt ijnagmp e9n”

plainteks yang baru memiliki panjang 48 karakter, maka kunci “penting” diulang lagi sepanjang plainteks baru

“pentingpentingpentingpentingpentingpentingpentin” plainteks baru dan kunci baru inilah yang akan dienkripsi.

Selanjutnya ubah plainteks dan kunci ke dalam kode ASCII.

Tabel 4.1. Kode ASCII pesan

i Plainteks ASCII i Plainteks ASCII

1 T 84 10 i 105

2 p 112 11 g 103

3 o 111 12 n 110

4 e 101 13 spasi 32

5 l 108 14 g 103

6 n 110 15 b 98

7 o 111 16 p 112

8 t 116 17 e 101

9 n 110 18 e 101

19 s 115 34 n 110


(55)

39

21 o 111 36 t 116

22 t 116 37 spasi 32

23 k 107 38 i 105

24 i 105 39 j 106

25 spasi 32 40 n 110

26 n 110 41 a 97

27 h 104 42 g 103

28 g 103 43 m 109

29 a 97 44 p 112

30 p 112 45 spasi 32

31 d 100 46 e 101

32 e 101 47 9 57

33 i 105 48 n 110

Tabel 4.2. Kode ASCII kunci

i Plainteks ASCII i Plainteks ASCII

1 p 112 23 e 101

2 e 101 24 n 110

3 n 110 25 t 116

4 t 116 26 i 105

5 i 105 27 n 110

6 n 110 28 g 103

7 g 103 29 p 112

8 p 112 30 e 101

9 e 101 31 n 110

10 n 110 32 t 116

11 t 116 33 i 105

12 i 105 34 n 110

13 n 110 35 g 103

14 g 103 36 p 112

15 p 112 37 e 101

16 e 101 38 n 110

17 n 110 39 t 116

18 t 116 40 i 105

19 i 105 41 n 110

20 n 110 42 g 103

21 g 103 43 p 112

22 p 112 44 e 101

45 n 110 47 i 105


(56)

Proses selanjutnya adalah mengenkripsi plainteks dan kunci dengan persamaan

= + 256

Proses enkripsi disajikan dalam Tabel 4.3.

Tabel 4.3. Proses Enkripsi

i = + 256 Hasil (ASCII) Karakter

1 (84+112) mod 256 196 Ä

2 (112+101) mod 256 213 Õ

3 (111+110) mod 256 221 Ý

4 (101+116) mod 256 217 Ù

5 (108+105) mod 256 213 Õ

6 (110+110) mod 256 220 Ü

7 (111+103) mod 256 214 Ö

8 (116+112) mod 256 228 ä

9 (110+101) mod 256 211 Ó

10 (105+110) mod 256 215 ×

11 (103+116) mod 256 219 Û

12 (110+105) mod 256 215 ×

13 (32+110) mod 256 142 Ž

14 (103+103) mod 256 206 Î

15 (98+112) mod 256 210 Ò

16 (112+101) mod 256 213 Õ

17 (101+110) mod 256 211 Ó

18 (101+116) mod 256 217 Ù

19 (115+105) mod 256 220 Ü

20 (110+110) mod 256 220 Ü

21 (111+103) mod 256 214 Ö

22 (116+112) mod 256 228 ä

23 (107+101) mod 256 208 Ð

24 (105+110) mod 256 215 ×

25 (32+116) mod 256 148 ”

26 (110+105) mod 256 215 ×

27 (104+110) mod 256 214 Ö

28 (103+103) mod 256 206 Î

29 (97+112) mod 256 209 Ñ

30 (112+101) mod 256 213 Õ

31 (100+110) mod 256 210 Ò

32 (101+116) mod 256 217 Ù


(57)

41

34 (110+110) mod 256 220 Ü

35 (114+103) mod 256 217 Ù

36 (116+112) mod 256 228 ä

37 (32+101) mod 256 133 …

38 (105+110) mod 256 215 ×

39 (106+116) mod 256 222 Þ

40 (110+105) mod 256 215 ×

41 (97+110) mod 256 207 Ï

42 (103+103) mod 256 206 Î

43 (109+112) mod 256 221 Ý

44 (112+101) mod 256 213 Õ

45 (32+110) mod 256 142 Ž

46 (101+116) mod 256 217 Ù

47 (57+105) mod 256 162 ¢

48 (110+110) mod 256 220 Ü

Cipherteks yang dihasilkan dari proses enkripsi adalah

“ÄÕÝÙÕÜÖäÓ×Û׎ÎÒÕÓÙÜÜÖäÐ×”×ÖÎÑÕÒÙÒÜÙä…×Þ×ÏÎÝՎ٢ܔ

Setelah proses enkripsi selesai, maka proses selanjutnya adalah proses encoding. Pesan yang akan disispkan adalah cipherteks hasil dari proses enkripsi sebelumnya. Jika diubah ke dalam biner karakter cipherteks menjadi

Tabel 4.4. Kode ASCII dan biner dari cipherteks

Karakter ASCII Biner Karakter ASCII Biner

Ä 196 11000100 × 215 11010111

Õ 213 11010101 Ž 142 10001110

Ý 221 11011101 Î 206 11001110

Ù 217 11011001 Ò 210 11010010

Õ 213 11010101 Õ 213 11010101

Ü 220 11011100 Ó 211 11010011

Ö 214 11010110 Ù 217 11011001

ä 228 11100100 Ü 220 11011100

Ó 211 11010011 Ü 220 11011100

× 215 11010111 Ö 214 11010110

Û 219 11011011 ä 228 11100100

Ð 208 11010000 ä 228 11100100

× 215 11010111 … 133 10000101


(58)

× 215 11010111 Þ 222 11011110

Ö 214 11010110 × 215 11010111

Î 206 11001110 Ï 207 11001111

Ñ 209 11010001 Î 206 11001110

Õ 213 11010101 Ý 221 11011101

Ò 210 11010010 Õ 213 11010101

Ù 217 11011001 Ž 142 10001110

Ò 210 11010010 Ù 217 11011001

Ü 220 11011100 ¢ 162 10100010

Ù 217 11011001 Ü 220 11011100

Selanjutnya konversi pixel citra Gambar 4.2 ke dalam biner.

Gambar 4.14 pixel citra

68 = (0x27) + (1x26) + (0x25) + (0x24) + (0x23) + (1x22) + (0x21) + (0x20) 68 = 01000100

56 = (0x27) + (0x26) + (1x25) + (1x24) + (1x23) + (0x22) + (0x21) + (0x20) 56 = 00111000

50 = (0x27) + (0x26) + (1x25) + (1x24) + (0x23) + (0x22) + (1x21) + (0x20) 50 = 00110010

57 = (0x27) + (0x26) + (1x25) + (1x24) + (1x23) + (0x22) + (0x21) + (1x20) 57 = 00111001

61 = (0x27) + (0x26) + (1x25) + (1x24) + (1x23) + (1x22) + (0x21) + (1x20) 61 = 00111101

64 = (0x27) + (1x26) + (0x25) + (0x24) + (0x23) + (0x22) + (0x21) + (0x20) 64 = 01000000

60 = (0x27) + (0x26) + (1x25) + (1x24) + (1x23) + (1x22) + (0x21) + (0x20) 60 = 00111100

55 = (0x27) + (0x26) + (1x25) + (1x24) + (0x23) + (1x22) + (1x21) + (1x20) 55 = 00110111


(59)

43

01000100 00111000 00110010 00111001 00111101 …

01000000 00111100 00111000 00110111 00111000 …

00110110 00111100 00111111 00111010 00110110 …

00101111 00111001 01000001 01000001 00111101 …

00110001 00110100 00111100 01000011 01000010 …

… … … …

Gambar 4.15 Citra dalam bentuk biner

Untuk selanjutnya, tiap bit pesan digunakan untuk menggantikan bit terakhir dari biner citra. Proses penggantian dilakukan dengan memilih bit penanda warna hijau pada setiap pixel, setelah semua bit penanda warna hijau diganti maka dilanjutkan dengan memilih bit penanda warna merah dan terakhir bit penanda warna biru. Gambar 4.16 adalah biner citra yang telah disisipkan pesan.

01000101 00111001 00110010 00111000 00111100

01000001 00111100 00111000 00110111 00111001

00110110 00111101 00111110 00111011 00110110

00101111 00111001 01000001 01000000 00111101

00110001 00110101 00111100 01000011 01000011

… … … …

Gambar 4.16 Biner citra setelah disisip pesan

Citra dalam bentuk biner ini akan dipetakan kembali ke bentuk citra. Ekstraksi pesan dapat dengan mudah dilakukan dengan mengambil bit terakhir dari biner citra, kemudian pesan dideskripsi, maka akan menghasilkan pesan asli.

4.4 Hasil Pengujian

4.4.1 Hasil Kriptografi

Hasil dari proses kriptografi adalah cipherteks. Dalam penelitian ini, cipherteks yang dihasilkan tidak ditampilkan. Penulis menggunakan metode modifikasi vigenere cipher untuk melakukan proses enkripsi dengan tujuan agar cipherteks akan lebih sulit untuk dipecahkan. Cipherteks hasil enkripsi modifikasi vigenere cipher ini memiliki panjang 2 kali panjang plainteks. Sedangkan jika


(60)

menggunakan metode vigenere cipher biasa, cipherteks yang dihasilkan hanya sepanjang plainteks.

Berikut ini merupakan cipherteks hasil dari vigenere cipher biasa dan modifikasi vigenere cipher.

Plainteks : Tolong besok hadir di kantor pusat jam 9. Akan diadakan pertemuan tertutup membahas tentang adanya perbedaan laporan keuangan dari kantor cabang

Kunci : penting

Cipherteks biasa :

ÄÔÚã×ÕÒÊáãÔÏÑÉ×æÒÐ ÐÏâÝÝÙ ÕãçÊâÚÆÛ¢±ÐÏâÒÐÑÉÏßÊÜ ÕÓæÝ ÓÔåÆÜÝÓÙäÚâéÙÔÕÒÐÕÑÏÚ ÙÓâÝÏÕ×ÏØÊÜàÑÞÙÛÐÌÔÆÏâÚÈàÔàÕ×Ò ÕÚÏâÐÏÕ ÉÏæÒÒÑÓâãÛÊÑÇÏâÐ

Cipherteks modifikasi :

ÄÕÝÙÕÜÖäÓ×Û×ÎÒÕÓÙÜÜÖäÐ××ÖÎÑÕÒÙÒÜÙä×Ø××Î ÕÙÙÊÜÕäÙ×ã× àÎ ÕÞÙÞÜÚäÆ×è×ÎÚÕÏÙÖÜä×¢×αÕÙÙÊÜÕä×Ø××ÎÑÕÒÙÊÜÒäÆ×â×Î Õ ÞÙÎÜÙäÙ×Ù×ÛÎåÕÏÙ×ÜäÙ×Ù×àÎäÕãÙÝÜÜäÕ××ÛÎÕÕÛÙËÜÈäÍ×Õ×áÎ Õâ ÙÎÜÕäÙ×Õ×ÜÎ×ÕÙÊÜËäÆ×â×çÎÑÕÙÙÜÌä××Ö×ÓÎÔÕÏÙÊÜÕä×à×ÏÎàÕÝÙÛ ÜÈäÓ××ÙÎÕÕãÙÊÜÕäÌ×Õ×ÜÎ ÕÒÙÊÜÙäÎ××ÙÎÑÕÜÙÝÜÖä×××ÑÎÑÕÐÙÊ ÜÕäÌ×

Dari kedua versi cipherteks tersebut, cipherteks vigenere cipher biasa dapat dipecahkan dengan mencoba kemungkinan kunci sebanyak 256145 kunci, sedangkan cipherteks modifikasi vigenere cipher dapat dipecahkan dengan mencoba kemungkinan kunci sebanyak 256290 kunci. Itu berarti akan lebih sulit untuk memecahkan cipherteks hasil modifikasi vigenere cipher dibandingkan dengan cipherteks hasil vigenere cipher biasa.


(61)

45

4.4.2 Hasil Steganografi

Hasil dari proses steganografi berupa citra berformat *PNG yang telah disisipi pesan dengan metode penyisipan pesan LSB. Citra hasil steganografi ini tidak memperlihatkan perubahan yang signifikan walaupun LSB citra tersebut telah berubah. Hal ini dikarenakan keterbatasan manusia untuk dapat melihat perubahan warna yang sangat kecil. Gambar 4.2 merupakan citra sebelum disisip pesan dan Gambar 4.8 merupakan citra yang telah disisip pesan.

Perubahan yang terjadi pada citra hasil steganografi ini dapat dilihat dari nilai pixel-nya. Dengan membandingkan nilai pixel citra sebelum disisip pesan dan citra setelah disisip pesan maka akan terlihat bahwa sesungguhnya terdapat perbedaan dari kedua citra tersebut. Gambar 4.17 menampilkan nilai pixel dari citra sebelum disisip pesan dan citra setelah disisip pesan.

(a)

(b)

Gambar 4.17 (a) Pixel citra sebelum disisip pesan; (b) Pixel citra setelah disisip pesan

Setelah dilakukan beberapa kali pengujian menggunakan ukuran citra penampung yang bervariasi, dapat diketahui maksimal plainteks yang dapat disembunyikan berdasarkan ukuran citra penampungnya. Hasil pengujian ditampilkan pada Tabel 4.5.


(62)

Tabel 4.5. Kapasitas maksimum citra

Ukuran Citra Maksimal Plainteks Yang Dapat Disembunyikan (karakter)

20 x 20 75

200 x 58 2.175

360 x 348 23.490

500 x 500 46.875

479 x 640 57.480

800 x 600 90.000

Dalam penelitian ini cipherteks hasil dari enkripsi memiliki panjang 2 kali panjang plainteks dan menggunakan citra RGB yang memiliki 3 byte pada setiap pixel-nya maka hasil pengujian pada Tabel 4.5 diperoleh dari perhitungan dengan persamaan

= 3

16

Hasil pengujian Tabel 4.5 diperoleh dari perhitungan dengan persamaan

= 3

16

Karena menggunakan citra RGB yang memiliki 3 byte pada setiap pixel-nya maka panjang dan lebar citra dikalikan 3, dan karena cipherteks yang dihasilkan dari proses enkripsi


(63)

BAB 5

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Setelah keseluruhan proses dilakukan, maka dapat diambil kesimpulan sebagai berikut:

1. Pada penelitian ini pesan rahasia dienkripsi, kemudian hasil enkripsi yang berupa cipherteks disembunyikan ke dalam citra, sehingga tidak menimbulkan kecurigaan pihak lain serta keamanan dan kerahasiaan pesan terjaga.

2. Pada proses ekstraksi, pesan yang disisipkan pada citra dapat diperoleh kembali secara utuh dengan menggunakan kunci yang benar.

3. Algoritma vigenere cipher yang telah dimodifikasi lebih sulit dipecahkan dibandingkan dengan algoritma vigenere cipher biasa.

4.2 Saran

Adapun saran – saran yang dapat penulis berikan untuk pengembangan dan perbaikan penelitian ini adalah sebagai berikut:

1. Membangkitkan bilangan acak untuk memilih posisi byte citra yang akan digunakan untuk penyisipan pesan.

2. Untuk menambah kerumitan dalam memecahkan cipherteks, dapat dilakukan modifikasi tambahan pada vigenere cipher.

3. Penelitian ini agar dapat dikembangkan lebih lanjut dengan menggunakan metode – metode yang lainnya.


(64)

DAFTAR PUSTAKA

Andri, M. Y. 2009. Implementasi Algoritma Kriptografi DES, RSA Dan Algoritma Kompresi LZW Pada Berkas Digital. [Skripsi]. Medan: Universitas Sumatera Utara.

Asyad, A. A 2010. Implementasi Least Significant Bit Untuk Pengamanan Citra Digital Di Dalam Media Citra. [Skripsi]. Medan: Universitas Sumatera Utara.

Cahyadi, Tri. 2012. Implementasi Steganografi LSB Dengan Enkripsi Vigenere Cipher Pada Citra JPEG. Transient. Vol 1, No 4.

Handoyo, K.L. Modifikasi Vigenere Cipher Dengan Metode Penyisipan Kunci Pada Plainteks. Teknik Informatika ITB.

Hidayat, W. 2010. Perlindungan Pesan Rahasia Pada Citra Digital Menggunakan Metode Least Significat Bit Steganografi. [Skripsi]. Medan: Universitas Sumatera Utara.

Munir, Rinaldi. 2006. Kriptografi. Bandung: Informatika.

Munir, Rinaldi. 2005. Pengolahan Citra Digital. Bandung: Informatika.

Prasetyo, F.P. 2010. Steganografi Menggunakan Metode LSB Dengan Software Matlab. [Skripsi]. Jakarta: Universitas Islam Negri Syarif Hidayatullah.

Sianipar, R.H. 2013. Pemrograman Matlab Dalam Contoh Dan Penerapan. Bandung: Informatika.

Sidiq, A.Z. Vigenere Cipher Dengan Modifikasi Bujursangkar Vigenere Menggunakan Kode Morse. Teknik Informatika ITB.

Sutoyo, T., Mulyanto, E., Suhartono, V., Nurhayati, O.D. dan Wijanarto, M. T. 2009. Teori Pengolahan Citra Digital. Yogyakarta: Penerbit Andi.

Tjaru, S.N. 2012. Modifikasi Full Vigenere Cipher Dengan Pengacakan Susunan Huruf Pada Bujur Sangkar Berdasarkan Kunci. Teknik Informatika ITB.


(65)

49

Yudhistira. 2013. Modifikasi Vigenere Cipher Dengan Mengkombinasikan Vigenere 26 Dan 256 Karakter. Teknik Informatika ITB.


(66)

Lampiran 1. Fungsi Utama

function varargout = UTAMA(varargin) gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @UTAMA_OpeningFcn, ...

'gui_OutputFcn', @UTAMA_OutputFcn, ...

'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1}); end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:}); end

function UTAMA_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject; guidata(hObject, handles);

function varargout = UTAMA_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

function tombolEncoding_Callback(hObject, eventdata, handles)

respon = ENKRIPSI('Title','formEncoding');

function tombolDecoding_Callback(hObject, eventdata, handles)

respon = DESKRIPSI('Title','formDecoding');

function tombolKeluar_Callback(hObject, eventdata, handles)


(67)

51

Lampiran 2. Fungsi Enkripsi Dan Encoding

function varargout = ENKRIPSI(varargin) gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn',

@ENKRIPSI_OpeningFcn, ...

'gui_OutputFcn', @ENKRIPSI_OutputFcn, ...

'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1}); end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:}); end

function ENKRIPSI_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject; guidata(hObject, handles);

function varargout = ENKRIPSI_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

function pesan_Callback(hObject, eventdata, handles)

function pesan_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white'); end

function kunci_Callback(hObject, eventdata, handles)

function kunci_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white'); end


(68)

Lampiran 2. Lanjutan

function pilihGambar_Callback(hObject, eventdata, handles)

axes(handles.axes1); clear gca;

[FileName, PathName, FilterIndex] =

uigetfile('*.PNG','Pilih Citra','*.PNG'); handles.NamaFile=FileName; handles.PathName=PathName; guidata(hObject,handles); if isequal(FileName,0)

disp('User selected Cancel') else axes(handles.axes1); clear gca; set(gca,'ytick',[]); set(gca,'xtick',[]); axes(handles.axes1); handles.Citra.RGB=imread([PathName FileName]); image(handles.Citra.RGB), set(gca,'ytick',[]); set(gca,'xtick',[]); guidata(hObject, handles); imshow(handles.Citra.RGB); end

function proses_Callback(hObject, eventdata, handles) % PROSES ENKRIPSI

pesanInput = get(handles.pesan,'string'); kunciInput = get(handles.kunci,'string');

panjangPesanInput = length(pesanInput); panjangKunciInput = length(kunciInput);

if panjangPesanInput == 0 respon =

peringatanPesan('Title','formPeringatanPesan'); else

if panjangKunciInput == 0 respon =

peringatanKunci('Title','formPeringatanKunci'); else

ulangKunci = mod(0:(numel(pesanInput)-1), numel(kunciInput))+1;


(69)

53

Lampiran 2. Lanjutan

kunciBaru = kunciInput(ulangKunci);

gabungPesan = [pesanInput; kunciBaru]; panjangGabungPesan =

length(pesanInput)+length(kunciBaru); gabungPesanMod =

reshape(gabungPesan,1,panjangGabungPesan);

ulangKunciMod = mod(0:(numel(gabungPesanMod)-1), numel(kunciInput))+1;

kunciMod = kunciInput(ulangKunciMod);

asciiPesanMod = uint8(gabungPesanMod); asciiKunciMod = uint8(kunciMod);

total = asciiPesanMod + asciiKunciMod; hasil = mod(total,256);

cipherteksAsli = char(hasil);

panjangCipherteksAsli = length(cipherteksAsli);

charPanjangCipherteksAsli = char(panjangCipherteksAsli);

cipherteks = [charPanjangCipherteksAsli, cipherteksAsli];

asciiCipherteks = uint8(cipherteks); cipherteks;

panjangCipherteks = length(cipherteks);

% PROSES ENCODING

gambar = handles.Citra.RGB;

RGB = [gambar(:,:,2); gambar(:,:,1); gambar(:,:,3)];

cipherteks = uint8 (cipherteks);

[barisCipherteks, kolomCipherteks] = size(cipherteks); counter = [1 1];

[baris, kolom, rgb] = size(RGB); besarGambar = baris*kolom;

banyakPesan = kolomCipherteks*8; if banyakPesan > besarGambar

respon = peringatan('Title','formPeringatan'); else

for i=1:kolomCipherteks


(70)

Lampiran 2. Lanjutan

r = 1;

lokasi = counter;

for i=1:8

var(i) = RGB(counter(1), counter(2), r); counter(2) = counter(2) + 1;

if counter(2) > kolom counter(2) = 1;

counter(1) = counter(1)+1; end

lokasi(1,end+1) = counter(1); lokasi(1,end+1) = counter(2); end

var1 = dec2bin(var(1),8); var2 = dec2bin(var(2),8);

var3 = dec2bin(var(3),8); var4 = dec2bin(var(4),8);

var5 = dec2bin(var(5),8); var6 = dec2bin(var(6),8);

var7 = dec2bin(var(7),8); var8 = dec2bin(var(8),8);

var1(8) = binerCipherteks(1); var2(8) = binerCipherteks(2);

var3(8) = binerCipherteks(3); var4(8) = binerCipherteks(4);

var5(8) = binerCipherteks(5); var6(8) = binerCipherteks(6);

var7(8) = binerCipherteks(7); var8(8) = binerCipherteks(8);

var1 = bin2dec(var1); var2 = bin2dec(var2); var3 = bin2dec(var3); var4 = bin2dec(var4); var5 = bin2dec(var5); var6 = bin2dec(var6); var7 = bin2dec(var7); var8 = bin2dec(var8); RGB(lokasi(1),lokasi(2),r)=var1; RGB(lokasi(3),lokasi(4),r)=var2; RGB(lokasi(5),lokasi(6),r)=var3; RGB(lokasi(7),lokasi(8),r)=var4; RGB(lokasi(9),lokasi(10),r)=var5; RGB(lokasi(11),lokasi(12),r)=var6; RGB(lokasi(13),lokasi(14),r)=var7; RGB(lokasi(15),lokasi(16),r)=var8;


(71)

55

Lampiran 2. Lanjutan

gambar= RGB; end

RGB;

ukuran = size(RGB); baris = ukuran(1); baris = baris/3; kolom = ukuran(2);

G = RGB(1:baris, 1:kolom);

R = RGB((baris+1):(baris*2), 1:kolom); B = RGB(baris*2+1:baris*3, 1:kolom);

gambarBaru = cat(3,R,G,B); axes(handles.axes2);

image(gambarBaru), set(gca,'ytick',[]); set(gca,'xtick',[]);

guidata(hObject, handles); imshow(gambarBaru);

[FileName, PathName] = uiputfile('*.PNG', 'Save As'); Name = fullfile(PathName, FileName);

imwrite(gambarBaru, Name, 'PNG'); end

end end

function keluar_Callback(hObject, eventdata, handles) close;


(72)

Lampiran 3. Fungsi Decoding Dan Deskripsi

function varargout = DESKRIPSI(varargin) gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn',

@DESKRIPSI_OpeningFcn, ...

'gui_OutputFcn', @DESKRIPSI_OutputFcn, ...

'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1}); end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:}); end

function DESKRIPSI_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject; guidata(hObject, handles);

function varargout = DESKRIPSI_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

function pilihGambar_Callback(hObject, eventdata, handles)

axes(handles.axes1); clear gca;

[FileName, PathName, FilterIndex] =

uigetfile('*.PNG','Pilih Citra','*.PNG'); handles.NamaFile=FileName; handles.PathName=PathName; guidata(hObject,handles); if isequal(FileName,0)

disp('User selected Cancel') else

axes(handles.axes1); clear gca;


(1)

Lampiran 3. Lanjutan

pesan(k,1)=var1(8); pesan(k,2)=var2(8); pesan(k,3)=var3(8); pesan(k,4)=var4(8); pesan(k,5)=var5(8); pesan(k,6)=var6(8); pesan(k,7)=var7(8); pesan(k,8)=var8(8); end

pesan= bin2dec(pesan);

pesan = native2unicode(pesan); panjangCipherteks = uint8(pesan);

for k=1:panjangCipherteks for i=1:8

var(i) = RGB(counter(1), counter(2), r); counter(2) = counter(2)+1;

if counter(2) > kolom; counter(2) = 1;

counter(1) = counter(1)+1; end

lokasi(1,end+1)=counter(1); lokasi(1,end+1)=counter(2); end

var1 = dec2bin(var(1),8); var2 = dec2bin(var(2),8); var3 = dec2bin(var(3),8); var4 = dec2bin(var(4),8); var5 = dec2bin(var(5),8); var6 = dec2bin(var(6),8); var7 = dec2bin(var(7),8); var8 = dec2bin(var(8),8);

pesan(k,1)=var1(8); pesan(k,2)=var2(8); pesan(k,3)=var3(8); pesan(k,4)=var4(8); pesan(k,5)=var5(8); pesan(k,6)=var6(8); pesan(k,7)=var7(8); pesan(k,8)=var8(8); end

pesan= bin2dec(pesan); pesan = char(pesan); cipherteks = pesan';

kunciInput = get(handles.kunci,'string'); panjangKunciInput = length(kunciInput);

if panjangKunciInput == 0 respon =

peringatanKunci('Title','formPeringatanKunci'); else

ulangKunciMod = mod(0:(numel(cipherteks)-1), numel(kunciInput))+1;


(2)

Lampiran 3. Lanjutan

asciiCipherteks = uint8(cipherteks); asciiKunciMod = uint8(kunciMod);

total = asciiCipherteks - asciiKunciMod;

hasil = mod(total,256);

gabungPesan = char(hasil);

panjangGabungPesan = length(gabungPesan);

plainteks = gabungPesan (1:2:panjangGabungPesan); kunci = gabungPesan (2:2:panjangGabungPesan);

panjangPlainteks = length(plainteks);

set (handles.pesan,'string',plainteks); end

function pesan_Callback(hObject, eventdata, handles)

function pesan_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white'); end

function keluar_Callback(hObject, eventdata, handles) close;


(3)

Lampiran 4. Fungsi Peringatan Pesan

function varargout = peringatanPesan(varargin) gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn',

@peringatanPesan_OpeningFcn, ... 'gui_OutputFcn', @peringatanPesan_OutputFcn, ...

'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1}); end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:}); end

function peringatanPesan_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject; guidata(hObject, handles);

function varargout = peringatanPesan_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

function peringatanKeluarPesan_Callback(hObject, eventdata, handles)

close;


(4)

Lampiran 5. Fungsi Peringatan Kunci

function varargout = peringatanKunci(varargin) gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn',

@peringatanKunci_OpeningFcn, ... 'gui_OutputFcn', @peringatanKunci_OutputFcn, ...

'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1}); end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:}); end

function peringatanKunci_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject; guidata(hObject, handles);

function varargout = peringatanKunci_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

function peringatanKeluarKunci_Callback(hObject, eventdata, handles)


(5)

Lampiran 6. Fungsi Peringatan Gambar

function varargout = peringatan(varargin) gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn',

@peringatan_OpeningFcn, ...

'gui_OutputFcn', @peringatan_OutputFcn, ...

'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1}); end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:}); end

function peringatan_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject; guidata(hObject, handles);

function varargout = peringatan_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

function peringatanKeluar_Callback(hObject, eventdata, handles)


(6)

Lampiran 7. Jadwal Penelitian

NO KEGIATAN

BULAN

JANUARI 2015 FEBRUARI 2015 MARET 2015 APRIL 2015 MEI 2015 JUNI 2015 I II III IV I II III IV I II III IV I II III IV I II III IV I II III IV

1 Studi pustaka

2 Penyusunan proposal

3 Seminar proposal

4 Perbaikan proposal

5 Pengumpulan dan pengolahan data

6 Penyusunan skripsi

7 Seminar hasil

8 Perbaikan skripsi

9 Penyusunan intisari skripsi untuk

dimasukkan ke jurnal

10 Tahap akhir penyusunan skripsi (sidang)

Diketahui: Medan, 2015

Pembimbing I Pembimbing II Mahasiswa

( Dr. Syahriol Sitorus, M.IT ) ( Dr. Suyanto, M.Kom ) ( Hasina Toni )