Analisis Dan Perancangan Sistem Autentikasi Pengguna Pada Web Menggunakan Metode Multiple-Key Rsa

(1)

METODE

MULTIPLE-KEY

RSA

SKRIPSI

FAUZANA S

091401031

PROGRAM STUDI S1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA


(2)

2


(3)

SKRIPSI

Diajukanuntukmelengkapitugasakhirdanmemenuhisyaratmemperoleh ijazahSarjanaIlmu Komputer

FAUZANA S 091401031

PROGRAM STUDI S1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN 2013


(4)

ii

PERSETUJUAN

Judul : ANALISIS DAN PERANCANGAN SISTEM

AUTENTIKASI PENGGUNA PADA WEB MENGGUNAKAN METODE

MULTIPLE-KEY RSA

Kategori : SKRIPSI

Nama : FAUZANA S

Nomor Induk Mahasiswa : 091401031

Program Studi : SARJANA (S1) ILMU KOMPUTER

Departemen : ILMU KOMPUTER

Fakultas : ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA Diluluskan di

Medan, 13 Juni 2013

Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

M. Andri Budiman, ST, M.Comp.Sc, MEM Maya Silvi Lydia, B.Sc, M.Sc

NIP.197510082008011011 NIP.197401272002121001

Diketahui/Disetujui oleh

Program Studi S1 Ilmu Komputer Ketua,

Dr. Poltak Sihombing, M.Kom NIP.196203171991031001


(5)

PERNYATAAN

ANALISIS DAN PERANCANGAN SISTEM AUTENTIKASI PENGGUNA PADA WEB MENGGUNAKAN METODE

MULTIPLE-KEY RSA

SKRIPSI

Saya menyatakan bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.

Medan, 12 Juni2013

Fauzana S 091401031


(6)

iv

PENGHARGAAN

Puji dan syukur kehadirat Allah SWT, yang hanya dengan rahmat dan izin-Nya penulis dapat menyelesaikan penyusunan skripsi ini, sebagai syarat untuk memperoleh gelar Sarjana Komputer, pada Program Studi S1 Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.

Ucapan terima kasih penulis sampaikan kepada:

1. Bapak Dr. Poltak Sihombing, M.Kom selaku Ketua Program Studi S1 Ilmu Komputer Universitas Sumatera Utara.

2. Ibu Maya Silvi Lydia, B.Sc, M.Sc selaku Sekretaris Program Studi

S1IlmuKomputer Universitas Sumatera Utara dan Dosen Pembimbing.

3. Bapak M. Andri Budiman, ST, M.Comp.Sc, MEM selaku Dosen Pembimbing.

4. Bapak Syahriol Sitorus, S.Si, MITdan Ibu Dian Wirdasari, S.Si, M.Kom selaku Dosen Pembanding.

5. Dekan dan Pembantu Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara, seluruhtenaga pengajar dan pegawai diProgram Studi S1Ilmu Komputer Fasilkom-TIUSU.

6. Ayahanda Sudirman Chaniago dan ibunda Farni Fachruddin, serta kakanda

Muhammad Hasief yang selalu memberikan kasih sayang dan dukungannya kepada penulis.

7. Rekan-rekan kuliah, khususnya Fithri Rizqi Khairani Nasution dan Murni

Novita Sari, serta teman-teman ca8in, Zulwita Hariyati, Fany Fairina Nadyaningrum, Nurul Ulfah Primadini, Uswatun Hasanah, Annissa Fadilla, AuliaAkbar Harahap, dan Idris Siddiq yang selalu memberikan semangat dan dorongan kepada penulisselama menyelesaikan skripsi ini.

Semoga Allah SWT melimpahkan berkahkepada semua pihak yang telah memberikan bantuan, perhatian, serta dukungan kepada penulis dalam menyelesaikan skripsi ini.Akhirnya, semoga skripsi ini bermanfaat bagi pribadi, keluarga, masyarakat, organisasi dan negara.

Medan, 12 Juni 2013


(7)

ABSTRAK

Sistem berbasis web dengan banyak pengguna memerlukan proses autentikasi untuk pemberian akses karena setiap pengguna sistem memiliki peran yang berbeda-beda satu sama lainnya. Proses autentikasi dilakukan untuk memeriksa identitas pengguna berdasarkan nama pengguna dan kata sandi. Salah satu mekanisme yang digunakan untuk proses autentikasi ini adalah Multiple-KeyRSA. Algoritma ini membangkitkan satu kunci utama dari seluruh kunci-kunci lainnya. Kunci-kunci dibangkitkan dengan syarat bahwa kunci yang akan dibangkitkan merupakan bilangan ganjil dan relatif prima terhadap kunci-kunci yang telah dibangkitkan sebelumnya. Pembangkitan kunci

menggunakan konsep Strong Prime yang diimplementasikan dengan algoritma

Gordon. Untuk membangkitkan bilangan prima, bilangan dibangkitkan secara acak dan diuji menggunakan algoritma Miller-Rabin. Implementasi sistem menggunakan bahasa pemrograman Python 2.7, framework Flask dan database MongoDB. Sistem diuji dengan kata sandi sepanjang 8 karakter, user sebanyak 2 hingga 10 pengguna dan panjang kunci maksimum 4096 bit dengan interval 512 bit. Hasil penelitian menunjukkan bahwa untuk setiap panjang kunci berbanding lurus terhadap kata sandi yang dienkripsi. Selain itu, setiap bit kunci yang dibangkitkan menggunakan algoritma Gordon akan memiliki digit yang lebih panjang dari yang diharapkan. Rata-rata keseluruhan proses enkripsi adalah 0.404 detik dan dekripsi adalah 0.517 detik dengan kompleksitas waktu enkripsi maupun dekripsi pada kasus terbaik dan rata-rata ialah

Ο(log(�)2) dan pada kasus terburukialah Ο(log(�)3). Kompleksitas waktu algoritma Miller-Rabin ialah Ο(�log3�), dengan �= banyaknya nilai yang diuji atau |�| =

jumlah digit �. Kompleksitas waktu algoritma Gordon ialah Ο(|�| log3).


(8)

vi

ANALYSIS AND DESIGN OF USER AUTHENTICATIONSYSTEM ON THE WEB USING MULTIPLE KEYRSA

ABSTRACT

Web-based system with many users requires authentication process for granting user acces because each user has different role. Authentication process is performed to verify the identity of the user based on username and password. One mechanism that is used for the authentication process is Multiple-Key RSA. These algorithms generate a main key from all other keys. The keys are generated such that the next key is odd number and coprime to the keys that had been generated previously. Key generation use the concept of a Strong Prime that implemented with Gordon algorithm. A number randomly generated and tested using the Miller-Rabin algorithm to generate prime number. System is implemented using Python 2.7 programming language, Flask

framework and MongoDB database. The system was tested with 8

characterspassword, with 2 up to 10 users and 4096 bitsmaximum key length with 512 bit interval. The results show that for each key length and encrypted password is linear ratio. Additionally and occasionally, every bit key generated using algorithms Gordon islonger than expected. Overall average is 0.404 second for encryption process and the decryption is 0.517 second with Ο(log(�)2)time complexity of encryption and decryption in best and average caseand worst case isΟ(log(�)3). Time complexity of Miller-Rabin algorithm is Ο(�log3�), with k = number of tested values or |�| =

numberofdigits. Gordon algorithm time complexity is Ο(|�| log3).


(9)

DAFTAR ISI

Halaman

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak v

Abstract vi

Daftar Isi vii

Daftar Tabel ix

Daftar Gambar x

Daftar Lampiran xi

Bab I Pendahuluan

1.1 Latar Belakang 1

1.2 Rumusan Masalah 2

1.3 Batasan Masalah 2

1.4Tujuan Penelitian 2

1.5 Manfaat Penelitian 2

1.6 Metodologi Penelitian 3

1.7 Sistematika Penulisan 3

BabII Landasan Teori

2.1 Kriptografi 5

2.1.1 Definisi Kriptografi 5

2.1.2 Tujuan Kriptografi 5

2.2 Sistem Kriptografi 6

2.2.1 Sistem Kriptografi Klasik (Simetris) 6

2.2.2 Sistem Kriptografi Modern (Asimetris) 7

2.2.3 Sistem Kriptografi Kunci Publik 7

2.3 Teori Bilangan Integer 8

2.3.1 Faktor Persekutuan Terbesar 8

2.3.2 Algoritma Euclid dan Extended Euclid 8

2.3.3 Invers Modulo 9

2.3.4ϕ˗Euler 9

2.3.5Eksponensial Modulo 10

2.4 Sistem Kriptografi RSA 10

2.4.1 Pembangkitan kunci RSA 10

2.4.2 Enkripsi RSA 11

2.4.3 Dekripsi RSA 11

2.5Sistem Kriptografi Multiple-KeyRSA 11

2.6 Algoritma Miller-Rabin 13

2.7Strong Prime 14


(10)

viii

Bab III Analisis dan Perancangan

3.1 Analisis Sistem 15

3.1.1 Analisis Masalah 15

3.1.2 Analisis Kebutuhan 16

3.1.2.1Kebutuhan Fungsional 17

3.1.2.2Kebutuhan Nonfungsional 18

3.1.3Analisis Proses 18

3.2 Perancangan Sistem 19

3.2.1 Flowchart 19

3.2.1.1 Flowchart Pembangkitan Kunci 19

3.2.1.2Flowchart Algoritma Miller-Rabin 21

3.2.1.3Flowchart Algoritma Gordon 22

3.2.2 Data Flow Diagram (DFD) 23

3.2.2.1 DFD Level 0 23

3.2.2.2DFD Level 1 22

3.2.2.3DFD Level 2 Proses 1 24

3.2.2.4DFD Level 2 Proses 2 25

3.2.2.5DFD Level 2 Proses 4 25

3.2.3Kamus Data 26

3.2.4Mockup 27

3.2.4.1 Index Page 27

3.2.4.2Status Page 28

3.2.4.3Setting Page 28

3.2.4.4Reset Page 28

3.2.4.5System Page 29

Bab IV Implementasi dan Pengujian

4.1 Implementasi 30

4.1.1 Index Page 30

4.1.2 Status Page 31

4.1.3Setting Page 32

4.1.4 System Page 33

4.1.5 Reset Page 34

4.2 Pengujian 35

4.2.1 Skenario Enkripsi 36

4.2.2 Skenario Pembangkitan Kunci dan Proses Dekripsi 36

4.2.3Pengujian dan Analisis Hasil Enkripsi dan Dekripsi 37

4.2.4Pengujian dan Analisis Waktu Eksekusi

Miller-Rabin Primality Test 40

4.2.5Pengujian dan Analisis Waktu Eksekusi Gordon Strong Prime 41 4.2.6Pengujian dan Analisis Waktu Eksekusi Pembangkitan Kunci 43 Bab V Kesimpulan dan Saran

5.1 Kesimpulan 45

5.2Saran 46


(11)

DAFTAR TABEL

Halaman

Tabel 3.1 Kamus Data Keys 27

Tabel 3.2 Kamus Data User_log 27

Tabel 3.3 Kamus Data Users 28

Tabel 4.1 Enkripsi kata sandi 37

Tabel 4.2 Dekripsi kata sandi 37

