KRIPTOGRAFI DAN STENOGRAFI MENGGUNAKAN ALGORITMA VIGENERE DAN TEA (TINY ENCRYPTION ALGORITHM) Akik Hidayat Jurusan Matematika, Universitas Padjadjaran, Bandung Jatinangor, Km 21 Bandung – Sumedang, 45363 ABSTRAK Keamanan dan kerahasiaan sangat dibutuhkan dalam dunia komunikasi khususnya dalam dunia komunikasi digital. Diperlukan metode khusus untuk menjamin keamanan informasi, supaya informasi hanya dapat dimengerti oleh pihak yang dituju. Teknik yang umum digunakan adalah dengan mengacak data atau Kriptografi. Tetapi informasi yang diacak sering menimbulkan kecurigaan, maka dibutuhkan teknik lain yaitu dengan menyembunyian data atau Steganografi. Teknik Steganografi dapat diterapkan sebagai kelanjutan dari Kriptografi, dan kombinasi dari keduanya akan menghasilkan tingkat keamanan data yang sangat tinggi. Akan diperlihatkan menggabungkan teknik Kriptografi dan Steganografi untuk menjaga keamanan data teks sekaligus menyisipkan data teks tersebut dalam gambar digital tanpa mengubah gambar tersebut secara visual,sehingga menghasilkan sebuah metode Steganografi yang optimal untuk menyembunyikan suatu pesan teks di dalam sebuah gambar digital. ABSTRACT For many reasons, safety and secrecy is vitally needed in digital communication. There have to be some special method to ensure the safety of message, so only the correct recipient able to know the content of message. The general method is encrypt the message (Cryptography), but encrypted message is very suspicious and will attract everyone who see it. The other method is to hide the message (Steganography). Steganography can be applied with the Cryptography, and the combination of both methods will increase the safety of information. Cryptography scramble the message but it still exist, and Steganography cover and hide the encrypted message to other media so the original message cannot be seen. Combine the Cryptography and Steganography methods for data communication security, to hide the text message in a digital image without any change in image visually, targets is to know the Steganography and to make an optimal Steganography methods that can able to hide a text message into a digital image. Keyword : Cryptography, Encrypt, Descrypt, Stenografi I. PENDAHULUAN. Untuk berbagai alasan, keamanan dan kerahasiaan sangat kita butuhkan dalam komunikasi data. Ada berbagai cara untuk menjamin keamanan dan kerahasiaan komunikasi data kita di antaranya adalah dengan seni pengacakan data / Kriptografi dan seni penyembunyian data / Steganografi. Pada makalah ini Akan diperlihatkan teknik enkripsi serta dekripsi pada algoritma Vigenere dan TEA serta teknik Encoding data teks atau file text (TXT) ke dalam file gambar Bitmap (BMP) dan Decoding data teks tersebut dari dalam gambar. Yang bertujuan untuk memberikan salah satu solusi pada keamanan komunikasi data berupa teks atau file teks (TXT) karena telah dienkripsi dan disembunyikan ke dalam sebuah gambar Bitmap (BMP) dan menerapkan Kriptografi dan Steganografi serta gabungan keduanya menjadi suatu teknik dalam masalah pengamanan komunikasi data. II. TEORI PENDUKUNG II.1. Kriptografi Kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan. Kriptografi Klasik (Mode teks) Cipher Subsitusi (Subsitution Cipher) Cipher Transposisi (Transposition Cipher) Kriptografi Modern (Mode bit) Cipher Kunci Simetri : Cipher Aliran, Cipher Blok Cipher Kunci Publik (Cipher Public Key); Cipher Fungsi Hash II.2. Algoritma Vigenere Algoritma Vigenere dibuat oleh Blaise de Vigènere pada abad ke 16. Rumus Enkripsi : Ci = ( Pi + Ki ) Mod(26) Rumus Dekripsi : Pi = ( Ci - Ki ) Mod(26) Dimana: Ci = nilai desimal karakter cipherteks ke-i Pi = nilai desimal karakter plainteks ke-i Ki = nilai desimal karakter kunci ke-i II.3. TEA (Tiny Encryption Algorithm) TEA (Tiny Encryption Algorithm) dibuat oleh David Wheeler & Roger Needham dari Cambridge University Inggris pada Tahun 1994. TEA merupakan algortima enkripsi blok, dengan blok-blok sebagai berikut: 64-bit input L0 dan R0 @32-bit. 128-bit kunci k[0], k[1], k[2], k[3] @32-bit. Dan menggunakan Delta (golden number) = (√5 -1)231 = $9e3779b9 H dengan Round sebanyak 32 kali. Rumus Enkripsi: SUM = n * Delta Ln = L(n-1)+((R(n-1) Shl 4)+K[0]) XOR (R(n-1)+SUM) XOR ((R(n-1) Shr 5)+K[1])) Rn = R(n-1) + ((Ln Shl 4)+K[2]) XOR (Ln+SUM) XOR ((Ln Shr 5)+K[3]) Rumus Dekripsi: Rn = R(n-1) – ((L(n-1) Shl 4)+k[2]) XOR (L(n-1)+SUM) XOR ((L(n-1) Shr 5)+k[3]) Ln = L(n-1) – ((Rn Shl 4)+k[0]) XOR (Rn+SUM) XOR ((Rn Shr 5)+k[1]) ) SUM = SUM - Delta (SUM = Delta X 32 ) Di mana : Delta = (√5 -1)231 = (2654435770)D = (9e3779b9)H n = Round ke II.4. Steganografi 1 Steganografi adalah teknik/seni menyembunyikan informasi di balik informasi lain, sehingga informasi sesungguhnya tidak kelihatan. Media yang digunakan dalam Steganografi: Gambar (Image Steganography) Suara (Audio Steganography) Text (Text Steganography/Text Mimicking) II.5. File Gambar 1. Bitmap ( bmp, rle ) tidak menggunakan kompresi (1-32bit) 2. GIF ( gif ) (1-8bit /256 warna saja), transparasi dan animasi 3. JPEG (jpg, jfif , jpg2000) membuang informasi2 yang tidak terlalu penting 4. Portable Network Graphic (png) Penganti GIF, PNG berlisensi gratis 5. TIFF Format komputer Apple, format standar untuk Mancintosh. 6. RAW Mirip dengan Bitmap. Format ini menyimpan semua informasi yang ada menggunakan teknik lossles compression untuk mengurangi ukuran file. 7. TGA (True Vision Targa) Biasanya untuk gambar2 pada game. III. ANALISIS DAN PERANCANGAN III.1. Diagram Alur Proses Enkripsi dan Encoding : Stego Image Pengirim Pesan 1.Teks Pesan 2.Teks Kunci 3.Gambar 1.Teks Pesan 2.Teks Kunci 3.Gambar Program Aplikasi Steganografi Penerima Pesan Stego Image DFD level 0 Program Aplikasi Steganografi : Program Apikasi Steganografi 10 Pengirim Pesan Proses Enkripsi dan Encoding Tulis Kunci Stego image gambar Gambar Pesan Tulis kunci 20 Teks pesan Stego Image gambar output Proses Decoding dan Dekripsi Penerima Pesan Teks Output Pesan Rahasia DFD level 1 Proses Enkripsi dan Encoding (Proses 1.0) : 2 Proses Encode Steganografi (Proses 1.0) Pengirim Pesan Pilih FIle teks 11 Buka Teks dari File Teks Pesan File teks Plain Teks 14 12 Cipherteks Proses Enkripsi Tulis kunci Encode teks ke file gambar Gambar Stego (BMP) 13 Buka gambar dari file Pilih file gambar Gambar File gambar Stego Image file gambar (BMP) DFD level 2 Proses Enkripsi (Proses 1.2) : Proses Enkripsi (Proses 1.2) 121 Plain Text Kunci Plainteks teks kunci Proses Enkripsi dengan Algoritma Vigenere Ciphertext Cipher Text Vigenere 122 Proses Enkripsi dengan Algoritma TEA teks kunci Chiperteks Vigenere Ciphertext Cipher Text Vigenere & TEA DFD level 2 Proses Encode (Proses 1.4) : Proses Encoding (Proses 1.4) Cipher Text Vigenere & TEA Gambar (BMP) teks 141 Ubah jadi bit teks gambar 143 Bit teks Proses Encoding (Sisipkan bit teks ke dalam bit gambar) 142 Bit gambar Ubah jadi bit gambar gambar (BMP) Stego Image III.2. Algoritma Vigènere Algoritma Enkripsi Vigènere: a GetTextLen (plainteks) //Hitung jumlah array dari plaintext b GetTextLen(kunci) // Hitung jumlah array dari kunci x 0 // isi variabel x dengan nilai 0 While x <= a begin for j 1 to b do begin p Ord (plainteks [x] ) //Mengubah char menjadi kode ASCII p p – 97 //Kode ASCII diubah (a menjadi 0) k ord ( kunci[j] ) // key menjadi ASCII k k – 97 //K ode ASCII diubah (a menjadi 0) //operasi penambahan plaintext dengan key-nya c ( p + k ) mod 26 // operasi Vigènere 3 c c + 97 // K ode ASCII diubah mjd huruf Ciphertext Ciphertext+c // Tulis hasil ke dalam Ciphertext inc ( x ) // nilai x ditambah 1 end end Algoritma Dekripsi Vigènere: a GetTextLen (Ciphertext) //Hitung jumlah array dari Ciphertext b GetTextLen (kunci) // Hitung jumlah array dari kunci x 0 // isi variabel x dengan nilai 0 While x <= a begin for j 1 to b do begin c Ord (Ciphertext [x]) //Mengubah char menjadi kode ASCII c c – 97 //Kode ASCII diubah (a menjadi 0) k ord ( kunci[j] ) // key menjadi ASCII k k – 97 //Kode ASCII diubah (a menjadi 0) //operasi pengurangan Ciphertext dengan key-nya p ( c - k ) mod 26 // operasi Vigènere p p + 97 // K ode ASCII diubah mjd huruf plaintext plaintext + p // Tulis hasil ke dalam plaintext inc ( x ) end end III.3. Algoritma TEA (Tiny Encryption Algorithm) TEA memproses 64-bit input dan menghasilkan 64-bit output. 64-bit input disimpan ke dalam L0 dan R0 @32-bit. Sedangkan 128-bit kunci disimpan ke dalam k[0], k[1], k[2], dan k[3] @32-bit. Output-nya disimpan dalam L32 dan R32. Algoritma Enkripsi TEA (Tiny Encryption Algorithm) procedure TeaEncrypt(var data: TLong2; const key: TTeaKey); var y,z,sum: Longword; a:byte; begin y:=data[0]; z:=data[1]; sum:=0; for a:=0 to 31 do begin inc(sum,Delta); inc(y,((z shl 4)+key[0]) xor (z+sum) xor ((z shr 5)+key[1])); inc(z,((y shl 4)+key[2]) xor (y+sum) xor ((y shr 5)+key[3])); end; data[0]:=y; data[1]:=z end; Algoritma Dekripsi TEA (Tiny Encryption Algorithm) procedure TeaDecrypt(var data: TLong2; const key: TTeaKey); var y,z,sum: Longword; a:byte; begin y:=data[0]; z:=data[1]; sum:=delta shl 5; for a:=0 to 31 do begin dec(z,((y shl 4)+key[2]) xor (y+sum) xor ((y shr 5)+key[3])); dec(y,((z shl 4)+key[0]) xor (z+sum) xor ((z shr 5)+key[1])); dec(sum,Delta); end; data[0]:=y; data[1]:=z end; 4 IV. IMPLEMENTASI DAN PEMBAHASAN IV.1. Contoh Penghitungan Enkripsi dan Dekripsi Vigènere dan TEA Berikut contoh penghitungan enkripsi dan dekripsi pada program aplikasi. Misalkan kita ingin mengirim pesan rahasia dengan kunci sebagai berikut: Plainteks : “saya” Kunci : “abc“ I.A. Enkripsi Vigènere: Plainteks : saya Kunci : abc Kode ASCII Plainteks : 18 – 0 – 24 - 0 Kode ASCII Kunci : 0 - 1 -2 - 0 Kode ASCII Plainteks+Kunci (Pi+Ki mod(26)) : 18 - 1 - 0 - 0 Hasil Enkripsi VIGÈNERE (Dalam huruf besar) : “SBAA” I.B. Enkripsi TEA: Plainteks : SBAA L0 : SBAA (83-66-65-65)d (01010011 01000010 01000011 01000011)b R0 :---(0) d (00000000 00000000 00000000 00000000)b Kunci : abc Key[0] : abc- (97-98-99-0)d (01100001 01100010 01100011 00000000)b Key[1] : - - - (0)d (00000000 00000000 00000000 00000000)b Key[2] : - - - (0)d (00000000 00000000 00000000 00000000)b Key[3] : - - - (0)d (00000000 00000000 00000000 00000000)b Round 1 : SUM = 1 X (2654435770) L1 = L0 + ( (R0 Shl 4) + K[0] ) XOR ( R0 + SUM ) XOR ( (R0 Shr 5) + K[1] ) L1 = 01010011 01000010 01000011 01000011 + ((00000000 00000000 00000000 00000000 Shl 4) + 01100001 01100010 01100011 00000000) XOR (00000000 00000000 00000000 00000000 + SUM) XOR ((00000000 00000000 00000000 00000000 Shr 5) + 00000000 00000000 00000000 00000000) L1 = 10110100 10100100 10100100 01000001 (Biner) 180 164 164 65 (Decimal) L1 = L1 = ´ ¤ ¤ A (ASCII) R1 = R0 + ( (L1 Shl 4) + K[2] ) XOR ( L1 + SUM ) XOR ( (L1 Shr 5) + K[3] ) R1 = 00000000 00000000 00000000 00000000 + ( (10110100 10100100 10100100 01000001 Shl 4) + 00000000 00000000 00000000 00000000) XOR (10110100 10100100 10100100 01000001 + SUM) XOR ( (10110100 10100100 10100100 01000001 Shr 5) + 00000000 00000000 00000000 00000000 ) R1 = 01110010 01001011 11011011 11110111 (Biner) R1 = 114 75 219 247 (Decimal) R1 = r K Û ÷ (ASCII) Round 2 : SUM = 2 X (2654435770) L2 = L1 + ( (R1 Shl 4) + K[0] ) XOR ( R1 + SUM ) XOR ( (R1 Shr 5) + K[1] ) L2 = 10110100 10100100 10100100 01000001 + ( (01110010 01001011 11011011 11110111 Shl 4) + 01100001 01100010 01100011 00000000) XOR ( 01110010 01001011 11011011 11110111 + SUM) XOR ( (01110010 01001011 11011011 11110111 Shr 5) + 00000000 00000000 00000000 00000000 ) L2 = 11111010 01000100 10011011 00100101 (Biner) L2 = 250 68 155 37 (Decimal) L1 = ú D › % (ASCII) R2 = R1 + ( (L2 Shl 4) + K[2] ) XOR ( L2 + SUM ) XOR ( (L2 Shr 5) + K[3] ) R2 = 01110010 01001011 11011011 11110111 + ( (11111010 01000100 10011011 00100101 Shl 4) + 00000000 00000000 00000000 00000000) XOR (11111010 01000100 10011011 00100101 + SUM) XOR ( (11111010 01000100 10011011 00100101 Shr 5) + 00000000 00000000 00000000 00000000 ) R2 = 100000001 10011000 01101001 01101010 (Biner) R2 = 129 152 105 106 (Decimal) 5 R2 = • ˜ i j (ASCII) Penghitungan sampai round 32, akan diperoleh L31 dan R31 ciphertext sebagai berikut: Ciphertext: Š ð ß Æ " z š ³ (138 - 240 - 223 - 198 - 34 - 122 - 154 - 179) II.A. Dekripsi TEA : Ciphertext : ŠðßÆ"zš³ L0 : ŠðßÆ (138-240-223-198)d R0 : "zš³ (34-122-154-179)d (10001010 11110000 11011111 11000110)b (00100010 01111010 10011010 10110011)b Kunci : abc Key[0] : abcKey[1] : - - - Key[2] : - - - Key[3] : - - - - (01100001 01100010 01100011 00000000)b (00000000 00000000 00000000 00000000)b (00000000 00000000 00000000 00000000)b (00000000 00000000 00000000 00000000)b (97-98-99-0) d (0) d (0) d (0) d Round 1 : SUM = 32 X (2654435770) R1 = R0 – ( (L0 Shl 4) + k[2]) XOR (L0+SUM) XOR ((L0 Shr 5) + k[3]) ) R1 = 00100010 01111010 10011010 10110011 + ( (10001010 11110000 11011111 11000110 Shl 4) + 00000000 00000000 00000000 00000000) XOR (10001010 11110000 11011111 11000110 + SUM ) XOR ( (10001010 11110000 11011111 11000110 Shr 5) + 00000000 00000000 00000000 00000000 ) R1 = 01010100 00100010 10011111 01000111 (Biner) R1 = 84 34 159 71 (Decimal) R1 = T » Ÿ G (ASCII) L1 = L0 – ( (R1 Shl 4) + k[0]) XOR (R1+SUM) XOR ((R1 Shr 5) + k[1]) ) L1 = 10001010 11110000 11011111 11000110 + ( (01010100 00100010 10011111 01000111 Shl 4) + 01100001 01100010 01100011 00000000 ) XOR (01010100 00100010 10011111 01000111 + SUM) XOR ( (01010100 00100010 10011111 01000111 Shr 5) + 00000000 00000000 00000000 00000000 ) L1 = 10111101 10100001 11110000 11011011 (Biner) L1 = 189 161 240 219 (Decimal) ½ ¡ ð Û (ASCII) L1 = Round 2 : SUM = 31 X (2654435770) R2 = R1 – ( (L1 Shl 4) + k[2]) XOR (L1+SUM) XOR ((L1 Shr 5) + k[3]) ) R2 = 01010100 00100010 10011111 01000111 + ( (10111101 10100001 11110000 11011011 Shl 4) + 00000000 00000000 00000000 00000000 ) XOR (10111101 10100001 11110000 11011011 + SUM ) XOR ( (10111101 10100001 11110000 11011011 Shr 5) + 00000000 00000000 00000000 00000000 ) R2 = 10011101 11111111 10000010 10011010 (Biner) R2 = 157 255 130 154 (Decimal) R2 = • ÿ ‚ š (ASCII) L2 = L1 – ( (R2 Shl 4) + k[0]) XOR (R2+SUM) XOR ((R2 Shr 5) + k[1]) ) L2 = 10111101 10100001 11110000 11011011 + ( (10011101 11111111 10000010 10011010 Shl 4) + 01100001 01100010 01100011 00000000 ) XOR (10011101 11111111 10000010 10011010 + SUM) XOR ( (10011101 11111111 10000010 10011010 Shr 5) + 00000000 00000000 00000000 00000000 ) L2 = 01011110 11110111 11110001 00011110 (Biner) 94 247 241 30 (Decimal) L2 = L2 = ^ ÷ ñ (ASCII) Pada akhir penghitungan dekripsi TEA sebanyak 32 round ini diperoleh ciphertext sebagai berikut : “ SBAA “. II.B. Dekripsi Vigènere : Ciphertext : SBAA Kunci : abc Kode ASCII Ciphertext : 83 – 66 – 65 – 65 Kode ASCII Ciphertext - 65 (Diubah dlm skala 0-25) Kode ASCII Kunci : 18 - 1 - 0 - 0 : 0 - 1 – 2 - 0 6 Kode ASCII Ciphertext - Kunci (Ci-Ki mod(26)) : 18 – 0 - 25 - 0 Hasil Enkripsi VIGÈNERE : “saya” III.4. Image Steganografi Contoh kita mempunyai nilai titik-titik pixel bitmap 24 bit sebagai berikut: Titik (0,0) (01100101 11001001 11001001) Titik (0,1) (00100111 11101001 11001010) Titik (0,2) (00100111 11001000 11101001) Titik (0,3) (11001000 00100111 10101001) Titik (0,4) (00101110 11101001 11001010) Titik (0,5) (10100111 11000000 11101101) Titik (0,6) (11001000 00100011 11101001) Titik (0,7) (00100111 11101001 11001001) Kita akan menyisipkan huruf “Z” (90) representasi biner adalah 01011010 : Titik (0,0) (01100100 11001001 11001001) Titik (0,1) (00100111 11101001 11001010) Titik (0,2) (00100110 11001000 11101001) Titik (0,3) (11001001 00100111 10101001) Titik (0,4) (00101111 11101001 11001010) Titik (0,5) (10100110 11000000 11101101) 00100011 11101001) Titik (0,6) (11001001 Titik (0,7) (00100110 11101001 11001001) Gambar 3.1. Tampilan Halaman Enkripsi Gambar 3.2. Halaman encode Steganografi Gambar 3.3. Halaman Decode Steganografi 7 IV. Kesimpulan 1. 2. 3. 4. 5. Kriptografi merupakan ilmu mengacak pesan, sedangkan Steganografi merupakan ilmu menyembunyikan informasi di balik informasi lain. Jenis informasi yang disembunyikan dan Medianya bermacam-macam seperti menyembunyikan pesan teks di dalam gambar Bmp. Kriptografi Klasik Vigenere (mode teks) dan Kriptografi Modern TEA (mode bit) dapat digabungkan. Teknik Kriptografi dan Steganografi dapat diintegrasikan. Stego Image yang dihasilkan Program Aplikasi dengan gambar inputnya secara kasat mata tidak terdapat perbedaan, jadi teknik Steganografi yang digunakan efektif. Gabungan Kriptografi dan Steganografi menghasilkan tingkat keamanan yang cukup tinggi. V. DAFTAR PUSTAKA 1. Agus J. Alam. M. 2000. Belajar Sendiri Borland Delphi 5.0 Jakarta : PT Elex 2. 3. 4. 5. 6. 7. Media Komputindo Kelompok Gramedia. Cantu, Marco. 1999, Mastering Delphi 5. San Fransisco, United States : Sybex. Pranata, Antony. 1997. Pemograman Borland Delphi. Yogyakarta : Andi. Munir, Rinaldi. 2006. Kriptografi. Bandung : Informatika. Johnson, Neil F. 1998. Exploring Steganography : Seeing the Unseen. George Mason University : Dep. Of Information and Software System. Roger M. Needham, David J. Wheeler. 1997. TEA (Tiny Encryption Algorithm) Extensions Technical report. University of Cambridge: Computer Laboratory. Andem , Vikram Reddy. 2003. A Cryptanalysis Of The Tiny Encryption Algorithm. University Of Alabama : Department Of Computer Science. 8