kriptografi dan stenografi menggunakan

advertisement
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
Download