Laporan Praktikum Final Jarkom [PDF]

  • Author / Uploaded
  • wahyu
  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

LAPORAN PRAKTIKUM FINAL KEAMANAN JARINGAN KOMPUTER IMAGE STEGANOGRAPHY DENGAN METODE LSB (LEAST SIGNIFICANT BIT)



Disusun oleh : Nama



: Wahyu Ramadhan



NIM



: 1457301017



Kelas



: 4.2 / Teknik Informatika



Pembimbing



: Muhammad Rizka, S.S.T, M.Kom



POLITEKNIK NEGERI LHOKSEUMAWE JURUSAN TEKNOLOGI INFORMASI DAN KOMPUTER PRODI TEKNIK INFORMATIKA 2017



LEMBAR PENGESAHAN



No Praktikum



: 01 / KJK/ 4.2/ TI/ 2017



Judul Praktikum



: Image Steganography dengan Metode LSB



Nama Praktikan



: Wahyu Ramadhan



NIM



: 1457301017



Kelas



: 4.2



Jurusan



: Teknologi Informasi dan Komputer



Prodi



: Teknik Informatika



Tanggal Praktikum



: 05 Desember 2017



Tanggal Penyerahan



: 27 Desember 2017



Nilai



:



Keterangan



:



Buket Rata, 27 Desember 2017 Pembimbing



Muhammad Rizka, S.S.T, M.Kom NIP. 19881009 201504 1 001



ii



DAFTAR ISI LEMBAR JUDUL LEMBAR PENGESAHAN .................................................................................... ii DAFTAR ISI .......................................................................................................... iii 1.1



TUJUAN PRAKTIKUM ............................................................................. 1



1.2



DASAR TEORI ........................................................................................... 1



1.2.1



Pengertian Kriptografi .......................................................................... 1



1.2.2



Tujuan Kriptografi ................................................................................ 1



1.2.3



Steganografi .......................................................................................... 2



1.2.4



Least Significant Bit (LSB) .................................................................. 4



1.3



ALAT DAN BAHAN PRAKTIKUM ......................................................... 5



1.4



LANGKAH PRAKTIKUM ......................................................................... 5



1.5



HASIL PRAKTIKUM ............................................................................... 19



1.6



ANALISA PEMBAHASAN...................................................................... 22



1.7



ANALISA PROGRAM ............................................................................. 24



1.8



KESIMPULAN .......................................................................................... 27



DAFTAR PUSTAKA ........................................................................................... 28



iii



LAPORAN PRAKTIKUM FINAL IMAGE STEGANOGRAPHY DENGAN METODE LSB (LEAST SIGNIFICANT BIT)



1.1



TUJUAN PRAKTIKUM



1. Mahasiswa memahami pengertian algoritma Steganography dan LSB. 2. Mahasiswa mampu membuat program algoritma Steganography dan LSB. 3. Mahasiswa mampu menganalisa program Steganography dan LSB.



1.2



DASAR TEORI



1.2.1



Pengertian Kriptografi Kriptografi merupakan ilmu sekaligus seni untuk menjaga keamanan pesan



(Cryptography is the art and science of keeping messages secure) selain itu ada pengertian tentang kriptografi yaitu kriptografi merupakan ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan, integritas data, serta otentikasi. Kata “seni” di dalam definisi di atas maksudnya adalah mempunyai cara yang unik untuk merahasiakan pesan. Kata “graphy” di dalam “cryptography” itu sendiri sudah menyiratkan sebuah seni (Munir, 2006).



1.2.2



Tujuan Kriptografi Menurut (Munir, 2006) Ada empat tujuan mendasar dari ilmu kriptografi



yang juga merupakan aspek keamanan informasi, yaitu: 1. Convidentiality (kerahasiaan), yaitu memberikan kerahasiaan pesan dan menyimpan data dengan menyembunyikan data dengan menyembunyikan informasi lewat teknik-teknik enkripsi. 2. Message intergrity (integritas data), yaitu memberikan jaminan bahwa dari setiap bagian tidak mengalami perubahan dari saat data dibuat/ dikirim sampai dengan saat data tersebut di buka.



1



3. Non-repudiation



(nirpenyangkalan),



yang



memberikan



cara



untuk



membuktikan bahwa suatu dokumen dating dari setiap seseorang apabila ia mencoba menyangkal memiliki dokumen tersebut.



4. Auntentication (autentikasi), yang memberikan dua layanan. Yang pertama mengidentifikasi keaslian dari suatu pesan dan memberikan jaminan keotentikannya. Kedua, untuk meguji identitas seseorang apabila ia akan memasuki sebuah sistem.



2



1.2.3



Steganografi Steganografi adalah suatu teknik untuk menyembunyikan informasi yang



