Perancangan Sistem Teknik Pemecahan Kunci Algoritma Rivest Shamir Adleman (Rsa) Dengan Metode Kraitchik

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