Universitas Bunda Mulia
Vol. 9 No. 2, Agustus 2013 ISSN 1979-1496
KAJIAN PENERAPAN OPERASI BITWISE PADA STEGANOGRAFI Teady Matius Surya Mulyana
[email protected],
[email protected] Teknik Informatika Universitas Bunda Mulia
Abstrak Steganografi merupakan bagian dari pengolahan citra yang melakukan proses penyembunyian pesan pada masing-masing piksel pada citra. Pada model RGB pesan diuraikan bit per bit dan disembunyikan pada salah satu ataupun pada semua channel RGB. Proses menyembunyikan pesan pada steganografi dilakukan pada tingkat bilangan biner. Karena melibatkan bilangan biner, maka proses pada steganografi akan memerlukan operasi logika digital untuk melakukan proses bit per bit nya. Operasi bitwise sebagai bagian dari operasi logika digital untuk memproses nilai-nilai biner pada masing-masing bit yang akan dimanfaatkan pada operasi ini. Pada enkripsi data, proses tersebut akan terjadi pada pembacaan sel bitmap yang akan disisipi, proses pemisahan tiap-tipa bit dari karakter yang akan disembunyikan pada tiap-tiap sel bitmap, sampai proses penggabungan bit-bit yang sudah dipisahkan dari karakter-karakter yang akan di sembunyikan. Sedangkan pada proses dekripsi data, proses akan terjadi pada pembacaan bit-bit terakhir dari tiap piksel yang tersimpan pada bitmap dan penggabungan bit-bit tersebut menjadi nilai satu byte utuh yang diperlukan untuk menghasilkan sebuah karakter. Karya tulis ini akan rancangan algoritma yang akan memanfaatkan operasi-operasi logika SHIFT, AND dan OR untuk memproses bit-bit tersebut.
Kata Kunci:
pengolahan citra, steganografi, enkripsi, dekripsi, bitmap, model RGB, operasi bitwise, bilangan biner
PENDAHULUAN Steganografi sebagaimana yang dijelaskan oleh Ariyus (Ariyus, 2006) adalah cabang ilmu yang mempelajari tentang bagaimana menyembunyikan informasi di dalam informasi lainnya[1]. Lebih khusus, Sutoyo (Sutoyo, 2009) menjelaskan bahwa steganography dalam pengolahan citra adalah sebuah teknik penyembunyian pesan pada sebuah media berupa citra[5]. Pesan yang akan disembunyikan disebut sebagai plainteks, sedangkan kode yang dihasilkan dari enkripsi plainteks disebut sebagai cipherteks. Cipherteks pada steganografi tidak nampak sebagaimana cipherteks pada
Teknologi Informasi
kebanyakan kriptografi, karena cipherteks pada steganografi berupa paduan nilai-nilai pada bit-bit plainteks dengan lokasi piksel yang akan disisipinya. Gambar 1 mengilustrasikan proses enkripsi. Pada teknik steganografi dilakukan dengan cara menguraikan plainteks karakter per karakter. Kemudian setiap karakter akan diuraikan bit perbit. Bit-bit yang diuraikan dari plainteks akan disisipkan pada salah satu atau semua channel RGB pada sel tertentu yang sudah ditentukan sesuai dengan kunci yang dipergunakan.
Page 18 of 33
Bitwise Pada Steganografi
Universitas Bunda Mulia
Vol. 9 No. 2, Agustus 2013 ISSN 1979-1496
Gambar 1. Proses Enkripsi
Sutoyo (Sutoyo, 2009) menjelaskan bahwa bitmap adalah sekumpulan variabel linier yang terbentuk dari kolom dan baris. Dimana pada masingmasing sel tersimpan warna dari masing-masing piksel pada sel yang bersesuai dengan bitmap tersebut[5]. Proses penyisipan bit pada nilai piksel dilakukan dengan cara menyamakan nilai bit terakhir dari channel yang akan disisipi pada piksel tersebut dengan nilai bit dari plainteks yang akan disisipkan. Kunci pada Steganografi dapat berupa suatu bilangan yang menentukan posisi piksel-piksel yang akan disisipi oleh bitbit dari plainteks. Channel-channel RGB dapat pula dianggap sebagai posisi yang berdiri pada masing-masing channel RGB atau dapat juga dianggap sebagai satu kestuan posisi penyisipan bit plainteks. Gambar 2 mengilustrasikan proses dekripsi. Proses dekripsi dilakukan dengan cara mengambil nilai dari masing-masing posisi piksel sesuai dengan ketentuan kunci. Untuk setiap nilai yang diambil dari masing-masing piksel tersebut, diambil bit terakhir dan digabunggkan sampai terkumpul 8 bit. Setelah terkumpul 8 bit maka akan didapatkan sebuah karakter.
penyisipan nilai biner dari masingmasing bit dari plainteks maupun penggabungan dilakukan bit per bit pada bilangan biner. Dengan demikian beberapa operasi logika dapat dimanfaatkan pada teknik steganografi untuk penguraian bit-bit maupun untuk menyisipkan nilai bit-bit tersebut pada piksel-piksel yang dituju dalam proses enkripsi serta mengambil nilai pada bit terakhir dari masing-masing piksel yang menyimpan cipherteks serta menggabungkannya menjadi satu nilai byte dalam proses dekripsi. Nilai data bertipe long, int, short, byte dab char pada JAVA dapat dioperasikan bit perbitnya dengan operator bit per bit. Operasi-operasi logika bit per bit yang akan dimanfaatkan pada karya tulis ini dalam melakukan enkripsi dan dekripsi adalah operasi SHIFT untuk pergeseran bit, operasi AND dan operasi OR. Brookshear (Brookshear, 2007) menjelaskan mengenai operasi pergeserah (shift) untuk melakukan pergeseran bit per bit[2]. Yang mana dijelaskan oleh Cornell (Cornell, 1997) maupun Peter (peter, 1996) pada JAVA juga terdapat operator-operator bitwise seperti &, |, <<, >> dan >>>[3][4]. Operasi SHIFT akan menggeser bit per bit ke arah yang ditentukan. Pada JAVA terdapat 3 operator SHIFT yaitu operator ”>>”, ”>>>” dan ’<<”. Operator >> akan melakukan operasi pergeseran bit perbit ke kanan, termasuk tanda plus minus. Operator >>> akan melakukan operasi pergeseran bit perbit ke kanan, bit paling kiri akan diisi dengan nilai 0. Operator << akan menggeser bit per bit ke kiri. Operator logika AND pada JAVA menggunakan operator ”&”. Operator ini akan melakukan operasi AND pada masing-masing bit.
Gambar 2. Proses Dekripsi
Semua proses mulai dari penguraian plainteks menjadi nilai bilangan biner,
Teknologi Informasi
Operator logika OR pada JAVA menggunakan operator ”|”. Operator
Page 19 of 33
Bitwise Pada Steganografi
Universitas Bunda Mulia
Vol. 9 No. 2, Agustus 2013 ISSN 1979-1496
ini akan melakukan operasi OR pada masing-masing bit. METODE Untuk mengimplementasikan operatoroperator logka bit per bit tersebut, disusun metode enkripsi dan dekripsi. Metode berikut: 1. 2.
3.
4.
5.
enkripsi
disusun
sebagai
Cari panjang plainteks. Uraikan karakter dari plainteks dan simpan setiap nilai bitnya pada sebuah array. misalkan array int b[] Proses penguraian dapat dilakukan dengan mengambil nilai interger dari karakter yang di baca Kemudian dari nilai integer tersebut di geser sejumlah 8-j-1 digit., dimana merupkan pencacah dari 0 sampai 7, sehingga untuk setiap bit ke j yang merupakan bit yang akan disimpan akan menempati bit terakhir. Hasil pergeseran tersebut di AND kan dengan nilai biner 00000001 untuk memastikan nilai-nilai bit di sebelah kiri daribit terakhir akan bernilai 0 dan bit yang akan disimpan akan berisi nilai yang semestinya dari bit yang diinginkan. Algoritma menggunakan sintax JAVA untuk pergeseran tersebut dapat dilihat pada program 1.
7.
Dimana panjang adalah panjang karakter, lebar adalah lebar bitmap. 8. Bit terakhir dari nilai pada setiap bitmap pada channel R/G/B yang akan dipilih diambil dan disesuaikan dengan nilai bit yang tersimpan pada aray b. 9. Dengan cara mengeset 0 untuk bit terakhir. Dapat dilakukan dengan melakukan operasi AND terhadap nilai bitmap dengan nilai 11111110 (FE). 10. Langkah berikutnya hasilnya di OR dengan nilai bit yang tersimpan pada array b. 11. Hasilnya disimpan pada result Bitmapsesuai dengan alamat sel nya. 12. Untuk kondisi nilai karakter yang dibaca berupa 0 dapat dilakukan dengan
13. Sedangkan untuk mengeset nilai 0 pada 8 piksel terakhir cukup dengan melakukan operasi AND terhadap nilai bitmap dengan nilai 11111110 (FE). 14. Sisa piksel setelah didapatkan karakter penutup 0, dapat diisi dengan nilai sesuai dengan nilai bitmap asal. Metode berikut: 1.
2. 3.
Program 1. pengambilan bit-bit karakter
6.
Untuk memeriksa apakah alamat bitmap adalah alamat sel yang dapat disisipi nilai biner b, lakukan dengan perintah
Teknologi Informasi
Page 20 of 33
dekripsi
disusun
sebagai
Untuk setiap sel bitmap yang berisi bit diambil nilai terakhirnya dengan cara di AND kan dengan 0x1 atau 00000001. sehingga hanya tersisa nilai bit terakhirnya. Kemudian masukkan ke sebuah penampung nilai karakter. Setiap kali akan memasukkan nilai bit yang didapat tersebut, pastikan sudah menggeser bit-bit yang terdapat pada penampung sebanyak 1 bit ke kiri.
Program 2. memasukkan bit-bit ke penampung karakter
Bitwise Pada Steganografi
Universitas Bunda Mulia
4.
5.
Vol. 9 No. 2, Agustus 2013 ISSN 1979-1496
Kemudian pastikan setiap 8 piksel yang terbaca, akan dimasukkan sebagai karakter ke dalam variabel penampung string. Lakukan proses pembacaan cipher teks sampai didapat 8 bit terakhir dari nilai bit terakhir pada 8 piksel terakhir yang dibaca berisi nilai 00000000.
PEMBAHASAN Untuk mengkaji penggunaan operator logika bit-perbit “>>>”, “<<”, “&” dan “|” dibuat program menggunakan pemrograman JAVA untuk melakukan proses enkripsi dan dekripsi. Program dipanggil melalui command prompt, disertai argumen nama file yang akan diproses. Pemanggilan program dari command prompt dapat dilihat pada gambar 3.
Pada bagian bawah terdapat kombo box untuk memilih proses. Di sebelah kanan comboBox tersebut terdapat sebuah editText yang akan di pergunakan untuk menuliskan teks yang akan di enkripsi, juga sekaligus sebagai tempat hasil dekripsi untuk proses dekripsi. Button ”Abu-abu” merupakan button untuk memproses dan menampilkan hasil proses dalam citra abu-abu. Button ”Warna” merupakan button untuk memproses dan menampilkan hasil proses dalam citra warna. Button “Simpan” merupakan button untuk melakukan proses penyimpanan sesuai dengan format file citra yang dipilih pada comboBox format. ComboBox format akan berisi pilihan tipe format file citra. Untuk proses enkripsi, pilih Enkrip, kemudian plaintext yang akan dienkripsi diketikkan pada editText yang tersedia. Sebagai contoh dapat dilihat pada gambar 5.
Gambar 3. Pemanggilan Program
Tampilan program dapat dilihat pada gambar 4. Citra dari file gambar yang dipanggil akan ditampilkan pada panel di sisi sebelah kiri. Di sebelah kanan ada dua buah panel, panel yang ditengah akan berisi penggambaran dari bitmap asli, sedangkan yang sebelah kanan nantinya akan berisi citra dari bitmap hasil pengolahan.
Gambar 4. Tampilan Program
Teknologi Informasi
Gambar 5. Pilihan Proses Enkripsi
Gambar 6. Hasil Enkripsi Pada Gambar abu-abu
Page 21 of 33
Bitwise Pada Steganografi
Universitas Bunda Mulia
Vol. 9 No. 2, Agustus 2013 ISSN 1979-1496
Gambar 7. Hasil Enkripsi Pada Gambar berwarna
Kemudian penekanan button “Abu-abu” akan melakukan proses enkripsi teks pada editText ke dalam file gambar. Panel di tengah akan menampilkan citra yang belum berisi teks hasil enkripsi, sedangkan panel di kanan akan menampilkan citra yang berisi teks hasil enkripsi. Contoh hasil enkripsi berupa stego abu-abu dapat dilihat pada gambar 6. Sedangkan contoh hasil enkripsi berupa stego berwarna dapat dilihat pada gambar 7. Dari gambar 6 dan gambar 7, dapat dilihat secara kasat mata, tidak ada perbedaan antara citra di sebelah kiri yang merupakan citra asli dan citra di sebelah kanan yang merupakan stego. Untuk percobaan proses dekripsi nantinya, citra abu-abu dan citra berwarna yang semuanya berisi pesan tersembunyi akan disimpan dalam format ”png”.
Gambar 9. Tampilan File Citra yang berisi pesan
Setelah frame muncul, pengguna dapat memilih proses dekrip, contoh dapat dilihat pada gambar 9. pada gambar tersebut, tampak editText masih kosong belum terisi, sedangkan panel gambar di tengah dan di kanan juga belum terisi. Pengguna akan menekan button “Abu-abu” atau button “Warna” untuk melakukan proses dekripsi. Setelah proses dekripsi selesai, maka pada EditText yang tersedia sudah muncul teks yang tersembunyi pada file citra yang di panggil. Pada Gambar 10. memperlihat teks yang dimunculkan dari hasil dekripsi terhadap teks tersembunyi.
Proses dekripsi akan dilakukan dengan memanggil file gambar yang berisi pesan rahasia. Dapat dilihat pada gambar 8, dimana pada contoh, sebagai parameter ke 0 adalah nama file hasil.png yang berisi citra yang sudah disusupi pesan rahasia. Gambar 10. Pesan Yang Tersimpan pada File Citra ditampilkan
SIMPULAN Gambar 8. Pemanggilan Program Dengan parameter file Citra yang berisi pesan
Berikut ini kesimpulan dari pemanfaatan operasi-operasi bitwise pada steganografi: 1. Untuk mendapatkan bit-bit berupa nilai biner dari suatu nilai integer tidak harus dengan melakukan konversi ke bilangan biner.
Teknologi Informasi
Page 22 of 33
Bitwise Pada Steganografi
Universitas Bunda Mulia
Vol. 9 No. 2, Agustus 2013 ISSN 1979-1496
2. Untuk menggabungkan bit-bit dari sebagian bilangan integer dan menggabungkannya mendapatkan bit-bit berupa nilai biner dari suatu nilai integer tidak harus dengan melakukan konversi ke bilangan biner.
dipergunakan adalah 0 atau tanpa kunci. Saran untuk kajian lain dapat pula membahas mengenai implementasi kunci dengan memanfaatkan operasi bitwise yang sudah dibahas pada karya tulis ini.
3. Untuk mendapatkan bit-bit dan menguraikan bit-bit tersebut dapat mempergunakan operasi-operasi bitwise yang disediakan oleh bahasa pemrograman.
DAFTAR PUSTAKA
4. Dengan memanfaatkan operasioperasi bitwise, mempermudah penguraian ataupun penggabungan bit-bit bagian dari suatu bilangan integer, karena tidak perlu melakukan proses oeprasi aritmatika yang panjang.
2006, Ilmu,
[2] Brookshear. J. Glenn, 2011, Computer Science ed 11, Addison Wesley - Pearson Education, USA [3] Cornell. Gary, S. Horstmann. Cay, 1997, Core JAVA, Prentice Hall PTR, USA [4] Peter van der Linden, Tcheslavski, 1996, Just Java, Prentice Hall PTR, USA
Saran Karya tulis ini membahas mengenai pemanfaatan operasi bitwise untuk memisahkan bit perbit maupun menggabungkan bit-bit pada proses enkripsi maupun dekripsi pada steganografi dengan asumsi kunci yang
Teknologi Informasi
[1] Ariyus. Donny, Kriptografi, Graha Yogyakarta
[5] Sutoyo, T., mulyanto, E., Suhatono V., Nurhayanti OD., Wijanarto., 2009, Teori Pengolahan Digital, Andi Offset, Semarang.
Page 23 of 33
Bitwise Pada Steganografi