bersifat pribadi dengan sesuatu yang hasilnya akan tampak seperti informasi normal lainnya. Media yang digunakan umumnya merupakan suatu media yang berbeda dengan media pembawa informasi rahasia, dimana disinilah fungsi dari teknik steganografi yaitu sebagai teknik penyamaran menggunakan media lain yang berbeda sehingga informasi rahasia dalam media awal tidak terlihat secara jelas. Steganografi biasanya sering disalahartikan dengan kriptografi karenanya keduanya sama-sama bertujuan untuk melindungi informasi yang berharga. Perbedaan yang mendasar antara keduanya yaitu steganografi berhubungan dengan informasi tersembunyi sehingga tampak seperti tidak ada informasi tersembunyi sama sekali. Jika seseorang mengamati obyek yang menyimpan informasi tersembunyi tersebut, maka dia tidak akan menyangka bahwa terdapat pesan rahasia dalam obyek tersebut, dan karenanya dia tidak akan berusaha memecahkan informasi dari obyek tersebut. Kata steganografi berasal dari bahasa Yunani, yaitu dari kata Stegos (covered/tersembunyi) dan Graptos (writing/tulisan). Steganografi di dunia modern biasanya mengacu pada informasi atau suatu arsip yang telah disembunyikan ke dalam suatu arsip citra digital, audio, atau video. Teknik Steganografi ini telah banyak digunakan dalam strategi peperangan dan pengiriman sandi rahasia sejak jaman dahulu kala. Dalam perang Dunia II, teknik steganografi umum digunakan oleh tentara Jerman dalam mengirimkan pesan rahasia dari atau menuju Jerman, (Morkel, dkk, 2005).



3



Semakin pentingnya nilai dari sebuah informasi, maka semakin berkembang pula metode-metode yang dapat digunakan untuk melakukan penyisipan informasi yang didukung pula dengan semakin berkembangnya media elektronik. Berbagai macam media elektronik kini telah dapat digunakan untuk melakukan berbagai fungsi steganografi dengan berbagai macam tujuan dan fungsi yang diharapkan oleh penggunanya. Sebagai fungsi yang umum, steganografi digunakan untuk memberikan cap khusus dalam sebuah karya yang dibuat dalam format media elektronik sebagai identifikasi, (Johnson, dkk, 1998).



Gambar 1.1 Fokus disiplin ilmu penyisipan informasi (Chedad et al, 2010) Dua teknik lain yang sangat erat kaitannya dengan steganografi adalah watermarking dan fingerprinting. Kedua teknik ini berfokus pada perlindungan hak cipta dengan menyisipkan informasi hak cipta pada media lain dan memberikan ijin kepada pihak ketiga untuk mengetahui keberadaan informasi yang disisipkan tersebut. Hal ini berbeda dengan steganografi yang menjaga informasi yang disisipkan pada media lain agar tidak terlihat oleh pihak ketiga. Jika ada pihak ketiga yang ingin menghack isi informasi tersembunyi tersebut, maka tujuan mereka adalah berbeda. Jika pada watermarking dan fingerprinting, maka mereka berusaha menghilangkan informasi yang disisipkan, sedangkan jika pada steganografi, maka mereka berusaha sebatas mendeteksi keberadaan informasi tersembunyi, (Morkel , 2005).



4



1.2.4



Least Significant Bit (LSB) Metode LSB ini digunakan dalam teknik steganographydikarenakan



tergolong mudah dalam penerapannya. Dasar dari metode ini adalah bilangan berbasiskan biner atau dengan kata lain angka 0 dan angka 1. Karena data digital



merupakan



susunan



antara



angka



0



dan



satu



maka proses



penerapannya menjadi mudah. Lebih lanjut lagi, metode ini berhubungan erat dengan ukuran 1 bit dan ukuran 1 byte. 1bytedata dapat dikatakan terdiri dari 8 bit data. Dimana bit pada posisi paling kanan lah yang disebut dengan bit pada posisi LSB (Least Significant Bit).Teknik steganography dengan menggunakan metode LSB adalah teknik dimana kita mengganti bit pada posisi LSB pada data dengan bit yang dimiliki oleh data yang akan disembunyikan. Karena bit yang diganti hanyalah bit yang paling akhir, maka meskipun data telah berubah, kita tetap tidak akan bisa mengenalinya, karena media stego yang dihasilkan hampir sama persis dengan media sebelum disisipi oleh data yang ingin disembunyikan. Untuk



ilustrasi



proses



penyisipan



pesan



dengan



menggunakan



metode ini adalah sebagai berikut:



Gambar 1.2 Ilustrasi Pesan



dari data diatas akan disisipkan suatu pesan rahasia yang berupa data biner dengan nilai bit (01001000) maka data atau media penampung akan menjadi Dari:



Gambar 1.3 Pesan yang telah disisipi penjelasan



diatas



dapat



disimpulkan



bahwa



metode



LSB



