Kompresi Teks Menggunakan Steganografi Judith Chira Patria1, Entik Insanudin, ST., M.T2 Teknik Informatika, Fakultas Sains dan Teknologi, UIN Sunan Gunung Djati Bandung e-mail:
[email protected] ,
[email protected] Abstrak—Dalam kajian ini, masalah keamanan dan kapasitas dalam steganografi teks masih menjadi hal yang diusahakan untuk ditingkatkan dan diperbaiki. Sebelum melakukan teknik steganografi pada teks, teks tersebut dikompres terlebih dahulu dengan tujuan untuk dapat menambah kapasitas pesan rahasia yang dapat disisipkan di dalamnya. Karena berhubungan dengan teks, maka menggunakan teknik kompresi lossless, yang artinya hasil kompresi dapat dikembalikan menjadi seperti aslinya sebelum teknik kompresi. Karena penggunaannya yang umum di masyarakat dan rasio kompresi yang baik, maka digunakan Huffman coding. Untuk meningkatkan keamanan, kajian ini mengajukan metode untuk membangun dan menyusun stego keys. Penggunaan stego key bertujuan agar pesan rahasia hanya dapat diketahui oleh pihak-pihak yang berhak dan berkepentingan saja. Cover text yang digunakan juga merupakan teks-teks yang umum dan mudah ditemui, misalnya artikel ilmiah, potongan cerita dari novel, atau bentuk teks apa saja yang baik secara sintaksis dan tata bahasa, sehingga sulit untuk diketahui secara kasat mata apabila ada sesuatu yang disembunyikan di dalamnya tanpa melakukan investigasi lebih lanjut. Media yang digunakan oleh kedua pihak, pengirim dan penerima, adalah email. Stego cover diatur sedemikian rupa menjadi berupa pengiriman email ke banyak pengguna. Tabel Latin square dari literatur sebelumnya tentang email steganografi juga telah mengalami modifikasi dan bermanfaat untuk membuat proses penyisipan lebih rumit sehingga meningkatkan keamanan. Hasil dari pengujian yang dilakukan menunjukan bahwa untuk setiap kelipatan 10 pada secret message, terjadi penambahan alamat email pada stego keys dengan rata-rata 3-4 alamat email. Kata Kunci—Huffman Coding, Kompresi Data, Steganografi, Steganografi Teks.
I. PENDAHULUAN
P
ERKEMBANGAN teknologi jaringan dan perangkat digital membuat pengiriman data multimedia dalam bentuk digital menjadi cepat dan mudah. Namun pendistribusian data digital melalui jaringan publik seperti internet tidak cukup aman karena sering terjadi pelanggaran hak cipta, pemalsuan, pembajakan, dan penipuan. Oleh karena itu, metode untuk melindungi data digital terutama data yang sensitif sangat diperlukan [1]. Meskipun penggunaan dokumen elektronik sudah menjadi hal yang umum, tidak banyak orang dapat mengenali dokumendokumen yang berisi data tersembunyi. Dikatakan tersembunyi karena data biasanya terdapat di dalam sebuah berkas, tetapi sulit untuk diidentifikasi keberadaannya. Data tersembunyi dapat diklasifikasikan menjadi dua jenis, yang dibuat secara otomatis oleh aplikasi dan yang dibuat dan disembunyikan oleh seseorang untuk tujuan tertentu [2]
Pada umumnya, watermarking dan steganografi digunakan untuk menyembunyikan informasi [1]. Watermarking adalah penanda yang disisipkan di dalam sebuah data teks, suara maupun gambar yang digunakan untuk mengidentifikasi kepemilikan atau hak cipta dari data tersebut. Sebaliknya, steganografi umumnya digunakan pada komunikasi rahasia [1]. Kebutuhan utama dari sistem penyembunyian data diketahui sebagai berikut: imperceptibility (keberadaan pesan tidak mudah dideteksi oleh indera manusia), kehandalan, dan kapasitas. Seperti yang ditunjukan oleh Gambar 1, masingmasing kebutuhan adalah sudut dari segitiga dalam sistem penyembunyian data dan selalu ada pertukaran antar kebutuhan-kebutuhan yang kontradiktif ini. Kapasitas berkaitan dengan jumlah bit data yang dapat disembunyikan pada cover media. Cover media adalah media yang digunakan sebagai perantara dalam menyisipkan pesan rahasia. Imperceptibility berhubungan dengan kemampuan dari penyadap untuk mencari tahu informasi yang tersembunyi dengan mudah. Kehandalan berhubungan dengan ketahanan dari kemungkinan pengubahan atau perusakan data yang tidak kelihatan [3]. Dalam steganografi, keberadaan pesan disamarkan. Cover media yang digunakan sebagai tempat untuk menyisipkan data dapat berupa berkas suara atau video, email atau gambar digital [4]. Dalam artikel ini, masalah kapasitas dan keamanan diatasi dengan mengusulkan sebuah pendekatan steganografi teks berbasis kompresi, dengan tujuan untuk mendapatkan penambahan rasio yang signifikan pada jumlah data rahasia yang akan disembunyikan di dalam cover media sembari meningkatkan kompleksitas prosedur ekstraksi dari data rahasia. Karenanya, data rahasia disisipkan pada teks yang dipilih dari teks dasar. Teks dasar adalah teks sudah pernah ada sebelumnya, seperti teks pemberitahuan (notifikasi) dan abstraksi dari artikel yang dapat digunakan untuk diskusi kelompok. Saat proses penyisipan, keaslian teks dijaga dengan menyamarkan bagian informasi rahasia. Email dipilih sebagai sarana komunikasi karena proses komunikasinya terjadi antara dua pihak. Oleh sebab itu, stego cover disusun sedemikian rupa sehingga berupa email dengan beberapa alamat tujuan, seperti yang biasa ditemui saat meneruskan email. Stego cover
Gambar. 1. Tiga komponen penting dalam penyembunyian data.
adalah teks yang digunakan untuk menyisipkan pesan rahasia. Saat menyusun stego cover, digunakan daftar alamat email yang sebelumnya telah disusun. Untuk menambah kapasitas, akan digunakan teknik kompresi data. Dalam tugas akhir ini akan mengggunakan teknik kompresi data lossless karena data yang digunakan berupa teks. Dan pada penerapan teknik kompresi data lossless, dipilih algoritma Huffman coding karena rasio kompresinya yang baik. Untuk meningkatkan keamanan, akan digunakan beberapa stego keys. Stego keys adalah kunci yang digunakan oleh pengirim pada saat melakukan penyisipan pesan dan diperlukan oleh penerima untuk melakukan prosedur ekstraksi. Stego keys dapat diklasifikasikan menjadi dua bagian berdasarkan tugas masing-masing [5]. Bagian pertama adalah stego keys yang dibuat saat fase penyisipan dan yang lainnya adalah global stego key yang bersama-sama digunakan oleh pengirim dan penerima sebelumnya. Global stego key adalah kunci yang langsung diketahui oleh penerima saat menerima pesan, tanpa melakukan prosedur apapun untuk mendapatkannya. II. TINJAUAN PUSTAKA A. Kompresi dengan Huffman Coding Ditemukan oleh David Huffman(1925-1999) pada tahun 1952. Tidak seperti algoritma Shannon-Fano yang membangun kodenya secara top to bottom (dari bit paling kiri ke bit paling kanan), Huffman membangun pohon kode (code tree) dengan cara bottom up (membangun kode dari kanan ke kiri) [6]. Teknik ini menganalisis frekuensi kemunculan dari setiap karakter/huruf pada suatu berkas dan menggantinya dengan sebuah codeword yang memiliki panjang yang fleksibel. Secara normal setiap karakter disimpan sebagai sebuah bit yang mampu menyimpan informasi sebanyak 8 bit. Ide utama dari teknik ini adalah menetapkan kode yang pendek untuk karakter-karakter yang sering muncul dan kode yang panjang untuk karakter-karakter yang jarang muncul, dari pada merepresentasikan setiap karakter ke dalam kode 8 bit, seperti yang dilakukan oleh kode ASCII (American Standard Code for Information Interchange) dan EBCDIC (Extended Binary Coded Decimal Interchange Code). Oleh karena itu, jumlah bit dari representasi karakter secara keseluruhan berkurang secara signifikan karena karakter-karakter yang ada muncul dengan frekuensi yang berbeda-beda. Hal ini mengakibatkan jumlah
bit yang diperlukan berkurang sebanyak rata-rata dari tiap karakter. Teknik ini dimulai dengan mengumpulkan semua karakter yang akan dikompres ke dalam sebuah list. Setiap anggota dalam list tersebut direpresentasikan sebagai leaf dari tree. Karakter tersebut digabungkan dengan karakter atau subtree lainnya,dua karakter atau subtree dalam sekali iterasi, untuk membentuk subtree baru. Subtree-subtree ini bertambah besar seiring dengan dilakukannya penggabungan pada setiap iterasi sampai penggabungan terakhir sebelum sampai pada root. Supaya memudahkan untuk mendapat dua karakter dengan frekuensi terkecil, list yang ada diurutkan berdasarkan frekuensi secara descending. Pengurutan secara ascending juga dapat dilakukan dengan menjalankan sedikit perubahan kecil pada cara penggabungannya. B. Steganografi Steganografi adalah ilmu dan seni menulis pesan tersembunyi dalam sebuah cara dimana tidak seorangpun, selain pengirim dan penerima yang ditentukan, mengetahui keberadaan pesan tersebut dalam bentuk keamanan melalui ketidakjelasan [8]. Kata steganografi berasal dari bahasa Yunani yang memiliki arti „tulisan tersembunyi‟, berasal dari kata dalam bahasa Yunani yaitu steganos yang berarti terselubung dan graphei yang berarti tulisan. Penggunaan pertama steganografi yang dicatat dalam sejarah adalah pada tahun 1499 oleh Johannes Trithemius pada Steganographi, sebuah risalah tentang kriptografi dan steganografi yang disamarkan sebagai buku mantra sihir. Secara umum, pesan akan tampak sebagai sesuatu yang lain seperti: gambar, artikel, daftar belanja, atau cover text lainnya dan pada jaman dahulu. Pesan tersembunyi dapat berupa tinta yang tidak terlihat yang terletak pada urutan baris dari surat. Kelebihan steganografi dari kriptografi adalah pesannya tidak menarik perhatian. Pesan yang dienkripsi yang terlihat dengan jelas dapat menimbulkan kecurigaan dan dianggap sebagai tindak kriminal pada tempat yang melarang enkripsi dalam bentuk apapun. Oleh sebab itu, jika kriptografi menjaga isi pesan, steganografi dapat dikatakan menjaga pesan dan pihak-pihak yang berkomunikasi. C. Latin square Definisi Latin square: Latin square susun n dengan isi sebuah himpunan-n X adalah sebuah array berukuran n x n dimana setiap anggota mengandung sebuah elemen dari X yang berarti setiap baris dari L adalah permutasi dari X dan setiap kolom dari L adalah permutasi dari X [8]. Dalam bahasa yang lebih sederhana, Latin square adalah array n x n yang berisi sebanyak n simbol berbeda yang masingmasing selalu muncul sekali dalam tiap baris dan sekali pada tiap kolom. Nama “Latin square” dipakai karena menggunakan huruf latin sebagai simbol. Pertama kali diperkenalkan oleh Leonhard Euler. Simbol yang digunakan pada Latin square tidak harus selalu angka, melainkan dapat menggunakan alfabet juga. Pembuatan Latin square susun n dilakukan dengan cara
1
2
3
4
4
1
2
3
3
4
1
2
2
3
4
1
: kumpulan bit penggabungan dari hasil kompresi vektor jarak relatif baru A: himpunan domain alamat email ( K_2) : panjang bit tiap elemen dalam R '
Gambar. 2. Contoh tabel Latin square susun 4
membuat tabel berukuran n x n dengan baris pertama adalah urutan dari 1 sampai n. Kemudian baris berikutnya diisi dengan menggeser bilangan pada tiap cell secara siklis ke kanan. Gambar 2 menunjukan tabel Latin square susun 4. III. ANALISIS DAN DESAIN A. Deskripsi Umum Perangkat lunak dibuat dalam bentuk script dalam bahasa python, dimana diperlukan python interpreter untuk menjalankannya. Secara sederhana, script ini berjalan dengan menggunakan dua buah berkas dalam bentuk teks sebagai masukannya, satu berkas sebagai cover text dan berkas lainya sebagai secret message. Perangkat lunak akan mengolah secret message bersama dengan cover text untuk membangkitkan sejumlah alamat email yang akan digunakan sebagai stego keys. Stego keys adalah kunci yang akan digunakan oleh penerima untuk mengetahui pesan rahasia yang dikirimkan oleh pengirim. Dalam pelaksanaanya ada beberapa key yang akan didistribusikan oleh pengirim kepada penerima, namun tidak akan dilakukan pembahasan lebih detil tentang bagaimana sistem pendistribusian key pada artikel ini karena hal ini terdapat di bagian batasan masalah. Proses steganografi pada artikel ini bekerja dengan membuat seolah-olah secret message disisipkan ke dalam cover text. Kemudian cover text bersama dengan stego keys yang berhasil dibangkitkan akan dijadikan stego cover yang berupa seperti pada saat melakukan forward alamat email, dimana pesan akan dikirimkan ke penerima utama dan alamat email yang berada pada bagian cc (carbon copy). Perangkat lunak hanya akan mambangkitkan stego keys tanpa melakukan pengiriman email. Ada dua fungsi utama dari perangkat lunak ini, yaitu penyisipan pesan dan ekstraksi pesan. Pada setiap tahapan proses yang dilakukan, akan diberikan contoh kasus sehingga mempermudah untuk memahami proses tersebut. B. Penyisipan Pesan Dan proses penyisipan pesan terbagi menjadi beberapa proses, yaitu merepresentasikan secret message ke dalam bentuk baru, kompresi dengan Huffman coding, pembangkitan stego keys, dan penyusunan stego cover. Sebelum menjelaskan proses penyisipan pesan, akan dijelaskan beberapa variabel yang akan digunakan: S: secret message T: cover text : vektor jarak relatif (vektor yang menampung jarak relatif tiap karakter dalam pesan rahasia) : vektor dari nilai kelipatan (K_1) : vektor jarak relatif baru
Variabel A atau adalah sebuah variabel yang akan dijadikan global stego keys. Global stego keys adalah key yang akan digunakan dalam kedua proses, yaitu penyisipan dan ekstraksi pesan. Variabel A didesain berbentuk daftar alamat email dengan jumlah 8 anggota, dengan isi yang sudah disepakati sebelumnya oleh pengirim dan penerima, atau dengan kata lain isi variabel ini sudah ditentukan sebelumnya dan diketahui oleh kedua pihak. Global stego key lainnya adalah tabel Latin square. Pada metode ini tabel Latin square dimodifikasi sehingga pada baris pertama berisi huruf dengan rentang „A‟-„Z‟,‟a‟-„z‟. 1) Representasi Secret messages dalam Bentuk Baru Misalkan a adalah himpunan karakter dari S (secret message) dan b adalah himpunan karakter dari T (cover text). Dicari kondisi diman a=b, maka adalah vektor dimana tiap elemennya terdiri dari selisih antar indeks elemen b saat pemetaan dilakukan. 2) Kompresi dengan Huffman Coding Variabel kemudian dikompres dengan menggunakan Huffman coding. Dan hasil kompresi tiap elemen R akan berupa bilangan biner. Panjang tiap elemen hasil kompresi disimpan ke dalam variabel . Kemudian nilai didapat dengan menyatukan hasil kompresi tiap elemen pada menjadi suatu bit stream. Setelah itu periksa apakah panjang dari bit stream adalah kelipatan dari 12. Jika tidak, dilakukan penambahan bit 0 di bagian belakang bit stream sampai panjang bit stream mencapai kelipatan 12. 3) Pembangkitan Stego keys a) Mendapatkan variabel v,w,x,y dan z Variabel yang memiliki panjang bit kelipatan 12 dibagi menjadi kelompokkelompok dengan panjang 12 bit. Setiap kelompok dibagi lagi menjadi 2 bagian, yaitu yang terdiri dari 9 bit pertama dan yang terdiri dari 3 bit terakhir. digunakan untuk menyusun userside atau bagian sebelum simbol „@‟ dari alamat email. (1) (2) (3) (4)
Gambar. 3. Format penyusunan stego cover
b)
c)
Pembangkitan Kata Acak Pertama lakukan pengacakan sebuah bilangan bulat i dengan rentang 4 sampai 7. Kemudian lakukan pengacakan bilangan bulat j dengan rentang 1-52 sebanyak i kali, lalu petakan nilai tersebut pada baris pertama pada tabel Latin square. Dalam setiap iterasi lakukan penggabungan dari setiap huruf yang didapat. Setelah i iterasi maka akan didapat kumpulan huruf acak dengan panjang i. Pembangkitan Alamat Email
4) Penyusunan Stego cover Stego cover disusun dengan format pada Gambar 3. C. Ekstraksi Pesan Pada proses ekstraksi pesan, diperlukan hal-hal berikut ini: • atau nilai • atau nilai A • : panjang bit tiap codeword dari Huffman coding sebelum digabungkan menjadi bit stream Stego keys Tabel Latin square dan Tree Huffman coding Dalam artikel ini, proses pengiriman dan pertukaran key dilakukan sebelumnya, sehingga dianggap keys yang ada telah terdistribusi kepada pengirim dan penerima. 1) Rekonstruksi R Setelah mengetahui karakter dan bagian penting dari stego keys, maka variabel v, w, x, y dan z dari setiap alamat email dapat diidentifikasi dengan melakukan pemetaan dari tiap karakter penting ke tabel Latin square, karena pada dasarnya setiap karakter penting adalah hasil pemetaan dari v, w, x, y dan z di proses penyisipan. Alamat email yang pertama dipetakan ke baris pertama dari tabel Latin square.Alamat email kedua dipetakan ke baris kedua dan begitu seterusnya. Khusus untuk variabel z, bagian domain dari alamat email dipetakan ke variabel A. Kemudian pastikan bahwa pada setiap alamat email, nilai variabel x = v-13 dam nilai variabel y = w-13. Nilai didapatkan dengan melakukan konversi nilai z ke dalam bilangan biner dengan panjang 3 bit. Dan didapatkan dengan menerapkan Persamaan 5. (5) Setelah nilai dan didapatkan, gabungkan keduanya untuk mendapatkan bilangan biner dengan panjang 12 bit
yang kemudian akan disebut sebagai kelompok 12 bit dari tiap alamat email. Kelompokkelompok 12 bit yang ada digabungkan menjadi satu bit stream sesuai secara sekuensial. Gabungan dari kelompok 12 bit inilah yang disebut dengan variabel . Lalu gunakan untuk membagi menjadi kumpulan codewords sesuai dengan panjang bit yang dimana panjangnya sesuai dengan isi dari tiap elemen pada yang bersesuaian. Setelah bit stream dibagi menjadi kumpulan codewords, lakukan dekompresi pada tiap kumpulan codewords dengan menggunakan Huffman coding. Hasil dekompresi tiap codeword disimpan ke dalam sebuah variabel dengan struktur data list atau array yang akan disebut dengan variabel . Elemen-elemen dari adalah bilangan bulat dengan rentang 1-26. Dengan selesainya proses ini, maka tahapan untuk merekonstruksi nilai telah selesai. 2) Rekonstruksi D Nilai diperoleh dengan cara mengombinasikan variabel yang sudah diperoleh dan variabel yang menjadi yang telah didistribusikan sebelum proses ekstraksi pesan dilakukan. Untuk indeks yang bersesuaian, nilai c pada didapat dengan menggunakan Persamaan 6. (6) Dimana merupakan elemen dari dan merupakan elemen dari . 3) Ekstraksi Secret message Proses ekstraksi secret message dari cover text dilakukan dengan cara berikut. Untuk setiap c pada , didapatkan sebuah karakter a di cover text pada indeks c. Kemudian karakter pesan rahasia berikutnya didapat dengan mengakumulasi jumlah dari nilai c sekarang dengan nilai c pada indeks sebelumnya. Proses ini terus berulang sampai indeks c yang terakhir. Lalu kumpulan a yang didapat menghasilkan kata atau kalimat yang merupakan secret message (S). IV. PENGUJIAN DAN PEMBAHASAN Secret message yang digunakan dalam pengujian : Steganografi (steganography) adalah ilmu dan seni menyembunyikan pesan rahasia di dalam pesan lain sehingga keberadaan pesan rahasia tersebut tidak dapat diketahui. Steganografi berasal dari Bahasa Yunani, yaitu “steganos” yang artinya “tulisan tersembunyi (covered writing)”.
Cover text yang digunakan sebagai pengujian : Steganografi termasuk ke dalam security through obscurity. Steganografi biasa digunakan oleh teroris, intelijen, atau militer dalam menyampaikan pesan sehingga tidak diketahui orang lain. Steganografi membutuhkan dua poperti yaitu media penampung dan pesan rahasia. Media penampung yang umum digunakan adalah gambar, suara, video atau teks. Pesan yang disembunyikan dapat berupa sebuah artikel, gambar, daftar barang, kode program atau pesan lain.
50 40 30 20 10 0 jumlah karakter secret message jumlah alamat email Gambar. 4. Grafik pertambahan alamat email pada pengujian
Penggunaan steganografi antara lain bertujuan untuk menyamarkan eksistensi (keberadaan) data rahasia sehingga sulit dideteksi dan melidungi hak cipta suatu produk. Steganografi dapat dipandang sebagai kelanjutan kriptografi. Jika pada kriptografi, data yang telah disandikan (ciphertext) tetap tersedia, maka dengan steganografi ciphertext dapat disembunyikan sehingga pihak ketiga tidak mengetahui keberadaannya. Data rahasia yang disembunyikan dapat diekstraksi kembali persis sama seperti keadaan aslinya. Keuntungan steganografi dibandingkan dengan kriptografi adalah bahwa pesan yang dikirim tidak menarik perhatian sehingga media penampung yang membawa pesan tidak menimbulkan kecurigaan bagi pihak ketiga. Ini berbeda dengan kriptografi dimana ciphertext menimbulkan kecurigaan bahwa pesan tersebut merupakan pesan rahasia. Gambar 4 adalah tabel yang menyajikan pertambahan alamat email dalam setiap kelipatan sepuluh karakter dari secret message berdasarkan cover text dan secret message yang digunakan. Dari pengujian yang dilakukan didapatkan bahwa email mengalami pertambahan dengan rata-rata 3-4
alamat email pada setiap kelipatan sepuluh karakter dari secret message. V. KESIMPULAN/RINGKASAN Dari hasil pengujian didapat kesimpulan sebagai berikut: Panjang secret message berbanding lurus dengan panjang bit stream, panjang bit stream yang dibulatkan dan banyak alamat email yang dihasilkan. Akan tetapi perlu diperhatikan bahwa pada pada setiap kasus, jumlah email hanya bertambah sekitar rata-rata 3 sampai 4 alamat email untuk setiap kelipatan 10 dari panjang secret message. 2. Ukuran data yang disisipkan di dalam cover text dapat ditambah dengan cara membuat representasi data baru dari secret message dan melakukan kompresi pada representasi data baru tersebut. 3. Stego cover tersamarkan karena terdiri dari dua bagian. Bagian yang pertama berisi teks-teks umum yang mudah ditemui dimana saja sehingga mengurangi kecurigaan tentang keberadaan pesan rahasia di dalamnya. Bagian yang kedua adalah kumpulan alamat email yang terlihat natural karena penyusunan bagian awal alamat email boleh menggunakan angka, huruf atau kombinasi keduanya. 4. Sekuritas pada proses steganografi dilakukan dengan cara menggunakan key dalam proses penyisipan dan ekstraksinya. Selain itu penggabungan penggunaan koding berbasis kombinatorik dan Huffman Coding juga berperan dalam meningkatkan sekuritas. 5. Metode ini tidak menghasilkan noise, karena tidak dilakukan perubahan apapun pada cover text yang digunakan. 6. Metode ini tidak bergantung pada satu bahasa khusus dan dapat diimplementasikan dalam berbagai bahasa dengan cara melakukan modifikasi pada tabel Latin square seperlunya. 1.
DAFTAR PUSTAKA [1]
C. Chang and T.D Kieu, "A reversible data hiding scheme using complementary embedding strategy," Information Science 180, no. 16, pp. 3045-3058, 2010.
[2]
A. Gutub and M. Fattani, "A novel arabic text steganography method using letter points and extensions," in WASET International Conference on Computer, Information and System Science and Engineering (ICCISSE), Viena, Austria, 2007, pp. 28-31.
[3]
J. Park and S. Lee, "Forensic investigation of Microsoft PowerPoint files," Digital Investigation, vol. 6, no. 1-2, pp. 16-24, 2009.
[4]
Esra Satir and Hakan Isik, "A Compression-based Text Steganography Method," The Journal of Systems and Software ScienceDirect, no. 85, pp. 2385-2394, May 2012.
[5]
Esra Satir and Hakan Isik, "A Huffman Compression based Text Steganography Method," Multimedia Tools Appl Springer Science+ Business Media, no. DOI 10.1007/s11042-012-1223-9, September 2012.