Tabel 4.3 Pasangan Kata Sandi dan Kunci setiap User 38

Tabel 4.4 Panjang Ciphertext, Rata-rata lama eksekusi proses Enkripsi dan Dekripsi

untuk setiap Panjang Kunci 39

Tabel 4.5 Kode enkripsi pesan 39

Tabel 4.6 Kode dekripsi pesan 40

Tabel 4.7 Rata-rata lama eksekusi Miller-Rabin Primality Test untuk setiap Panjang

Kunci 42

Tabel 4.8 Kode algoritma Miller-Rabin 42

Tabel 4.9 Rata-rata lama eksekusi algoritma Gordon untuk setiap Panjang Kunci 43

Tabel 4.10 Kode Pembangkit Bilangan Prima 44

Tabel 4.11 Kode algoritma Gordon 44

Tabel 4.12 Rata-rata lama eksekusi Pembangkitan Kunci Multiple-Key RSA untuk


(12)

x

DAFTAR GAMBAR

Halaman

Gambar 2.1 Skema Sistem Kriptografi Klasik 7

Gambar 2.2 Skema Sistem Kriptografi Kunci Publik 8

Gambar 3.1 Diagram Ishikawa Masalah Penelitian 17

Gambar 3.2 Flowchart Pembangkitan Kunci 21

Gambar 3.3 Flowchart A. Algoritma Miller-Rabin B. Fungsi Witness 22

Gambar 3.4 Flowchart Algoritma Gordon 23

Gambar 3.5 DFD Level 0 24

Gambar 3.6 DFD Level 1 25

Gambar 3.7 DFD Level 2 Proses 1 25

Gambar 3.8 DFD Level 2 Proses 2 26

Gambar 3.9 DFD Level 2 Proses 4 27

Gambar 3.10 Mockup Index page 28

Gambar 3.11 Mockup Status page 29

Gambar 3.12 Mockup Setting page 29

Gambar 3.14 Mockup System page 30

Gambar 4.1 Index Page 32

Gambar 4.2 Status Page 33

Gambar 4.3 Setting Page 34

Gambar 4.4 System Page 35

Gambar 4.5 Reset Page 36

Gambar 4.6 Grafik Panjang Kunci terhadap Panjang Kata Sandi Terenkripsi 39

Gambar 4.7 Grafik Panjang Kunci terhadap lama Proses Enkripsi 40

Gambar 4.8 Grafik Panjang Kunci terhadap lama Proses Dekripsi 40

Gambar 4.9 Grafik Panjang Kunci terhadap lama eksekusi

Miller-Rabin Primality Test untuk setiap Jumlah Pengguna 41

Gambar 4.10 Grafik Panjang Kunci terhadap lama eksekusi

algoritma Gordon untuk Setiap Jumlah Pengguna 43

Gambar 4.11 Grafik Panjang Kunci terhadap lama Pembangkitan Kunci


(13)

DAFTAR LAMPIRAN

Halaman

A. Listing Program A-1


(14)

v

ABSTRAK

Sistem berbasis web dengan banyak pengguna memerlukan proses autentikasi untuk pemberian akses karena setiap pengguna sistem memiliki peran yang berbeda-beda satu sama lainnya. Proses autentikasi dilakukan untuk memeriksa identitas pengguna berdasarkan nama pengguna dan kata sandi. Salah satu mekanisme yang digunakan untuk proses autentikasi ini adalah Multiple-KeyRSA. Algoritma ini membangkitkan satu kunci utama dari seluruh kunci-kunci lainnya. Kunci-kunci dibangkitkan dengan syarat bahwa kunci yang akan dibangkitkan merupakan bilangan ganjil dan relatif prima terhadap kunci-kunci yang telah dibangkitkan sebelumnya. Pembangkitan kunci

menggunakan konsep Strong Prime yang diimplementasikan dengan algoritma

Gordon. Untuk membangkitkan bilangan prima, bilangan dibangkitkan secara acak dan diuji menggunakan algoritma Miller-Rabin. Implementasi sistem menggunakan bahasa pemrograman Python 2.7, framework Flask dan database MongoDB. Sistem diuji dengan kata sandi sepanjang 8 karakter, user sebanyak 2 hingga 10 pengguna dan panjang kunci maksimum 4096 bit dengan interval 512 bit. Hasil penelitian menunjukkan bahwa untuk setiap panjang kunci berbanding lurus terhadap kata sandi yang dienkripsi. Selain itu, setiap bit kunci yang dibangkitkan menggunakan algoritma Gordon akan memiliki digit yang lebih panjang dari yang diharapkan. Rata-rata keseluruhan proses enkripsi adalah 0.404 detik dan dekripsi adalah 0.517 detik dengan kompleksitas waktu enkripsi maupun dekripsi pada kasus terbaik dan rata-rata ialah

Ο(log(�)2) dan pada kasus terburukialah Ο(log(�)3). Kompleksitas waktu algoritma Miller-Rabin ialah Ο(�log3�), dengan �= banyaknya nilai yang diuji atau |�| =

jumlah digit �. Kompleksitas waktu algoritma Gordon ialah Ο(|�| log3).


(15)

ANALYSIS AND DESIGN OF USER AUTHENTICATIONSYSTEM ON THE WEB USING MULTIPLE KEYRSA

ABSTRACT

Web-based system with many users requires authentication process for granting user acces because each user has different role. Authentication process is performed to verify the identity of the user based on username and password. One mechanism that is used for the authentication process is Multiple-Key RSA. These algorithms generate a main key from all other keys. The keys are generated such that the next key is odd number and coprime to the keys that had been generated previously. Key generation use the concept of a Strong Prime that implemented with Gordon algorithm. A number randomly generated and tested using the Miller-Rabin algorithm to generate prime number. System is implemented using Python 2.7 programming language, Flask

framework and MongoDB database. The system was tested with 8

characterspassword, with 2 up to 10 users and 4096 bitsmaximum key length with 512 bit interval. The results show that for each key length and encrypted password is linear ratio. Additionally and occasionally, every bit key generated using algorithms Gordon islonger than expected. Overall average is 0.404 second for encryption process and the decryption is 0.517 second with Ο(log(�)2)time complexity of encryption and decryption in best and average caseand worst case isΟ(log(�)3). Time complexity of Miller-Rabin algorithm is Ο(�log3�), with k = number of tested values or |�| =

numberofdigits. Gordon algorithm time complexity is Ο(|�| log3).


(16)

BAB I PENDAHULUAN

1.1 Latar Belakang

Proses autentikasi pengguna sistem berbasis web diperlukan untuk melakukan verifikasi identitas seorang pengguna untuk memperoleh akses ke sistem atau area terbatas lainnya. Pada umumnya, proses ini menggunakan nama pengguna dan kata sandi yang berupa kumpulan karakter. Karena keterbatasan akses ini, kepemilikan kata sandi harus berada pada tangan yang tepat, di mana kata sandi super user harus dimiliki oleh orang yang berada pada posisi tertinggi dalam hierarki organisasi.

Masing-masing pengguna mempunyai kedudukan, tugas, hak dan kewajiban yang berbeda satu dengan lainnya. Misalkan dalam dunia akademis, seperti universitas, jabatan tertinggi dipegang oleh rektor yang selanjutnya dibantu dengan beberapa pembantu rektor. Pada contoh ini, kekuasaan seorang rektor pada sistem akan setara dengan seluruh pembantu rektor dalam pembuatan suatu keputusan. Karena perbedaan kekuatan ini, timbul masalah bagaimana autentikasi masing-masing entitas terkait agar memberikan kepastian identitas.

RSA merupakan algoritma kriptografi modern yang diperkenalkan oleh Ron Rivest, Adi Shamir dan Len Adleman. Pada penelitian oleh Indra [8], kecepatan pemrosesan RSA lebih cepat dibandingkan algoritma kunci publik umumnya. Berdasarkan outputnya, algoritma RSA menghasilkan ukuran teks cipher yang lebih kecil. Namun dalam hal keamanan, RSA tidak terlalu dominan walaupun pada dasarnya untuk memecahkan algoritma ini pun sudah sangat sulit.

Algoritma RSA memiliki varian pengembangan yang lebih banyak. Salah satu pengembangan algoritma RSA ialah konsep multiple-key [10]. Pada

Multiple-KeyRSA, kunci-kunci ditambahkan pada pembangkitan kuncinya yang digunakan


(17)

Konsep multiple-keydapat diimplementasikan untuk algoritma asimetris karena dapat meningkatkan kualitas dan kekuatan dari kunci yang sudah ada sebelumnya. Berdasarkan uraian di atas, maka penulis mengambil tugas akhir dengan judul “Analisis dan Perancangan Sistem AutentikasiPengguna pada Web Menggunakan Metode Multiple-Key RSA”.

1.2 Rumusan Masalah

Berdasarkan uraian pada latar belakang, rumusan masalah yang akan dibahas ialah bagaimana menerapkan sistem kriptografi Multiple-Key RSA untuk melakukan autentikasi pengguna pada web.

1.4 Batasan Masalah

Dalam perancangan prototipe sistem kriptografi Multiple-Key RSA, dilakukan beberapa batasan sebagai berikut:

1. Pembangkit bilangan prima menggunakan konsep Strong Prime. 2. Pengujian bilangan prima menggunakan algoritma Miller-Rabin. 3. Ukuran kunci maksimal adalah 4096 bit.

4. Kriptanalisis tidak dilakukan.

5. Program dibuat dengan bahasa pemrograman Python dan menggunakan

database MongoDB.

1.3 Tujuan Penelitian

Penelitian ini bertujuan untuk membangun sistem yang mampu melakukan autentikasi pengguna pada web dengan menerapkan sistem kriptografi Multiple-Key RSA.

1.5 Manfaat Penelitian

Penelitian ini diharapkan dapat bermanfaatbagiinstitusi ataupun organisasi yang memilikisistem berbasis web untukmemberikan akses kepada pihak-pihak yang tepat.


(18)

3

1.6 Metodologi Penelitian

Metode penelitian yang dilakukan dalam penelitian ini adalah: 1. Studi literatur

Dilakukan peninjauan terhadap buku, jurnal, makalah, serta hasil penelitian yang membahas tentang kriptografi Multiple-Key RSAdan semua teori yang berkaitan. 2. Analisis dan Perancangan

Berdasarkan rumusan dan batasan masalah, masalahyang ada dianalisis sehingga dapat dilakukan perancangan dengan baik, seperti pembuatan flowchart, DFD dan mockup.

3. Implementasi

Algoritma Multiple-KeyRSA diimplementasikan sebagai sistem autentikasi pengguna pada web.

4. Pengujian

Pengujian dilakukan terhadap keberhasilan proses yang dilakukan dalam kriptografi (pembangkitan kunci, enkripsi dan dekripsi).

5. Dokumentasi

Selama analisis dan perancangansistem hingga pengujian, dilakukan

pendokumentasian berupa laporan skripsi.

1.7 Sistematika Penulisan

Sistematikapenulisanskripsiiniterdiri dari beberapa bagian utama, yaitu:

BAB I PENDAHULUAN

Bab ini menjelaskan latar belakang judul skripsi ”Analisis dan Perancangan Sistem Autentikasi Pengguna pada Web Menggunakan Metode Multiple-Key RSA”, rumusan masalah, batasan masalah, tujuan penelitian, manfaatpenelitian, metodepenelitian dan sistematika penulisan.

