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