3.2. Perancangan Sistem
Tahap perancangan sistem dilakukan untuk memberikan gambaran yang jelas dan rancang bangun yang lengkap, menggambarkan bagaimana suatu sistem dibentuk dan
merupakan penggambaran, perencanaan dan pembuatan sketsa atau pengaturan dari beberapa elemen yang terpisah ke dalam satu kesatuan yang utuh dan berfungsi.
Sistem akan dikembangkan menggunakan teknologi
Ms. Visual C
yang menerapkan paradigma pengembangan sistem berorientasi objek, oleh karena itu
dalam proses perancangan ini akan digunakan
Unified Modelling Language
UML. Diagram UML yang digunakan adalah
use case diagram
dan
activity diagram
.
3.2.1. Use case diagram
Use case diagram
menggambarkan interaksi antara sistem dan pengguna atau sistem lain di luar sistem tersebut yaitu siapa pengguna sistem itu dan dengan cara
bagaimana pengguna berharap berinteraksi dengan sistem.
Pemecahan Kunci RSA
Sistem Pemecahan Kunci RSA Metode Kraitchik
Dekripsi Ciphertext RSA
Pengguna Menghitung Kunci
Privat d Pemfaktoran n
Metode Kraitchik «extends»
«uses» Periksa Kunci
Publik e,n
Dekripsi ciphertext--plaintext
Simpan plaintext «uses»
Ambil ciphertext direktori penyimpanan
«uses» «uses»
Periksa ciphertext n,d
«uses»
«uses» «uses»
Gambar 3.2
Use case diagram
Sistem Pemecahan Kunci RSA Metode
Kraitchik
Gambar 3.2 menunjukkan interaksi antara pengguna dan Sistem Pemecahan Kunci RSA. Ada dua proses yang dilakukan sistem yaitu pemecahan kunci RSA dan dekripsi
Universitas Sumatera Utara
RSA. Deskripsi lengkap diuraikan pada tabel narasi
use case
Pemecahan Tabel 3.3 dan Tabel 3.4.
Tabel 3.3 Narasi
Use Case
Pemecahan Kunci RSA Use case name
Pemecahan kunci RSA Scenario
Memecahkan kunci privat
d
Brief description
Pengguna meng-
input
pasangan kunci publik
e
,
n
. Sistem akan melakukan pemfaktoran untuk mendapatkan faktor kunci publik
n
dan dihitung secara matematis yang menghasilkan
output
berupa kunci privat
d
Actors Pengguna
Precondition Pengguna telah memperoleh pasangan kunci publik
e
,
n
Postcondition Kunci privat
d
terpecahkan dan ditampilkan Flow of events
Actors System
1. Pengguna
meng-
input
pasangan kunci publik
e
,
n
2. Sistem
memeriksa
input
pasangan kunci publik
e
,
n
3. Sistem memfaktorkan kunci
publik
n
menjadi faktor-
faktornya
p
,
q
menggunakan metode
Kraitchik
4. Sistem menghitung kunci privat
d
menggunakan faktor-faktornya
p
,
q
Exception condition
1. Jika pasangan kunci publik
e
,
n
belum di-
input
: Tanyakan kepada pengguna
2. Jika pasangan kunci publik
e
,
n
tidak berformat
BigInteger
: Tanyakan kepada pengguna
Universitas Sumatera Utara
Tabel 3.4 Narasi
Use Case
Dekripsi RSA Use case name
Dekripsi RSA Scenario
Dekripsi
ciphertext
menjadi
plaintext
Brief description
Pengguna meng-
input
pasangan kunci privat
d, n
dan
ciphertext
format .doc dan .txt, kemudian sistem melakukan dekripsi dengan kunci privat tersebut terhadap
ciphertext
menjadi plaintext
Actors Pengguna
Precondition Pengguna telah memperoleh pasangan kunci privat
d, n
Postcondition Memperoleh
plaintext
format .doc dan .txt Flow of events
Actors System
1. Pengguna
meng-
input ciphertext
format .doc dan .txt dari direktori
penyimpanan 2.
Sistem meng-
input
pasangan kunci privat
d, n
3. Sistem
memeriksa
input
pasangan kunci privat
d, n
dan
ciphertext
format .doc dan .txt 4.
Sistem melakukan
dekripsi terhadap
ciphertext
format .doc dan .txt dengan pasangan kunci
privat
d
,
n
5. Sistem menyimpan
plaintext
pada direktori
penyimpanan dengan format .doc dan .txt
Exception condition
1. Jika pasangan kunci publik
e
,
n
dan
ciphertext
belum di-
input
: Tanyakan kepada pengguna 2.
Jika pasangan kunci publik
e
,
n
tidak berformat
BigInteger
: Tanyakan kepada pengguna
3. Jika
ciphertext
tidak berformat .doc dan .txt: Tanyakan kepada pengguna
3.2.2. Activity diagram
Activity diagram
berfungsi untuk menjelaskan lebih detil
use case
, menjelaskan
bussiness rule
yang kompleks dan menjelaskan algoritma yang kompleks.
Activity
Universitas Sumatera Utara
diagram
untuk
use case
Pemecahan Kunci RSA dan
use case
Dekripsi RSA ditunjukkan pada Gambar 3.3 dan Gambar 3.4.
Halaman Utama
Input kunci publik n Periksa n pada textbox
Tekan tombol Faktorkan
Tampilkan dialog, Minta input Pemfaktoran n metode Kraitchik
Tampilkan p,q Waktu pemfaktoran Hitung kunci privat d
Tampilkan kunci publikn,e kunci privatn,d Buka aplikasi
Pengguna Sistem
Tidak ada Ada
Pilih opsi Pemecahan Kunci RSA Tampilkan window Pemecahan Kunci RSA
Tekan tombol Hitung
Gambar 3.3
Activity diagram
untuk
use case
Pemecahan Kunci RSA
Universitas Sumatera Utara
Halaman Utama
Input kunci publik n
Periksa d,n,ciphertext Tekan tombol Dekripsi Simpan
Tampilkan dialog, Minta input Proses dekripsi
Buka aplikasi
Pengguna Sistem
Tidak ada Ada
Pilih opsi Dekripsi RSA Tampilkan window Dekripsi RSA
Input kunci privat d Input file ciphertext
Tampilkan Open File Dialog Ambil file .txt atau .doc
Simpan file plaintext .txt atau .doc
Gambar 3.4
Activity diagram
untuk
use case
Dekripsi RSA
3.3.
Flowchart
Flowchart
diagram alir
adalah simbol-simbol
yang digunakan
untuk menggambarkan sebuah pernyataan logika pemrograman serta aliran logika suatu
prosedur dan proses dari pemecahan masalah yang ditunjukkan dengan arah panah Zarlis Handrizal 2010. Berikut ini akan dijelaskan beberapa
flowchart
dari proses yang berjalan pada Sistem Pemecahan Kunci RSA Metode
Kraitchik
.
Universitas Sumatera Utara
3.3.1. Flowchart pemecahan kunci RSA metode Kraitchik
Start Start
Input : kunci
publik n Input
: kunci publik n
Inisialisasi k = 1 Hitung x = sqrtn
Inisialisasi k = 1 Hitung x = sqrtn
x = x + 1 x = x + 1
Apakah x2
– kn = akar sempurna AND x2
– kn
≠
Apakah x2
– kn = akar sempurna AND x2
– kn
≠
No
Apakah x + y - k n
≠
0 AND x- y - k n
≠
Apakah x + y - k n
≠
0 AND x- y - k n
≠
Hitung y = Sqrtx2 - k N
Hitung y = Sqrtx2 - k N
Yes
k = k + 1 k = k + 1
No
Hitung p = x + yk
q = x - y Hitung
p = x + yk q = x - y
Yes
Apakah 0 p n
AND 0 q n Apakah
0 p n AND 0 q n
End End
Output: Faktor kunci
p,q Output:
Faktor kunci p,q
Yes No
Gambar 3.5
Flowchart
pemfaktoran metode
Kraitchik
Universitas Sumatera Utara
Keterangan:
Gambar 3.5 menunjukkan gambaran proses pemecahan kunci RSA dengan pemfaktoran metode
Kraitchik
dan persamaan 1. Adapun proses yang bekerja antara
lain:
1.
Input
kunci publik
n
.
2. Hitung nilai
x
yang merupakan akar
n
, kemudian tentukan nilai
k
= 1
.
3. Lakukan pengulangan dengan meningkatkan nilai
x x
=
x
+ 1 hingga
x
2
–
k
.
n
adalah akar sempurna dan
x
2
–
k
.
n
≠ 0.
4. Hitunglah
y
= √
x
2
–
k
.
n
dan lakukan pengulangan dengan meningkatkan nilai
k k
=
k
+ 1 hingga
x
+
y
–
k
.
n
≠ 0 dan x – y –
k
.
n
≠ 0.
5.
Output
proses ini adalah nilai
p
dan
q
dengan menghitung
p
=
p
+
q k
dan
q
=
p
–
q
jika memenuhi syarat 0
p n
dan 0
q n
. Jika tidak memenuhi syarat
ulangi langkah 4.
3.3.2. Flowchart menghitung kunci publik dan kunci privat
Start Start
End End
Input : Bilangan
prima p,q Input
: Bilangan prima p,q
Inisialisasi e = 2 Hitung n = p.q
φn = p-1 q-1 Inisialisasi e = 2
Hitung n = p.q φn = p-1 q-1
Cek apakah GCD e,
φn = 1
Cek apakah GCD e,
φn = 1
Inisialisasi d = 1 Inisialisasi d = 1
Hitung d = e
-1
mod φn
Hitung d = e
-1
mod φn
Output :
Publik Key =e,n Privat Key d,n
Output :
Publik Key =e,n Privat Key d,n
Yes A
A
A A
e = e+1 e = e+1
No
Gambar 3.6
Flowchart
menghitung kunci publik dan kunci privat
Universitas Sumatera Utara
Keterangan:
Gambar 3.6 menunjukkan gambaran proses menghitung kunci privat
d
dengan pemfaktoran metode
Kraitchik
dan persamaan 1. Adapun proses yang bekerja antara
lain:
1.
Input
faktor kunci publik
n
yaitu
p
dan
q
.
2. Hitung ɸ
n
=
p
– 1.
q
– 1.
3. Pilih kunci publik
e
, yang relatif prima terhadap φ
n
4. Kemudian hitung kunci privat
d
dengan persamaan
e
.
d
≡ 1
mod
ɸ
n
yaitu melakukan
inverse
modulo terhadap
e
menjadi
d
=
e
-1
mod
ɸ
n
.
5.
Output
berupa kunci publik
e
,
n
dan kunci privat
d
,
n 3.3.3.
Flowchart dekripsi RSA
Start Start
End End
Input : Kunci privat
d,n, Ciphertext c Input
: Kunci privat d,n, Ciphertext c
m = c
d
mod n m
= c
d
mod n Output
: Pesan plaintext m
Output : Pesan
plaintext m
Gambar 3.7
Flowchart
proses dekripsi RSA
Keterangan:
Gambar 3.7 menunjukan gambaran proses dekripsi RSA. Adapun proses yang bekerja
antara lain:
1.
Ciphertext
didekripsi dengan rumus
m
=
c
d
mod n
menggunakan kunci privat
d
yang telah didapat sebelumnya
2. Dengan menggunakan pasangan kunci privat
d
,
n
dan rumus dekripsi
m = c
d
mod n
, sebuah
ciphertext
di ubah ke dalam bentuk
plaintext
-nya.
Output
dari proses ini merupakan sebuah pesan asli
plaintext
.
Universitas Sumatera Utara
3.4.
Pseudocode
3.4.1. Pseudocode pemecahan kunci RSA metode Kraitchik
Pseudocode
„Function Kraitchik‟ adalah implementasi metode
Kraitchik
yaitu memfaktorkan kunci publik
n
menjadi faktor perkaliannya atau faktor kunci
p
,
q
.
Function KraitchikBigInteger n {
found = false x = ceil Sqrtn
k = 1 while found
{ if IsSquarex x - k n x x - k n = 0
{ y = Sqrtx x - k n
if x + y - k n = 0 x - y - k n = 0 {
p = x + y k q = x - y
if 0 p p n 0 q q n found = true;
} k++
} x++
} return p,q
}
Gambar 3.8
Pseudocode
pemecahan kunci RSA metode
Kraitchik
Berikut ini adalah penjelasan tahapan
pseudocode
pemecahan kunci RSA metode Kraitchik pada Gambar 3.8:
1.
Input
kunci publik
n
yang merupakan bilangan bulat bertipe data
BigInteger
yaitu hasil perkalian dua bilangan prima
p
,
q
.
function KraitchikBigInteger n
2. Inisialisasi variabel
boolean found
= false, variabel
x
= √
n
yang dibulatkan dan variabel
k
=1.
found = false x = ceil Sqrtn
k = 1
3. Lakukan perulangan while sampai syarat variabel
found
=
true
terpenuhi.
while found
4. Periksa apakah
x
2
–
k
.
n
adalah akar sempurna dan
x
2
–
k
.
n
≠ 0. Jika terpenuhi lanjutkan dengan inisialisasi variabel
y
sama dengan √
x
2
–
k
.
n
kemudian lakukan tahap 5. Jika tidak terpenuhi maka
increment
nilai variabel
x
.
if IsSquarex x - k n x x - k n = 0 y = Sqrtx x - k n
x++
Universitas Sumatera Utara
5. Periksa apakah
x
+
y
–
k
.
n
≠ 0 dan x – y –
k
.
n
≠ 0. Jika terpenuhi maka hitung
p
=
p
+
q k
dan
q
=
p
–
q
. Jika tidak terpenuhi maka
increment
nillai variabel
k
dan lanjutkan ke tahap 6.
if x + y - k n = 0 x - y - k n = 0 p = x + y k
q = x – y
6. Periksa apakah 0
p n
dan 0
q n
. Jika terpenuhi maka inisialisasi variabel
boolean found
=
true
dan lanjutkan ke tahap 7. Jika tidak terpenuhi maka kembali ke tahap 5.
if 0 p p n 0 q q n found = true;
7. Output nilai variabel
p
dan
q
.
return p,q
3.4.2. Pseudocode menghitung kunci publik e
Pseudocode
„Function Publik_e‟ adalah implementasi penghitungan kunci publik
e
yaitu kunci publik
e
yang relatif prima terhadap ɸ
n
atau Gcd e, ɸ
n
= 1.
Function Publik_dBigInteger totien totien = p-1q-1 {
e = 2 while GCDtotien, E = 1
{ e++
}
return e
}
Gambar 3.9
Pseudocode
menghitung kunci publik
e
Berikut ini adalah penjelasan tahapan
pseudocode
menghitung kunci publik
e
pada Gambar 3.9:
1.
Input
bilangan ɸ
n
yang bertipe data BigInteger yaitu ɸ
n
=
p
– 1.
q
– 1.
Function Publik_dBigInteger totien totien = p-1q-1
2. Inisialisasi variabel
e
= 2 dan lakukan perulangan
while
yaitu
increment
nilai variabel
e
sampai syarat
e
relatif prima terhadap ɸ
n
terpenuhi.
e = 2 while GCDtotien, E = 1
{ e++
}
3. Output nilai variabel
e
.
Universitas Sumatera Utara
return e
3.4.3. Pseudocode menghitung kunci privat d
Pseudocode
„Function Privat_d‟ adalah implementasi penghitungan kunci publik d yaitu menghitung invers dari kunci publik
e
modulo ɸ
n d
=
e
-1
mod
ɸ
n
Invers modulo
extended Euclidean
menghitung
r
=
ax
+
by
dan
Gcd a
,
b
= 1
a
= kunci publik
e
dan
b
= ɸ
n
. Substitusikan
r
i
=
ax
i
+
by
i
ke dalam
r
i
=
r
i
-2
–
q
i
r
i-1
menjadi:
r
i
=
ax
i
-2
+
by
i
-2
–
q
i
ax
i-1
+
by
i-1
atau
r
i
=
a x
i
-2
–
q
i
x
i-1
+
b y
i
-2
–
q
i
y
i-1
Untuk selanjutnya hitung
x
i
=
x
i
-2
–
q
i
x
i-1
dan
y
i
=
y
i
-2
–
q
i
y
i-1
secara berulang sampai
r
i
= Gcd e
, ɸ
n
= 1, sehingga didapat kunci privat
d
=
x
i
.
Function Privat_dE,totien modInverse extended Euclidean {
x = 1, y = 0, xLast = 0, yLast = 1 a = E, b = totien
while a = 1 {
q = b a r = b a
c = xLast - q x d = yLast - q y
xLast = x, yLast = y x = c, y = d
b = a, a = r
} d = x + totien totien
return d }
Gambar 3.10
Pseudocode
menghitung kunci privat
d
Berikut ini adalah penjelasan
pseudocode
menghitung kunci privat
d
pada Gambar 3.10:
1. Input kunci publik e dan ɸn yang bertipe data
BigInteger
.
2. Inisialisasi variabel
x
= 1,
y
= 0 dan
xLast
= 0,
yLast
= 1, serta variabel
a
= kunci publik
e
dan
b
= ɸ
n
.
3. Lakukan perulangan
while
dengan menghitung
x
i
=
x
i
-2
–
q
i
x
i-1
dan
y
i
=
y
i
-2
–
q
i
y
i- 1
sampai
a
i
=
r
i
=
Gcd a
,
b
= 1. Jika terpenuhi lanjutkan ke tahap 4.
q = b a r = b a
c = xLast - q x
Universitas Sumatera Utara
d = yLast - q y xLast = x, yLast = y
x = c, y = d
b = a, a = r
4.
Output
nilai variabel
d
merupakan kunci privat
d
.
d = x + totien totien return d
3.4.4. Pseudocode dekripsi RSA
Pseudocode
„Function Dekripsi_RSA‟ adalah implementasi dekripsi RSA yaitu mendekripsikan ciphertext desimal ASCII dengan rumus
m
=
c
d
mod n
menggunakan kunci privat
d
.
Function Dekripsi_RSA c, d, n c = ciphertext read as line {
for i = 0; i c.Length; i++ {
m[i] = modExp c[i],d,n m[i] = c[i]
d
mod n }
convertTo_stringASCII m[i] return m
} Function modExp c,d,n
{
z = 1 for i = 1; i = d; i++
{ z = c.z mod n
} return z
}
Gambar 3.11
Pseudocode
Dekripsi RSA
Berikut ini adalah penjelasan tahapan
pseudocode
dekripsi RSA pada Gambar 3.11: 1.
Input
kunci publik
n
, kunci privat
d
dan
input
c
iphertext c
yang terdiri dari desimal ASCII sebagai baris
line
.
Function Dekripsi_RSA n, d, c c = ciphertext read as line
2. Lakukan pengulangan
for
untuk mendekripsi
ciphertext c
menjadi
plintext m
dengan rumus
m
=
c
d
mod n
.
for i = 0; i c.Length; i++ {
m[i] = c[i]
d
mod n }
Untuk menghitung
m
=
c
d
mod
n
dapat menggunakan function
modExp c
,
d
,
n
sebagai berikut:
Universitas Sumatera Utara
Function modExp c,d,n {
z = 1 for i = 1; i = d; i++
{ z = c.z mod n
} return z
}
3. Ubah
plaintext
yang masih dalam bentuk
desimal ASCII menjadi
plaintext m
dalam bentuk
string
atau karakter ASCII dan lakukan o
utput
berupa
plaintext
variabel
m
.
convertTo_stringASCII m[i] return m
3.5. Perancangan Antarmuka Sistem