Perancangan Sistem ANALISIS DAN PERANCANGAN

44

3.2. Perancangan Sistem

Perancangan sistem dilakukan untuk memberikan gambaran kepada sistem yang akan dibangun sehingga mempermudah dalam melakukan implementasi ataupun evaluasi. Sistem dirancang dengan membuat kerangka menu, flowchart, pseudocode, use- case diagram, activity diagram, sequence diagram dan perancangan antarmuka interface. 3.2.1. Kerangka menu Secara umum, sistem yang akan dibangun memiliki beberapa menu yang dikelompokkan ke dalam beberapa kategori. Adapun kerangka menu dari sistem yang akan dibangun adalah sebagai berikut. 1. Halaman Utama Merupakan tampilan awal saat sistem dijalankan. Pada halaman utama dari sistem akan menampilkan kunci publik jika terdapat kunci yang disimpan sebelumnya atau menampilkan tombol pembangkit kunci jika tidak ada kunci yang tersimpan. 2. Menu Fungsi Terdapat beberapa submenu pada menu fungsi, antara lain: a. Pembangkit kunci Menu untuk membangkitkan kunci kriptografi Rabin. Kunci dapat dibangkitkan secara acak dari sistem atau ditentukan oleh pengguna. Setelah kunci didapatkan, feature penyimpanan kunci bersifat opsional. Jika kunci ingin disimpan, kunci pada form akan diperiksa kembali sebelum disimpan untuk menghindari kesalahan kunci. b. Kosongkan database Berfungsi untuk menghapus kunci yang disimpan sebelumnya. Jika pengguna mengonfirmasi untuk menghapus kunci, maka database kunci akan dikosongkan. c. Enkripsi dan embed Pada menu ini, pengguna dapat melakukan proses enkripsi danatau embed. d. Ekstrak dan dekripsi Pada menu ini, pengguna dapat melakukan proses ekstrak danatau dekripsi. Universitas Sumatera Utara 45 e. Keluar Jika pengguna mengonfirmasi untuk keluar dari sistem, maka proses dari sistem akan selesai aplikasi ditutup. 3. Menu Tentang Menampilkan identitas singkat dari penulis dan judul dari penelitian. 4. Menu Bantuan Menampilkan panduan dalam menggunakan aplikasi. 3.2.2. Flowchart square and multiply Flowchart atau diagram alir merupakan gambar atau bagan yang memperlihatkan urutan dan hubungan antar proses dengan pernyataannya Zarlis Handrizal, 2008. Pada Gambar 3.5. berikut ini merupakan flowchart dari algoritma square and multiply left-to right variant Smart, 2004. Gambar 3.5. Flowchat Square and Multiply Left-to-Right Variant Universitas Sumatera Utara 46 Nilai index dari tiap bit pada b pada Gambar 3.5. yaitu index bit paling kanan bernilai t = jumlah bit – 1 dan index bit paling kiri bernilai 0. Berikut ini merupakan pseudocode dari algoritma square and multiply left-to-right variant Smart, 2004. 1. function samx,y,z: 2. b = toBinaryy 3. t = lengthb - 1 4. result = 1 5. for i = 0 to t: 6. result = resultresult mod z 7. ifb[i] = ’1’: result = resultx mod z 8. return result 3.2.3. Flowchart Miller-Rabin Gambar 3.6. merupakan flowchart dari algoritma Miller-Rabin. Berikut ini adalah pseudocode dari algoritma Miller-Rabin dengan n adalah bilangan bulat positif Cormen, et al. 2009. 1. function MillerRabinn: 2. ifn == 2: return “Prima” 3. ifn 3 or n mod 2 == 0: 4. return “Bukan Prima” 5. biner_n = toBinaryn-1 6. t = get_tbiner_n 7. u = get_ubiner_n, t 8. a = differentRandomn 9. for i = 0 to lengtha-1: 10. if Witnessa[i], u, n, t: 11. return “Bukan Prima” 12. return “Prima” 1. function Witnessa, u, n, t: 2. x = array 3. x[0] = sama, u, n 4. for i = 1 to t: 5. x[i] = samx[i-1],2,n 6. if x[i]==1 and x[i-1] ≠ 1 and x[i-1] ≠ n–1: 7. return True Universitas Sumatera Utara 47 8. if x[t] ≠ 1: 9. return True 10. return False 1. function get_tbiner_n: 2. t = 0 3. p = lengthbiner_n-1 4. for i = p downto 0: 5. ifbiner_n[i] == ‘0’: 6. t++ 7. ifbiner_n[i] == ‘1’: 8. break 9. return t 1. function get_ubiner_n, t: 2. bin_u = biner_n[0:lengthbiner_n-t] 3. u = toDecimalbin_u 4. return u 1. function differentRandomn: 2. x = array 3. for i = 0 to lengthstrn: 4. a = random2, n-1 5. while a in x: 6. a = random2, n-1 7. x[i] = a 8. return x Berikut ini merupakan penjelasan dari pseudocode di atas. Pseudocode differentRandomn berfungsi untuk menentukan bilangan acak yang berbeda antara satu dengan yang lain sebanyak jumlah dari digit bilangan n. Pseudocode get_tbiner_n berfungsi untuk menentukan nilai t yaitu jumlah bit 0 pada representasi biner bilangan n-1 sebelum digit 1 dari posisi bit paling kanan ke kiri. Pseudocode get_ubiner_n, t berfungsi untuk menentukan nilai u yaitu nilai desimal u yang memenuhi persamaan 2 t u = n-1. Jika fungsi Witnessa, u, n, t pada pseudocode MillerRabinn menghasilkan nilai benar, maka bilangan n merupakan bilangan bukan prima. Dan jika hasil fungsi Witnessa, u, n, t menghasilkan nilai salah, maka bilangan n merupakan bilangan prima. Universitas Sumatera Utara 48 Gambar 3.6. Flowchart dari A Algoritma Miller-Rabin dan B Fungsi Witness 3.2.4. Flowchart extended Euclidean Algoritma Extended Euclidean berfungsi untuk menentukan GCD dari dua buah bilangan a,b dan menemukan nilai x dan y pada persamaan xa+yb = GCDa,b Universitas Sumatera Utara 49 Lipschutz Lipson, 2007. Gambar 3.7. berikut ini merupakan flowchart dari algoritma Extended Euclidean Sadikin, 2012. Gambar 3.7. Flowchart Algoritma Extended Euclidean Berikut ini adalah pseudocode dari algoritma Extended Euclidean di mana pseudocode ini akan menghasilkan nilai GCDa,b, x, y Sadikin, 2012. 1. function extendedEuclideana,b: 2. A, B, x, x2, y, y2 = a, b, 1, 0, 0, 1 3. while B 0: 4. hasilBagi = AB 5. sisaBagi = A – hasilBagi B 6. A, B = B, sisaBagi 7. S = x – hasilBagi x2 8. x, x2 = x2, S; 9. T = y – hasilBagi y2 10. y, y2 = y2, T 11. return A, x, y Universitas Sumatera Utara 50 3.2.5. Flowchart chinese remainder theorem Chinese Remainder Theorem digunakan pada proses dekripsi algoritma Rabin, yaitu untuk menyelesaikan dua persamaan dengan modulus yang relatif prima. Gambar 3.8. berikut ini adalah flowchart dari algoritma Chinese Remainder Theorem yang digunakan pada sistem ini Rosen, 2012. Gambar 3.8. Flowchart Algoritma Chinese Remainder Theorem Berikut ini adalah pseudocode dari algoritma Chinese Remainder Theorem yang digunakan pada sistem ini Rosen, 2012. 1. function CRTmp, mq, p, q: 2. n = p q 3. M1 = n p 4. M2 = n q 5. gcd, y1, y2 = extendedEuclideanM1,M2 6. return mpM1y1, mqM2y2, n 3.2.6. Flowchart pembangkit kunci Gambar 3.9. berikut ini adalah flowchart dari pembangkit kunci untuk algoritma Rabin yang digunakan pada penelitian ini. Universitas Sumatera Utara 51 Gambar 3.9. Flowchart A Pemeriksaan Kunci dan B Pembangkit Kunci Secara Acak Pseudocode dari pembangkit kunci untuk algoritma Rabin terdiri dari dua bagian, yaitu fungsi cekKuncip, q dan bangkitkanKunci seperti sebagai berikut. 1. function cekKuncip, q: 2. ifp mod 4 == 3 and MillerRabin p and q mod 4 == 3 and MillerRabin q and p ≠ q and lengthstrpq ≤ 8: 3. return True 4. return False 1. function bangkitkanKunci: 2. syarat_tdk_terpenuhi = True 3. while syarat_tdk_terpenuhi: 4. p = random3,9999 Universitas Sumatera Utara 52 5. q = random3,9999 6. if cekKuncip, q: 7. syarat_tdk_terpenuhi = False 8. n = p q 9. return p, q, n Fungsi cekKuncip, q diperlukan untuk pemeriksaan kunci pada fungsi bangkitkanKunci dan jika pengguna melakukan input langsung. 3.2.7. Flowchart enkripsi Flowchart enkripsi terbagi atas dua bagian, yaitu fungsi dasar enkripsi yang berfungsi untuk melakukan enkripsi untuk satu nilai dan fungsi enkripsi yang berfungsi untuk melakukan enkripsi pesan perupa teks seperti yang terlihat pada Gambar 3.10. Fungsi ordP[i] berfungsi untuk mengubah karakter P[i] ke nilai desimal pada ASCII. Dalam hal ini, pesan yang dapat dienkripsi adalah pesan dengan karakter pada ASCII 8 bit seperti yang sudah dijelaskan pada batasan masalah penelitian ini. Berikut ini adalah pseudocode dari proses enkripsi. 1. function enkripsiP, n: 2. ifP n: 3. C = samP,2,n 4. return C 5. return False 1. function enkripsiPesanP, n: 2. C = list 3. for i = 0 to lengthP-1: 4. C.appendenkripsiordP[i], n 5. if C[i] == False: break 6. return C Universitas Sumatera Utara 53 Gambar 3.10. Flowchart A Fungsi Dasar Enkripsi dan B Fungsi Enkripsi Seperti yang terlihat pada Gambar 3.10. dan pseudocode, jika kunci publik yang digunakan untuk enkripsi lebih kecil atau sama dengan dengan nilai desimal dari karakter pada sebuah pesan, maka fungsi akan mengembalikan nilai salah false yang berarti kesalahan pada proses enkripsi atau proses enkripsi tidak dapat dilakukan. 3.2.8. Flowchart dekripsi Pada algoritma Rabin, terdapat empat hasil dekripsi dan penerima pesan harus menentukan pesan yang benar. Terdapat beberapa cara yang dapat dilakukan untuk dapat menentukan hasil dekripsi yang benar, seperti menggandakan pesan atau menggandakan nilai bit dari pesan sebelum dienkripsi dan hasil yang memiliki nilai yang berulang merupakan kemungkinan hasil dekripsi yang benar. Jika pesan yang dienkripsi jumlahnya sedikit, maka penerima pesan relatif mudah dalam menentukan hasil dekripsi. Namun jika pesan yang dienkripsi jumlahnya Universitas Sumatera Utara 54 banyak, maka akan timbul kesulitan bagi penerima pesan dalam menentukan hasil dekripsi. Penulis sudah mencoba melakukan enkripsi menggunakan kunci publik yang lebih besar dari 255 dan dekripsi untuk nilai yang mencakup karakter pada ASCII 8 bit 1 sampai dengan 255 dan memberikan pengalaman bahwa hasil dekripsi yang benar biasanya adalah nilai yang paling kecil dari keempat hasil dekripsi. Berdasarkan pengalaman tersebut, penulis melakukan modifikasi dalam proses dekripsi pada penelitian ini yaitu dengan melakukan proses autodekripsi penerima pesan tidak direpotkan dalam menentukan nilai dekripsi yang dianggap benar. Adapun flowchart dari proses dekripsi pada penelitian ini dapat dilihat pada Gambar 3.11. Berikut ini adalah pseudocode dari proses dekripsi pada penelitian ini. 1. function autodekripsiC, p, q: 2. mp = samC, p+14, p 3. mq = samC, q+14, q 4. x, y, n = CRTmp,mq,p,q 5. P1 = x + y mod n 6. P2 = x – y mod n 7. P3 = -x + y mod n 8. P4 = -x – y mod n 9. return minP1, P2, P3, P4 1. function dekripsiC, p, q: 2. Psn = [] 3. for i = 0 to lengthC-1: 4. Psn.appendchrautodekripsiC[i],p,q 5. return joinPsn Pada fungsi dekripsi pesan, fungsi chr akan mengubah nilai hasil autodekripsi ke bentuk karakter ASCII dan joinPsn berfungsi untuk membentuk karakter-karakter yang telah disimpan pada list menjadi string pesan. Universitas Sumatera Utara 55 Gambar 3.11. Flowchart A Fungsi Autodekripsi dan B Fungsi Dekripsi Pesan 3.2.9. Flowchart pemetaan titik hitam Pemetaan titik hitam digunakan dalam penyisipan pesan rahasia ke dalam citra dan berfungsi untuk mengetahui index atau posisi pixel yang dianggap hitam. Batas toleransi warna yang dianggap hitam mt adalah nilai maksimum dari warna yang dianggap hitam. Pada penelitian ini, nilai dari mt dapat ditetetapkan mulai dari 15 hingga sama dengan 255. Walaupun demikian, penulis menyarankan untuk memberikan nilai mt = 15 untuk hasil penyisipan embedding yang lebih baik. Langkah-langkah dalam pemetaan titik hitam digambarkan pada Gambar 3.12. berikut ini. Universitas Sumatera Utara 56 Gambar 3.12. Flowchart Pemetaan Titik Hitam Langkah-langkah dalam melakukan pemetaan titik hitam dalam bentuk pseudocode adalah seperti berikut. 1. function sequentialSearchpixel, mt: 2. htm = list 3. for i = 0 to lengthpixel-2: 4. ifpixel[i][0] = mt and pixel[i][1] = mt and pixel[i][2] = mt: 5. htm.appendi 6. return htm Nilai pixel berupa tuple, list ataupun larik yang berisi nilai R, G dan B dari sebuah pixel. Pencarian dilakukan dari index 0 hingga jumlah pixel dalam citra dikurang Universitas Sumatera Utara 57 dengan 2 karena pixel paling akhir dari citra akan digunakan sebagai penanda jika pada pixel sebelumnya merupakan pixel yang dianggap hitam. 3.2.10. Flowchart penyisipan Gambar 3.13. berikut ini adalah flowchart dari penyisipan pesan ke dalam citra. Gambar 3.13. Flowchart Penyisipan Universitas Sumatera Utara 58 Sebelum melakukan penyisipan, perlu dilakukan beberapa proses yaitu penguraian parsing nilai pesan rahasia, penyaringan filter citra untuk mengganti seluruh pixel dengan nilai RGB sama dengan 254 menjadi 255 dan dilanjutkan kepada proses pemetaan titik hitam. Tujuan dari proses parsing nilai pesan rahasia adalah untuk memperoleh nilai yang cukup untuk dikatakan hitam pada representasi warna RGB sehingga pada proses penggantian warna pada cover-image tidak begitu mempengaruhi kualitas warna pada citra. Alasan penulis memilih warna hitam adalah karena nilai representasi warna hitam pada RGB relatif lebih kecil daripada warna lainnya dan hal ini berhubungan dengan nilai hasil parsing suatu bilangan. Jika nilai hasil parsing menjadi relatif besar dan disisip pada pixel dengan nilai RGB yang relatif kecil atau sebaliknya, maka akan mempengaruhi kualitas citra tersebut berupa perbedaan warna yang semakin mencolok. Mempertimbangkan hal tersebut, penulis memilih untuk menghasilkan nilai parsing yang relatif kecil untuk mengganti nilai yang relatif kecil pula karena lebih mudah untuk membagi suatu bilangan menjadi kecil dan menggabungkannya kembali ke bentuk semula daripada memperbesar nilai suatu bilangan dalam rentang 0 hingga sama dengan 255 untuk menghasilkan representasi warna RGB yang tidak jauh berbeda. Nilai hasil parsing yang penulis tetapkan adalah bilangan dalam rentang dari 0 hingga sama dengan 15. Berdasarkan pengamatan penulis, nilai dari 0 hingga sama dengan 15 pada representasi warna RGB akan menghasilkan warna yang relatif terlihat sama hitam. Nilai 15 dipilih karena jumlah bit pada representasi binernya sebanyak 4 bit dan merupakan nilai maksimal untuk biner dengan panjang biner sebanyak 4 bit. Selain itu, rentang nilai 15 relatif tidak jauh terhadap nilai 0. Proses parsing dilakukan dengan membagi nilai biner dari suatu bilangan menjadi beberapa bagian. Berdasarkan percobaan yang penulis lakukan, panjang atau jumlah bit maksimal suatu ciphertext hasil enkripsi menggunakan algoritma Rabin dari nilai suatu pesan rahasia sesuai ASCII 8 bit dengan beberapa kunci publik sepanjang 64 bit yang berbeda-beda adalah sebanyak 16 bit. Dari percobaan tersebut, penulis menetapkan untuk menyamakan panjang bit dari tiap nilai yang akan disisip ke citra sepanjang 16 bit yaitu dengan menambahkan sejumlah bit 0 pada bit paling kiri hingga panjang bit nilai yang akan disisipkan tersebut menjadi 16 bit. Universitas Sumatera Utara 59 Setelah jumlah atau panjang bit dari nilai yang akan disisipkan sudah menjadi 16 bit, langkah selanjutnya yaitu membagi ke-16 bit tersebut menjadi empat bagian. Atau dengan kata lain, 16 bit menjadi empat buah biner dengan panjang 4 bit. Masing- masing bagian tersebut diubah ke dalam desimal sehingga akan diperoleh nilai antara dari 0 hingga sama dengan 15. Berikut ini adalah pseudocode dari proses penyisipan. 1. function sisipC, pixel, mt: 2. C = preSisipC 3. pixel = filterpixel 4. hitam = sequentialSearchpixel, mt 5. iflengthhitam ≥ lengthC: 6. i = 0 7. for j = 0 to lengthC-1: 8. pixel[hitam[j]][0] = C[i] 9. pixel[hitam[j]][1] = C[i+1] 10. pixel[hitam[j]][2] = C[i+2] 11. i = i + 3 12. iflengthC lengthpixel: 13. pixel[hitam[lengthC-1] + 1][0] = 254 14. pixel[hitam[lengthC-1] + 1][1] = 254 15. pixel[hitam[lengthC-1] + 1][2] = 254 16. else: return False 17. else: return False 18. return pixel 1. function filterpixel: 2. for i = 0 to lengthpixel-1: 3. ifpixel[i][0] == pixel[i][1] == pixel[i][2] == 254: 4. pixel[i][0] = 255 5. pixel[i][1] = 255 6. pixel[i][2] = 255 7. return pixel 1. function parsingC: 2. C = preParsingC 3. iflengthC == 16: 4. c1 = C[:4] 5. c2 = C[4:8] 6. c3 = C[8:12] Universitas Sumatera Utara 60 7. c4 = C[12:] 8. return c1, c2, c3, c4 1. function preParsingC: 2. b = toBinaryC 3. iflengthb 16: 4. selisih = 16 – lengthb 5. for j = 1 to selisih: 6. b = ‘0’ + b 7. return b 1. function preSisipC 2. d = list 3. for i = 0 to lengthC-1: 4. c1, c2, c3, c4 = parsingC[i] 5. d.appendtoDecimalc1 6. d.appendtoDecimalc2 7. d.appendtoDecimalc3 8. d.appendtoDecimalc4 9. whilelengthd mod 3 ≠ 0: 10. d.append0 11. return d Yang menjadi masukan input dari fungsi sisipC, pixel, mt adalah C yang merupakan sejumlah nilai desimal dari plaintext atau ciphertext yang disimpan dalam list, pixel yang merupakan kumpulan pixel dari citra dalam list dan mt yang merupakan batas toleransi pixel yang dianggap hitam. Jika yang akan disisip merupakan pesan asli plaintext, maka sebelum penguraian pesan dilakukan pengubahan tiap karakter pada pesan ke bentuk biner sesuai dengan kode ASCII 8 bit. Jika nilai yang ingin disisip merupakan hasil dari enkripsi, maka nilai ciphertext diubah menjadi bentuk biner. Pada fungsi preSisipC akan menambahkan nilai 0 pada akhir dari list jika panjang dari d tidak habis dibagi oleh 3. Karena satu pixel memiliki tiga buah nilai RGB, jika elemen terakhir dari d tidak dapat membentuk satu pixel misalnya, R-G-B diganti dengan d n -G-B, maka nilai pada G danatau B diganti dengan 0. Hal ini bertujuan agar pixel tersebut tetap terlihat hitam. Universitas Sumatera Utara 61 3.2.11. Flowchart ekstrak citra Pada proses ekstrak, suatu citra yang merupakan stego-image adalah citra yang hanya memiliki satu pixel dengan nilai RGB sama dengan 254. Proses ekstrak dalam bentuk flowchart dapat dilihat pada Gambar 3.14. berikut. Gambar 3.14. Flowchart Ekstrak Citra Universitas Sumatera Utara 62 Berikut ini adalah langkah-langkah dari proses ekstraksi suatu stego-image dalam bentuk pseudocode. 1. function ekstrakpixel: 2. ifpreEkstrakpixel: 3. C = get_Cpixel 4. temp = list 5. for i = 0 to lengthC: 6. temp.appendchrC[i] 7. return b 8. else: return “Tidak ada pesan rahasia” 1. function preEkstrakpixel: 2. penanda = 0 3. for i = 0 to lengthpixel-1: 4. R = pixel[i][0] 5. G = pixel[i][1] 6. B = pixel[i][2] 7. ifR == 254 and G == 254 and B == 254: 8. penanda++ 9. ifpenanda == 1 and pixel[0] ≠ 254,254,254: 10. return True 11. return False 1. function binerx: 2. b = toBinaryx 3. whilelengthb 4: 4. b = ‘0’ + b 5. return b 1. function get_Cpixel: 2. C = list 3. for i = 0 to lengthpixel-1: 4. ifpixel[i] == 254,254,254: break 5. else: 6. ifpixel[i][0] ≤ 15 and pixel[i][1] ≤ 15 and pixel[i][2] ≤ 15: 7. C.appendpixel[i][0] 8. C.appendpixel[i][1] 9. C.appendpixel[i][2] 10. iflengthC mod 4 ≠ 0: Universitas Sumatera Utara 63 11. for i = 0 to lengthC mod 4: 12. C.poplengthC-1 13. psn = list 14. for i = 0 to lengthC-1: 15. b1 = binerC[i] 16. b2 = binerC[i+1] 17. b3 = binerC[i+2] 18. b4 = binerC[i+3] 19. psn.appendtoDecimaljoinb1,b2,b3,b4 20. i = i + 4 21. return psn Fungsi chrC[i] pada ekstrakpixel berfungsi untuk mengubah nilai desimal menjadi karakter sesuai dengan ASCII. Fungsi preEkstrakpixel akan mengembalikan nilai true jika hanya terdapat satu pixel penanda atau pixel dengan nilai RGB sama dengan 254 pada citra dan pixel tersebut tidak berada pada awal dari pixel citra. Pada fungsi binerx, jika nilai biner dari x panjangnya lebih kecil dari 4, maka akan ditambahkan sejumlah bit 0 pada bit paling kiri dari nilai biner x tersebut sehingga akan menghasilkan nilai biner dengan panjang 4 bit. Fungsi get_Cpixel adalah untuk mendapatkan sejumlah nilai pesan rahasia yang ada pada citra yang disimpan dalam bentuk list. 3.2.12. Use-case diagram Diagram use-case digunakan untuk menggambarkan hubungan antara aktor dengan fungsi atau layanan yang disediakan oleh sistem Ambler, 2005. Aktor yang terlibat atau mempunyai interaksi dengan sistem pada penelitian ini adalah pengirim dan penerima. Hubungan antara aktor dengan fungsi use-case yang tersedia pada sistem dihubungkan oleh garis lurus menyatakan bahwa aktor tersebut melakukan inisiasi atau mengajukan permintaan terhadap suatu use-case. Hubungan yang menyatakan suatu use-case dapat dilaksanakan dengan syarat yaitu kelakuan yang harus terpenuhi include digambarkan oleh garis putus-putus dengan tanda panah terbuka. Pada hubungan include, yang menjadi syarat dari suatu use-case adalah use- case pada pangkal tanda panah. Hubungan yang menyatakan suatu use-case merupakan perluasan extend dari suatu use-case lainnya digambarkan oleh garis putus-putus dengan tanda panah terbuka. Use-case yang merupakan perluasan dari use-case lainnya Universitas Sumatera Utara 64 pada hubungan extend adalah use-case yang terletak pada pangkal dari tanda panah. Diagram use-case pada penelitian ini dapat dilihat pada Gambar 3.15. Gambar 3.15. Use-case Diagram Pada hubungan tipe relasi stereotype dari extend hanya berjalan pada kondisi tertentu. Pada Gambar 3.13, kondisi tertentu dari use-case bangkitkan kunci secara acak adalah jika pengguna pengirim mengalami kesulitan dalam menentukan kunci, kondisi tertentu dari use-case enkripsi pesan adalah jika pengirim ingin mengenkripsi terlebih dahulu sebelum melakukan penyisipan ke citra dan kondisi tertentu dari use- case dekripsi pesan adalah jika pesan rahasia hasil ekstrak citra merupakan ciphertext. Use-case narrative merupakan penjelasan dari setiap use-case yang ada pada diagram use-case. Tabel 3.3. sampai Tabel 3.10. berikut ini adalah use-case narrative dari diagram use-case pada Gambar 3.15. Universitas Sumatera Utara 65 Tabel 3.3. Use-Case Narrative Simpan Kunci Use-Case Name Simpan Kunci Design Scope Sistem black box Goal Level Subfunction Stakeholders and Interest Pengirim Pengguna: Ingin menyimpan kunci agar mudah melakukan dekripsi dan khawatir kunci terlupa. Precondition Kunci private sudah di-input. Minimal Guarantee Sistem dapat memeriksa kunci dan jika kunci tidak memenuhi syarat, maka sistem akan meminta pengguna untuk mengganti kunci dan kunci sebelumnya tidak dapat disimpan. Success Guarantee Kunci disimpan jika kunci yang di-input memenuhi persyaratan. Trigger Pengguna menekan tombol simpan. Main Success Scenario 1. Pengguna meng-input bilangan pada form sebagai kunci private. 2. Pengguna menekan tombol simpan. 3. Sistem melakukan pemeriksaan syarat dari kunci yang di-input. 4. Sistem menampilkan dialog bahwa kunci berhasil disimpan. Extensions 1a. Pengguna meng-input karakter yang bukan angka. 1a1. Sistem hanya merespon jika karakter yang di-input adalah angka. 2a. Tombol simpan ditekan tetapi terdapat kunci yang kosong. 2a1. Sistem akan menampilkan dialog peringatan bahwa kunci tidak boleh ada yang kosong. 4a. Kunci tidak memenuhi syarat. 4a1. Sistem akan menampilkan dialog kesalahan bahwa kunci yang di-input tidak memenuhi syarat dan pengguna harus mengganti kunci. Universitas Sumatera Utara 66 Tabel 3.4. Use-Case Narrative Menentukan Kunci Use-Case Name Menentukan Kunci Design Scope Sistem black box Goal Level User-goal Stakeholders and Interest Pengirim Pengguna: Ingin menentukan atau membangkitkan kunci yang dapat dipakai pada algoritma Rabin. Precondition Pengguna belum memiliki kunci atau mengganti kunci sebelumnya. Minimal Guarantee Sistem dapat menampilkan dialog bahwa kunci yang di- input pengguna tidak memenuhi syarat. Success Guarantee Sistem menampilkan kunci publik sebagai tanda bahwa kunci private yang di-input memenuhi syarat. Trigger Pengguna menekan tombol cek kunci. Main Success Scenario 1. Pengguna meng-input bilangan pada form sebagai kunci private. 2. Pengguna menekan tombol cek kunci. 3. Sistem melakukan pemeriksaan syarat dari kunci yang di-input. 4. Sistem menampilkan kunci publik pada form. Extensions 1a. Pengguna meng-input karakter yang bukan angka. 1a1. Sistem hanya merespon jika karakter yang di-input adalah angka. 2a. Tombol cek kunci ditekan tetapi terdapat kunci yang kosong. 2a1. Sistem akan menampilkan dialog peringatan bahwa kunci tidak boleh ada yang kosong. 4a. Kunci tidak memenuhi syarat. 4a1. Sistem akan menampilkan dialog kesalahan bahwa kunci yang di-input tidak memenuhi syarat, form kunci publik dikosongkan dan pengguna harus mengganti kunci. Tabel 3.5. Use-Case Narrative Bangkitkan Kunci Secara Acak Use-Case Name Bangkitkan Kunci Secara Acak Design Scope Sistem black box Goal Level User-goal Stakeholders and Interest Pengirim Pengguna: Ingin menentukan atau membangkitkan kunci secara acak karena sulit secara manual. Precondition - Minimal Guarantee - Success Guarantee Sistem menampilkan kunci yang sudah memenuhi syarat. Trigger Pengguna menekan tombol bangkitkan kunci. Main Success Scenario 1. Sistem menampilkan kunci private dan kunci publik pada form. Universitas Sumatera Utara 67 Tabel 3.6. Use-Case Narrative Sisip Pesan ke Citra I Use-Case Name Sisip Pesan ke Citra Design Scope Sistem black box Goal Level User-goal Stakeholders and Interest Pengirim Pengguna: Ingin menyembunyikan pesan rahasia ke dalam citra untuk hasil pengamanan yang lebih baik. Precondition Terdapat batas maksimum toleransi dan pesan rahasia berupa ciphertext atau plaintext pada form. Minimal Guarantee Sistem menampilkan dialog kegagalan bahwa pesan tidak dapat disisipkan ke citra. Success Guarantee Sistem menampilkan stego-image. Trigger Pengguna menekan tombol embed. Main Success Scenario 1. Form berisi pesan rahasia yang akan disisip ke citra. 2. Pengguna memilih cover-image. 3. Pengguna meng-input nilai batas toleransi warna yang dianggap hitam dan pengguna menekan tombol embed. 4. Sistem melakukan penyisipan pesan rahasia. 5. Sistem menampilkan stego-image. 6. Pengguna menyimpan stego-image. 7. Sistem menampilkan dialog stego-image berhasil disimpan. Extensions 1a. Pesan rahasia dapat berupa ciphertext atau plaintext. 1a1. Jika pesan rahasia adalah ciphertext, maka sistem akan mengubah tiap nilai ciphertext menjadi karakter sebelum disisip ke citra. Jika tidak dapat diubah ke karakter, maka tiap karakter dari nilai ciphertext akan disisip ke citra. 1a2. Jika pesan rahasia adalah plaintext, maka pesan rahasia siap untuk disisip ke citra pesan rahasia berupa teks dengan karakter yang terdapat pada ASCII 8 bit. 2a. Pengguna memilih citra atau berkas dengan format selain BMP. 2a1. Sistem akan menampilkan dialog peringatan bahwa berkas yang dipilih bukan format BMP dan pengguna harus memilih berkas kembali. 3a. Nilai batas toleransi yang di-input pengguna bukan berupa angka. 3a1. hanya merespon jika karakter yang di-input adalah angka. Universitas Sumatera Utara 68 Tabel 3.7. Use-Case Narrative Sisip Pesan ke Citra II Extensions 3b. Nilai batas toleransi yang di-input pengguna tidak sesuai rentang yang diperbolehkan. 3b1. Jika nilai batas toleransi tidak pada rentang dari 15 hingga sama dengan 255, maka sistem akan menampilkan dialog kesalahan dan pengguna harus meng-input kembali nilai batas toleransi. 3c. Tidak ada nilai batas toleransi yang di-input. 3c1. Sistem akan menampilkan dialog kesalahan berupa peringatan bahwa nilai batas toleransi tidak boleh kosong dan pengguna harus meng-input batas toleransi. 4a. Penyisipan tidak dapat dilakukan karena jumlah pixel berwarna hitam tidak cukup atau terdapat karakter yang tidak termasuk pada ASCII 8 bit pada pesan rahasia. 4a1. Sistem akan menampilkan dialog kesalahan berupa informasi kegagalan melakukan penyisipan. 6a. Pengguna menyimpan dengan format selain BMP. 6a1. Sistem akan menampilkan dialog kesalahan bahwa format berkas dari citra harus BMP dan pengguna harus menyimpan citra kembali. Universitas Sumatera Utara 69 Tabel 3.8. Use-Case Narrative Enkripsi Pesan Use-Case Name Enkripsi Pesan Design Scope Sistem black box Goal Level User-goal Stakeholders and Interest Pengirim Pengguna: Ingin melakukan enkripsi pesan agar pesan sulit dibaca. Precondition Terdapat plaintext dan kunci publik pada form. Minimal Guarantee Sistem menampilkan dialog kegagalan bahwa pesan tidak dapat dienkripsi. Success Guarantee Sistem menampilkan ciphertext. Trigger Pengguna menekan tombol enkripsi. Main Success Scenario 1. Form berisi plaintext. 2. Pengguna meng-input kunci publik dan menekan tombol enkripsi. 3. Sistem melakukan enkripsi pesan. 4. Sistem menampilkan ciphertext. 5. Pengguna menyimpan ciphertext. 6. Ciphertext disimpan. Extensions 1a. Pesan dapat berupa input langsung atau dari berkas. 1a1. Jika pengguna memilih berkas teks selain format .txt atau .doc, maka sistem akan menampilkan dialog kesalahan format berkas dan pengguna harus memilih berkas kembali. 1a2. Jika pada berkas memiliki karakter yang tidak terdapat pada ASCII 8 bit, maka karakter itu diabaikan atau diubah menjadi karakter ‘?’. 2a. Kunci publik belum di-input. 2a1. Sistem akan menampilkan dialog bahwa kunci publik belum di-input dan pengguna harus meng-input kunci publik terlebih dahulu. 2b. Pengguna meng-input karakter yang bukan angka. 2b1. Sistem hanya merespon jika karakter yang di-input adalah angka. 3a. Kunci publik tidak memenuhi syarat. 3a1. Sistem akan menampilkan dialog kesalahan melakukan enkripsi. 5a. Pengguna menyimpan dengan format selain .doc 5a1. Sistem akan menampilkan dialog bahwa teks harus disimpan dalam format .doc. Universitas Sumatera Utara 70 Tabel 3.9. Use-Case Narrative Ekstrak Citra Use-Case Name Ekstrak Citra Design Scope Sistem black box Goal Level User-goal Stakeholders and Interest Penerima Pengguna: Ingin mencoba mengekstrak sebuah citra untuk mendapatkan pesan rahasia. Precondition Terdapat citra yang akan diekstrak. Minimal Guarantee Sistem menampilkan dialog bahwa tidak ada pesan rahasia pada citra. Success Guarantee Sistem menampilkan pesan rahasia yang berupa plaintext atau ciphertext. Trigger Pengguna menekan tombol ekstrak. Main Success Scenario 1. Pengguna memilih citra. 2. Pengguna menekan tombol ekstrak. 3. Sistem melakukan ekstrak citra. 4. Sistem menampilkan pesan rahasia. Extensions 1a. Berkas yang dipilih tidak berformat BMP. 1a1. Sistem akan menampilkan dialog kesalahan format berkas dan pengguna harus memilih berkas kembali. 2a. Belum ada citra yang dipilih. 2a1. Sistem akan menampilkan dialog bahwa citra belum dipilih dan pengguna harus memilih citra terlebih dahulu. 2b. Citra bukan merupan stego-image. 2b1. Sistem akan menampilkan dialog bahwa tidak ada pesan rahasia pada citra. Universitas Sumatera Utara 71 Tabel 3.10. Use-Case Narrative Dekripsi Pesan Use-Case Name Dekripsi Pesan Design Scope Sistem black box Goal Level User-goal Stakeholders and Interest Penerima Pengguna: Ingin mendekripsi ciphertext untuk memperoleh pesan rahasia. Precondition Terdapat ciphertext berupa sejumlah nilai desimal yang dipisah dengan karakter koma dan kunci private pada form. Minimal Guarantee Sistem menampilkan dialog bahwa ciphertext tidak dapat didekripsi atau hasil dekripsi tidak sesuai dengan plaintext. Success Guarantee Sistem menampilkan plaintext. Trigger Pengguna menekan tombol dekripsi. Main Success Scenario 1. Form berisi ciphertext. 2. Pengguna meng-input kunci private atau menggunakan kunci yang tersimpan. 3. Pengguna menekan tombol dekripsi. 4. Sistem melakukan proses dekripsi pesan. 5. Sistem menampilkan plaintext yang benar. Extensions 2a. Kunci tidak ada dalam database. 2a1. Form kunci private akan dibiarkan kosong. 3a. Tidak ada kunci private pada form. 3a1. Sistem akan menampilkan dialog bahwa kunci private tidak terdapat pada form dan pengguna harus mengisi kunci private terlebih dahulu. 4a. Kunci private tidak sesuai. 4a1. Sistem akan menampilkan plaintext yang salah. 4b. Terjadi kesalahan dalam melakukan dekripsi. 4b1. Sistem akan menampilkan dialog bahwa proses dekripsi mengalami kegagalan. 3.2.13. Activity diagram Diagram aktivitas activity diagram menggambarkan proses bisnis atau urutan aktivitas dalam sebuah sistem Ambler, 2005. Gambar 3.16. adalah diagram aktivitas yang menggambarkan proses bisnis dari sistem yang akan dibuat. Universitas Sumatera Utara 72 Gambar 3.16. Activity Diagram 3.2.14. Sequence diagram Diagram sequence menggambarkan interaksi antar objek dan menggambarkan komunikasi antar objek-objek tersebut Ambler, 2005. Berikut ini adalah diagram sequence dari proses pembangkitan kunci yang dapat dilihat pada Gambar 3.17. Gambar 3.17. Sequence Diagram Pembangkitan Kunci Universitas Sumatera Utara 73 Sequence diagram proses enkripsi dan embed dapat dilihat pada Gambar 3.18. dan sequence diagram proses ekstrak dan dekripsi dapat dilihat pada Gambar 3.19. Gambar 3.18. Sequence Diagram Proses Enkripsi dan Embed Gambar 3.19. Sequence Diagram Proses Ekstrak dan Dekripsi 3.2.15. Perancangan antarmuka Tahap perancangan antarmuka bertujuan untuk memudahkan dalam proses implementasi dan diharapkan tampilan dari sistem yang dihasilkan menjadi user friendly. Perancangan antarmuka ini disesuaikan dengan kerangka menu seperti yang telah dituliskan sebelumnya. Universitas Sumatera Utara 74 1 Halaman Utama Tampilan dari halaman utama saat tidak ada kunci yang disimpan dapat dilihat pada Gambar 3.20. dan tampilan halaman utama saat ada kunci yang tersimpan dapat dilihat pada Gambar 3.21. berikut. Gambar 3.20. Tampilan Halaman Utama Tanpa Kunci Tersimpan Gambar 3.21. Tampilan Halaman Utama dengan Kunci Tersimpan 2 Form Pembangkit Kunci Jika form pembangkit kunci belum ditutup, maka pengguna tidak dapat berpindah ke form lainnya pada aplikasi. Tampilan dari form pembangkit kunci dapat dilihat pada Gambar 3.22. Universitas Sumatera Utara 75 Gambar 3.22. Tampilan Form Pembangkit Kunci 3 Form Enkripsi dan Embed Jika pengguna sudah memilih form enkripsi dan embed, maka pengguna dapat berpindah ke form lain selain form enkripsi dan embed pada aplikasi. Gambar 3.23. berikut ini adalah tampilan dari form enkripsi dan embed. Gambar 3.23. Tampilan Form Enkripsi dan Embed Universitas Sumatera Utara 76 4 Form Ekstrak dan Dekripsi Jika pengguna sudah memilih form ekstrak dan dekripsi, maka pengguna dapat berpindah ke form lain selain form ekstrak dan dekripsi pada aplikasi. Gambar 3.24. berikut ini adalah tampilan dari form ekstrak dan dekripsi. Gambar 3.24. Tampilan Form Ekstrak dan Dekripsi 5 Halaman Tentang Jika halaman tentang belum ditutup, maka pengguna tidak dapat berpindah ke form lainnya pada aplikasi. Tampilan dari halaman pembangkit kunci dapat dilihat pada Gambar 3.25. Gambar 3.25. Tampilan Halaman Tentang Universitas Sumatera Utara 77 6 Halaman Bantuan Jika pengguna sudah memilih halaman bantuan, maka pengguna dapat berpindah ke form lain selain halaman bantuan. Gambar 3.26. berikut ini adalah tampilan dari halaman bantuan. Gambar 3.26. Tampilan Halaman Bantuan 7 Dialog Dialog dibutuhkan sebagai respon atau umpan balik kepada pengguna. Terdapat empat bentuk dialog, yaitu dialog yang menampilkan informasi, dialog yang menampilkan pesan konfirmasi, dialog yang menampilkan pesan kesalahan dan dialog yang menampilkan pesan peringatan. Universitas Sumatera Utara

BAB 4 IMPLEMENTASI DAN PENGUJIAN