BAB II LANDASAN TEORI

Bab ini berisi tentang penjelasan singkat mengenai sistem kriptografi dan teori-teori dasar yang digunakan dalam algoritma RSA, algoritma Multiple-Key RSAdan konsep Strong Prime.


(19)

BAB IIIANALISIS DAN PERANCANGAN

Bab ini membahas analisis terhadap masalah peelitian dan perancangan terhadap sistem yang akan dibangun.

BAB IVIMPLEMENTASI DAN PENGUJIAN

Bab ini berisi implementasi algoritma Multiple-Key RSA, skenario pengujian terhadap sistem yang telah dibangun,serta pembahasan hasil pengujian dan analisisnya.

BAB V KESIMPULAN DAN SARAN

Bab ini memuat kesimpulan dari keseluruhan uraian bab-bab sebelumnya dan saran berdasarkan hasil pengujian yang diharapkan dapat bermanfaat untuk pengembangan selanjutnya.


(20)

BAB II

LANDASAN TEORI

2.1 Kriptografi

2.1.1 Definisi Kriptografi

Secara etimologi, kata kriptografi berasal dari bahasa Yunani, yaitu: kryptos berarti rahasia dan graphein berarti tulisan [18]. Sedangkan secara terminologi, kriptografi adalah ilmu dan seni untuk menjaga kerahasiaan pesan dengan cara menyandikannya ke dalam bentuk yang tidak dapat dipahami maknanya sehingga tidak dapat dibaca oleh orang yang tidak berkepentingan.

Dalam kriptografi, setiap orang dimungkinkan untuk bebas memilih metode untuk merahasiakan pesan. Metode tersebut berbeda-beda (unik) untuk setiap pelaku kriptografi sehingga penulisan pesan rahasia mempunyai estetika tersendiri. Estetika penulisan pesan rahasia ini menjadikan kriptografi sebagai sebuah seni. Pada perkembangan selanjutnya, kriptografi dikenal sebagai disiplin ilmu yang menggunakan teknik matematika untuk keamanan informasi, seperti privasi dan autentikasi.

2.1.2 Tujuan Kriptografi

Kriptografi bertujuan untuk memberikan layanan keamanan [15] sebagai berikut: 1. Autentikasi (Authentication)

Autentikasi memberikan kepastian terhadap identitas setiap entitas yang terlibat dan sumber sebuah data.

2. Kerahasiaan (Confidentiality)

Data yang ditransmisikan diproteksi terhadap pengungkapan oleh pihak-pihak yang tidak berwenang.

3. Keutuhan Data (Data Integrity)

Data yang diterima oleh penerima dipastikan adalah sama dengan data yang dikirim oleh pengirim.


(21)

4. Nirpenyangkalan (Non-Repudiation)

Setiap entitas yang berkomunikasi tidak dapat menolak atau menyangkal atas data yang telah dikirim atau diterima.

2.2 Sistem Kriptografi

Kriptografi membentuk sebuah sistem yang dinamakan sistem kriptografi(cryptosystem). Cryptosystem adalah lima tuple (P, C, K, E, D), dimana P adalah plaintext,C adalah ciphertext, K adalah himpunan kunci-kunci, E adalah himpunan fungsi enkripsi dan D adalah himpunan fungsi dekripsi [16].Berdasarkan prinsip kerjanya, sistem kriptografi terbagi dua, yaitu sistem kriptografi klasik (simetris) dan modern (asimetris) [1].

2.2.1 Sistem Kriptografi Klasik (Simetris)

Kriptografi klasik umumnya merupakan teknik penyandian dengan kunci simetris dan pesan disembunyikan sehingga tidak memiliki arti dengan metode substitusi dan/atau transposisi. Terdapat lima komponen utama dalam sistem kriptografi klasik, yaitu:

1. Plaintext

Teks asli dapat berupa pesan atau data sebagai input algoritma enkripsi. 2. Kunci Rahasia

Kunci rahasia sebagai penentu output dari algoritma enkripsi. Antar entitas harus saling mengetahui kunci ini agar dapat melakukan enkripsi/dekripsi pesan.

3. Ciphertext

Hasil dari proses algoritma enkripsi di mana teks asli dianggap telah tersembunyi (tidak memiliki arti).

4. Algoritma Enkripsi

Algoritma enkripsi mengubah teks asli menjadi ciphertext dengan parameter masukan, yaitu teks asli dan kunci rahasia.

5. Algoritma Dekripsi

Algoritma dekripsi mengubahciphertext menjadi teks asli dengan parameter masukan, yaitu ciphertext dan kunci rahasia.

Berdasarkan skema pada gambar 2.1, kriptografi simetris menggunakan kunci tunggal yang mengharuskan pengirim dan penerima menyetujui dan mengetahui


(22)

7

satu kunci rahasia tertentu sebelum mereka dapat berkomunikasi dengan aman. Keamanan kriptografi simetris ini terletak pada kerahasiaan kuncinya [7]. Semua algoritma kriptografi klasik termasuk dalam algoritma simetri. Contohnya, DES, Tripel-DES, AES, RC2, RC4 dan sebagainya.

A

Teks Asli

B

Kunci Rahasia

Ciphertext Teks Asli

: Jalur Rahasia Algoritma

Enkripsi

Algoritma Dekripsi

Gambar 2.1 Skema Sistem Kriptografi Klasik

2.2.2 Sistem Kriptografi Modern (Asimetris)

Sistem kriptografi modern juga disebut kriptografi kunci asimetris, memiliki dua jenis kunci, yaitu kunci enkripsi dan kunci dekripsi yang berbeda. Kunci enkripsi dimiliki oleh pengirim dan kunci dekripsi dimiliki oleh penerima pesan. Dalam kriptografi kunci asimetris, hampir semua algoritma kriptografinya menggunakan konsep kunci publik, seperti RSA, El-Gamal, dan sebagainya. Kecuali algoritma Pohlig ˗Hellman karena kunci enkripsi maupun kunci dekripsinya bersifat privat.

2.2.3 Sistem Kriptografi Kunci Publik

Sistem kunci kriptografi kunci publik merupakan bagian dari sistem kriptografi modern. Pada kriptografi kunci publik terdapat dua jenis kunci, kunci pertama ialah kunci tidak rahasia, yaitu kunci enkripsi (Ke) yang disebut kunci publik (Kpublik). Kunci kedua ialah

kunci dekripsi (Kd) bersifat rahasia (Kprivat) yang ditunjukkan pada gambar 2.2. Berikut

algoritma sistem kriptografi kunci publik [5]:

(Kpublik , Kprivat)  PembangkitKunci() …(B)

Ciphertext  Enkripsi(Kpublik , Plaintext) …(A)


(23)

A

Teks Asli

B

Kpublik B

Ciphertext Teks Asli

Kprivat B

Algoritma Enkripsi

Algoritma Dekripsi

Pembangkit Kunci

Gambar 2.2 Skema Sistem Kriptografi Kunci Publik

2.3 Teori BilanganInteger

Teori bilangan integer (ℤ) memiliki peran yang sangat besar dalam kriptografi pada umumnya serta merupakan pondasi bagi sistem kriptografi kunci publik. Misalnya, kekuatan sistem kriptografi RSA yang terletak pada sulitnya faktorisasi bilangan komposit merupakan bagian dari teori bilanganinteger.

2.3.1 Faktor Persekutuan Terbesar (Greatest Common Divisor)

Faktor persekutuan terbesar adalah elemen terbesar pada himpunan divisor dua bilangan integer. Misalnya, divisor 16 = { 1, 2, 4, 8, 16 } dan divisor 24 = { 1, 2, 3, 4, 6, 8, 12, 24 }, maka himpunan divisor kedua bilangan tersebut ialah { 1, 2, 4, 8 } dan yang terbesar ialah 8. Dengan kata lain, faktor persekutuan terbesar 16 dan 24 dapat dinotasikan sebagai gcd(16, 24) = 8. Apabila ada dua bilangan integer m dan n memiliki gcd(m, n) = 1, maka bilangan m dan n dapat disebut relatif prima.

2.3.2Algoritma Euclid dan Extended Euclid

Salah satu cara untuk menentukan gcd dua bilangan integer a dan b ialah dengan menggunakan algoritma Euclid. Walaupun algoritma ini dijelaskan dalam buku Euclid yang berjudulElements, para sejarawan meyakini algoritma ini tidak ditemukan oleh Euclid, melainkan telah ada 200 tahun lebih dahulu dari Elements [18]. Algoritma Euclid merupakan algoritma rekursif yang terdapat dua kasus:

I: b = 0 ���(�, 0) =�


(24)

9

Algoritma Euclid dikembangkan menjadi kombinasi linear oleh dengan koefisien integer a dan bdengan dua bilangan integer s dan t sehingga memenuhi persamaan:

��+��= ���(�,�)

Persamaan tersebut merupakan teorema Bézout yang kemudian disebut algoritma Extended Euclid [16].Berikut pseudocode algoritma Extended Euclid.

extEuclid(aa, bb):

1. lastremainder, remainder = abs(aa), abs(bb)

2. x, lastx, y, lasty = 0, 1, 1, 0 3. while remainder:

4. lastremainder, (quotient, remainder) =

5. remainder, divmod(lastremainder, remainder) 6. x, lastx = lastx - quotient*x, x

7. y, lasty = lasty - quotient*y, y

8. return lastremainder, lastx * (-1 if aa < 0 else 1), 9. lasty * (-1 if bb < 0 else 1)

2.3.3 Invers Modulo

Bilangan n disebut modulo apabila m mod n = r dan ada k, sehingga:

��+�=�

Sedangkan �−1 adalah invers modulo dari � (����), apabila:

�−1∙ � 1(���)

�(����) memiliki invers modulo jika dan hanya jika m dan n relatif prima. Salah satu cara untuk menemukan invers �(����) ialah dengan menggunakan algoritma Extended Euclid sehingga memenuhi ��+��= ���(�,�) [17]. Karena

���(�,�) = 1 dan �×� ≡0 (����), maka persamaan tersebut menjadi �×�= 1 atau �×� ≡1 (����) sehingga �= �−1.

2.3.4�˗Euler

�˗Euler atau ditulis�(�) adalah fungsi yang mengembalikan jumlah bilangan integer a dalam 0 <� <� dan a relatif prima dengan n (relatif prima jika gcd(a, n) = 1) [16]. Hasil �(�) untuk empat kasus dasar adalah:

1. �(1) = 0.

2. �(�) =� −1apabila � ∈ bilangan prima.

3. �(�×�) =�(�) ×�(�) apabila ���(�,�) = 1. 4. �(��) =�� − ��−1 apabila � ∈ bilangan prima.


(25)

2.3.5 Eksponensial Modulo

Salah satu operasi modulo yang sering digunakan dalam sistem kriptografi adalah eksponensial. Pada sistem kriptografi RSA, proses enkripsi dan dekripsinya memakai operasi eksponensial modulo. Operasi eksponensial modulo dinotasikan sebagai

��(���).

Salah satu implementasi penghitungan eksponensial modulo adalah algoritma Square and Multiply.Algoritma Square and Multiply mengasumsikan eksponen y dalam bentuk biner sehingga

