LISTING PROGRAM
void BtCariTeksClick(object sender, EventArgs e) { OpenFileDialog openfile = new OpenFileDialog(); openfile.Filter = "Text Files | *.txt";
if (openfile.ShowDialog() == DialogResult.OK) {
tbPesan1.Text = File.ReadAllText(openfile.FileName); }
}
void BtCariCoverClick(object sender, EventArgs e) { if (tbPesan1.Text == "" | tbKunci1.Text =="") {
MessageBox.Show("Silahkan masukkan pesan dan kunci terlebih dahulu !", "Peringatan",
MessageBoxButtons.OK,MessageBoxIcon.Warning); return;
}
OpenFileDialog openfile = new OpenFileDialog(); openfile.Filter = "Bitmap Files | *.bmp";
if (openfile.ShowDialog() == DialogResult.OK) {
bmp = (Bitmap)Image.FromFile(openfile.FileName); pesan."+ "Silahkan pilih gambar yang lain","Peringatan"); }
void BtSimpanStegoClick(object sender, EventArgs e) { SaveFileDialog savefile = new SaveFileDialog(); savefile.Filter = "Bitmap Files | *.bmp";
if (savefile.ShowDialog() == DialogResult.OK) { bmp.Save(savefile.FileName, ImageFormat.Bmp);
MessageBox.Show("Gambar stego telah berhasil disimpan."); clearAll();
} }
void BtProsesEnkripsiClick(object sender, EventArgs e) { if (pbCover.Image == null) {
MessageBox.Show("Silahkan, masukkan gambar cover terlebih dahulu !", "Peringatan",MessageBoxButtons.OK,MessageBoxIcon.Warning)
cipherteks = cipherteks + (char)rc4.PRGA((byte)plainteks[pos],i,j); i = rc4.getValue("i");
j = rc4.getValue("j"); }
bmp = (Bitmap)MLSB.embedText(cipherteks,bmp); tbCipherteks1.Text = cipherteks
pbStego1.Image = bmp;
MessageBox.Show("Informasi telah berhasil disembunyikan."); }
void BtCariStegoClick(object sender, EventArgs e) { OpenFileDialog openfile = new OpenFileDialog(); openfile.Filter = "Bitmap Files | *.bmp";
if (openfile.ShowDialog() == DialogResult.OK) {
pbStego2.Image = Image.FromFile(openfile.FileName); tbPStego.Text = pbStego2.Image.Height.ToString()+" px"; tbLStego.Text = pbStego2.Image.Width.ToString()+" px"; }
void BtSimpanPesanClick(object sender, EventArgs e) { SaveFileDialog savefile = new SaveFileDialog(); savefile.Filter = "Text Files | *.txt";
if (savefile.ShowDialog() == DialogResult.OK) {
File.WriteAllText(savefile.FileName, tbPesan2.Text); MessageBox.Show("Pesan telah berhasil disimpan."); }
}
void BtProsesEkstrakClick(object sender, EventArgs e) { if (pbStego2.Image == null) {
MessageBox.Show("Silahkan, masukkan gambar stego terlebih dahulu",
"Peringatan",MessageBoxButtons.OK,MessageBoxIcon.Warning); return;
}
elseif (tbKunci2.Text == "") {
MessageBox.Show("Silahkan, masukkan kunci terlebih dahulu", "Peringatan", MessageBoxButtons.OK,MessageBoxIcon.Warning);
cipherteks = MLSB.extractText(bmp);
if (cipherteks == "") {
MessageBox.Show("Maaf, gambar stego yang Anda masukkan tidakmengandung pesan","Peringatan",MessageBoxButtons.OK,MessageBoxIcon.
plainteks = plainteks + (char)rc4.PRGA((byte)cipherteks[pos],i,j); i = rc4.getValue("i");
j = rc4.getValue("j"); }
tbCipherteks2.Text = cipherteks; tbPesan2.Text = plainteks;
MLSB.cs
public static bool capacityCheck(string text, Bitmap bmp) { int cap=0;
public static int reverseBits(int n) { int result = 0;
Dokumen Pengujian
Kunci : wonderful
Cover Object :
Plainteks :
Asal mula nama Raja Ampat menurut mitos masyarakat setempat berasal dari seorang wanita yang menemukan tujuh telur. Empat butir di antaranya menetas menjadi empat orang pangeran yang berpisah dan masing-masing menjadi raja yang berkuasa di Waigeo, Salawati, Misool Timur dan Misool Barat. Sementara itu, tiga butir telur lainnya menjadi hantu, seorang wanita, dan sebuah batu.
Kepulauan Raja Ampat merupakan tempat yang sangat berpotensi untuk dijadikan sebagai objek wisata, terutama wisata penyelaman. Perairan Kepulauan Raja Ampat menurut berbagai sumber, merupakan salah satu dari 10 perairan terbaik untuk diving site di seluruh dunia. Bahkan, mungkin juga diakui sebagai nomor satu untuk kelengkapan flora dan fauna bawah air pada saat ini.
Tim ahli dari Conservation International, The Nature Conservancy, dan Lembaga Oseanografi Nasional (LON) Lembaga Ilmu Pengetahuan Indonesia (LIPI) pernah melakukan penilaian cepat pada 2001 dan 2002. Hasilnya, mereka mencatat di perairan ini terdapat lebih dari 540 jenis karang keras (75% dari total jenis di dunia), lebih dari 1.000 jenis ikan karang, 700 jenis moluska, dan catatan tertinggi bagi gonodactyloid stomatopod crustaceans. Ini menjadikan 75% spesies karang dunia berada di Raja Ampat. Tak satupun tempat dengan luas area yang sama memiliki jumlah spesies karang sebanyak ini.
DAFTAR RIWAYAT HIDUP
CURRICULUM VITAE
I. DATA PRIBADI / Personal Identification
Nama Lengkap : Febri Aro Gea
Tempat / Tgl. Lahir : Binjai / 6 Februari 1993 Jenis Kelamin : Laki-laki
Agama : Kristen Protestan
Kebangsaaan : Indonesia
Alamat : Jalan Citra Anggrek No 15 Tj Sari Medan
Telepon : +6283197889520
Tinggi / Berat : 178 cm / 65 kg
Email : febriarogea@gmail.com
II. KESEHATAN / Health
Tidak memiliki cacat fisik maupun mental dan tidak meiliki penyakit bawaan.
III. KEMAMPUAN / Capabilities
Bahasa Pemrograman : C++, Java, C#, VB
Database : MySQl
Lainnya : Adobe Flash, HTML, Photoshop
IV. PENDIDIKAN FORMAL / Formal Eduction
[2011 – 2016]
S1 Ilmu Komputer, Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara
1. Juara II Kompetisi “Problem Solving” IMILKOM Contest [2012]
VI. PENGALAMAN KERJA / Working Experience
1. Asisten Laboratorium di Ilmu Komputer Laboratory Center Fasilkom-TI USU [2013-2016]
VII. SEMINARS / Seminars
DAFTAR PUSTAKA
Ambler, S. W. 2005. The Elements of UMLTM 2.0 Style. Cambridge University Press
: Cambridge.
Cole, E. 2003. Hiding in Plain Sight : Steganography and the art of covert
communication. Wiley Publishing, Inc : Indianapolis.
Fiansyah, E. 2008. Implementasi algoritma dasar RC4 stream cipher dan pengacakan
plaintext dengan teknik dynamic blocking pada aplikasi sistem informasi
kegiatan skripsi di departermen teknik elektro. Skripsi. Universitas Indonesia.
Kipper, G. 2004. Investigator’s Guide to Steganography. CRC Press : Boca Raton.
Kromodimoeljo, S. 2009. Teori dan Aplikasi Kriptografi. SPK IT Consulting : Jakarta.
Lubis, R.F.A., Analisis Kombinasi Algoritma Watermaking Modified Least
Significant Bit dengan Least Significant Bit +1. Tesis. Universitas Sumatera
Utara.
Menezes, J., Oorschot, P. & Vanstone, S. 1996. Handbook of Applied Cryptography.
CRC Press : Boca Raton.
Mollin, R.A. 2007. An Introduction to Cryptography. 2nd Edition. Chapman&Hall :
Boca Raton.
Munir, R. 2006. Kriptografi. Informatika : Bandung.
Sadikin, R. 2012. Kriptografi untuk Keamanan Jaringan. Andi : Yogyakarta.
Schneier, B. 1996. Applied Cryptography : Protocol, algorithms and source code in
C. 2nd Edition. Wiley and Sons, Inc : New York.
Simamora, H.I.T. 2013. Implementasi algoritma elgamal dengan pembangkit bilangan
prima lehmann dan algoritma least significant bit (LSB) dengan cover image
bitmap untuk keamanan data text. Skripsi. Universitas Sumatera Utara.
Stallings, W. 2005. Cryptography and Network Security Principles and Practices. 4th
Edition. Prentice Hall : Upper Saddle River.
Sutoyo, T., Mulyanto, E. & Wijanarto. 2009. Teori Pengolahan Citra Digital. Andi :
Semarang.
Suryani, K.N. 2009. Algoritma RC4 sebagai metode enkripsi. (Online)
http://informatika.stei.itb.ac.id/~rinaldi.munir/Matdis/2009-2010/Makalah0910
/MakalahStrukdis0910-058.pdf (diakses 20 Oktober 2015).
Whitten, J. L., Bentley L. D. 2007. Systems Analysis and Design Methods.
BAB 3
ANALISIS DAN PERANCANGAN
3.1 Analisis Sistem
Analisis sistem terdiri dari fase-fase berbeda yang mendeskripsikan pengembangan
sistem. Dalam tugas akhir ini ada dua fase analisis yaitu analisis masalah dan analisis
kebutuhan.
3.1.1. Analisis masalah
Analisis masalah yang dilakukan adalah memberikan perlindungan informasi dengan
cara mengenkripsi pesan dengan menggunakan algoritma RC4, kemudian pesan yang
telah dienkripsi tersebut disisipkan ke dalam suatu gambar dengan menggunakan
metode LSB yang telah di modifikasi. Gambaran masalah secara umum dalam
penelitian ini ditunjukkan pada gambar 3.1. menggunakan diagram Ishikawa.
Pengamanan file teks dengan RC4 dan Modified LSB mesin
Saluran komunikasi
tidak aman Ingin komunikasi aman Terbatas mendeteksi perubahan tdk signifikan
Citra yg berubah signifikan mengundang kecurigaan
Kriptografi menghasilkan kecurigaan Informasi dapat
diterima orang yg tdk berhak
3.1.2. Analisis kebutuhan
Analisis kebutuhan terbagi dua bagian, yaitu kebutuhan fungsional dan kebutuhan
nonfungsional. Kebutuhan fungsional mendeskripsikan aktivitas yang disediakan dan
harus dipenuhi suatu sistem, sedangkan kebutuhan nonfungsional mendeskripsikan
fitur, karakteristik dan batasan lainnya.
a. Kebutuhan fungsional
1. Fungsi enkripsi
Melakukan pengenkripsian terhadap pesan dengan kunci tertentu untuk
menghasilkan cipherteks. Pesan yang dienkripsi dapat di input langsung oleh
pengguna melalui keyboard atau dapat juga diinput melalui pembacaan file
teks.
2. Fungsi dekripsi
Melakukan pendekripsian terhadap cipherteks dengan kunci tertentu untuk
menghasilkan plainteks.
3. Fungsi penyisipan
Melakukan penyisipan pesan rahasia ke dalam citra berformat BMP yang
dipilih oleh pengguna.
4. Fungsi ekstrak
Melakukan pengekstrakan pesan rahasia dari citra berformat BMP yang
didalamnya terdapat pesan rahasia.
b. Kebutuhan nonfungsional
1. Performa
Perangkat lunak yang dibangun dapat melakukan fungsi-fungsi kebutuhan
dengan efektif dan efisien.
2. Mudah dipelajari dan digunakan
Perangkat lunak memiliki tampilan dan cara langkah kerja yang mudah untuk
dipelajari.
3. Dokumentasi
Perangkat lunak memiliki panduan penggunaan perangkat lunak.
4. Kontrol
Perangkat lunak memiliki kontrol untuk hal-hal yang di luar dari mekanisme
sistem, seperti input yang tidak sesuai, konfirmasi penyelesaian tugas dan
3.2 Perancangan Sistem
Perancangan sistem dilakukan untuk memberikan gambaran sistem yang akan
dibangun sehingga mempermudah dalam melakukan implementasi ataupun evaluasi.
Sistem dirancang dalam bentuk flowchart, use case diagram, activity diagram,
sequence diagram dan perancangan antarmuka (interface).
3.2.1. Perancangan algoritma RC4
Algoritma RC4 dibagi menjadi dua tahapan, yaitu inisiasi vector S dan stream
generation (pembangkitan aliran kunci). Flowchart kedua tahapan tersebut
digambarkan pada Gambar 3.2.
Mulai
i = 0
i < 256
S[i] = i
S[j] = kunci [i mod panjang kunci] kunci
3.2.2. Perancangan enkripsi RC4
Proses enkripsi dilakukan dengan terlebih dahulu melakukan inisiasi vector S untuk
mendapatkan vector S yang bersifat acak, kemudian dilakukan pembangkitan aliran
kunci untuk mendapatkan kunci enkripsi. Kemudian cipherteks didapatkan dari hasil
operasi XOR antara pesan dengan kunci. Flowchart proses enkripsi ditunjukkan pada
gambar 3.3.
Mulai
pos,i,j = 0 KSA (Kunci)
pesan, kunci
Selesai
pos < length(pesan)
cipherteks = PRGA(pesan,i,j) pos = pos + 1
cipherteks Ya
Tidak
Gambar 3.3 Flowchart enkripsi
3.2.3. Perancangan dekripsi RC4
Proses dekripsi memiliki langkah yang sama dengan proses enkripsi oleh karena pada
algoritma RC4 kunci yang digunakan untuk dekripsi sama dengan kunci yang
Mulai
pos,i,j = 0 KSA (Kunci) cipherteks, kunci
Selesai pos < length(cipherteks)
pesan = PRGA(cipherteks,i,j) pos = pos + 1
pesan Ya
Tidak
Gambar 3.4 Flowchart Dekripsi
3.2.4. Perancangan penyisipan modified LSB
Dalam penelitian ini dilakukan modifikasi mekanisme penyisipan pesan ke dalam
gambar, jika pada metode LSB setiap komponen warna pada tiap-tiap pixel disisipkan
pesan maka dalam penelitian ini penyisipan dilakukan dengan ketentuan berikut:
- komponen warna merah akan disisipi pesan jika nilainya lebih kecil dari 100
- komponen warna hijau akan disisipi pesan jika nilainya lebih kecil dari 122
- komponen warna biru akan disisipi pesan jika nilainya lebih kecil dari 114
R < 100 State = Hiding
charIndex >= length (teks) state = Filling_With_Zeros
3.2.5. Perancangan ekstraksi modified LSB
Sama seperti pada penyisipan, ekstraksi dilakukan dengan aturan sebagai berikut,
- komponen warna merah akan diekstrak jika nilainya lebih kecil dari 100
- komponen warna hijau akan diekstrak jika nilainya lebih kecil dari 122
- komponen warna biru akan diekstrak jika nilainya lebih kecil dari 114
Flowchart ekstrak pesan dari citra digambarkan pada Gambar 3.6.
3.2.6. Use-case diagram
Use-case diagram merupakan pemodelan yang mengidentifikasi dan menjelaskan
fungsi-fungsi yang terdapat dalam sistem (Whitten, 2007). Gambar 3.7. berikut adalah
use case diagram dari sistem yang akan dibangun.
Pengguna
Sembunyikan Pesan
Tampilkan Pesan
Enkripsi pesan
Embed cipherteks
Ekstraksi gambar
Dekripsi cipherteks «extends»
«extends»
«extends»
«extends»
Gambar 3.7. Use-case Diagram Sistem
Use-case narrative merupakan penjelasan dari setiap use-case yang ada dalam
diagram use-case. Tabel 3.1 sampai tabel 3.6 berikut ini adalah use-case narrative
dari diagram use-case diagram sistem yang dibangun.
Tabel 3.1. Use-case narrative Sembunyikan Pesan
Name Sembunyikan pesan
Actors User
Trigger User memilih menu sembunyikan pesan
Preconditions Pengguna menggunakan aplikasi sistem keamanan data
Post Conditions User dapat melihat dan menyimpan hasil penyisipan pesan
Succes Scenario
1. User memilih menu sembunyikan pesan.
2. Sistem menampilkan halaman sembunyikan pesan.
3. User melakukan inputan teks, kunci dan cover-image.
4. Sistem melakukan proses enkripsi dan embeding.
Tabel 3.2. Use-case narrative Enkripsi Pesan
Name Enkripsi pesan
Actors Pengguna
Trigger Pengguna menekan tombol sembunyikan pesan.
Preconditions Terdapat pesan dan kunci enkripsi dalam form.
Post Conditions Sistem menampilkan cipherteks.
Succes Scenario
1. Form pesan dan kunci telah diisi.
2. Pengguna menekan tombol sembunyikan pesan.
3. Sistem melakukan enkripsi pesan.
4. Sistem menampilkan cipherteks.
Tabel 3.3. Use-case narrative Embed Cipherteks
Name Embed cipherteks
Actors Pengguna
Trigger Pengguna menekan tombol sembunyikan pesan
Preconditions Terdapat cipherteks dan cover-image dalam form.
Post Conditions Sistem menampilkan stego-image.
Succes Scenario
1. Form cipherteks dan cover-image telah diisi.
2. Pengguna menekan tombol sembunyikan pesan.
3. Sistem melakukan penyisipan cipherteks ke dalam citra.
4. Sistem menampilkan stego-image.
Tabel 3.4. Use-case narrative Tampilkan Pesan
Name Tampilkan pesan
Actors Pengguna
Trigger Pengguna menekan tombol tampilkan pesan
Preconditions Pengguna menggunakan aplikasi sistem keamanan data
Post Conditions User dapat melihat dan menyimpan pesan hasil ekstrasi
stego-image.
Succes Scenario
1. User memilih menu tampilkan pesan.
2. Sistem menampilkan halaman Tampilkan pesan.
3. User melakukan inputan stego-image dan kunci enkripsi.
4. Sistem melakukan proses ekstraksi dan dekripsi.
Tabel 3.5. Use-case narrative Ekstraksi Pesan
Name Ekstraksi pesan
Actors Pengguna
Trigger Pengguna menekan tombol tampilkan pesan.
Preconditions Terdapat stego-image dan kunci enkripsi dalam form.
Post Conditions Sistem menampilkan cipherteks.
Succes Scenario
1. Form pesan dan kunci telah diisi.
2. Pengguna menekan tombol sembunyikan pesan.
3. Sistem melakukan enkripsi pesan.
4. Sistem menampilkan cipherteks.
Tabel 3.6. Use-case narrative Dekripsi Cipherteks
Name Dekripsi cipherteks
Actors Pengguna
Trigger Pengguna menekan tombol sembunyikan pesan
Preconditions Terdapat cipherteks dan kunci dalam form.
Post Conditions Sistem menampilkan pesan.
Succes Scenario
1. Form cipherteks dan kunci telah diisi.
2. Pengguna menekan tombol tampilkan pesan.
3. Sistem melakukan dekripsi cipherteks.
4. Sistem menampilkan pesan.
3.2.7. Activity diagram
Activity diagram menggambarkan urutan aktifitas dalam sebuah sistem. Dalam sistem
terdapat dua buah activity diagram, yaitu activity diagram sembunyikan pesan dan
activity diagram tampilkan pesan.
a. Activity diagram sembunyikan pesan
Proses penyembunyian pesan dimulai dengan menginputkan pesan, kunci dan
gambar cover. Kemudian sistem akan melakukan perhitungan untuk menentukan
apakah pesan dapat disisipkan atau tidak. Jika pesan dapat disisip maka sistem akan
melakukan enkripsi pesan kemudian menyisipkannya ke dalam gambar. Activity
User System
Gambar 3.8. Diagram Activity Sembunykan Pesan
b. Activity diagram tampilkan pesan
Proses penampilan pesan dimulai dengan menginputkan pesan dan gambar stego.
Sistem akan melakukan ekstrak terhadap citra sehingga dihasilkan cipherteks
kemudian cipherteks tersebut akan didekripsi sehingga didapatkan pesan yang
semula.
3.2.8. Sequence diagram
Sequence diagram merupakan diagram yang menampilkan interaksi-interaksi yang
ada pada sistem secara berurutan. Pada sistem terdapat dua buah sequence diagram
yaitu sequence diagram proses sembunyikan pesan yang ditunjukkan pada Gambar
3.10 dan sequence diagram proses tampilkan pesan yang ditunjukkan pada Gambar
3.11.
Pengguna Form Sembunyikan Pesan Enkripsi Embed
input(pesan, gambar, kunci)
Enkripsi (pesan, kunci)
Cipherteks
Embed (cipherteks,gambar)
stego image
stego image
Gambar 3.10. Sequence Diagram Proses Sembunyikan Pesan
Pengguna Form Tampilkan Pesan Ekstrak Dekripsi
input(gambar, kunci)
Ekstrak (gambar)
Cipherteks
Dekripsi (cipherteks,kunci)
plainteks plainteks
3.2.9. Perancangan antarmuka (Interface)
Antarmuka merupakan sarana interaksi antara pengguna dengan sistem. Antarmuka
dirancang sedemikian mungkin agar penguna dapat dengan mudah menggunakan
sistem yang dibangun.
1. Halaman utama
Halaman utama merupakan tampilan awal sistem ketika sistem dijalankan. Pada
halaman utama terdapat tiga buah pilihan menu yaitu menu sembunyikan pesan,
menu tampilkan pesan dan menu keluar aplikasi. Perancangan halaman utama
ditunjukkan pada gambar 3.12.
Gambar 3.12. Perancangan Antarmuka Halaman Utama
Berikut ini merupakan keterangan rancangan antarmuka halaman utama :
1. List Menu, merupakan kumpulan menu yang berisi fungsi-fungsi dari sistem.
2. Tombol sembunyikan pesan merupakan tombol yang akan mengarahkan
pengguna ke halaman sembunyikan pesan.
3. Tombol tampilkan pesan merupakan tombol yang akan mengarahkan pengguna
ke halaman sembunyikan pesan.
2. Halaman sembunyikan pesan
Perancangan antar muka halaman sembunyikan pesan ditunjukkan pada gambar
3.13.
Gambar 3.13. Perancangan Antarmuka Halaman Sembunyikan Pesan
Berikut ini merupakan keterangan rancangan antarmuka halaman
sembunyikan pesan :
1. Tombol cari teks merupakan tombol untuk mencari file teks yang sudah
tersimpan di komputer pengguna.
2. Kotak kunci merupakan tempat memasukkan kunci enkripsi.
3. Kotak pesan merupakan tempat memasukkan pesan yang akan disembunyikan.
4. Tombol cari cover merupakan tombol untuk mencari cover-image.
5. Kotak gambar merupakan tempat untuk menampilkan cover-image yang telah
dipilih pengguna.
6. Tombol proses merupakan tombol untuk melakukan proses penyembunyian
pesan.
7. Kotak cipherteks merupakan tempat untuk menampilkan cipherteks hasil
dekripsi pesan.
3. Halaman tampilkan pesan
Perancangan antarmuka halaman tampilkan pesan ditunjukkan pada gambar 3.14.
Gambar 3.14. Perancangan Antarmuka Halaman Tampilkan Pesan
Berikut ini merupakan keterangan rancangan antarmuka halaman tampilkan
pesan :
1. Tombol cari stego merupakan tombol untuk mencari stego-image yang sudah
tersimpan di komputer pengguna.
2. Kotak kunci merupakan tempat untuk memasukkan kunci dekripsi.
3. Kotak stego merupakan tempat untuk menampilkan stego-image yang di input
pengguna.
4. Tombol proses merupakan tombol untuk melakukan proses penampilan pesan.
5. Kotak cipherteks merupakan kotak untuk menampilkan cipherteks hasil
ekstraksi stego-image.
6. Kotak pesan merupakan kotak untuk menampilkan pesan hasil dekripsi
4. Halaman petunjuk penggunaan
Perancangan antarmuka penggunaan aplikasi ditunjukkan pada gambar 3.15.
Gambar 3.15. Perancangan Antarmuka Petunjuk Penggunaan Perangkat Lunak
5. Form Tentang Aplikasi
Perancangan antarmuka tentang aplikasi ditunjukkan pada gambar 3.16.
BAB 4
IMPLEMENTASI DAN PENGUJIAN
4.1. Implementasi
Implementasi sistem merupakan lanjutan dari tahap analisis dan perancangan sistem.
Pada tahap ini dilakukan implementasi dari segala yang dibahas dalam tahap analisis
dan perancangan. Bahasa pemrograman yang digunakan adalah bahasa C# dan
dibangun dengan menggunakan Integrated Development Environment (IDE)
SharpDevelop versi 4.3.1.
4.1.1. Implementasi antarmuka (Interface)
1. Halaman utama
Halaman utama merupakan halaman yang pertama sekali akan ditampilkan ketika
sistem dijalankan. Antarmuka halaman utama ditunjukkan pada Gambar 4.1.
2. Halaman sembunyikan pesan
Halaman sembunyikan pesan merupakan halaman untuk melakukan proses enkripsi
dan penyisipan. Tampilan halaman sembunyikan pesan ditunjukkan pada gambar 4.2.
Gambar 4.2. Antarmuka Halaman Sembunyikan Pesan
3. Halaman tampilkan pesan
Halaman tampilan pesan merupakan halaman untuk melakukan proses ekstraksi dan
proses dekripsi. Tampilan halaman tampilkan pesan ditunjukkan pada gambar 4.3.
4.1.4 Implementasi algoritma RC4
Implementasi inisiasi vector S dalam bahasa pemrograman ditunjukkan pada Gambar
4.4, sedangkan implementasi stream generation (pembangkitan aliran kunci)
ditunjukkan pada Gambar 4.5.
Gambar 4.4. Implementasi Inisiasi Vector S
Gambar 4.5. Implementasi Pembangkitan Aliran Kunci
4.1.5 Implementasi metode modified LSB
Implementasi penyisipan pesan dengan metode modified LSB dalam bahasa
pemrograman ditunjukkan pada gambar 4.6. sedangkan untuk ekstraksi stego-image
Gambar 4.6. Implementasi Penyisipan Pesan
4.2. Pengujian
Pengujian merupakan tahap yang dilakukan untuk memastikan bahwa sistem yang
telah dibangun dapat berjalan dengan baik dan sesuai dengan analisis dan perancangan
sistem yang telah dibuat sebelumnya.
Dalam penelitian ini pengujian dilakukan dengan membuat skenario
pengamanan suatu pesan teks. Skenario yang akan dibuat adalah sebagai berikut,
pengirim pesan melakukan pengamanan pesan teks dengan cara melakukan enkripsi
pesan kemudian menyisipkan hasil enkripsi ke dalam suatu citra sehingga dihasilkan
gambar stego. Kemudian penerima pesan akan melakukan ekstrasi terhadap gambar
stego yang akan menghasilakan cipherteks dan selanjutnya didekripsi untuk
mendapatkan pesan yang ingin disampaikan oleh pengirim.
4.2.1.Pengujian penyembunyian pesan
Penyembunyian pesan dilakukan dengan memasukkan pesan, kunci enkripsi dan
cover-image. Pesan dapat dimasukkan dengan mencari file teks dengan mengklik
tombol cari pesan atau dapat juga dimasukkan dengan mengklik kotak pesan
kemudian diinput dengan keyboard. Sedangkan cover-image diinputkan dengan
menekan tombol cari cover. Kemudian sistem akan menampilkan isi dari pesan dan
cover-image seperti yang ditunjukkan pada gambar 4.8.
Jika cover-image yang dimasukkan tidak dapat menampung teks maka sistem akan
menampilkan kotak pesan peringatan meminta user untuk memasukkan cover-image
yang lain seperti pada gambar 4.9.
Gambar 4.9. Kotak Pesan Peringatan Pesan Tidak Dapat Disisip
Langkah selanjutnya adalah menekan tombol sembunyikan, dan sistem akan
menampilkan hasil enkripsi pesan berupa cipherteks dan stego-image yang telah
mengandung cipherteks didalamnya seperti ditunjukkan pada gambar 4.10.
Cipherteks hasil enkripsi dapat ditampilkan berupa karakter seperti pada gambar 4.10,
dan dapat juga berupa angka ataupun berupa karakter sekaligus angka seperti pada
gambar 4.11.
Gambar 4.11. Pengaturan Kotak Cipherteks (A) Hanya Angka (B) Angka dan Huruf
Pengguna dapat menyimpan stego-image dengan cara mengklik tombol simpan stego
kemudian user akan menentukan tempat penyimpanan stego-image, sistem akan
memberikan konfirmasi penyimpanan jika stego-image berhasil disimpan seperti yang
ditunjukkan pada gambar 4.12.
Gambar 4.12. Kotak Pesan Pemberitahuan Penyimpanan Stego-Image
Dengan cara yang sama dilakukan pengujian penyembunyian pesan terhadap
beberapa pesan dan citra uji yang bervariasi sehingga didapatlah rangkuman hasil
Tabel 4.1. Pengujian Penyembunyian Pesan (I)
No Plainteks Cipherteks Cover-Image Stego-Image
Tabel 4.2. Pengujian Penyembunyian Pesan (II)
No Plainteks Cipherteks Cover-Image Stego-Image
4.
Berdasarkan hasil pengujian yang ditampilkan pada tabel 4.1 terlihat bahwa
stego-image yang dihasilkan sistem dengan cover-image secara kasat mata tidak
terlihat perbedaanya, bahkan dimensi pixel dari citra tidak berubah sama sekali
sehingga tidak dapat dilihat perbedaanya. Maka dapat dinyatakan bahwa metode
4.2.2.Pengujian pengungkapan pesan
Pengungkapan pesan dilakukan dengan memasukkan gambar stego dan kunci
dekripsi. Stego-image dimasukkan dengan cara mengklik tombol cari stego, kemudian
sistem akan menampilkan stego-image pada kotak gambar stego seperti pada gambar
4.13.
Gambar 4.13. Penginputan Stego-Image
Kemudian pengguna menekan tombol tampilkan, dan sistem akan menampilkan
cipherteks hasil ekstraksi stego-image dan plainteks hasil dekripsi cipherteks tersebut
Gambar 4.14. Tampilan Hasi Ekstraksi Stego-Image dan Dekripsi Cipherteks
Kemudian pesan dapat disimpan dengan mengklik tombol simpan pesan dan
sistem akan memberikan konfirmasi penyimpanan pesan seperti pada gambar 4.15.
Gambar 4.15. Kotak Pesan Pemberitahuan Penyimpanan Pesan
Dengan cara yang sama dilakukan pengujian pengungkapan pesan terhadap
stego-image yang dihasilkan melalui pengujian penyembunyian pesan sehingga didapatlah
rangkuman hasil pengujian pengungkapan pesan seperti yang ditunjukkan pada tabel
Tabel 4.3. Pengujian Pengungkapan Pesan
No. Stego-Image Cipherteks Plainteks
1. lebih dari 2 meter, dan jika mereka berhasil mereka
Berdasarkan hasil pengujian pada tabel 4.12 terlihat bahwa stego-image dapat
mengembalikan cipherteks sama seperti sebelum dilakukan penyisipan. Dengan
4.2.3.Pengujian proses enkripsi RC4
Pengujian hasil enkripsi dilaksanakan dengan cara melakukan perhitungan manual
algoritma enkripsi RC4 kemudian membandingkannya dengan hasil enkripsi yang
diberikan oleh sistem. Pesan dan kunci enkripsi yang digunakan sesuai yang telah
digunakan sebelumnya pada bagian implementasi yaitu pada Gambar 4.11.
pesan = “pengamananteks” kunci = “rahasia”
Untuk dapat melakukan operasi perhitungan pada proses enkripsi maka terlebih
dahulu pesan dan kunci yang kita gunakan kita ubah dalam bentuk bilangan dengan
menggunakan pengkodean karakter ASCII.
pesan (char) = p e n g a m a n a n _ t e k s
pesan (dec) = 112 101 110 103 97 109 97 110 97 110 32 116 101 107 115
kunci (char) = r a h a s i a
kunci (dec) = 114 97 104 97 115 105 97
1. Inisiasi vector S
Tiap-tiap elemen dari vector S diberi nilai awal secara berurut mulai dari 0 hingga
255, sedangkan untuk vector T tiap-tiap elemennya diberi nilai berdasarkan nilai dari
kunci. Inisiasi awal vector S dan vector T dijabarkan sebagai berikut. Iterasi ke – 1
i = 0
S[i] = i S[0] = 0
T[i] = Kunci[i mod panjangKunci] T[0] = Kunci[0 mod 7]
= Kunci[0] = 114
Iterasi ke – 2
i = 1
S[i] = i S[1] = 1
T[i] = Kunci[i mod panjangKunci] T[1] = Kunci[1 mod 7]
= Kunci[1] = 97
Maka didapatlah nilai awal vector S yang ditunjukkan pada tabel 4.4 dan untuk vector
T ditunjukkan pada tabel 4.5.
Tabel 4.4. Nilai Awal Vector S
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
Array S [ ]
Tabel 4.5. Nilai Awal Vector T
114 97 104 97 115 105 97 114 97 104 97 115 105 97 114 97
Hasil permutasi iterasi pertama vector S ditunjukkan pada tabel 4.6.
Tabel 4.6. Hasil Permutasi Iterasi Pertama Vector S
114 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
Vector S [ ]
Hasil permutasi iterasi kedua vector S ditunjukkan pada Tabel 4.7.
Tabel 4.7. Hasil Permutasi Iterasi Ke-2 Vector S
114 212 2 3 4 5 6 7 8 9 10 11 12 13 14 15 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 1 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
Oleh karena permutasi vector S di pengaruhi oleh nilai dari i dan j maka akan ada
kemungkinan sebuah elemen dari vector S mengalami permutasi lebih dari satu kali
seperti pada iterasi ke 55 berikut ini. iterasi ke – 55
i = 54, j = 97
j = (j + S[i] + T[i]) mod 256 j = (97 + S[54]+ T[54] mod 256 j = (97 + 54 + 105) mod 256 j = 256 mod 256
j = 0
swap (S[54], S[0])
Hasil permutasi iterasi ke-55 vector S ditunjukkan pada tabel 4.8.
Tabel 4.8. Hasil Permutasi Iterasi Ke-55 Vector S
54 212 62 162 25 135 238 103 208 65 172 42 159 13 141 253 35 231 108 232 93 228 91 218 83 202 77 201 87 213 22 219 110 248 37 117 51 123 169 67 1 94 46 7 251 137 31 194 24 246 45 149 185 97 114 55 56 57 58 59 60 61 2 63 64 9 66 39 68 69 70 71 72 73 74 75 76 26 78 79 80 81 82 48 84 85 86 28 88 89 90 30 92 20 41 95 96 53 98 99 100 101 102 43 104 105 106 107 18 109 32 111 112 113 0 115 116 16 118 119 120 121 122 34 124 125 126 127 128 129 130 131 132 133 134 5 136 50 138 139 140 14 142 143 144 145 146 147 148 36 150 151 152 153 154 155 156 157 158 12 160 161 3 163 164 165 166 167 168 38 170 171 10 173 174 175 176 177 178 179 180 181 182 183 184 52 186 187 188 189 190 191 192 193 47 195 196 197 198 199 200 27 4 203 204 205 206 207 8 209 210 211 40 29 214 215 216 217 23 11 220 221 222 223 224 225 226 227 21 229 230 17 19 233 234 235 236 237 6 239 240 241 242 243 244 245 49 247 33 249 250 44 252 15 254 255
Vector S [ ]
Pada Tabel 4.8 terlihat bahwa elemen vector S[0] yang telah mengalami permutasi
kembali ditukar nilainya dengan elemen vector S yang lain.
dan seterusnya hingga iterasi ke-256.
Tabel 4.9. Hasil Akhir Inisiasi Vector S
Pembangkitan kunci dilakukan sebanyak panjang teks karena setiap karakter pesan
= (157 + 62) mod 256
Setelah aliran kunci dihasilkan maka untuk menghasilkan cipherteks dilakukan
operasi XOR antara plainteks dengan kunci sebagai berikut. iterasi ke – 1
dan seterusnya hingga iterasi ke-15.
Maka didapatkan cipherteks seperti pada tabel 4.10.
Tabel 4.10. Proses XOR Pesan dengan Kunci
pesan (char) p e n g a m a n a n _ t e k s
pesan (dec) 112 101 110 103 97 109 97 110 97 110 32 116 101 107 115 kunci 170 236 158 117 7 254 204 107 6 23 221 106 14 157 57 cipherteks 218 137 240 18 102 147 173 5 103 121 253 30 107 246 74
Dari tabel 4.10 terlihat bahwa hasil cipherteks dengan perhitungan manual sama
dengan cipherteks yang dihasilkan oleh sistem sehingga dapat dinyatakan sistem
4.2.4.Pengujian proses dekripsi RC4
Lalu kita akan mendekripsi cipherteks yang dihasilkan pada proses pengujian enkripsi.
Untuk dapat mendekripsi cipherteks tersebut kita harus menggunakan kunci yang
sama dengan kunci proses enkripsi.
cipherteks = “218 137 240 18 102 147 173 5 103 121 253 30 107 246 74” kunci = “rahasia”
Sama seperti proses enkripsi untuk dapat melakukan operasi perhitungan pada proses
dekripsi maka kunci terlebih dahulu diubah ke dalam bentuk bilangan dengan
menggunakan pengkodean karakter ASCII.
kunci (char) = r a h a s i a
kunci (dec) = 114 97 104 97 115 105 97
Kemudian dilakukan inisiasi vector S dan pembangkitan kunci seperti pada
proses enkripsi. Oleh karena kunci yang digunakan sama maka akan dihasilkan aliran
kunci yang sama pula dengan aliran kunci pada proses enkripsi.
Aliran kunci = 170 236 158 117 7 254 204 107 6 23 221 106 14 157 57
Setelah aliran kunci didapatkan, untuk menghasilkan pesan yang semula maka
dilakukan operasi XOR antara cipherteks dengan plainteks sebagai berikut. iterasi ke 1
dan seterusnya hingga iterasi ke-20.
Maka didapatlah plainteks seperti pada tabel 4.11.
Tabel 4.11. Proses XOR Cipherteks dengan Kunci
cipherteks 218 137 240 18 102 147 173 5 103 121 253 30 107 246 74
kunci 170 236 158 117 7 254 204 107 6 23 221 106 14 157 57
pesan (dec) 112 101 110 103 97 109 97 110 97 110 32 116 101 107 115
4.2.5.Pengujian proses penyisipan modified LSB
Misalkan kita ingin menyisipkan cipherteks hasil enkripsi pesan ke dalam sebuah
citra. Citra yang kita gunakan sebagai media penampung (cover-image) berjenis true
color dengan ukuran 5 x 20 pixel.
cipherteks = 218 137 240 18 102 147 173 5 103 121 253 30 107 246 74
cover-image =
Hal pertama yang dilakukan adalah mengambil nilai representasi biner dari
cover-image. Oleh karena citra yang digunakan berjenis true color maka setiap pixel dari
cover-image direpresentasikan oleh tiga buah nilai, yaitu warna merah (R), hijau (G),
dan biru (B). Representasi biner dari cover-image ditunjukkan pada tabel 4.12.
Tabel 4.12. Representasi Biner Cover-Image Sebelum Penyisipan
i
j R G B R G B R G B R G B R G B
0 137 2 23 105 2 28 74 2 34 46 2 38 23 5 42 1 141 2 22 109 2 27 79 2 32 52 2 37 31 3 41 2 150 2 20 120 2 25 92 2 30 69 2 34 53 2 37 3 164 2 18 137 2 23 113 2 27 93 2 30 79 2 33 4 181 2 15 158 2 19 138 2 23 121 2 25 109 2 27 5 200 2 11 181 2 16 163 2 18 149 2 20 140 2 22 6 218 2 8 203 2 11 189 2 13 178 2 15 172 2 17 7 235 2 5 224 2 7 213 2 10 205 2 11 200 2 12 8 247 2 3 240 2 4 234 2 6 228 2 7 223 2 7 9 250 8 2 250 2 2 247 2 2 244 2 3 242 2 4 10 250 26 2 250 17 2 250 11 2 250 8 2 250 5 2 11 249 47 2 250 38 2 250 31 2 250 26 2 250 23 2 12 240 73 2 244 63 2 246 54 2 248 50 2 249 46 2 13 227 101 2 232 90 2 235 83 2 238 77 2 239 74 2 14 213 131 2 218 121 2 221 113 2 224 108 2 226 105 2 15 197 160 4 202 151 3 206 145 2 209 140 2 211 136 2 16 183 189 5 187 181 5 191 175 4 192 171 4 194 167 4 17 168 215 6 172 208 5 175 203 5 177 199 4 178 197 5 18 157 237 6 160 231 6 162 227 7 163 224 6 165 222 6 19 150 252 7 151 249 7 152 246 7 154 244 7 154 243 6
Proses penyisipan dilakukan dengan cara mengambil satu demi satu karakter
cipherteks. Kemudian dari setiap karakter cipherteks tersebut diambil satu bit demi
satu bit kemudian ditukarkan dengan bit yang paling kecil dari setiap komponen
warna cover-image mengikuti aturan penyisipan yang ditentukan.
Berikut adalah penjabaran proses penyisipan modified LSB Penyisipan pada pixel ke-1
cipherteks = 218 (11011010)
- R = 137 (10001001)
R tidak lebih kecil dari 100 maka tidak dilakukan penyisipan.
- G = 2 (00000010)
G lebih kecil dari 122 maka ambil bit terakhir cipherteks (0) kemudian sisipkan ke dalam komponen warna G.
G = 2 (00000010) cipherteks = 109 (1101101 )
- B = 23 (00010101)
B lebih kecil dari 114 maka ambil bit terakhir cipherteks (1) kemudian sisipkan ke dalam komponen warna B.
B = 23 (00010101) cipherteks = 54 (110110 )
Maka nilai pixel ke-1 menjadi 137, 2, 23.
Penyisipan pada pixel ke-2 cipherteks = 54 (110110)
- R = 105 (01101001)
R tidak lebih kecil dari 100 maka tidak dilakukan penyisipan.
- G = 2 (00000010)
G lebih kecil dari 122 maka ambil bit terakhir cipherteks (0) kemudian sisipkan ke dalam komponen warna G.
G = 2 (00000010) cipherteks = 27 (11011 )
- B = 28 ( 00011100)
B lebih kecil dari 114 maka ambil bit terakhir cipherteks (1) kemudian sisipkan ke dalam komponen warna G.
B = 29 (00011101) cipherteks = 13 (1011 )
Maka nilai dari pixel ke-2 menjadi 105, 2, 29.
Maka didapatlah stego-image yang telah disisipkan cipherteks dengan nilai
representasi biner seperti yang ditunjukkan pada tabel 4.13.
Tabel 4.13. Representasi Biner Stego-Image Setelah Penyisipan
i
j R G B R G B R G B R G B R G B
0 137 2 23 105 2 29 75 2 35 47 3 38 22 5 42 1 141 2 22 109 3 26 78 2 32 53 3 37 31 2 41 2 150 2 20 120 3 24 92 2 30 69 3 34 52 3 37 3 164 2 19 137 3 22 113 2 27 92 2 31 79 2 33 4 181 3 14 158 3 18 138 3 23 121 2 25 109 2 26 5 200 2 10 181 2 17 163 3 19 149 2 20 140 3 23 6 218 2 9 203 2 10 189 3 13 178 3 15 172 2 17 7 235 2 5 224 3 7 213 3 11 205 3 10 200 3 13 8 247 3 3 240 2 4 234 2 7 228 3 6 223 3 6 9 250 9 3 250 2 2 247 3 3 244 2 3 242 3 5 10 250 27 2 250 17 2 250 11 2 250 8 3 250 4 2 11 249 47 2 250 38 2 250 31 2 250 26 2 250 23 2 12 240 73 2 244 63 2 246 54 2 248 50 2 249 46 2 13 227 101 2 232 90 2 235 83 2 238 77 2 239 74 2 14 213 131 2 218 121 2 221 113 2 224 108 2 226 105 2 15 197 160 4 202 151 3 206 145 2 209 140 2 211 136 2 16 183 189 5 187 181 5 191 175 4 192 171 4 194 167 4 17 168 215 6 172 208 5 175 203 5 177 199 4 178 197 5 18 157 237 6 160 231 6 162 227 7 163 224 6 165 222 6 19 150 252 7 151 249 7 152 246 7 154 244 7 154 243 6
0 1 2 3 4
Berdasarkan representasi warna pada tabel 4.13, stego-image dapat pula dinyatakan
dalam bentuk citra digital seperti pada gambar 4.16.
4.2.6.Pengujian proses ekstraksi modified LSB
Misalkan kita ingin mengekstrak sebuah stego-image,
stego-image =
Sama seperti proses penyisipan hal pertama yang dilakukan adalah mengambil nilai
representasi biner dari stego-image, ditunjukkan pada tabel 4.14.
Tabel 4.14. Representasi Biner Stego-Image
i
j R G B R G B R G B R G B R G B
0 137 2 23 105 2 29 75 2 35 47 3 38 22 5 42
1 141 2 22 109 3 26 78 2 32 53 3 37 31 2 41
2 150 2 20 120 3 24 92 2 30 69 3 34 52 3 37
3 164 2 19 137 3 22 113 2 27 92 2 31 79 2 33
4 181 3 14 158 3 18 138 3 23 121 2 25 109 2 26
5 200 2 10 181 2 17 163 3 19 149 2 20 140 3 23
6 218 2 9 203 2 10 189 3 13 178 3 15 172 2 17
7 235 2 5 224 3 7 213 3 11 205 3 10 200 3 13
8 247 3 3 240 2 4 234 2 7 228 3 6 223 3 6
9 250 9 3 250 2 2 247 3 3 244 2 3 242 3 5
10 250 27 2 250 17 2 250 11 2 250 8 3 250 4 2
11 249 47 2 250 38 2 250 31 2 250 26 2 250 23 2
12 240 73 2 244 63 2 246 54 2 248 50 2 249 46 2
13 227 101 2 232 90 2 235 83 2 238 77 2 239 74 2
14 213 131 2 218 121 2 221 113 2 224 108 2 226 105 2 15 197 160 4 202 151 3 206 145 2 209 140 2 211 136 2 16 183 189 5 187 181 5 191 175 4 192 171 4 194 167 4 17 168 215 6 172 208 5 175 203 5 177 199 4 178 197 5 18 157 237 6 160 231 6 162 227 7 163 224 6 165 222 6 19 150 252 7 151 249 7 152 246 7 154 244 7 154 243 6
0 1 2 3 4
Proses ekstraksi dilakukan dengan mengambil pixel demi pixel dari stego-image
kemudian memeriksa nilai dari tiap komponen warna dari pixel tersebut. Jika
memenuhi aturan ekstraksi maka diambil bit paling kecil dari warna tersebut lalu
ditambahkan ke dalam variabel penampung temp. Setiap kali variabel temp telah
menampung 8 bit data, maka bit-bit data dalam variabel temp dibalik urutannya dari
Berikut adalah penjabaran proses penyisipan modified LSB, Ekstraksi pada pixel ke-1
temp = -
- R = 137 (10001001)
R tidak lebih kecil dari 100 maka tidak dilakukan ekstraksi.
- G = 2 (00000010)
R tidak lebih kecil dari 100 maka tidak dilakukan ekstraksi.
Ekstraksi pada pixel ke-4 temp = 0101101
- R = 47 (00101111)
R lebih kecil dari 100 maka bit terakhir dari R yaitu 1 ditambahkan ke dalam variabel temp.
temp = 01011011
cipherteks = balikBit(temp) = 11011010
= 218
- G = 3 (00000011)
G lebih kecil dari 122 maka bit terakhir dari G yaitu 1 ditambahkan ke dalam variabel temp.
temp = 1
- B = 38 (00100110)
B lebih kecil dari 114 maka bit terakhir dari B yaitu 0 ditambahkan ke dalam variabel temp.
temp = 10
dan seterusnya.
Maka didapatlah cipherteks sebagai berikut,
cipherteks = 218 137 240 18 102 147 173 5 103 121 253 30 107 246 74
Terlihat bahwa proses ekstraksi modified LSB menghasilkan cipherteks yang sama
BAB 5
KESIMPULAN DAN SARAN
5.1. Kesimpulan
Berdasarkan pembahasan dan hasil dari penelitian ini, maka dapat diperoleh
beberapa kesimpulan sebagai berikut,
1. Pengamanan teks dengan menggunakan algoritma RC4 dan metode modified
LSB berhasil meningkatkan keamanan pesan dengan memberikan perlindungan
ganda yaitu pesan disandikan ke dalam bentuk yang tidak dapat dimengerti
kemudian disisipkan lagi dalam citra.
2. Berdasarkan pengujian terhadap pesan yang panjangnya dari 15 karakter sampai
2000 karakter dan dengan citra yang berukuran 5x20 pixel sampai 1000x1000
pixel, metode modified LSB memenuhi aspek steganografi imperceptibility dan
recovery.
3. Modifikasi dalam metode modified LSB memberikan keamanan lebih baik
dibanding metode LSB standar dikarenakan penyisipan pesan dilakukan hanya
pada komponen warna tertentu, namun kekurangannya kapasitas pesan yang
dapat disisip menjadi berkurang.
5.2.Saran
Berikut ini adalah saran-saran yang dapat dijadikan pertimbangan dalam
mengembangkan penelitian ini :
1. Penyisipan pesan ke dalam pixel citra sebaiknya dilakukan tidak berurut
sehingga menambah kesulitan dalam menemukan pesan rahasia dalam citra.
2. Stego-image yang telah diberi manipulasi warna tidak dapat mengembalikan
pesan rahasia oleh karna pesan yang didalam citra ikut mengalami perubahan
nilai, oleh sebab itu perlu dicari teknik penyisipan lain yang tahan terhadap
BAB 2
LANDASAN TEORI
2.1 Kriptografi
Kriptografi berasal dari bahasa Yunani, yaitu “kryptos” yang berarti tersembunyi dan
“graphein” yang berarti menulis. Kriptografi adalah bidang ilmu yang mempelajari
teknik pengiriman pesan dengan rahasia, yaitu dengan cara sebelum melakukan
pengiriman pesan, pesan tersebut disamarkan terlebih dahulu sehingga pesan tersebut
tidak dapat diketahui maknanya sebelum pesan yang telah disamarkan itu
dikembalikan ke bentuk pesan yang semula (Mollin, 2007).
Setiap orang yang terlibat dalam kriptografi disebut kriptografer sedangkan
sebaliknya orang-orang yang berusaha memecahkan metode kriptografi disebut
dengan kriptanalisis (Schneier, 1996).
Beberapa istilah yang berkaitan dengan kriptografi (Munir, 2006) diantaranya,
1. Pesan disebut juga dengan plainteks. Pesan merupakan data atau informasi yang
dapat dibaca dan dimengerti maknanya. Pesan dapat berupa data atau informasi
yang dikirim atau yang disimpan di dalam media perekaman. Pesan yang
tersimpan tidak hanya berupa teks, tetapi juga dapat berupa citra, suara, dan
video.
2. Cipherteks merupakan pesan yang telah disamarkan ke dalam bentuk lain
sehingga pesan tersebut tidak dapat dimengerti maknanya. Untuk dapat
mengetahui maknanya maka cipherteks harus ditransformasikan ke dalam bentuk
yang semula.
3. Enkripsi merupakan proses untuk menyamarkan plainteks menjadi cipherteks.
4. Dekripsi merupakan proses untuk mengembalikan cipherteks menjadi plainteks
dalam bentuk semula.
5. Kunci merupakan parameter masukan yang digunakan untuk melakukan proses
Skema kriptografi ditunjukkan pada gambar 2.1.
Gambar 2.1. Skema Enkripsi dan Dekripsi (Munir, 2006)
2.2 Tujuan Kriptografi
Sebagai penyedia layanan keamanan komunikasi, menurut Menejes (1996) kriptografi
memberikan layanan sebagai berikut
1. Kerahasiaan (Confidentiality) yaitu layanan yang memberikan perlindungan
terhadap pesan sehingga hanya orang berhak yang dapat memahami informasi
dari pesan yang di kirimkan. Dalam kriptografi layanan ini direalisasikan dengan
menyandikan pesan menjadi cipherteks. Pihak lain mungkin saja mendapatkan
cipherteks namun mereka tidak dapat mengetahui maksud dari pesan tersebut.
2. Integritas data (Data Integrity) yaitu layanan yang memberikan jaminan
keorisinalan dari pesan, bahwa pesan tersebut belum pernah dimanipulasi selama
pengiriman. Untuk menjaga integritas data, sistem harus memiliki kemampuan
untuk mendeteksi manipulasi pesan dari pihak-pihak yang tidak berhak, antara
lain penyisipan, penghapusan dan pensubsitusian data lain ke dalam data yang
sebenarnya.
3. Otentikasi (Authentication) yaitu layanan yang berhubungan identifikasi, baik
mengindentifikasi kebenaran pihak-pihak yang berkomunikasi maupun
mengidentifikasi kebenaran sumber pesan. Dua pihak yang saling berkomunikasi
harus dapat mengotentifikasi satu sama lain sehingga ia dapat memastikan sumber
pesan.
4. Nirpenyangkalan (Non-repudiation) yaitu layanan untuk mencegah entitas yang
berkomunikasi melakukan penyangkalan, yaitu pengirim pesan menyangkal
melakukan pengiriman pesan atau penerima pesan menyangkal telah menerima
2.3 Jenis Algoritma Kriptografi
2.3.1. Kriptografi kunci simetri
Algoritma kunci simetri adalah algoritma kriptografi yang mana kunci untuk
mengenkripsinya sama dengan kunci untuk mendekripsinya (Munir, 2006). Algoritma
ini juga disebut algoritma kunci privat dikarenakan pengirim dan penerima sebelum
dapat berkomunikasi harus mengetahui kunci yang digunakan. Kunci algoritma ini
harus tetap dijaga kerahasiaannya untuk dapat melakukan komunikasi dengan aman
(Schneier, 1996). Skema kriptografi kunci simetri ditunjukkan pada gambar 2.2.
Gambar 2.2 Skema Kriptografi Kunci Simetri (Schneier, 1996)
Terdapat tiga cara yang pada umumnya digunakan sebagai dasar dari algoritma
kriptografi kunci simetri (Cole, 2003) yaitu
1. Subsitusi, yaitu proses mengambil sebuah karakter kemudian menukarkannya
dengan karakter yang lain. Untuk itu dibutuhkan tabel pemetaan satu-satu
karakter. Contoh tabel pemetaan karakter ditunjukkan pada tabel 2.1.
Tabel 2.1. Contoh Tabel Pemetaan Karakter
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
H S N U W B J M T A V Y F Q L X D Z G P E R C O I K
Misalkan kita mempunyai pesan “SUBSITUSI” maka S digantikan dengan huruf G, U dengan huruf E dan seterusnya, sehingga “SUBSITUSI” menjadi
“GESGTPEGT”.
2. Permutasi, yaitu penukaran posisi huruf dalam pesan berdasarkan kunci tertentu.
Cara kerja permutasi berbanding terbalik dengan subtitusi, jika dalam teknik
subtitusi, posisi karakter tetap namun identitasnya diubah dengan karakter lain,
maka dalam permutasi identitas karakternya yang tetap, namun posisinya yang
blok karakter dengan ukuran yang tetap sesuai panjang kunci. Contoh tabel
permutasi karakter ditunjukkan pada tabel 2.2.
Tabel 2.2. Contoh Tabel Permutasi Karakter
2 3 1
P E R
M U T
A S I
Kunci
Pesan
Misalkan kita mempunyai pesan “PERMUTASI” dengan kunci 231. Maka huruf -huruf pada pesan disusun ulang sesuai dengan kunci. Huruf pertama pesan
menjadi huruf kedua, huruf kedua menjadi huruf ketiga dan seterusnya, sehingga
“PERMUTASI” menjadi “RPETMUIAS”.
3. XOR, merupakan operasi matematika yang beroperasi pada tingkat binary,
sehingga pesan harus terlebih dahulu diubah ke dalam bentuk binary-nya. XOR
memiliki ciri yang unik yaitu ketika sebuah pesan dikenakan XOR dengan sebuah
kunci, maka akan menghasilkan cipherteks dan jika cipherteks tersebut dikenakan
XOR dengan kunci yang sama maka akan mengembalikan pesan tersebut ke
dalam bentuk yang semula.
Misalkan kita mempunyai pesan rahasia “XOR” dan kunci “ABC”, maka terlebih
dahulu kita mengubah pesan dan kunci tersebut ke dalam bentuk binary-nya,
X = 01011000 A = 01000001
O = 01001111 B = 01000010
R = 01010010 C = 01000011
Kemudian kita melakukan operasi XOR antara pesan dengan kunci
Pesan = 01011000 01001111 01010010
Kunci = 01000001 01000010 01000011
Ciphertext = 00011001 00001101 00010001
Untuk mengembalikan pesan ke dalam bentuk semula, kita melakukan XOR
antara pesan dengan kunci yang sama, maka akan dihasilkan pesan semula.
Ciphertext = 00011001 01001101 01010001
Kunci = 01000001 01000010 01000011
Schneier (1996) membagi kriptografi kunci simetri dalam dua kategori yaitu
block cipher dan stream cipher. Block cipher beroperasi dalam satuan blok plainteks
dan cipherteks, biasanya blok tersebut berukuran 64 bit namun terkadang dapat lebih
besar. Sedangkan stream cipher beroperasi dalam satuan bit atau byte pada satu
waktu.
2.3.2. Kriptografi kunci asimetri
Kriptografi kunci simetri menggunakan dua buah kunci yaitu kunci publik dan kunci
privat. Apapun yang dienkripsi menggunakan satu kunci, maka hanya dapat didekripsi
oleh kunci yang lain. Cara kerja kriptografi kunci asimetri adalah sebagai berikut, kita
membebaskan setiap orang untuk mengetahui kunci publik kita, namun kita harus
menjaga kunci privat kita agar hanya kita yang mengetahuinya. Ketika seseorang
ingin mengirim pesan pada kita, maka ia harus mengenkripsinya dengan kunci publik
kita. Sehingga pesan tersebut hanya dapat diketahui oleh kita yang memiliki kunci
privat untuk mendekripsi pesan tersebut. Skema kriptografi kunci asimetri ditunjukkan
pada gambar 2.3.
Gambar 2.3. Skema Kriptografi Kunci Asimetri (Schneier, 1996)
Kriptografi kunci asimetri menjawab masalah pertukaran kunci dan masalah
nirpenyangkalan, walaupun cara kerjanya sangat lambat. Dalam kriptografi kunci
asimetri pendistribusian kunci tidak mengharuskan dikirim melalui saluran yang
aman, tetapi yang menjadi keharusan adalah saluran yang digunakan dapat dipercaya.
Saluran aman maksudnya bahwa tidak ada seorangpun yang dapat mengetahui isi
informasi selama proses pengiriman, sedangkan pada saluran terpercaya setiap orang
dapat mengetahui isi informasi tetapi kita mendapat jaminan bahwa informasi yang
dikirim berasal dari sumber yang terpercaya dengan kata lain tidak ada terjadi
perubahan informasi selama proses pengiriman. Hal ini dikarenakan setiap orang
dapat membuat satu pasangan kunci privat dan publik dan menyatakan bahwa kunci
publiknya tersebut sebagai milik orang lain. Dalam hal nirpenyangkalan, jika kita
mengenkripsi pesan dengan kunci privat kita, maka setiap orang dapat mengetahui
pesan kita dengan mendekripsinya dengan kunci publik kita, namun hanya kitalah
satu-satunya orang yang mungkin mengirim pesan karena kunci publik kita hanya
dapat digunakan pada pesan yang dienkripsikan dengan kunci privat kita. Algoritma
yang menggunakan kriptografi kunci asimetri diantaranya RSA dan Elgamal (Cole,
2003).
2.3.3. Hash
Algoritma Hash adalah transformasi satu arah pada pesan plainteks, artinya setelah
mengalami hash pesan tidak dapat dikembalikan ke bentuk semula. Hash menerima
plainteks dalam ukuran apapun dan menghasilkan keluaran dengan ukuran yang lebih
kecil dalam ukuran yang tetap. Hash sangat berguna dalam penyimpanan password
dan dalam tanda tangan dikarenakan tidak adanya kunci. Beberapa algoritma hash
diantaranya MD5, MD4, HMAC dan SHA (Cole, 2003).
2.4. RC4
RC4 adalah algoritma kriptografi berjenis stream cipher yang dibangun oleh Ron
Rivest untuk Laboratorium RSA Security. RC4 sendiri merupakan kepanjangan dari
Ron Code (Munir, 2006). Algoritma ini tidak pernah dipublikasikan oleh RSA
Security, namun pada September 1994 ada seseorang yang tak dikenal yang
mengirimkan source code yang diyakini sebagai algoritma RC4 ke milis Cyperpunks.
Kemudian algoritma ini tersebar dengan cepat melalui internet (Kromodimoeljo,
2009).
2.4.1. Algoritma RC4
Tahapan dalam RC4 dibagi menjadi dua bagian (Stalling, 2005) yaitu,
1. Inisiasi vector S
Langkah pertama adalah menginisilisasi vector S dengan nilai 0 sampai 255, sehingga
S[0]=0, S[1] = 1, ... , S[255] = 255. Sebuah vector sementara T, diisi dengan kunci
secara berulang hingga vector T terisi penuh. Kemudian dilakukan permutasi terhadap
nilai-nilai di dalam vector S. Langkah tersebut dituliskan sebagai berikut,
/* Inisialisasi */
S[i] = i;
T[i] = K[i mod keylen];
/* Permutasi vector S */
j = 0;
for i = 0 to 255 do
j = (j + S[i] + T[i]) mod 256;
Swap (S[i], S[j]);
2. Stream Generation (Pembangkitan aliran kunci)
Kemudian melakukan pembangkitan aliran kunci dengan aturan sebagai berikut,
/* Stream Generation */
i, j = 0;
while (true)
i = (i + 1) mod 256;
j = (j + S[i]) mod 256;
Swap (S[i], S[j]);
t = (S[i] + S[j]) mod 256;
k = S[t];
Untuk proses enkripsi dilakukan operasi XOR pada byte plainteks dengan k,
sedangkan untuk melakukan dekripsi dilakukan operasi XOR pada byte cipherteks
dengan k.
2.4.2. Contoh Enkripsi RC4
Untuk menunjukkan bagaimana cara kerja algoritma RC4 kita menggunakan vector
berukuran 4 byte. Hal ini dikarenakan akan sangat sulit menggambarkan proses RC4
secara manual dengan vector berukuran 256 byte (Suryani 2009). Misalkan kita akan
mengenkripsi kata “RC4” dengan kunci 2314. Maka pertama kita menginisialisasi
vector S dan vector T.
0 1 2 3
2 3 1 4
array S = array T =
Kemudian menginisiasi i dan j dengan 0 dan melakukan permutasi vector S.
- Iterasi 1 ( j = 0 ; i = 0)
= (0+ 0 + 2 ) mod 4
Setelah melakukan permutasi vector S, berikutnya dilakukan stream generation untuk
menghasilkan kunci. Pembangkitan kunci dilakukan sebanyak tiga kali sesuai dengan
panjang plainteks. Hal ini dikarenakan setiap karakter akan menggunakan satu buah
= 3
Setelah menemukan kunci untuk setiap karakter, maka dilakukan proses enkripsi
dengan melakukan operasi XOR antara karakter pada plainteks dengan kunci yang
dihasilkan. Tabel ASCII untuk tiap-tiap karakter pada plainteks ditunjukkan pada
tabel 2.3.
Tabel 2.3. ASCII untuk karakter yang digunakan
Proses XOR antara plainteks dengan kunci ditunjukkan pada tabel 2.4.
Tabel 2.4. Proses XOR plainteks dengan kunci
plainteks 01010010 01000000 00110111
kunci 00000001 00000011 00000011
cipherteks 01010011 01000000 00110111
Cipherteks tersebut menghasilkan kata “S@7”. Untuk mengembalikan cipherteks ke
dalam bentuk plainteks, maka dilakukan proses dekripsi dengan melakukan operasi
XOR antara cipherteks dengan kunci menggunakan kunci yang sama dengan kunci
ekripsi. Proses ini ditunjukkan pada tabel 2.5.
Tabel 2.5. Proses XOR cipherteks dengan kunci
cipherteks 01010011 01000000 00110111
kunci 00000001 00000011 00000011
plainteks 01010010 01000000 00110111
2.5.Citra Digital
Citra adalah suatu representasi (gambaran), kemiripan atau imitasi dari suatu objek.
Citra sebagai keluaran 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. Citra
digital adalah gambar dua dimensi yang dapat ditampilkan pada layar monitor
komputer sebagai himpunan berhingga (diskrit) nilai digital yang disebut pixel. Pixel
adalah elemen citra yang memiliki nilai yang menunjukkan intensitas citra (Sutoyo,
dkk. 2009).
2.5.1 Jenis-jenis citra digital
Berdasarkan warna-warna penyusunnya, citra digital dapat dibagi menjadi tiga jenis
(Sutoyo, dkk. 2009) yaitu
1. Citra biner, merupakan citra digital yang hanya memiliki dua kemungkinan nilai
pixel yaitu hitam dan putih. Citra biner juga disebut sebagai citra B&W (black and
white) atau citra monokrom. Hanya dibutuhkan 1 bit untuk mewakili nilai setiap
Gambar 2.4. Contoh citra biner
2. Citra grayscale, merupakan citra digital yang hanya dibentuk oleh satu nilai kanal
warna pada setiap pixel-nya. Nilai tersebut digunakan untuk menunjukkan tingkat
intensitas. Citra grayscale menghasilkan warna hitam, keabuan dan putih.
Tingkatan keabuan disini merupakan warna abu dengan berbagai tingkatan dari
hitam hingga mendekati putih.
Gambar 2.5. Contoh citra grayscale
3. Citra warna, merupakan citra yang nilai pixel-nya merepresentasikan warna
tertentu. Banyaknya warna yang mungkin digunakan bergantung kepada
kedalaman pixel dari citra tersebut. Citra berwarna direpresentasikan dalam
beberapa kanal yang menyatakan komponen-komponen warna penyusunnya.
Banyaknya kanal yang digunakan bergantung pada model warna yang digunakan
pada citra tersebut.
2.5.2 Format file citra digital
Berdasarkan format penyimpanan file digital, citra digital dapat dibagi menjadi dua
jenis (Sutoyo, dkk. 2009) yaitu
1. Citra Bitmap, menyimpan data kode citra secara digital dan lengkap tanpa
melakukan kompresi terhadap citra terlebih dahulu. Citra bitmap dipresentasikan
dalam bentuk matriks atau dipetakan dengan menggunakan bilangan biner atau
sistem bilangan lain. Citra bitmap memiliki kelebihan untuk memanipulasi warna,
tetapi untuk mengubah objek lebih sulit. Tampilan bitmap mampu menunjukkan
kehalusan gradasi bayangan dan warna dari sebuah gambar. Bila citra ini
diperbesar akan mengakibatkan penurunan kualitas citra.
2. Citra Vektor, dihasilkan dari perhitungan matematis dan tidak berdasarkan pixel,
yaitu data tersimpan dalam bentuk vektor posisi, dimana yang tersimpan hanya
informasi vektor posisi dengan sebuah fungsi. Pada file citra vektor, mengubah
warna lebih sulit dilakukan, tetapi membentuk objek dengan cara mengubah nilai
lebih mudah. Oleh karena itu, bila citra diperbesar atau diperkecil, kualitas citra
relatif tetap baik dan tidak berubah.
2.6 Steganografi
Steganografi adalah ilmu menyembunyikan pesan ke dalam media digital lain
sehingga keberadaan pesan tersebut tidak dapat diketahui oleh orang lain (Sadikin,
2012). Steganografi berasal dari bahasa Yunani, yaitu “steganos” yang berarti tertutup
dan “graphia” yang berarti menulis (Cole, 2003).
Beberapa istilah yang berkaitan dengan steganografi (Munir, 2006) diantaranya
1. Hiddentext atau embedded message, yaitu pesan rahasia yang akan disembunyikan.
2. Covertext atau cover-object, yaitu media yang digunakan sebagai tempat untuk
menyembunyikan pesan rahasia.
3. Stegotext atau stego-object, yaitu media yang didalamnya sudah disembunyikan
pesan rahasia.
Di dalam steganografi, hiddentext maupun covertext dapat berupa teks, citra,
audio, ataupun video. Penyisipan pesan ke dalam media covertext dinamakan
encoding, sedangkan ekstraksi pesan dinamakan decoding. Kedua proses ini
memungkinkan menggunakan kunci rahasia (Munir, 2006). Skema steganografi