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
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
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
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 = 01100001 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
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]:
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] :
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 B1 (L1) Hasil Akhir = 01010101101100011111000101111000 A(r) = 01000101010110100100000101000100 01010101111110111111000101111100 A1 (R1)
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
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.
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
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
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
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
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
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