� =� �2� �−1

�=0

dengan l adalah panjang y dalam biner, xibernilai0 atau 1 untuk 0 ≤ il ˗ 1 [17].

Berikut pseudocode algoritma Square and Multiply.

ModEx(x, y, n): 1. y = 1

2.for i = l – 1 downto 0: 3. y = y * y mod n

4. if xi == 1:

5. y = (y * a) mod n 6. return y

2.4 Sistem Kriptografi RSA

Salah satu algoritma kriptografi kunci publik ialah RSA yang dipublikasikan pada tahun 1977 [11]. RSA dibangun oleh fungsi eksponensial modulo yang terdiri dari tiga proses utama, yaitu: pembangkitan kunci, enkripsi, dan dekripsi.

2.4.1 Pembangkitan Kunci RSA

Pemilik kunci harus membangkitkan kunci publik dan privat untuk dapat menggunakan RSA. Kedua kunci ini membutuhkan dua bilangan prima besar agar sulit untuk difaktorisasi. Berikut variabel-variabel yang dibutuhkan untuk RSA:

(p, q)bilangan prima acak besar n p · q, sehingga ϕ(n) (p – 1)· (q – 1)


(26)

11

e kunci enkripsi: bilangan acak dalam rentang 1 < e < ϕ(n), dengan syarat gcd(e, ϕ(n)) = 1

d kunci dekripsi:e-1 mod ϕ(n) Kpublik = (e, n)

Kprivat = d

P = plain text C = cipher text

2.4.2 Enkripsi RSA

Proses enkripsi RSA menggunakan kunci publik yang telah dibangkitkan sebelumnya. Enkripsi pada RSA menggunakan fungsi eksponensial modulokunci enkripsi e berikut:

Kpublik = (e, n)

C Pe mod n

2.4.3 Dekripsi RSA

Untuk mengembalikan cipher text menjadi plain text, dekripsi RSA juga berupa fungsi eksponensial modulon dengan menggunakan kunci privat. Berikutproses dekripsi RSA:

Kpublik = (e, n)

Kprivat = d

P Cd mod n

2.5 Sistem Kriptografi Multiple-Key RSA

Kriptografi kunci publik umumnya menggunakan dua kunci untuk masing-masing proses enkripsi dan dekripsi. Pada 1988, Colin Boyd memperkenalkan konsep generalisasi RSA sehingga menjadi algoritma Multiple-Key RSA [18]. Dalam fungsi modulo RSA, n merupakan hasil perkalian dua bilangan prima p dan q sehingga

d · e ≡ 1 mod ϕ(n) Untuk konsep ini, dipilih sejumlah t kunci, sehingga


(27)

Berikutlangkah-langkah yang terdapat pada Multiple-Key RSA: (p, q)bilangan prima acak besar, p ≠ q

n p · q, sehingga ϕ(n) (p – 1)· (q – 1) t = jumlah kunci enkripsi dan/atau dekripsi

Pembangkitan kunci enkripsi:

Ke1bilangan acak ganjil dalam rentang 1 < Ke1< ϕ(n), gcd(Ke1, ϕ(n)) = 1

Ke2bilangan acak ganjil dalam rentang 1 < Ke2< ϕ(n),

gcd(Ke1 ·Ke2, ϕ(n)) = 1

Ketbilangan acak ganjil dalam rentang 1 < Ket< ϕ(n),

gcd(Ke1 ·Ke2 · … · Ket, ϕ(n)) = 1

e Ke1 ·Ke2 · … · Ket

Pembangkitan kunci dekripsi:

Kd1bilangan acak ganjil dalam rentang 1 < Kd1< ϕ(n), gcd(Kd1, ϕ(n)) = 1,

Ke1-1 mod ϕ(n)

Kd2bilangan acak ganjil dalam rentang 1 < Kd2< ϕ(n),

gcd(Kd2 ·Kd2, ϕ(n)) = 1, Ke2-1 mod ϕ(n)

Kdtbilangan acak ganjil dalam rentang 1 < Kdt< ϕ(n),

gcd(Kd1 ·Kd2 · … · Kdt, ϕ(n)) = 1, Ket-1 mod ϕ(n)

d Kd1 ·Kd2 · … · Kdt

Kpublik = (Ke, n) Kprivat = Kd

P = Plain text C = Cipher text

Proses Enkripsi: Kpublik = (Ke, n)

C PKe mod n

Proses Dekripsi:

Kpublik = (Ke, n), Kprivat = Kd


(28)

13

2.6 Algoritma Miller-Rabin

Algoritma Miller-Rabin merupakan algoritma probabilistik pengujian keprimaan sebuah bilangan berdasarkan pada Fermat’s LittleTheorem dan kepemilikan akar kuadrat [3]. Fermat’s LittleTheorem menyatakan bahwa

��−1 1 ���

apabila n adalah bilangan prima. Sedangkan untuk kepemilikan akar kuadrat, jika n adalah bilangan prima, akar kuadrat modulo

n��2 = 1 (����)�

akan menghasilkan

1 atau ˗1 �(�+ 1)(� −1) = 0 (����)�.

Misalkan � – 1 = 2�� di mana � ∈ ℕ ialah ganjil dan � ∈ ℕ serta n merupakan bilangan integer positif ganjil (n≥ 3) yang akan diuji keprimaannya [13]. Algoritma Miller-Rabin tidak menghitung ��−1���� secara langsung, melainkan menghitung deret berikut secara berulang: �� ≡ �2� ≡ �22� ≡ ⋯ ≡ �2�−1� ≡

�2��(���). Pada setiap perhitungan 2�� dilakukan pengujian Fermat dan pengujian kepemilikan akar kuadrat. Jika pengujian akar kuadrat ialah positif, n dideklarasikan sebagai bilangan komposit. Jika pengujian Fermat ialah positif, maka n mungkin bilangan prima. Berikut pseudocode algoritma Miler-Rabin:

MillerRabin(n, s): 1. for j = 1 to s: 2. a = Random(1, n-1) 3. if Witness(a, n): 4. return “Composite” 5. return “Prime”

Witness(a, n):

1. let t and u be such that t ≥ 1, u is odd and n – 1 = 2tu

2.x0 = ModularExponentation(a, u, n)

3. for i = 1 to t: 4. � =��−21(����)

5. if xi == 1 and xi-1 ≠ 1 and xi-1 ≠ n – 1:

6.return True

7. if xt ≠ 1:

8. return True 9. return False


(29)

2.7 Strong Prime

Bilangan prima p dikatakan strong prime apabila bilangan bulat q, r dan s ada dan memenuhi kondisi berikut [12]:

� −1 mempunyai faktor prima q

�+ 1 mempunyai faktor prima r

� −1 mempunyai faktor prima s

Pada 1984, Gordon memperkenalkan cara menentukan bilangan yang memenuhi konsep strong prime [10]. Berikut algoritma Gordon untuk membangkitkan bilangan strong prime [14]:

Gordon_StrongPrime():

1. (�,�) large (probable) primes using MillerRabin,

� ≠ � roughly equal bitlength

2.�= 2��+ 1 First prime in {2��+ 1}� ∈ℕ sequence 3. �0≡ ��−1− ��−1(�����)

4.�=�0+ 2��� First prime in {�0+ 2���}�∈ℕ sequence 5.return p

2.7Penelitian yang Relevan

Berikut penelitian tentang kriptografi yang membahas algoritma RSA atau autentikasi: 1. Pada penelitian oleh Sun dan Yang [19], didesain varian RSA dengan nilai d dan e yang seimbang serta p dan q yang juga seimbang sehingga varian ini lebih aman. Berdasarkan varian RSA ini, sebuah aplikasi diimplementasikan untuk autentikasi entitas sehingga melindungi serangan stolen-secret.

2. Dalam penelitian oleh Brainard, et al [2], konsep vouchingdiperkenalkan sebagai alat autentikasi online. Konsep ini mengubah konsep identifikasi pengguna dari sisi klien dengan mengembangkan autentikasi klasik. Selain memperkenalkan konsep vouching, model keamanan dirancang untuk menganalisis vouching dan membahas social-engineering dari protokol banyak pengguna.

3. Berdasarkan penelitian oleh Loebenberger dan Nüsken [9], banyaknya definisi untuk integer RSA mengakibatkan standar substansial yang berbeda-beda. Selain itu, spesifikasi konkrit integer tidak mempengaruhi sifat bilangan yang


(30)

15

dibangkitkan. Distribusi output yang dihasilkan juga selalu hampir maksimal, yaitu integer dibangkitkan secara efisien dan output sulit untuk difaktorkan.


(31)

BAB III

ANALISIS DAN PERANCANGAN

3.1 Analisis Sistem

Analisis sistem terdiri dari fase-fase berbeda yang mendeskripsikan pengembangan sistem. Dalam tugas akhir ini, ada tiga fase analisis yaitu: analisis masalah, analisis kebutuhan dan analisis proses. Analisis masalah bertujuan untuk memahami kelayakan masalah. Analisis kebutuhan dilakukan untuk menjelaskan fungsi-fungsi yang ditawarkan dan mampu dikerjakan sistem. Sedangkan analisis proses untuk memodelkan tingkah laku sistem.

3.1.1 Analisis Masalah

Dalam model Chain of Trust, terdapat tiga proses utama yang harus

diimplementasikan untuk setiap transaksi elektronik [4], yaitu: 1. Identifikasi

Proses identifikasi membutuhkan identitas yang merupakan hal/fitur unik untuk mendeskripsikan sesuatu. Misalnya web e-commerce menyimpan identitas berupa nama, e-mail, alamat dan sebagainya.

2. Autentikasi

Autentikasi ialah proses yang membutuhkan credentials yang umumnya berupa nama pengguna dan kata sandi untuk membuktikan validitas pengguna tersebut. 3. Otorisasi

Otorisasi dilakukan untuk mengesahkan bahwa pengguna tersebut memiliki hak akses untuk sumber daya atau informasi tertentu.

Pada transaksi elektronik, autentikasi merupakan proses mutlak yang harus dilakukan dalam sistem berbasis web multi-user. Untuk penelitian ini, Multiple-KeyRSA akan diimplementasikan untuk enkripsi dan dekripsi kata sandi setiap


(32)

17

pengguna dengan satu super user. Masalah penelitian ini secara umum ditunjukkan pada gambar 3.1, yaitu diagram Ishikawa (fishbone/cause and effect diagram).

Setiap user memiliki peran yang berbeda

Identitas (username dan password) harus rahasia

Multiple-Key RSA

Strong Prime (Algoritma Gordon)

Miller-Rabin Primality Test

Server aman dari serangan dalam jaringan Ukuran kunci

(bilangan prima) yang sangat besar

Identitas super-user

terpusat pada pemilik sistem dan/atau administrator Tidak ada otorisasi sistem

yang sesuai dengan peran/kedudukan pengguna dalam organisasi

Melakukan Autentikasi

Pengguna

Gambar 3.1 Diagram Ishikawa Masalah Penelitian