hanya



mengganti satu nilai dari posisi LSB pada setiap byte data pada media penampung data yang akan disembunyikan dengan satu bit data dari text atau data yang akan disembunyikan. Karena bit yang diganti adalah bit



5



dengan nilai paling kanan maka media yang dihasilkan hamper sama persis dengan media aslinya 1.3



ALAT DAN BAHAN PRAKTIKUM Alat dan bahan yang digunakan praktikum ini adalah sebagai berikut :



Alat



: Laptop Acer (Netbook) Intel Celeron 2Gb Memory



Bahan



: Software Netbeans IDE 8.1 Java JDK



1.4



LANGKAH PRAKTIKUM Langkah-langkah praktikum :



1. Buka aplikasi Netbeans IDE 8.1 yang terdapat di dekstop



Gambar 1.4 Desktop



2. Pilih file, lalu klik new project atau bisa menekan langsung Ctrl + Shift + N di keyboard



6



Gambar 1.5 New Project 3. Pilih Java, Java Application, klik Next



Gambar 1.6 Java Application 4. Ubah nama project menjadi ImageSteganography, pilih lokasi penyimpanan, klik Finish



7



Gambar 1.7 New Java Application 5. Didalam project ImageSteganography, terdapat source package yang mana didalam adalah sumber kode utama dari project ini. Lalu didalam source terdapat tiga folder java source package yaitu 



Imagesteganography







Imagesteganography.util







Imagesteganography.view



Gambar 1.8 Isi Source project



8



6. Di dalam imagesteganography (java source package), terdapat class yang bernama



ImageSteganography.java



yang



merupakan



import



dari



MainApp.java.



Gambar 1.9 ImageSteganography.java 7. Di dalam imagesteganography.util, terdapat tiga class java yaitu Encode, Decode, dan StegoImage yang berkestensi .java. Ketiganya adalah komponen penting dalam project ini karena disanalah semua sumber kode utama terprogram. Adapaun pada Encode terdapat list program yang berfungsi untuk proses awal pada penyandian gambar dan pesan yang disisi pada gambar yang di input. Berikut listing program Encode.java. 



Encode.java



