BAB III ANALISA DAN PERANCANGAN
3.1
Analisis Sistem Analisis sistem merupakan tahap melakukannya penjelasan sistem kedalam bentuk yang
lebih sederhana untuk dapat mengidentifikasi dan mengevaluasi permasalahan yang ada pada sistem dan kebutuhan apa saja yang diperlukan sehingga dapat dilakukan perbaikan pada system nantinya. 3.2
Analisis Masalah Dengan mencari masalah yang ada pada sebuah sistem, hal ini dapat membantu untuk
menganalisis sistem yang akan dikembangkan sehingga tujuan dari sistem tersebut dapat tercapai. Masalah yang akan dikembangkan oleh penulis adalah bagaimana mengamankan data atau informasi yang sangat rahasia sehingga tidak dapat diketahui oleh pihak lain yang tidak bersangkutan. 3.3
Analisis Persyaratan (Requirement Analysis) Analisis persyaratan terdiri atas dua bagian yaitu analisis fungsional dan analisis non-
fungsional. 3.3.1 Analisis Fungsional Analisis fungsional dibutuhkan untuk mengetahui hal-hal yang dapat dilakukan oleh sistem. Berikut merupakan persyaratan yang harus dimiliki oleh sistem. 1. Sistem harus dapat melakukan enkripsi pesan dengan menggunakan Tiny Encryption Algorithm, kemudian menyisipkan pesan tersebut ke dalam sebuah citra dengan algoritma Least Significant Bit. 2. Sistem harus dapat mengembalikan pesan seperti bentuk awal saat dilakukan dekripsi pesan. 3.3.2 Analisis Non-Fungsional Beberapa hal yang meliputi persyaratan non-fungsional adalah sebagai berikut:
19
http://digilib.mercubuana.ac.id/
1. Performa Sebuah sistem yang dibangun harus dapat menunjukkan hasil proses kombinasi antara TEA dan Steganografi, dan dapat diekstraksi kembali yang berupa pesan dan citra asli. 2. Mudah Digunakan Sistem yang dibangun haruslah sederhana agar mudah dioperasikan oleh pengguna (user). 3. Hemat Biaya Tidak membutuhkan perangkat tambahan yang mengeluarkan biaya. 4. Dokumentasi Sistem yang dibangun harus dapat menampilkan hasil pemrosesan yang dilakukan. 5. Manajemen Kualitas Sistem yang dibangun harus berkualitas, baik dalam tampilan maupun penggunaannya. 6. Kontrol Sistem yang dibangun memiliki kontrol berupa enable dan disable, yaitu pada saat memulai sistem harus terlebih dahulu menginput key enkripsi, sedangkan proses penyisipan dalam keadaan tidak aktif. Untuk proses pengekstrakan, terlebih dahulu menginput stego-image, sedangkan proses dekripsi di-disable-kan. 3.4
Implementasi Tiny Encryptions Algorithm Tiny Encryptions Algorithm (TEA) merupakan algoritma yang mengguakan kunci simetris,
dengan suatu plaintext yang berjumlah 64 bit kemudian dibagi menjadi 2 blok, yaitu blok kiri dan blok kanan, setiap blok berjumlah 32 bit. Kemudian memiliki proses pembentukan kunci algoritma TEA yaitu kunci yang berjumlah 128 bit dibagi menjadi 4 blok, masing-masing setiap blok berjumlah 32 bit. TEA berbasiskan dengan jaringan fiestel dan memiliki 32 kali putaran (1 kali putaran memiliki 2 round). Flowchart enkripsi dapat dilihat pada gambar 3.1
20
http://digilib.mercubuana.ac.id/
Gambar 3.1 Flowchart Enkripsi TEA Sebagai contoh implementasi dari algoritma Tiny Encryption Algorithm pada kasus berikut ini. Plaintext
: EZADITYA
Key
: Ezaditya28111994
Plaintext akan dibagi menjadi 2 blok yaitu kedalam blok A dan blok B : A = EZAD B = ITYA
21
http://digilib.mercubuana.ac.id/
Kemudian Key = 128 bit, dibagi menjadi 4 blok masing- masing 32 bit : K[0] = Ezad K[1] = itya K[2] = 2811 K[3] = 1994 Plaintext diubah menjadi kode ASCII, kemudian diubah ke biner EZADITYA E
= 69
= 01000101
Z
= 90
= 01011010
A
= 65
= 01000001
D
= 68
= 01000100
I
= 73
= 01001001
T
= 84
= 01010100
Y
= 89
= 01011001
A
= 65
= 01000001
Key diubah menjadi kode ASCII, kemudian ke biner E
= 69
= 01000101
z
= 122 = 01111010
a
= 97
d
= 100 = 01100100
i
= 105 = 01101001
t
= 116 = 01110100
y
= 121 = 01111001
a
= 97
= 01100001
2
= 50
= 00110010
8
= 56
= 00111000
1
= 49
= 00110001
1
= 49
= 00110001
= 01100001
22
http://digilib.mercubuana.ac.id/
1
= 49
= 00110001
9
= 57
= 00111001
9
= 57
= 00111001
4
= 52
= 00110100
Biner plaintext digabungkan dan menghasilkan bentuk seperti ini : A(r) = 01000101010110100100000101000100 B(l) = 01001001010101000101100101000001 Biner key digabungkan sehingga menghasilkan bentuk seperti ini : K[0] = 01000101011110100110000101100100 K[1] = 01101001011101000111100101100001 K[2] = 00110010001110000011000100110001 K[3] = 00110001001110010011100100110100 Plaintext mengalami pergeseran bit ke kiri sebanyak 4 bit kemudian 5 bit pergeseran ke kanan. A(r)
= 01000101010110100100000101000100
A(kiri)
= 01010101101001000001010001000100
A(kanan)
= 00100010101011010010000010100010
A(kiri) = ditambah dengan K[0] : A(kiri)
= 01010101101001000001010001000100
K[0]
= 01000101011110100110000101100100
AL(K[0])
= 01010101111111100111010101100100
A(kanan) ditambah dengan K[1]: A(kanan)
= 00100010101011010010000010100010 23
http://digilib.mercubuana.ac.id/
K[1]
= 01101001011101000111100101100001
AR(K[1])
= 01101011111111010111100111100011
Plaintext awal A(r) ditambah dengan bilangan delta. Secara konstal nilai delta, diubah ke nilai Hexadesimal = 93E779B9 dan diubah ke biner dengan membagi 4 bagian : 9E = 10011110 37 = 00110111 79 = 01111001 B9 = 10111001 A(r)
= 01000101010110100100000101000100
Delta
= 10011110001101110111100110111001
Ar(Delta)
= 11011111011110110111100100111101
Kemudian di XOR kan dengan plaintext AL(K[0]); Ar(Delta)
= 11011111011110110111100100111101
AL(K[0])
= 01010101111111100111010101100100 10001010100001010000110001011001
Kemudian di XOR kan dengan plaintext AR(K[1]): = 10001010100001010000110001011001 AR(K[1])
= 01101011111111010111100111100011 11100001011110000111010110111010
Untuk Plaintext B(l) mengalami pergeseran bit ke kiri sebanyak 4 bit lalu 5 bit pergeseran ke kanan. B(l)
= 01001001010101000101100101000001
B(kiri)
= 10010101010001011001010000010100
B(kanan)
= 00101100101010100010110010100000
B(kiri) ditambah dengan K[2] : 24
http://digilib.mercubuana.ac.id/
B(kiri)
= 10010101010001011001010000010100
K[2]
= 00110010001110000011000100110001
BL(K[2])
= 10110111011111011011010100110101
B(kanan) ditambah dengan K[3]: B(kanan)
= 00101100101010100010110010100000
K[3]
= 00110001001110010011100100110100
BR(K[3])
= 00111101101110110011110110110100
Plaintext awal B(1) ditambah dengan bilangan delta. B(l)
= 01001001010101000101100101000001
Delta
= 10011110001101110111100110111001 11011111011101110111100111111001
Kemudian di XOR kan dengan BL(K[2]) 11011111011101110111100111111001 BL(K[2])
= 10110111011111011011010100110101 01101000000010101100110011001100
Kemudian di XOR kan dengan BR(K[3]) 01101000000010101100110011001100 BR(K[3])
= 00111101101110110011110110110100 01010101101100011111000101111000
Hasil Akhir
= 11100001011110000111010110111010
B(l)
= 01001001010101000101100101000001 11101001011111000111110111111011
Hasil Akhir
= 01010101101100011111000101111000
A(r)
= 01000101010110100100000101000100 01010101111110111111000101111100
B1 (L1)
A1 (R1)
25
http://digilib.mercubuana.ac.id/
Telah didapat proses hasil enkripsi dari Tiny Encryption Algorithm dengan 2 round (1 cycle) dengan hasil A1(L1) digabung denga B1(R1), namun proses enkripsi akan berakhir sampai 32 round (16 cycle), dimana setiap penyelesainnya setiap 2 round digunakan hasil cipher sebelumnya untuk melanjukan 2 round berikutnya. Hasil ciphertext dari kasus tersebut adalah D6FN§•* \¢Ù‹ó®¡È‰Pò«·)D©¢3ƒ®‰xxxxxxxxx Konsep pendekripsian dari Tiny Encryption Algorithm memiliki proses yang sama dengan enkripsi, perbedaannya pada penjumlahan Kunci yang terjadi setelah pergeseran bit. Pada saat dekripsi A(r) dilakukan pergeseran bit ke kiri sebanyak 4 bit maka ditambah K[1]. Kemudian setelah pergeseran bit ke kanan sebanyak 5 bit ditambah K[0]. Untuk dekripsi A(l) dilakukan pergeseran bit ke kiri sebanyak 4 bit maka ditambah K[3]. Kemudian setelah pergeseran bit ke kanan sebanyak 5 bit ditambah K[2].
3.5
Rancangan Sistem Program yang akan dibuat terdiri dari tiga buah Form, yaitu terdiri dari enkripsi dan
stegano, deskripsi dan ekstrak. Untuk dapat mengoperasikan aplikasi user harus terlebih dahulu melakukan enkripsi file dan memilih dokumen berupa text (.txt), setelah itu melakukan enkripsi yang diinput (plaintext) akan berubah menjadi chipertext yang selanjutnya akan di masukan pesan tersembunyi tersebut atau embedding ke dalam citra gambar. Output berupa gambar sebelum di sisipkan akan sama setelah disisipkan oleh pesan rahasia tersebut dengan kata lain, tidak ada yang berbeda dari citra gambar yang asli. Sedangkan untuk mengembalikan file yang sudah di embedding menjadi file asli yang gambar sebelum disisipkan, user juga dapat memilih menu Deskripsi dan Extract. Tapi untuk melihat gambar ada pesan atau tidak user harus dapat mamasukan kunci yang sama seperti mengenkrip pada step sebelumnya. Secara umum, rancangan program akan dilihat pada gambar 3.2
26
http://digilib.mercubuana.ac.id/
Gambar 3.2 Rancang Bangun Aplikasi 3.6
Rancangan Layar Rancangan layar sangat penting dalam membuat suatu program atau aplikasi, oleh karena
itu rancangan layar harus mudah dimengerti dan di pahami oleh user, agar dalam menggunakan program user merasa nyaman dalam mengoperasikannya sehingga tampilan layar dapat mempermudah user dan tidak mengalami kesulitan saat menggunakan program ini. Dalam program ini, akan digambarkan rancangan layar masing-masing menu, yaitu menu enkripsi dan stegano, menu dekripsi dan ekstrak. 3.6.1 Rancangan Layar Menu Enkripsi dan Stegano Berikut adalah rancangan layar pada Form menu Enkripsi dan Stegano. Untuk mengenkripsi file, user terlebih dahulu memilih file yang akan dienkripsi. Kemudian user harus memasukan password maksimal 16 karakter agar file dapat dienkripsi. Kemudian user dapat memasukan file gambar untuk disisipkan pesan yang telah dienkrip sebelumnya. Untuk lebih jelasnya dapat dilihat pada Gambar 3.3
27
http://digilib.mercubuana.ac.id/
Gambar 3.3 Rancangan Layar Enkripsi dan Stegano
3.6.2 Rancangan Layar Menu Deskripsi dan Ekstrak Berikut adalah rancangan layar pada form menu Deskripsi dan Ekstrak. Pada menu ini user dapat melihat pesan yang disisipkan sebelumnya atau membuka pesan yang telah disisipkan oleh citra gambar tersebut. User terlebih dahulu memilih gambar yang telah disisipkan sebelumnya. Kemudian user memasukan kunci yang sama untuk membuka pesan yang disisipkan pada gambar tersebut. Jika kunci yang dimasukan berbeda maka tidak akan tampil pesan yang sudah disisipkan. Untuk lebih jelasnya dapat dilihat pada gambar 3.4
Gambar 3.4 Rancangan Layar Menu Deskripsi dan Ekstrak 28
http://digilib.mercubuana.ac.id/
3.7
Flowchart Sistem Flowchart adalah representasi grafik dari langkah-langkah yang harus diikuti dalam
menyelesaikan suatu permasalahan yang terdiri atas sekumpulan simbol, dimana masing-masing simbol mempresentasikan suatu kegiatan tertentu. Flowchart diawali dengan penerimaan input, pemrosesan input dan diakhiri dengan penampilan output. Flowchart melukiskan suatu aliran kegiatan dari awal hingga akhir mengenai suatu langkah-langkah dalam penyelesaian suatu masalah. Masalah yang dihadapi tentunya masalah pemrograman. Sistem ini terdiri dari beberapa proses, yaitu proses enkripsi dan dekripsi dengan menggunakan algoritma Tiny Encryption Algorithm, dan proses ektraksi pemyembunyian data . 3.7.1 Flowchart Menu Enkripsi dan Stegano Flowchart menu enkripsi dan stegano ini merupakan alur jalanya proses dimana user bisa memilih file yang ingin di enkripsi atau menulis sendiri kata yang akan di enkripsi. Setelah berhasil mengenkrip user dapat memilih objek gambar untuk di sisipkan pesan yang sebelumnya sudah di enkripsi. Dapat dilihat pada gambar 3.7
29
http://digilib.mercubuana.ac.id/
Gambar 3.5 Flowchart Menu Enkripsi dan Stegano 3.7.2 Flowchart Menu Deskripsi dan Ekstrak Flowchart menu Deskripsi dibawah ini adalah alur jalanya proses pengambilan atau melihat pesan rahasia yang telah disisipkan pada citra gambar. Dapat dilihat pada Gambar 3.8
30
http://digilib.mercubuana.ac.id/
Gambar 3.6 Flowchart Menu Deskripsi dan Ekstrak Pesan 3.7.3 Flowchart Dekripsi Tiny Encyrptions Algorithm Dekripsi merupakan proses mengembalikan ciphertext menjadi plaintext dengan menjelaskan secara detail proses utama dekripsi TEA. Flowchart proses dekripsi dapat dilihat seperti Gambar 3.10 31
http://digilib.mercubuana.ac.id/
Gambar 3.7 Flowchart Dekripsi TEA
32
http://digilib.mercubuana.ac.id/
3.8
Pseudocode Pseudocode adalah penyajian algoritma agar mudah dipahami. Pseudocode bukan
terjemahan dari suatu bahasa pemrograman sehingga penulisanya tidak menggunakan gaya bahasa pemrograman tertentu (Amborowati 2007) 3.8.1 Pseudocode Proses Enkripsi Pseudocode untuk proses enkripsi pesan dengan menggunakan algoritma TEA. Pseudocode berikut merupakan proses utama dalam pengenkripsian pesan, yang menjelaskan bagaimana cara TEA membagi data inputan menjadi dua bagian, kemudian menambahkan delta dan key masing-masing sebanyak 1 round, dan proses akan berhenti sampai menampilkan ciphertext setelah 32 round. Pseudocode secara singkat dapat dituliskan sebagai berikut:
1. uint Ar -- > v[0] 2. uint Bl -- > v[1] 3. uint sum -- > 0 4. uint delta -- > 0x9e3779b9; 5. uint n -- > 32 6. while (n-- > 0) 7. { 8. sum -- > delta 9. Ar -- > (Bl << 4) + k[0] ^ Bl + sum ^ (Bl >> 5) + k[1] 10. Bl -- > (Ar << 4) + k[2] ^ Ar + sum ^ (Ar >> 5) + k[3] 11. } 12. v[0]-- > Ar 13. v[1]-- > Bl 14. Print Ar, Bl
33
http://digilib.mercubuana.ac.id/
3.8.2 Pseudocode Proses Dekripsi Proses pendekripsian dalam pseudocode mempunyai proses yang sama dalam enkripsi. Hanya proses pertukaran kunci yang memiliki perbedaan dalam mendekripsikan ciphertext sehingga menghasilkan plaintext. Berikut merupakan proses urutan langkah proses dekripsi data :
1. uint n -- > 32 2. uint sum 3. uint Ar -- > v[0] 4. uint Bl -- > v[1] 5. uint delta -- > 0x9e3779b9 6. sum -- > delta << 5 7. while (n-- > 0) 8. { 9. Bl -- > (Ar << 4) + k[2] ^ Ar + sum ^ (Ar >> 5) + k[3] 10. Ar -- > (Bl << 4) + k[0] ^ Bl + sum ^ (Bl >> 5) + k[1] 11. sum -- > delta 12. } 13. v[0] -- > Ar 14. v[1] -- > Bl 15. Print Ar, Bl
34
http://digilib.mercubuana.ac.id/