Berdasarkan gambar 3.1, masalah utama ditunjukkan oleh segi empat paling kanan (kepala ikan), yaitu melakukan autentikasi pengguna. Sedangkan segi empat lainnya yang dihubungkan oleh sebuah garis ke tulang utama (garis horizontal yang terhubung ke kepala ikan) adalah kategori masalah. Garis horizontal selanjutnya yang ditunjukkan oleh tulang-tulang kecil yang diwakili oleh garis panah yang mengarah ke tulang-tulang kategori masalah adalah sebab dari masalah yang berada pada kepala ikan.

3.1.2 Analisis Kebutuhan

Analisis kebutuhan terbagi dua bagian, yaitu kebutuhan fungsional dan kebutuhan nonfungsional. Kebutuhan fungsional mendeskripsikan aktivitas yang disediakan suatu sistem. Sedangkan kebutuhan nonfungsional mendeskripsikan fitur, karakteristik dan batasan lainnya.


(33)

3.1.2.1 Kebutuhan Fungsional

Untuk menerapkan Multiple-KeyRSA, kebutuhan fungsional yang harus dipenuhi antara lain, sebagai berikut:

1. Admin/Super User

Admin hanya dapat melakukan fungsi-fungsi berikut setelah melakukan login. a. Memasuki sistem

Admin dapat memasuki sistem yang aksesnya terbatas untuk role admin. b. Mengubah kata sandi

Admin dapat mengubah kata sandi seperlunya. c. Mengatur ulang (reset) seluruh pengguna

Admin hanya dapat mengatur ulang (reset) selutuh pengguna tanpa dapat menambah atau mengurangi pengguna yang ada.

d. Melihat status user lainnya

Admin dapat melihat status online seluruh user yang mengakses Status Page.

2. User

User hanya dapat melakukan fungsi-fungsi berikut setelah melakukan login. a. Melihat status User lainnya

Setelah login, User diarahkan ke Status Page dan dapat melihat status online seluruh user yang mengakses page ini.

b. Memasuki sistem

User dapat memasuki sistem jika dan hanya jika seluruh User (tidak termasuk super user) online dan mengkakses Status Page.

c. Mengubah kata sandi


(34)

19

3.1.2.2 Kebutuhan Nonfungsional

Kebutuhan fungsional mencakup karakteristik berikut: 1. Performa

Perangkat lunak yang akan dibangun dapat menunjukkan hasil dari fungsi kriptografi yang dilakukan oleh sistem.

2. Mudah dipelajari dan digunakan

Perangkat lunak yang akan dibangun memiliki tampilan yang user friendly dan responsif sehingga pengguna mobile dapat mengakses sistem.

3. Hemat biaya

Perangkat lunak yang dibangun akan menggunakan teknologi open source dan bebas digunakan.

4. Dokumentasi

Perangkat lunak yang akan dibangun dapat menyimpan log dan memiliki panduan penggunaan.

5. Manajemen kualitas

Perangkat lunak yang akan dibangun akan memiliki kualitas yang baik yaitu proses enkripsi dan dekripsi kata sandi serta pembangkitan kunci relatif cepat.

6. Kontrol

Perangkat lunak yang dibangun akan menampilkan pesan error untuk setiap input yang tidak sesuai.

3.1.3 Analisis Proses

Perangkat lunak yang dibangunakan menggunakan tiga metode, yaitu

Multiple-KeyRSA, Miller-Rabin Primality Testdan algoritma Gordon.

Multiple-KeyRSAdigunakan untuk membangkitkan kunci-kunci setiap pengguna dan

melakukan proses enkripsi dan dekripsi. Miller-Rabin Primality Testuntuk menguji

keprimaan bilangan yang akan digunakan sebagai kunci yang

dibangkitkandalamalgoritma Gordon. Sedangkan algoritma Gordon untuk


(35)

3.2 Perancangan Sistem

Sistem ini dirancang dengan membuat flowchart, Data Flow Diagram, kamus datasertamockup.

3.2.1 Flowchart

Pada bagian ini, terdapat tiga flowchart, yaitu: flowchartpembangkitan kunci

algoritma Multiple-KeyRSA,flowchartalgoritmaMiller-Rabin dan

flowchartalgoritmaGordon.

3.2.1.1 Flowchart Pembangkitan Kunci

Proses untuk membangkitkan kunci pada algoritma Multiple-KeyRSAdigambarkan pada Gambar 3.1. Pada proses pembangkitan kunci, terdapat dua paramater masukan, yaitu TotalUsers = jumlah pengguna (tidak termasuk super user) dan KeyLength = panjang kunci dalam bit. Output berupa kunci-kunci berikut: P, Q, totien_n, N, E = kunci enkripsi super user, D = kunci dekripsi super user, Ke = kunci enkripsi masing-masing pengguna, dan Kd = kunci dekripsi masing-masing pengguna.


(36)

21

Start

TotalUsers, KeyLength

P = RandomPrime(KeyLength) Q = RandomPrime(KeyLength)

Q = RandomPrime(KeyLength) Y

totien_n = (P – 1) * (Q – 1) N = P * Q

Ke = [] Kd = []

i == 0

e = random(2, totien_n - 1)

mKe = 1 x = 0

gcd(totien_n, e) == 1 Y

Ke.append(e)

Kd.append(invMod(e, totien_n)) N

N

N

mKe *= Ke[x] Y

Y Y

Y

e = random(2, totien_n - 1)

gcd(totien_n, mKe *e) == 1

Y N

Y

E = 1 D = 1 x = 0

N

E *= Ke[x] D *= Kd[x] Y

End N

N

Q == P

True

True i = 0

i in range(0, TotalUsers)

x in range(0, TotalUsers)

x in range(0, i)


(37)

3.2.1.2 Flowchart Algoritma Miller-Rabin

Proses untuk pengujian bilangan prima menggunakan algoritma Miller-Rabin ditunjukkanpada Gambar 3.2.n merupakan variabel yang akan diuji keprimaannya. t dan umerupakan variabel yang akan memenuhi persamaan � – 1 = 2��. Fungsi witness() diimplementasikan untuk menguji bilangan yang diberikan ialah komposit dengan menghitung kepemilikan akar kuadrat.

Start

n

u = n – 1 t = 0

u /= 2 t += 1 Y N

Y

a = random(2, n – 1)

witness(a)

“n is not Prime” Y

End “n is Prime” N

Y

Start

a, u, t, n

x = [] x.append(pow(a, u, n))

Y

x.append(pow(x[i-1], 2, n))

x[i] == 1 and x[i-1] != 1 and

x[i-1] != n - 1

“True” Y N

N

A B

x[t] != 1

“True” Y

End “n is not Prime” N

u & 1 == 0

i = 0

i in range(n.length())

i = 0

i in range(1, t+1)

Gambar 3.3Flowchart A. Algoritma Miller-Rabin


(38)

23

3.2.1.3 Flowchart Algoritma Gordon

Proses untuk pembangkitan bilangan yang memenuhi konsep Strong Prime

menggunakan algoritma Gordon ditunjukkanpada Gambar 3.3.p merupakan bilangan Strong Prime. Algoritma Gordon menggunakan algoritma Miller-Rabin untuk menguji keprimaan setiap deret p dan q yang memenuhi konsep Strong Prime.

Start

bit

r = generateRandomPrime(bit/2) s = generateRandomPrime(bit/2)

s = generateRandomPrime(bit) Y

N

N

p0 = pow(r, (q - 1), (r * q)) – pow(q, (r - 1), (r * q)) + r * q

p0 = p0 % (r * q) j = 1 p = 2 * j * q * r + p0

End j = 1 p = 0 q = 2 * j * s + 1

q = 2 * j * s + 1 j += 1 Y

N

p = 2 * j * q * r + p0 j += 1

p Y

p0 & 1 == 0 Y

N

not MillerRabin(q) not MillerRabin(q)

s == r


(39)

3.2.2 Data Flow Diagram (DFD)

Data Flow Diagram ialah suatu model yang menggambarkan aliran data atau proses yang dilakukan pada suatu rancangan sistem. DFD digunakan sebagai perangkat analisis dan perancangan terstruktur sehingga memungkinkan analis sistem memahami sistem secara visual yang berupa rangkaian aliran data yang saling berkaitan.

3.2.2.1 DFD Level 0

DFD Level 0 (diagram konteks) menggambarkan suatu sistem secara keseluruhan, termasuk aliran data masukan (input) ke dalam proses/kegiatan sistem maupun data keluaran (output). Diagram konteks dari aplikasi yang akan dibangun ditunjukkan pada gambar 3.4.

Admin/

Super User User

Data User Jumlah User

Informasi Default User

Daftar Status Users Daftar Status Users Data Admin Sistem Kriptografi RSA

Banyak Kunci (Autentikasi Pengguna pada Web)

0

Gambar 3.5DFD Level 0

Berdasarkan gambar 3.4, terdapat dua entitas, yaitu User dan Admin/Super User. Untuk memasuki sistem, kedua entitas harus memberikan masukan berupa password/kata sandi. Kemudian, sistem memberikan keluaran berupa daftar status User. Khusus bagi Admin, dapat memberikan masukan jumlah user ke dalam sistem untuk mengatur ulang (reset) seluruh User yang ada dan sistem akan memberikan keluaran berupa informasi default User yang terdiri dari nama pengguna dan kata sandi acak.

3.2.2.2 DFD Level 1

Berdasarkan diagram konteks, sistem terbagi menjadi empat aktivitas utama, yaitu: penggantian kata sandi, update status online/offline seluruh pengguna, pemeriksaan akses ke sistem dan pengaturan ulang seluruh pengguna. Setiap proses memerlukan input berupa data Admin dan data User (username dan kata sandi) sebagai identitas pengguna.


(40)

25 Pemeriksaan Akses ke Sistem Admin/ Super User User Kata Sandi Jumlah User Data Default Users

Data Status Users

Penggantian Kata Sandi Pengaturan ulang seluruh pengguna Update status online/offline seluruh pengguna Users

Data Default User Kata Sandi User

Keys DataUser Data Status Users

Data Admin Data User Informasi Akses User Data Status Users

Data Status Users Kata Sandi Admin

Data Admin Data Admin

Data Users

Kunci e dan n 1 2 3 4 D1 Keys D3 User_log

D2 Data Users

Data Admin/User

Gambar 3.6DFD Level 1

3.2.2.3 DFD Level 2 Proses 1

Pada proses 1 penggantian kata sandi, proses terbagi menjadi dua, yaitu enkripsi kata sandi yang diinginkan dan update kata sandi baru pengguna. Pada proses 1.1, kata sandi masing-masing Admin dan User dienkripsi menggunakan kunci e dan n yang terdapat dalam database Keys dan Users. Kemudian, kata sandi terenkripsi disimpan melalui proses 1.2.

Admin/

Super User Enkripsi User

Kata Sandi Kata Sandi Admin

Update Kata Sandi

Kata Sandi User

Kata Sandi Terenkripsi

Kata Sandi Kunci n 1.1 1.2 Users D1 Keys D3 Username Kunci e


(41)

3.2.2.4 DFD Level 2 Proses 2

Pada proses 2, proses update status seluruh pengguna terbagi menjadi dua, yaitu menentukan status Users dan menyimpan status seluruh pengguna. Proses 2.1 membaca isi database User_log untuk memberikan status Users kepada Admin dan

User. Proses 2.2 mendeteksi koneksi User yang login ke dalam sistem dan

menyimpannya ke dalam storage User_log.

Data Status Users Admin/