package imagesteganography.util; import java.awt.image.BufferedImage; import java.io.File; public class Encode extends StegoImage { public boolean encode(String fileIn, String fileOut, String message) { BufferedImage image_orig = getImage(fileIn); BufferedImage image = user_space(image_orig);



9



image = add_text(image, message); return (setImage(image, new File(fileOut), "png"));



Keterangan : Encode ini adalah extends dari StegoImage.java artinya source code Encode.java terdapat juga pada StegoImage.java (perpanjangan program dari



Encode.java).



jadi



Encode



memanggil



fungsi



dari



class



lain



(StegoImage.java) yang terdapat proses encode juga didalam class tersebut.



Adapaun pada Decode terdapat list program yang berfungsi untuk mengembalikan pesan yang telah disisipi di gambar dan diambil untuk diketahui isi pesan tersebut. Berikut listing program Encode.java. 



Decode.java



package imagesteganography.util; import java.awt.image.BufferedImage; import javax.swing.JOptionPane; public class Decode extends StegoImage { public String decode(String name) { byte[] decode; try { BufferedImage image = user_space(getImage(name)); decode = decode_text(get_byte_data(image)); return (new String(decode)); } catch (Exception e) { JOptionPane.showMessageDialog(null, "Tidak terdapat pesan rahasia pada gambar tersebut!", "Error", JOptionPane.ERROR_MESSAGE); return ""; } } }



Keterangan : Decode ini adalah extends dari StegoImage.java artinya source code Decode.java terdapat juga pada StegoImage.java (perpanjangan program dari



Encode.java).



jadi



Decode



memanggil



fungsi



dari



class



lain



(StegoImage.java) yang terdapat proses encode juga didalam class tersebut. 10



Kemudian, pada StegoImage.java adalah source yang paling utama dimana proses penyandian, penyisipan, proses encoding decoding pesan dilakukan di class ini. Terdapat juga fungsi-fungsi extends dari Encode.java dan Decode.java. Selain itu juga terdapat proses dari metode Least Significant Bit. 



StegoImage.java



package imagesteganography.util; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.awt.image.DataBufferByte; import java.awt.image.WritableRaster; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.JOptionPane; public class StegoImage { public BufferedImage getImage(String f) { BufferedImage image = null; File file = new File(f); try { image = ImageIO.read(file); } catch (IOException ex) { JOptionPane.showMessageDialog(null, "Gambar



tidak



dapat



di



baca!"



+



ex,



"Error", JOptionPane.ERROR_MESSAGE); } return image; } public



boolean



setImage(BufferedImage



image,



File



file,



String ext) { try { file.delete(); ImageIO.write(image, ext, file); return true; } catch (IOException e) { JOptionPane.showMessageDialog(null,



11



"File



tidak



dapat



di



simpan!",



"Error",



JOptionPane.ERROR_MESSAGE); return false; } } public BufferedImage add_text(BufferedImage image, String text) { byte img[] = get_byte_data(image); byte msg[] = text.getBytes(); byte len[] = bit_conversion(msg.length); try { encode_text(img, len, 0); encode_text(img, msg, 32); } catch (Exception e) { JOptionPane.showMessageDialog(null, "File



tidak



dapat



disisipi



pesan!",



"Error", JOptionPane.ERROR_MESSAGE); } return image; } public BufferedImage user_space(BufferedImage image) { BufferedImage



new_img



=



BufferedImage(image.getWidth(),



new



image.getHeight(),



BufferedImage.TYPE_3BYTE_BGR); Graphics2D graphics = new_img.createGraphics(); graphics.drawRenderedImage(image, null); graphics.dispose(); return new_img; } public byte[] get_byte_data(BufferedImage image) { WritableRaster raster = image.getRaster(); DataBufferByte



buffer



=



(DataBufferByte)



raster.getDataBuffer(); return buffer.getData(); } public byte[] bit_conversion(int i) { byte byte3 = (byte) ((i & 0xFF000000) >>> 24); byte byte2 = (byte) ((i & 0x00FF0000) >>> 16); byte byte1 = (byte) ((i & 0x0000FF00) >>> 8);



12



byte byte0 = (byte) ((i & 0x000000FF)); return (new byte[]{byte3, byte2, byte1, byte0}); } public byte[] encode_text(byte[] image, byte[] addition, int offset) { if (addition.length + offset > image.length) { throw



new



IllegalArgumentException("File



tidak



cukup di sisipi pesan!"); } for (int i = 0; i < addition.length; ++i) { int add = addition[i]; for (int bit = 7; bit >= 0; --bit, ++offset) { int b = (add >>> bit) & 1; image[offset] = (byte) ((image[offset] & 0xFE) | b); } } return image; } public byte[] decode_text(byte[] image) { int length = 0; int offset = 32; for (int i = 0; i < 32; ++i) { length = (length > 24); byte byte2 = (byte) ((i & 0x00FF0000) >>> 16); byte byte1 = (byte) ((i & 0x0000FF00) >>> 8); byte byte0 = (byte) ((i & 0x000000FF)); return (new byte[]{byte3, byte2, byte1, byte0}); }







Program di atas berfungsi untuk mengkoversikan byte ke bit. Terdapat beberapa pilihan konversi yaitu ada 24 bit, 16 bit, 8 bit



25



f. Add Text public BufferedImage add_text(BufferedImage image, String text) { byte img[] = get_byte_data(image); byte msg[] = text.getBytes(); byte len[] = bit_conversion(msg.length); try { encode_text(img, len, 0); encode_text(img, msg, 32); } catch (Exception e) { JOptionPane.showMessageDialog(null, "File tidak dapat disisipi pesan!", "Error", JOptionPane.ERROR_MESSAGE); } return image; }







Program diatas berfungsi untuk menambahkan teks atau pesan rahasia yang disisipi



ke



dalam



gambar.



Terdapat



perintah



byte



img[]



=



get_byte_data(image) untuk mengambil byte (data raster/biner) dari gambar. Kemudian terdapat perintah byte msg[]=text.getBytes() untuk mengambil byte dari pesan/teks yang ingin sisipi yang diubah menjadi nilai



biner



nantinya



dengan



perintah



byte



len[]=



bit_conversion(msg.length). Kemudian teks tersebut di encode menggunakan



encode_text(img,len,0)



perintah



dan



encode_text(img,msg,32)



g. Encode Text public byte[] encode_text(byte[] image, byte[] addition, int offset) { if (addition.length + offset > image.length) { throw new IllegalArgumentException("File tidak cukup di sisipi pesan!"); } for (int i = 0; i < addition.length; ++i) { int add = addition[i]; for (int bit = 7; bit >= 0; --bit, ++offset) { int b = (add >>> bit) & 1; image[offset] = (byte) ((image[offset] & 0xFE) | b); } } return image; }







Perintah diatas merupakan perintah utama untuk melakukan proses encoding dengan



LSB.



Terdapat



encode_text(byte[]



perintah



image,



byte[]



public



byte[]



addition,



int



26



offset) yang berfungsi melakukan encode teks terhadap byte gambar, dan penambahan bit baru di gambar dari bit teks. Lalu proses penyisipan biner (byte) gambar hingga nantinya berada di sebelah kanan pada bit ke 8 menggunakan perintah



for



(int



bit=7;



bit>=0;



--bit,



++offset).



h. Decoder Text public byte[] decode_text(byte[] image) { int length = 0; int offset = 32; for (int i = 0; i < 32; ++i) { length = (length