Super User Data Status Users Menentukan User Status Users

Data Users DataUser Data Status Users

Menyimpan status online/offline seluruh pengguna Data Admin

Data Users 2.1

2.2 User_log

D2

Users D1

Gambar 3.8DFD Level 2 Proses 2

3.2.2.5 DFD Level 2 Proses 4

Pada proses 4, proses pengaturan ulang (reset) seluruh pengguna terbagi menjadi tujuh, yaitu enkripsi kata sandi Admin dan User, dekripsi kata sandi admin, pemeriksaan kata sandi Admin, pembangkitan kunci setiap pengguna dan kata sandi User. Kata sandi dienkripsi oleh proses 4.1 dilanjutkan pemeriksaan kesamaan kata sandi pada proses 4.2. Apabila cocok, kata sandi tersebut didekripsi pada proses 4.3 menggunakan kunci yang telah dibangkitkan pada proses 4.5. Selain kunci-kunci setiap pengguna dibangkitkan, kata sandi setiap User juga dibangkitkan secara acak pada proses 4.6 lalu dienkripsi pada proses 4.7. Pasangan kata sandi yang telah dienkripsi dan username pada storage Users.


(42)

27

Admin/ Super User

Jumlah User

Data Admin +

Kata sandi terenkripsi Pemeriksaan kata sandi

Data Default Admin

Keys Data Admin

Pembangkitan kunci setiap pengguna

Data Admin Enkripsi kata sandi

Admin

Kata sandi terenkripsi Admin Dekripsi kata sandi

Admin

Pembangkitan kata sandi User Jumlah User

Data Default User Enkripsi kata sandi

Admin

Kata sandi Admin

Kunci Admin

Enkripsi kata sandi User Kunci User

Kata sandi User Keys Keys Keys Keys 4.1 4.7 4.4 4.3 4.2 4.5 4.6 Users D1 Keys D3

Gambar 3.9DFD Level 2 Proses 4

3.2.3 Kamus Data

Kamus data adalah daftar fakta tentang data dari setiap proses yang terjadi dalam suatu sistem. Kamus data untuk sistem ini adalah sebagai berikut:

a. Keys

File keys berfungsi untuk menyimpan semua data, yaitu kunci global yang digunakan dalam proses enkripsi dan dekripsi.

Tabel 3.1 Kamus Data Keys

Nama Tipe Data Keterangan p String of Integer Faktor prima p q String of Integer Faktor prima q n String of Integer Kunci publik n tot_n String of Integer Totien n = p · q

b. User_log

File User_log berfungsi untuk menyimpan semua status seluruh pengguna yang telah masuk ke sistem, yaitu halaman status.

Tabel 3.2 Kamus Data User_log

Nama Tipe Data Keterangan

username String Nama pengguna

stamp Datetime Tanggal dan waktu


(43)

File Users berfungsi untuk menyimpan seluruh identitas setiap pengguna sistem.

Tabel 3.3 Kamus Data Users

Nama Tipe Data Keterangan

_id String of Integer Nama pengguna

Kd String of Integer Kunci dekripsi

Ke String of Integer Kunci enkripsi pass String of List Kata sandi pengguna

yang telah dienkripsi

3.2.4 Mockup

Mockup adalah rancangan sistem yang berskala kecil dan tidak lengkap serta digunakan sebagai tampilan desain awal. Sistem ini terdapat lima page utama, yaitu Index page, Status page, Setting page, Reset page dan System page.

3.2.4.1 Index Page

Tampilan awal sistem ialah Index Page. Di dalam page ini terdapat pilihan navigasi dan form untuk login. Untuk masuk ke dalam sistem, pengguna harus memberikan input berupa username dan password pada form yang tersedia. Rancangan tampilan page ditunjukkan pada gambar 3.9:


(44)

29

3.2.4.2 Status Page

Status page ditunjukkan setelah pengguna melakukan login. Page ini menampilkandaftar seluruh pengguna beserta status online/offlinenya. Status masing-masing pengguna memiliki indikator perbedaan warna. Rancangan tampilan page ditunjukkan pada gambar 3.10:

Gambar 3.11Mockup Status page

3.2.4.3 Setting Page

Setting page dapat diakses dengan memilih link setting pada menu navigasi. Dalam page ini, terdapat form input untuk mengubah kata sandi pengguna yang bersangkutan. Rancangan tampilan page ditunjukkan pada gambar 3.11:

Gambar 3.12Mockup Setting page

3.2.4.4 Reset Page

Resetpage hanya dapat diakses oleh role admin. Dalam page ini, terdapat form input untuk mengatur ulang jumlah user beserta kata sandi setiap pengguna. Untuk melakukan reset, role admin harus menginputkan jumlah pengguna yang diinginkan serta password milik super user/admin. Rancangan tampilan page ditunjukkan pada gambar 3.12:


(45)

Gambar 3.13Mockup Reset page

3.2.4.5 System Page

Systempage hanya dapat diakses oleh role admin. Page ini hanya terdapat text yang mengindikasikan bahwa autorisasi pengguna berhasil. Rancangan tampilan page ditunjukkan pada gambar 3.13:


(46)

BAB IV

IMPLEMENTASI DAN PENGUJIAN

4.1 Implementasi

Dalam tugas akhir ini, program dibangun menggunakan bahasa pemrograman Python versi 2.7. Program ini terdiri dari 5 page utama, yaitu: pageindex untuk melakukan login sebelum pengguna masuk ke sistem, page status sebagai gerbang setiap user sebelum memasuki sistem, page setting untuk mengubah kata sandi, pagereset untuk admin mengatur ulang seluruh user beserta kata sandinya dan page system sebagai halaman indikator pengguna sebagai admin/super user.

4.1.1 IndexPage

Index Page merupakan page yang pertama kali muncul apabila URL sistem dibuka. Pada page ini, terdapat dua textinput untuk masing-masing username dan password. Password yang dimasukkan pengguna dienkripsi menggunakan algoritma RSA dan pasangan kunci milik pengguna tersebut serta dicocokkan dengan password yang terenkripsi dalamdatabase.


(47)

Gambar 4.1 IndexPage

4.1.2 StatusPage

Status Page merupakan page yang berfungsi sebagai gerbang setiap user sebelum memasuki sistem sebenarnya apabila seluruh userbelumlog in. Halaman ini menampilkan indikator user yang telah log in (online) dan mengakses status page [✹]atau belum (offline) [✹].


(48)

33

Gambar 4.2StatusPage

4.1.3 SettingPage

Setting Page merupakan page yang dapat digunakan masing-masing pengguna untuk mengubah kata sandi. Kata sandi yang baru akan dienkripsi dan disimpan ke dalam database. Proses enkripsi pada page Setting sama dengan proses pada Tabel 4.1.


(49)

Gambar 4.3SettingPage

4.1.4 System Page

System Page hanya dapat diakses oleh role admin dan berfungsi sebagai dummy page yang mengindkasikan bahwa pengguna telah memiliki role admin. Selain super user, user biasa dapat memiliki role admin apabila seluruh user telah log in ke dalam sistem.


(50)

35

Gambar 4.4System Page

4.1.5 ResetPage

Seperti SystemPage, Reset Page hanya dapat diakses oleh role admin. Page ini berfungsi untuk mengatur ulang seluruh users dan kata sandinya dengan memasukkan total users yang diinginkan serta kata sandi milik super admin. Setelah button Reset ditekan, sistem akan membangkitkan kunci-kunci dan kata sandi milik masing-masing users. Pasangan kata sandi dan kunci-kunci ini hanya akan ditampilkan sekali dan super admin harus menyerahkannya kepada users yang bersangkutan. Khusus pada super admin, kata sandinya tetap seperti ketika sebelum dilakukan reset.


(51)

Gambar 4.5ResetPage

4.2 Pengujian

Pengujian dilakukan terhadap algoritma Multiple-KeyRSA untuk mengukur

keberhasilan sistem dalam melakukan proses pembangkitan kunci, enkripsi dan dekripsi serta membandingkan waktu yang diperlukan untuk menghasilkan pasangan kunci untuk setiap pengguna dan panjang kunci. Pengujian dilakukan dengan kriteria sebagai berikut:

1. Plaintext berupa kata sandi yang terdiri dari karakter ASCII dengan panjang 8 karakter dan dibangkitkan secara acak.

2. Kunci-kunci dibangkitkan secara acak untuk jumlah user 2 hingga 10 pengguna untuk panjang kunci hingga 4096 bit dengan interval 512 bit.

3. Spesifikasi perangkat keras yang digunakan dalam pengujian adalah notebook dengan prosesor Intel Core i3 2,2 GHz dan RAM 4 GB DDR3.


(52)

37

4.2.1 Skenario Enkripsi

Misalkan pada page Index, masukan Username = admin dan Password = fauzana5 serta kunci n = 731, e = 185. Kunci yang digunakan ialah pasangan kunci masing-masing pengguna yang disimpan dalam database. Setelah button Login ditekan, kata sandi diproses sebagaimana terlihat pada Tabel 4.1.

Tabel 4.1 Enkripsi kata sandi

�� ������ � ≡ ������

f 102 527

a 97 600

u 117 185

z 122 694

a 97 600

n 110 25

a 97 600

5 53 138

Kemudian, kata sandi yang terenkripsiberupa Python list, yaitu:

[527, 600, 185, 694, 600, 25, 600, 138] akan dicocokkan dengan kata sandi yang terenkripsi pada database. Seperti proses pada page Index, kata sandi yang akan diubah melalui page Setting juga dienkripsi seperti proses yang ditunjukkan pada Tabel 4.1 dan disimpan ke dalam database.

4.2.2 Skenario Pembangkitan Kunci dan Proses Dekripsi

Misalkan pada Page Reset, super user memasukkan User total ( t) = 2 dan Super userpassword = fauzana5 serta kunci n = 731, e = 185 dan d = 425. Mula-mula, kata sandi super user dienkripsi seperti yang ditunjukkan pada Tabel 4.1 dan dicocokkan pada database. Apabila cocok, kata sandi didekripsi seperti Tabel 4.2.

Tabel 4.2Dekripsi kata sandi

� � ≡ �����

527 102 f

600 97 a

185 117 u

694 122 z

600 97 a


(53)

600 97 a

138 53 5

Selanjutnya, kunci-kunci yang baru, �,�,�,�(�) dibangkitkan dengan panjang sekitar 32 bit dan menggunakan algoritma Gordon’s Strong Prime serta algoritma Miller-Rabin Primality Test.

�= 2

�= 47701

�= 10729

�= 511784029

�(�) = 511725600

Kemudian pasangan kunci enkripsi dan dekripsi masing-masing user serta kata sandi acak dibangkitkan.

Tabel 4.3PasanganKata Sandi dan Kunci setiap User

���� ��������� �� ��

����0 ���7� 432276761 324244841

����1 �6��� 134208107 264359843

Dari kunci-kunci user, didapatkan kunci super

user�= 58015045793901427dari hasil perkalian masing-masing kunci Ke dan � = 85717315260319963 dari hasil perkalian masing-masing kunci Kd. Lalu, kata

sandi yang telah didekripsi pada Tabel 4.2 dienkripsi kembali menggunakan kunci yang baru.

4.2.3 Pengujian dan Analisis Hasil Enkripsi dan Dekripsi

Tujuan dari pengujian ini ialah untuk mengetahui jumlah karakter hasil enkripsi kata sandisepanjang 8 karakter untuk variasi panjang kunci hingga 4096 bit dengan interval 512 bit serta lama proses enkripsi dan dekripsi. Hasil pengujian divisualisasikan pada Gambar 4.6, 4.7 dan 4.8. Ringkasan panjang kunci dan panjang kata sandi terenkripsi serta lama proses enkripsi dan dekripsi diberikan pada Tabel 4.4. Rata-rata keseluruhan proses enkripsi adalah 0.404 detik dan dekripsi adalah 0.517 detik.


(54)

39

Tabel 4.4Panjang Ciphertext, Rata-rata lama eksekusi proses Enkripsi dan Dekripsi untuk setiap Panjang Kunci Kunci (bit) Panjang Kunci p (karakter) Panjang Kunci q (karakter) Panjang Kunci n (karakter) Panjang Kunci e (karakter) Panjang Ciphertext (karakter) Lama Enkripsi (detik) Lama Dekripsi (detik)

512 66 67 132 132 1078 0.006000042 0.006999969

1024 133 132 265 264 2138 0.039999962 0.101000071

1536 196 196 392 392 3156 0.090999842 0.111999989

2048 260 260 520 519 4182 0.197999954 0.282000065

2560 325 324 648 647 5202 0.382999897 0.474999905

3072 389 389 777 777 6234 0.599999905 0.761000156

3586 453 453 905 905 7263 0.950999975 1.246999979

4096 517 517 1033 1033 8287 1.371999979 1.676000118

Gambar 4.6 Grafik Panjang Kunci terhadap Panjang Kata Sandi Terenkripsi

Tabel 4.5 Kode enkripsi pesan

Step Kode

1: 2: 3: 4: 5:

def encrypt(Pt, n, e): C = []

for i in range(0, len(Pt)):

C.append(pow(ord(Pt[i]), e, n)) return C 1000 2000 3000 4000 5000 6000 7000 8000 9000

512 1024 1536 2048 2560 3072 3584 4096

P a n ja n g K a ta S a n d i T e re n k ri p si


(55)

Gambar 4.7 Grafik Panjang Kunci terhadap lama Proses Enkripsi

Tabel 4.6 Kode dekripsi pesan

Step Kode

1: 2: 3: 4: 5:

def decrypt(C, n, d): P = []

for i in range(0, len(C)):

P.append(chr(pow(C[i], d, n))) return P

Gambar 4.8 Grafik Panjang Kunci terhadap lama Proses Dekripsi

Berdasarkan Tabel 4.4 dan Gambar 4.6, hubungan panjang kunci dan kata sandi terenkripsi berbanding lurus (linier). Apabila fungsi pada Tabel 4.5 dan 4.6 dieksekusi,hasilnya terdapat pada Gambar 4.7 dan 4.8, yaitu: hubungan panjang kunci

0, 0 0, 2 0, 4 0, 6 0, 8 1, 0 1, 2 1, 4 1, 6

512 1024 1536 2048 2560 3072 3584 4096

L a m a P ro se s E n k ri p si ( d e ti k )

Panj ang Kunci (bit )

0, 0 0, 2 0, 4 0, 6 0, 8 1, 0 1, 2 1, 4 1, 6 1, 8

512 1024 1536 2048 2560 3072 3584 4096

L a m a P ro se s D e k ri p si ( d e ti k )


(56)

41

dan lama proses enkripsi/dekripsi membentuk kurva. Untuk enkripsi maupun dekripsi, kompleksitas waktu pada kasus terbaik dan rata-rata ialah Ο(log(�)2) dan pada kasus terburukialah Ο(log(�)3) [6].

4.2.4 Pengujian dan Analisis Waktu Eksekusi Miller-Rabin Primality Test

Tujuan dari pengujian ini ialah untuk mengetahui lama eksekusi pengujian bilangan prima Miller-Rabin untuk setiap 2 hingga 10 pengguna dan variasi panjang kunci hingga 4096 bit dengan interval 512 bit. Hasil pengujian divisualisasikan pada Gambar 4.9. Untuk rata-rata pemrosesan setiap panjang kunci, ringkasannya diberikan pada Tabel 4.7. Untuk pengujian prima Miller-Rabin, kompleksitas waktu ialah

Ο(�log3�), dengan � = banyaknya nilai � yang diuji atau |�| = jumlah digit � [6].

Gambar 4.9 Grafik Panjang Kunci terhadap lama eksekusiMiller-Rabin Primality Testuntuk setiap Jumlah Pengguna

0, 0 1, 0 2, 0 3, 0 4, 0 5, 0 6, 0

512 1024 1536 2048 2560 3072 3584 4096

W

a

k

tu

(

d

e

ti

k

)

Panj ang Kunci (bit )


(57)

Tabel 4.7Rata-rata lama eksekusi Miller-Rabin Primality Test untuk setiap Panjang Kunci

Panjang Kunci (bit) Waktu (detik) 512 0.007538211 1024 0.038682747 1536 0.123941353 2048 0.289738589 2560 0.721264308 3072 1.146872587 3586 2.333116841 4096 3.722636829

Tabel 4.8Kode algoritma Miller-Rabin

Step Kode

1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: def MillerRabin(n): u = n - 1

t = 0

while u & 1 == 0: u /= 2

t += 1

for i in range(len(str(n))): a = random.randint(2, n - 1)

if witness(a): return False return True

def witness(a): x = []

x.append(pow(a, u, n)) for i in range(1, t+1):

x.append(pow(x[i-1], 2, n)) if x[i] == 1 and

x[i-1] != 1 and x[i-1] != n - 1: return True

if x[t] != 1: return True return False

4.2.5 Pengujian dan Analisis Waktu Eksekusi Gordon Strong Prime

Tujuan dari pengujian ini ialah untuk mengetahui lama eksekusi pembangkitan bilangan prima menggunakan algoritma Gordon untuk setiap 2 hingga 10 pengguna dan variasi panjang kunci hingga 4096 bit dengan interval 512 bit. Hasil pengujian divisualisasikan pada Gambar 4.10. Untuk rata-rata pemrosesan untuk setiap panjang kunci, ringkasannya diberikan pada Tabel 4.8. Rata-rata keseluruhan pengeksekusian algoritma Gordon adalah 12.04876388 detik.Untuk algoritma Gordon, kompleksitas waktu ialah Ο(|�| log3).


(58)

43

Gambar 4.10Grafik Panjang Kunci terhadap lama eksekusi algoritma Gordon untuk Setiap Jumlah Pengguna

Tabel 4.9Rata-rata lama eksekusi algoritma Gordon untuk setiap Panjang Kunci

Panjang Kunci (bit) Waktu (det) 512 0.085000012 1024 0.463611099 1536 1.382944451 2048 4.238222215 2560 8.642666631 3072 15.00533333 3586 27.26494443 4096 39.30738888

0, 00 10, 00 20, 00 30, 00 40, 00 50, 00 60, 00

512 1024 1536 2048 2560 3072 3584 4096

W

a

k

tu

(

d

e

ti

k

)

Panj ang Kunci (bit )


(59)

Tabel 4.10Kode Pembangkit Bilangan Prima

Step Kode Big O

1: 2: 3: 4: 5: 6: def generateRandomPrime(bit): digit = bit / 8

n = random.randint(pow(10, digit - 1), pow(10, digit) - 1)

while not MillerRabin(n):

n = random.randint(pow(10, digit - 1), pow(10, digit) - 1)

return n

1 1 |�| log3

1

Kompleksitas Ο(|�| log3)

Tabel 4.11Kode algoritma Gordon

Step Kode Big O

1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: def generateStrongPrime(bit): n = bit / 2

r = generateRandomPrime(n) s = generateRandomPrime(n) while s == r:

s = generateRandomPrime(n) j = 1

p = 0

q = 2 * j * s + 1

while not MillerRabin(q): q = 2 * j * s + 1

j += 1

p0 = pow(r, (q - 1), (r * q)) –

pow(q, (r - 1), (r * q)) + r * q p0 = p0 % (r * q)

if p0 & 1 == 0:

return GordonStrongPrime(bit) j = 1

p = 2 * j * q * r + p0 while not MillerRabin(q):

p = 2 * j * q * r + p0 j += 1

return p

1 |�| log3 |�| log3

1 1 1 1 1 |�| log3

1 1 log� 1 1 1 1 |�| log3

1 1

Kompleksitas Ο(|�| log3)

4.2.6 Pengujian dan Analisis Waktu Eksekusi Pembangkitan Kunci

Tujuan dari pengujian ini ialah untuk mengetahui lama pembangkitan kunci Multiple-Key RSAuntuk setiap 2 hingga 10 pengguna dan variasi panjang kunci hingga 4096 bit dengan interval 512 bit. Hasil pengujian divisualisasikan pada Gambar 4.11. Untuk rata-rata pemrosesan untuk setiap panjang kunci, ringkasannya diberikan pada Tabel 4.12. Rata-rata keseluruhan pengeksekusian pembangkitan kunci Multiple-Key RSAadalah 29.53362501 detik.


(60)

45

Gambar 4.11Grafik Panjang Kunci terhadap lamaPembangkitan Kunci untuk Setiap Jumlah Pengguna

Tabel 4.12Rata-rata lama eksekusi Pembangkitan Kunci Multiple-KeyRSA untuk setiap Panjang Kunci

Panjang Kunci (bit) Waktu (det) 512 0.253888898 1024 1.304333316 1536 3.551555581 2048 10.73977778 2560 19.69411111 3072 42.8465556 3586 61.54122223 4096 96.33755559

0, 00 20, 00 40, 00 60, 00 80, 00 100, 00 120, 00 140, 00 160, 00

512 1024 1536 2048 2560 3072 3584 4096

w

a

k

tu

(

d

e

ti

k

)

Panj ang Kunci (bit )


(61)

BAB V

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Setelah melakukan analisis, prancangan dan pengujian terhadap Sistem Kriptografi RSA Banyak Kunci untuk Prototipe Autentikasi Pengguna pada Web, diperoleh kesimpulan sebagai berikut:

1. Proses enkripsi dan dekripsi pada algoritma Multiple-Key RSAdapat digunakan untuk menguji identitas pengguna yang autentik berdasarkan pasangan nama pengguna (username) dan kata sandi (password).

2. Panjang kunci yang dibangkitkan menggunakan algoritma Gordon’s Strong

Prime dan algoritma Miller-Rabin berbanding lurus terhadap panjang ciphertext (output enkripsi kata sandi). Dari gambar 4.6, semakin panjang kunci yang digunakan, semakin panjang pula kata sandi (ciphertext).

3. Secara implisit, penggunaan Strong Prime tidak efisien dalam pembangkitan bilangan prima karena membutuhkan waktu dan sumber daya lebih banyak. Berdasarkan tabel 4.7 dan 4.9, eksekusi algoritma Gordon 10 kali lebih lama daripada algoritma Miller-Rabin. Selain itu, algoritma Gordon membutuhkan fungsi Miller-Rabin minimal 4 kali untuk kasus terbaik.

4. Berdasarkan tabel 4.4, pembangkitan bilangan prima menggunakan algoritma Gordon’s Strong Prime tidak selalu membangkitkan kunci dengan panjang yang diinginkan.


(62)

47

5.2 Saran

Berikut saran-saran yang dapat dipertimbangkan untuk mengembangkan penelitian ini:

1. Untuk pengembangan sistem selanjutnya, algoritma digital signature dapat diimplementasikan untuk memenuhi fungsi non-repudiatory, yaitu menjamin semua pihak yang terlibat tidak dapat melakukan penyangkalan atas telah dikirim atau diterimanya pesan.

2. Sistem ini hanya diuji menggunakan kata sandi sepanjang 8 karakter acak dan panjang kunci hingga 4096 bit dengan interval 512 bit, sehingga untuk pengembangan selanjutnya dapat digunakan kata sandi dan kunci yang lebih panjang.Di sisi lain, poin utama untuk meningkatkan keamanan hanya dengan membangkitkan kunci (bilangan prima) p dan q yang sangat besar.

3. Kombinasi algoritma Miller-Rabin dan Gordon dalam pembangkitan kunci

kurang efisien, sehingga untuk pengembangan berikutnya dapat dipilih algoritma yang tepat dalam membangkitkan kunci agar waktu dan penggunaan sumber daya lebih efisien.

4. Pengukuran waktu eksekusi algoritma disarankan untuk menggunakan


(63)

DAFTAR PUSTAKA

[1] Bishop, D. 2003. Introduction to Cryptography with Java Applets. Sudbury: Jones and Bartlett Publishers, Inc.

[2] Brainard, J., et al. 2006. Fourth-Factor Authentication: Somebody You Know.

13th ACM Conference on Computer and Communications Security

(ACM CCS 2006). hal. 168-178.

[3] Cormen, T. H., Leiserson, C. E., Rivest, R. L., Stein, C. 2009. Introduction to Algorithms. Edisi ke-3. Massachusetts: MIT Press.

[4] Evans, J. 2004. PSCIOC/PSSDC Cross-Jurisdictional Identification,

Authentication and Authorization Working Group. Consultation Draft. Government of Ontario.

[5] Ferguson, N., et al. 2010. Cryptography Engineering: Design, Principles, and Practical Applications. Indianapolis: Wiley Publishing, Inc.

[6] Furlani, C. 2009. Digital Signature Standard. Federal Information Processing Standards Publication. National Institute of Standards and Technology. [7] Hershey, J. E. 2003. Cryptography Demystified: An Unconventional & Painless

Way to Aquire the Basic Skills of Cryptography for Applications in Communications. New York: McGraw-Hill.

[8] Indra, N.. 2011. Analisis dan Perbandingan Kecepatan Algoritma RSA dan

Algoritma ElGamal. Makalah. Bandung: Institut Teknologi Bandung.

[9] Loebenberger, D. and Nüsken M. 2011. “Analyzing Standards for RSA

Integers”. Dalam Nitaj, A. dan Pointcheval, D. (eds.). Progress in Cryptology (AFRICACRYPT '11) Proceedings:hal. 260-277. Berlin: Springer-Verlag.

[10] Mollin, R. A. 2002. RSA and Public-Key Cryptography. Florida: Chapman & Hall/CRC.

[11] Mollin, R. A. 2007. An Introduction to Cryptography. Edisi ke-2. Florida: Chapman & Hall/CRC.

[12] Mollin, R. A. 2007. “Recognizing primes”. International Journal of


(1)

<div id="headerright">

<p><span>Author:</span> Fauzana S</p> <p><span>Student ID:</span> 091401031</p> </div>

</div> </div>

<div class="container lightbluebg clearfix"> <div id="menucont" class="clearfix">

<div class="menu"> <ul>

<li class="active"><a title="Home" href="/">Home</a></li> <li><a title="" href="/about">About</a></li>

<li><a title="Contact" href="/contact">Contact</a></li> </ul>

</div> </div> </div>

<div class="container clearfix"> <div id="maincont" class="clearfix">

{% for message in get_flashed_messages() %}<div

class=flash>{{ message }}</div>{% endfor %}<div id="mainleft"> {% block content %}

{% endblock %}

<div class="sidecont clearfix"> <div class="sidesection clearfix">

<h4><a title="" href="#">Description</a></h4> <div class="sidetop">

<a class="hoverlink" title="" href="#"><img alt="" src="/static/side-1.jpg" /><div class="overlay link"></div></a>

</div>

<div class="sidebottom">

<p>Multiple Key RSA Implementation for Author's Undergraduate Theses</p>

</div> </div>

<div class="sidesection clearfix">

<h4><a title="" href="#">Institution</a></h4> <div class="sidetop">

<a class="hoverlink" title="" href="#"><img alt="" src="/static/side-2.jpg" /><div class="overlay link"></div></a>

</div>

<div class="sidebottom">

<p>Universitas Sumatera Utara</p> </div>

</div> </div> </div> </div> </div>

<div class="container clearfix">

<div id="footercont" class="clearfix">

<p>Multiple Key RSA &copy;&copy; 2013 - by <a title="fauzana s" href="http://twitter.com/__fauzana__" rel="external">Fauzana S</a></p>

</div> </div> </body> </html>


(2)

4. index.html

{% extends "template.html" %}{% block content %}<h1>Welcome</h1> <p>This is "..." web page portal. It's the greatest webpage there is.<br><br>Just try clicking on things to the left, you have to log in though. Do you think you have access? I doubt you can guess my password.

<h3>Login is required:</h3>

{% if error %}<p class=error><strong>Error:</strong>{{ error }}{% endif %}

<form action="" method=post> <dl>

<dt>Username:

<dd><input type=text name=username value="{{ request.form.username }}">

<dt>Password:

<dd><input type=password name=password> </dl>

<p><input type=submit value=Login> </form>

</div>

<div id="mainright"> <h3>Other Links</h3>

<ul class="otherlinks clearfix">

<li><a title="log in into system" href="/login">Login</a></li> </ul>{% endblock %}

5. status.html

{% extends "template.html" %}{% block content %} <h1>Log In Status</h1>

<script type=text/javascript>

setInterval(function(){

$.getJSON($SCRIPT_ROOT + '/check', { echoValue: $('#me').text() }, function(data) {

$(".red").css({"color": "#C00"}); for (var i in data.result) {

document.getElementById(data.result[i]).style['color']="#00C"; }

} );

return false; },2000);

</script>

<h2>Welcome, <span id="me">{{ user }}</span>!</h2> <div class="users-log">

<h5>Logged in user: [<span style="color: #00C;">&#10041;</span>], otherwise not.</h5>

{% for u in users_list %}<p>[<span class="red" id="{{ u }}" style="color: #C00">&#10041;</span>] {{ u }}

{% endfor %}<p id="test"> </div>

</div>

<div id="mainright"> <h3>Other Links</h3>


(3)

<li><a title="log out from system" href="/logout">Logout</a></li> <li><a title="change password" href="/setting">Setting</a></li> <li><a title="reset all users" href="/reset">Reset</a></li> <li><a title="system core" href="/system">System</a></li> </ul>{% endblock %}

5. setting.html

{% extends "template.html" %}{% block content %}<h1>Welcome User!</h1>

<p>Bored? Need a password change?

{% if error %}<p class=error><strong>Error:</strong>{{ error }}{% endif %}

<form action="" method=post> <dl>

<dt>New Password:

<dd><input type=password name=password> <dd><input type=submit value=Submit> </dl>

</form> </div>

<div id="mainright"> <h3>Other Links</h3>

<ul class="otherlinks clearfix">

<li><a title="log out from system" href="/logout">Logout</a></li> <li><a title="find users status" href="/status">Status</a></li> <li><a title="reset all users" href="/reset">Reset</a></li> <li><a title="system core" href="/system">System</a></li> </ul>{% endblock %}

6. system.html

{% extends "template.html" %}{% block content %}<h1>System</h1>

<p>Make a decision?<br>Memorandum?<br>Agreement?<br>Conspiracy?<br>...<br>...

..<br>..., etc. </div>

<div id="mainright"> <h3>Other Links</h3>

<ul class="otherlinks clearfix">

<li><a title="log out from system" href="/logout">Logout</a></li> <li><a title="find users status" href="/status">Status</a></li> <li><a title="change password" href="/setting">Setting</a></li> <li><a title="reset all users" href="/reset">Reset</a></li> </ul>{% endblock %}

7. reset.html

{% extends "template.html" %}{% block content %}<h1>Welcome Super User!</h1>

<p>Bored? Need a change? F5?

{% if error %}<p class=error><strong>Error:</strong>{{ error }}{% endif %}

<h3>Reset</h3>


(4)

<div class="spoiler">

<form action="{{ url_for('reset') }}" method=post> <dl>

<dt>Users total:

<dd><input type=text name=users> <dt><i>Super user</i> password:

<dd><input type=password name=password> <dd><input type=submit name=btn value=Reset> </dl>

</form> </div>

{% if allUsers %} <div class="warning">

<p>Warning: Please save this credentials in <strong>safe</strong> place, it's only show <strong>once</strong>.

<ol>

{% for k in allUsers %} <li>{{ k }} : {{ allUsers[k] }}</li> {% endfor %}

</ol>

</div>{% endif %} </div>

<div id="mainright"> <h3>Other Links</h3>

<ul class="otherlinks clearfix">

<li><a title="log out from system" href="/logout">Logout</a></li> <li><a title="find users status" href="/status">Status</a></li> <li><a title="change password" href="/setting">Setting</a></li> <li><a title="system core" href="/system">System</a></li>

</ul>{% endblock %}

8. 404.html

{% extends "template.html" %}{% block content %}<h1>Page not found!</h1>

<p>I don't know where you were trying to go, but it's not there. </div>

<div id="mainright"> <h3>Other Links</h3>

<ul class="otherlinks clearfix">

<li><a title="log in into system" href="/">Login</a></li> </ul>{% endblock %}

9. contact.html

{% extends "template.html" %}{% block content %}<h1>Contact</h1> <p>To contact me, click your heels together three times.

</div>

<div id="mainright"> <h3>Other Links</h3>

<ul class="otherlinks clearfix">

<li><a title="log in into system" href="/">Login</a></li> </ul>{% endblock %}


(5)

10. about.html

{% extends "template.html" %}{% block content %}<h1>About</h1> <p>My name is Nana and I am Python ninja!.

</div>

<div id="mainright"> <h3>Other Links</h3>

<ul class="otherlinks clearfix">

<li><a title="log in into system" href="/">Login</a></li> </ul>{% endblock %}


(6)

Fauzana S

0812 60 27 67 92

Jl. Sisingamangaraja km. 11.5 Komp. Riviera Blok NC 6, Amplas,



Medan, Sumatera Utara

nana@fauzana.com

 Pendidikan

2009 – 2013 S1 Ilmu Komputer Fasilkom-TI USU, Medan.

2003 – 2009 Pondok Pesantren Modern Nurul Ikhlas, Tanah

Datar.

1997 – 2003 SDN 173651 Pintu Pohan, Toba Samosir.

 Keahlian

Bahasa Indonesia, Inggris, Arab.

Bahasa Pemrograman Python, PHP, C# .NET, C++, Java, JavaScript, VB

.NET.

Database MySQL, MongoDB, Oracle, MS-SQL.

Version Control System Git, Subversion.