Rancangan Model Algoritma Pohlig–Hellman Multiple-Key Berdasarkan Algoritma R.S.A. Multiple-Key

(1)

RANCANGAN MODEL ALGORITMA POHLIG–HELLMAN

MULTIPLE-KEY

BERDASARKAN ALGORITMA

R.S.A.

MULTIPLE-KEY

TESIS

Oleh

ALLWIN M. SIMARMATA

107038041/TINF

PROGRAM STUDI MAGISTER (S-2) TEKNIK INFORMATIKA

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

MEDAN


(2)

RANCANGAN MODEL ALGORITMA POHLIG–HELLMAN

MULTIPLE-KEY

BERDASARKAN ALGORITMA

R.S.A.

MULTIPLE-KEY

TESIS

Oleh

ALLWIN M.SIMARMATA

107038041/TINF

PROGRAM STUDI MAGISTER (S-2) TEKNIK INFORMATIKA

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

MEDAN


(3)

RANCANGAN MODEL ALGORITMA POHLIG–HELLMAN

MULTIPLE-KEY

BERDASARKAN ALGORITMA

R.S.A.

MULTIPLE-KEY

TESIS

Diajukan sebagai salah satu syarat untuk memperoleh gelar

Magister Komputer pada Program Studi Magister Teknik Informatika (S-2) Fakultas Ilmu Komputer dan Teknologi Informasi

Universitas Sumatera Utara

Oleh

ALLWIN M.SIMARMATA

107038041/TINF

PROGRAM STUDI MAGISTER (S-2) TEKNIK INFORMATIKA

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

MEDAN


(4)

PENGESAHAN TESIS

Judul Tesis : RANCANGAN MODEL ALGORITMA POHLIG HELLMAN MULTIPLE-KEY BERDASARKAN ALGORITMA R.S.A. MULTIPLE KEY

Nama : ALLWIN M. SIMARMATA

NIM : 107038041

Program Studi : Magister Teknik Informatika

Fakultas : Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara

Menyetujui Komisi Pembimbing,

Dr. Sutarman, M.Sc Anggota

Prof. Dr. Drs. Iryanto, M.Si Ketua

Ketua Program Studi, Dekan,

Prof. Dr. Muhammad Zarlis NIP. 195707011986011003

Prof. Dr. Muhammad Zarlis NIP. 195707011986011003


(5)

PERNYATAAN ORISINALITAS

RANCANGAN MODEL ALGORITMA POHLIG–HELLMAN MULTIPLE-KEY BERDASARKAN ALGORITMA R.S.A MULTIPLE MULTIPLE-KEY

TESIS

Dengan ini saya nyatakan bahwa saya mengakui semua karya tesis ini adalah hasil kerja saya sendiri kecuali kutipan dan ringkasan yang tiap satunya telah dijelaskan sumbernya dengan benar.

Medan, Juli 2012

Allwin M. Simarmata NIM. 107038041


(6)

PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH

UNTUK KEPENTINGAN AKADEMIS

Sebagai sivitas akademika Universitas Sumatera Utara, saya bertandatangan dibawah ini :

Nama : Allwin M. Simarmata NIM : 107038041

Program Studi : Magister (S-2) Teknik Informatika Jenis Karya Ilmiah : Tesis

Demi pengembangan ilmu pengetahuan, menyetujui untuk memberikan kepada Universitas Sumatera Utara Hak Bebas Royalti Non-Eksklusif (Non-Exclusive Royalty Free Right) atas Tesis saya yang berjudul :

“RANCANGAN MODEL ALGORITMA POHLIG–HELLMAN MULTIPLE-KEY BERDASARKAN ALGORITMA R.S.A.

MULTIPLE-KEY”

beserta perangkat yang ada (jika diperlukan). Dengan Hak Bebas Royalti Non-Eksklusif ini, Universitas Sumatera Utara berhak menyimpan, mengalih media, memformat, mengelola dalam bentuk data-base, merawat dan mempublikasikan Tesis saya ini tanpa meminta izin dari saya selama tetap mencantumkan nama saya sebagai penulis dan sebagai pemegang dan atau sebagai pemilik hak cipta. Demikian pernyataan ini dibuat dengan sebenarnya.

Medan, 01 Agustus 2012


(7)

Telah diuji pada Tanggal : 22 Juli 2012

PANITIA PENGUJI TESIS

Ketua : Prof. Dr. Drs. Iryanto, M.Si Anggota : 1. Dr. Sutarman,M.Sc

2. Prof. Dr. Muhammad Zarlis,M.Sc 3. Prof. Dr. Drs. Herman Mawengkang 4. Dr. Zakarias Situmorang, MT


(8)

RIWAYAT HIDUP

DATA PRIBADI

Nama lengkap berikut gelar : Allwin M. Simarmata, S.Kom Tempat dan Tanggal Lahir : Pangururan, 17 September 1985

Alamat Rumah : Jl. Merak II No. 306, P. Mandala, Kab.Deli serdang Telepon / HP : +6285373467112

e-mail : allwin.simarmata@yahoo.com

Instansi tempat bekerja : Biro Perencanaan dan Kerjasama USU Medan Alamat Kantor : Jl. Dr. T. Mansur No. 9 Kampus USU, Medan Telepon Kantor : 061-8215937

DATA PENDIDIKAN

SD : Inp. No.174605 Samosir Tamat : 1997 SMP : Negeri 2 Simanindo, Samosir Tamat : 2000 SMA : Negeri 8 Medan Tamat : 2003 Strata-1 : Ilmu Komputer USU Medan Tamat : 2008


(9)

KATA PENGANTAR

Pertama-tama kita panjatkan puji syukur kepada Tuhan Yang Maha Esa atas segala limpahan rahmat dan karunia-Nya sehingga tesis ini dapat diselesaikan.

Dengan selesainya tesis ini, perkenankanlah kami mengucapkan terima kasih yang sebesar-besarnya kepada:

Rektor Universitas Sumatera Utara, Prof. Dr. dr. Syahril Pasaribu DTM&H, M.Sc(CTM),Sp.A(K) atas kesempatan yang diberikan kepada kami untuk mengikuti dan menyelesaikan pendidikan Program Magister.

Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara, Prof. Dr. Muhammad Zarlis,M.Sc, yang memberi kesempatan kepada kami menjadi mahasiswa Program Magister pada Program Studi Magister Teknik Informatika Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.

Ketua Program Studi Magister Teknik Informatika Prof. Dr. Muhammad Zarlis,M.Sc., sekretaris Program Studi sekaligus Pembimbing Akademik Bapak Muhammad Andri Budiman, ST., M.Comp.Sc beserta seluruh staf pengajar pada Program Studi Magister Teknik Informatika Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.

Terimakasih yang tak terhingga dan penghargaan yang setinggi-tingginya kami ucapkan kepada Prof.Dr. Drs. Iryanto, M.Si selaku Promotor/Pembimbing Utama yang dengan penuh perhatian dan telah memberikan dorongan serta bimbingan kepada penulis, demikian juga kepada Dr. Sutarman, M.Sc selaku Co. Promotor/Pembimbing Lapangan yang dengan penuh kesabaran menuntun dan membimbing kami hingga selesainya penelitian ini.

Terimakasih kepada Pembantu Rektor IV USU yang telah memberikan izin untuk mengikuti program Magister Teknik Informatika USU. Terimakasih juga kepada Kepala Biro Perencanaan dan Kerjasama USU, Kepala Bagian dan Ka.sub. Bagian serta rekan-rekan kerja pada Biro Perencanaan dan Kerjasama USU yang telah memberi doa restu dan motivasi selama mengikuti pendidikan.

Kepada Ayahanda Saut Simarmata, A.Md., Ibunda Lenta Situmorang,S.Pd dan adinda Adhy B. Simarmata,S.Pd dan Arta E.M. Simarmata, S.Ked, serta Dessy Natalya Pasaribu,SKM. Terimakasih atas segala pengorbanan kalian baik moril maupun materil, budi baik ini tidak dapat dibalas hanya diserahkan kepada Tuhan Yang Maha Esa.

Dalam penyusunan tesis ini penulis telah berusaha sebaik-baiknya, akan tetapi mungkin masih memiliki banyak kekurangan. Penulis berharap adanya kritik dan saran yang membangun guna penyempurnaan.


(10)

RANCANGAN MODEL ALGORITMA POHLIG–HELLMAN

MULTIPLE-KEY

BERDASARKAN ALGORITMA

R.S.A

MULTIPLE-KEY

ABSTRAK

Penelitian ini menggunakan Algoritma Pohlig-Hellman dan Algoritma RSA yang merupakan bagian dari algoritma asimetris dengan menggunakan pembangkitan bilangan prima sebagai kuncinya. Algoritma RSA sudah lebih baik dibandingkan dengan algoritma Pohlig-Hellman karena menggunakan dua bilangan prima sebagai kunci sedangkan pada algoritma Pohlig-Hellman hanya menggunakan satu kunci saja.Rancangan model Algoritma Pohlig-Hellman multiple-key dapat menjadi solusi untuk pengembangan algoritma Pohlig-Hellmankarena melakukan penambahan kunci yang mampu meningkatkan keamanan informasi pada algoritma. Dalam penelitian, rancangan model diperoleh dengan melihat kekuatan dan kelemahan yang ada pada algoritma Pohlig-Hellman dengan cara membandingkannya dengan algoritma RSA dan algoritma RSA multiple-key. Kekuatan dan kelemahan algoritma diukur berdasarkan kecepatan proses dan tingkat kesulitan algoritma untuk ditembus oleh pihak lain.Teorema Fermat digunakan dalam pembangkitan bilangan prima yang digunakan sebagai kunci pada algoritma.Berdasarkan hal tersebut maka dapat dirancangpengembangan algoritma Pohlig-Hellman dengan konsep multiple-key.Hasil pengujian yang diperoleh pada tesis ini adalah bahwa model algoritma Pohlig-Hellman multiple-keylebih baik dibandingkan dengan algoritma sebelumnya dengan penambahan kunci menjadikan algoritma lebih sulit untuk ditembus kunci rahasianya karena menerapkan kunci yang berlapis pada proses enkripsi dan dekripsi.


(11)

THE DESIGN MODEL OF MULTIPLE-KEY POHLIG–

HELLMAN ALGORITHM BY MULTIPLE-KEY R.S.A

ALGORITHM

ABSTRACT

This study uses Pohlig-Hellman algorithm and the RSA algorithm, which is part of an asymmetric algorithm using the generation of prime numbers as keys. RSA algorithm is better than the Pohlig-Hellman algorithm for use of two prime numbers as keys while the Pohlig-Hellman algorithm uses only one key.The design of Pohlig-Hellman algorithm model of multiple-key can be a solution for the development of Pohlig-Hellman algorithm for adding a key that can enhance the security of informationon the algorithm. In the present study, the design of the model is obtained by looking at the strengths and weaknesses that exist in the Pohlig-Hellman algorithm by comparing it with the RSA algorithm and the multiple-key RSA algorithm. Strengths and weaknesses of the algorithm is measured by the speed of the process and the difficulty level algorithms to be penetrated by the other party. Fermat's theorem is used in the generation of prime numbers are used as the key to the algorithm. Underthese conditions, can be designed Pohlig-Hellman algorithm development with the concept of multiple-key. The test results obtained in this thesis is that the Pohlig-Hellman algorithm model of multiple-key algorithm is better than ever with the addition key algorithms make it more difficult to penetrate the secret key for implementing a layered key to the process of encryption and decryption.


(12)

DAFTAR ISI

Halaman

KATA PENGANTAR i

ABSTRAK Error! Bookmark not defined.

ABSTRACT Error! Bookmark not defined.

DAFTAR ISI iv

DAFTAR GAMBAR vii

DAFTAR TABEL viii

BAB I PENDAHULUAN 1

1.1. Latar Belakang 1

1.2. Perumusan Masalah 4

1.3. Tujuan Penelitian 5

1.4. Manfaat Penelitian 5

1.5. Batasan Masalah 5

BAB II TINJAUAN PUSTAKA 6

2.1. Kriptografi 6

2.1.1. Perkembangan dan Konsep Kriptografi 7

2.1.2. Terminologi Kriptografi 8

2.1.3. Penggunaan Kriptografi 10

2.1.4. Kriptografi Kunci Publik 11

2.2. Teori Bilangan 11


(13)

2.2.3. Algoritma Euclid 13

2.2.4. Kekongruenan 14

2.2.5. Invers Modulo 15

2.2.6. Euler Totien Function 16

2.3. Pembangkitan Bilangan Prima 16

2.3.1. Teorema Fermat 17

2.3.2. Konsep Teorema Fermat 17

2.4. Algoritma Pohlig-Hellman 18

2.4.1. Perkembangan Algoritma Pohlig-Hellman 18 2.4.2. Proses Algoritma Pohlig-Hellman 18 2.4.3. Contoh Kasus Algoritma Pohlig-Hellman 19

2.5. Algoritma RSA 21

2.5.1. Perkembangan Algoritma RSA 21

2.5.2. Proses Algoritma RSA 22

2.5.3. Contoh Kasus Algoritma RSA 22 2.5.4. Algoritma RSA Multiple Key 24 2.5.5. Contoh Kasus RSA Multiple Key 26

BAB III METODE PENELITIAN 29

3.1. Bahan-bahan 29

3.2. Analisis Algoritma 29

3.2.1. Analisis Algoritma Pohlig-Hellman 29

3.2.2. Analisis Algoritma RSA 30

3.2.3. Analisis Algoritma RSA Multiple-key 32


(14)

3.3. Analisis Sistem 35

3.4. Perancangan Sistem 37

3.5. Kamus Data 43

3.6. Perancangan Antarmuka 44

BAB IV HASIL DAN PEMBAHASAN 47

4.1. Perbandingan Algoritma 47

4.2. Tampilan Antarmuka Sistem 53

4.3. Pengujian 57

4.2.1. Proses Pembangkitan Kunci 58

4.2.2. Proses Enkripsi 60

4.2.3. Proses Dekripsi 61

4.4. Pembahasan 63

BAB V KESIMPULAN DAN SARAN 65

5.1. Kesimpulan 65

5.2. Saran 66


(15)

DAFTAR GAMBAR

Nomor Gambar

Judul Hal.

3.1. Diagram konteks sistem 36

3.2. Diagram Use-case 37

3.3. Diagram Sequence 38

3.4. Diagram Class 38

3.5. Diagram Activity 39

3.6. Flowchart algoritma Pohlig-Hellman multiple-key 41

3.7. Flowchart teorema Fermat 41

3.8. Flowchart enkripsi 42

3.9. Flowchart dekripsi 43

3.10. Tampilan rancangan menu program 44 3.11. Tampilan proses enkripsi dengan multiple-key 45 3.12. Tampilan proses enkripsi tanpa multiple-key 45

3.13 Tampilan proses dekripsi 46

4.1. Tampilan awal program 54

4.2. Tampilan awal enkripsi 54

4.3. Tampilan proses enkripsi dengan multiple-key 55 4.4. Tampilan proses dekripsi dengan multiple-key 56 4.5. Tampilan enkripsi tanpa multiple-key 56 4.6. Tampilan dekripsi tanpa multiple-key 57 4.7. Tampilan pembangkitan kunci dengan multiple-key 59 4.8. Tampilan proses pengujian pembangkitan kunci 59 4.9. Tampilan pengujian proses enkripsi dengan multiple-key 60 4.10. Tampilan pengujian proses enkripsi tanpa multiple-key 61 4.11. Tampilan pengujian proses dekripsi dengan multiple-key 62


(16)

DAFTAR TABEL

Nomor Gambar

Judul Hal.

3.1. Kamus Data 43

4.1. Perbandingan algoritma Pohlig-Hellman dan algoritma RSA 48 4.2. Perbandingan algoritma RSA dan algoritma RSA multiple-key 48 4.3. Perbandingan algoritma RSA multiple-key dan model

algoritma Pohlig-Hellman multiple-key

51

4.4. Perbandingan algoritma Hellman dan algoritma Pohlig-Hellman multiple-key

48


(17)

RANCANGAN MODEL ALGORITMA POHLIG–HELLMAN

MULTIPLE-KEY

BERDASARKAN ALGORITMA

R.S.A

MULTIPLE-KEY

ABSTRAK

Penelitian ini menggunakan Algoritma Pohlig-Hellman dan Algoritma RSA yang merupakan bagian dari algoritma asimetris dengan menggunakan pembangkitan bilangan prima sebagai kuncinya. Algoritma RSA sudah lebih baik dibandingkan dengan algoritma Pohlig-Hellman karena menggunakan dua bilangan prima sebagai kunci sedangkan pada algoritma Pohlig-Hellman hanya menggunakan satu kunci saja.Rancangan model Algoritma Pohlig-Hellman multiple-key dapat menjadi solusi untuk pengembangan algoritma Pohlig-Hellmankarena melakukan penambahan kunci yang mampu meningkatkan keamanan informasi pada algoritma. Dalam penelitian, rancangan model diperoleh dengan melihat kekuatan dan kelemahan yang ada pada algoritma Pohlig-Hellman dengan cara membandingkannya dengan algoritma RSA dan algoritma RSA multiple-key. Kekuatan dan kelemahan algoritma diukur berdasarkan kecepatan proses dan tingkat kesulitan algoritma untuk ditembus oleh pihak lain.Teorema Fermat digunakan dalam pembangkitan bilangan prima yang digunakan sebagai kunci pada algoritma.Berdasarkan hal tersebut maka dapat dirancangpengembangan algoritma Pohlig-Hellman dengan konsep multiple-key.Hasil pengujian yang diperoleh pada tesis ini adalah bahwa model algoritma Pohlig-Hellman multiple-keylebih baik dibandingkan dengan algoritma sebelumnya dengan penambahan kunci menjadikan algoritma lebih sulit untuk ditembus kunci rahasianya karena menerapkan kunci yang berlapis pada proses enkripsi dan dekripsi.


(18)

THE DESIGN MODEL OF MULTIPLE-KEY POHLIG–

HELLMAN ALGORITHM BY MULTIPLE-KEY R.S.A

ALGORITHM

ABSTRACT

This study uses Pohlig-Hellman algorithm and the RSA algorithm, which is part of an asymmetric algorithm using the generation of prime numbers as keys. RSA algorithm is better than the Pohlig-Hellman algorithm for use of two prime numbers as keys while the Pohlig-Hellman algorithm uses only one key.The design of Pohlig-Hellman algorithm model of multiple-key can be a solution for the development of Pohlig-Hellman algorithm for adding a key that can enhance the security of informationon the algorithm. In the present study, the design of the model is obtained by looking at the strengths and weaknesses that exist in the Pohlig-Hellman algorithm by comparing it with the RSA algorithm and the multiple-key RSA algorithm. Strengths and weaknesses of the algorithm is measured by the speed of the process and the difficulty level algorithms to be penetrated by the other party. Fermat's theorem is used in the generation of prime numbers are used as the key to the algorithm. Underthese conditions, can be designed Pohlig-Hellman algorithm development with the concept of multiple-key. The test results obtained in this thesis is that the Pohlig-Hellman algorithm model of multiple-key algorithm is better than ever with the addition key algorithms make it more difficult to penetrate the secret key for implementing a layered key to the process of encryption and decryption.


(19)

BAB I

PENDAHULUAN

1.1. Latar Belakang

Keamanan dan kerahasiaan pesan, data atau informasi menjadi permasalahan yang sangat penting dalam pertukaran atau pengiriman informasi seperti informasi perbankan, pesan rahasia, data rahasia perkantoran atau pertukaran data lainnya. Hal ini sangat penting supaya pesan, data atau informasi tersebut tidak jatuh kepada pihak yang tidak berkepentingan untuk mengetahuinya (Bishop, 2010). Berbagai ancaman yang mungkin terjadi berupa interupsi, penyadapan, maupun modifikasi pada informasi yang akan dikirim. Kriptografi merupakan salah satu cara yang dapat digunakan untuk mengatasi permasalahan ini.

Kriptografi berasal dari bahasa Yunani yang terdiri dari kata crypto dan graphia. Crypto berarti rahasia dan graphia berarti tulisan. Kriptografi merupakan ilmu dan seni untuk menjaga keamanan pesan ketika dikirim dari sebuah sumber informasi ke suatu tujuan pengiriman informasi (Ariyus, 2008). Matematika merupakan landasan dasar dalam ilmu kriptografi. Sebagian besar proses dalam kriptografi menggunakan perhitungan matematis baik dalam perhitungan kunci rahasia ataupun dalam perhitungan kode rahasia yang akan digunakan.

Ide awal kriptografi adalah dalam penggunaan suatu algoritma dengan merahasiakan algoritma yang digunakan. Konsep algoritma ini disebut dengan algoritma kriptografi klasik. Namun seiring dengan perkembangan, cara ini menjadi kurang efisien karena algoritma yang digunakan sudah umum diketahui


(20)

adalah dengan membuat kunci rahasia untuk mengenkripsi ataupun mendekripsi. Dalam pengiriman suatu informasi, hanya pengirim dan penerima informasi saja yang berhak untuk mengetahui informasi tersebut. Pembuatan kunci rahasia disepakati antara pengirim dan penerima supaya tidak ada pihak lain yang memperoleh informasi tersebut. Dengan penggunaan kunci rahasia maka akan lebih sulit untuk menembus algoritma.

Berdasarkan penggunaan kuncinya algoritma kriptografi dikelompokkan atas dua bagian besar yaitu algoritma simetris dan algoritma asimetris. Algoritma simetris menggunakan kunci yang sama untuk melakukan enkripsi dan dekripsi. Beberapa contoh algoritma simetris antara lain Data Encryption Standard (DES), RC2, RC4, RC5, RC6, International Data Encryption Algorithm (IDEA), Advanced Encryption Standard (AES), One Time Pad (OTP), A5 dan sebagainya). Algoritma asimetri menggunakan kunci yang berbeda untuk enkripsi dan dekripsi. Beberapa contoh algoritma asimetris antara lain Digital Signature Algorithm (DSA), RSA, Diffie-Hellman, Pohlig-Hellman, Elliptic Curve Crypthography (ECC), Kriptografi Quantum dan sebagainya. (Ariyus, 2008)

Dalam tesis ini terdapat dua algoritma asimetris yang dibahas yaitu algoritma Pohlig-Hellman dan algoritma RSA. Kedua algoritma ini menggunakan pembangkitan bilangan prima sebagai kunci saat melakukan enkripsi. Pada dasarnya cara kerja algoritma Pohlig-Hellman lebih sederhana dibandingkan dengan algoritma RSA karena hanya menggunakan satu bilangan prima sebagai kunci privat, sedangkan untuk algoritma RSA menggunakan dua bilangan prima untuk pembangkitan kunci publik. Namun dengan penggunaan dua bilangan tersebut menjadikan RSA lebih rumit untuk ditembus keamanan datanya.

Dalam untuk menghitung berupa bilangan bulat (Thiong-Ly, 1993). Algoritma ini ditemukan oleh Roland


(21)

Algoritma RSA merupakan bagian dari kriptografi asimetris yang dijabarkan pertama sekali oleh tiga orang alumni da

yaitu pada tahun

Huruf RSA tersebut berasal dari inisial nama mereka yaitu Rivest, Shamir dan Adleman. Algoritma RSA adalah publik. Algoritma RSA banyak digunakan dan dipercaya dalam mengamankan data atau informasi menggunakan kunci dengan bilangan yang cukup besar. Algoritma tersebut dipatenkan oleh Massachusetts Institute of Technology pada ta bilangan yang besar menjadi faktor-faktor prima. Pemfaktoran dilakukan untuk memperoleh kunci pribadi. Sejauh ini belum ditemukan algoritma yang lebih baik dari RSA (William, 2005).

Dengan melakukan pembangkitan dua bilangan prima, algoritma RSA membutuhkan waktu yang cukup banyak dalam melakukan prosesnya. Namun algoritma RSA lebih banyak dikembangkan karena konsep yang cukup rumit untuk ditembus. Salah satu pengembangan Algoritma RSA adalah dengan konsep multiple-key. Multiple-key adalah penambahan kunci-kunci pada proses enkripsi dan dekripsi yang digunakan untuk meningkatkan keamanan data. (Shcneider, 2006)

Konsep multiple-key dapat digunakan dalam untuk algoritma asimetris karena dapat meningkatkan kualitas dan kekuatan dari kunci yang sudah ada sebelumnya. Pengembangan dari algoritma Pohlig-Hellman dengan multiple-key adalah ide yang dikembangkan dalam tulisan ini. Penerapan multiple-key pada algoritma Pohlig-Hellman diharapkan akan dapat meningkatkan kehandalan algoritma dalam keamanan data. Adanya beberapa kesamaan konsep antara algoritma Pohlig-Hellman dan algoritma RSA dalam proses pembangkitan bilangan prima dan proses yang lainnya menjadi dasar untuk membuat rancangan model Algoritma Pohlig-Hellman multiple-key.


(22)

Pengujian bilangan prima merupakan cara dalam penentuan bilangan prima yang sudah diformula dan akan digunakan dalam pembangkitan kunci publik dalam algoritma Pohlig-Hellman dan RSA (Teske, 1999). Terdapat beberapa teori

tentang pengujian bilangan prima seperti Algoritma Primality Proving, Pengujian Bilangan Prima Lucas-Lehmer dalam Bilangan Mersenne, Teorema Pocklington, Teorema Proth, Pengujian Prima Pepin, Fermat’s Little Theorem, Primes is in P, Sophie Germain’s Prime Density Conjecture dan beberapa pengujian bilangan prima lainnya (Mollin, 2007). Pengujian bilangan prima pada setiap teorema mempunyai cara kerja yang berbeda dan beberapa diantaranya ada yang sederhana dan cukup membuktikan keprimaan suatau bilangan.

Dalam tulisan ini menggunakan pembangkitan kunci bilangan prima teorema Fermat. Pada dasarnya teorema Fermat mampu melakukan pengujian bilangan prima dengan pengujian yang baik. Dengan syarat rumus a p-1 mod = 1, dimana p merupakan bilangan yang akan diuji keprimaannya maka akan dilakukan pengujian berulang untuk menguji setiap bilangan apakah prima atau tidak namun dengan syarat bahwa nilai 1 ≤ a < p.

1.2. Perumusan Masalah

Berdasarkan latar belakang yang telah diuraikan didapati bahwa algoritma Pohlig-Hellman mempunyai tingkat keamanan yang relatif kurang baik dibandingkan algoritma RSA. Hal ini dikarenakan algoritma Pohlig-Hellman masih menggunakan satu bilangan prima untuk pembangkitan kuncinya. Salah satu cara untuk meningkatkannya ialah menggunakan konsep multiple-key di dalam algoritma tersebut. Konsep multiple-key sudah digunakan dalam algoritma RSA yang sudah dikembangkan dan efektif untuk peningkatan kemananan kerahasiaan suatu informasi. Selain itu di dalam pembangkitan kunci bilangan prima dapat digunakan Teorema Fermat karena sudah terstruktur dan konsep yang sederhana.


(23)

1.3. Tujuan Penelitian

Penelitian ini dilaksanakan dengan tujuan:

1. Merancang pengembangan algoritma Pohlig-Hellman multiple-key sebagai pengembangan algoritma Pohlig-Hellman yang sudah ada sebelumnya.

2. Membuat model perangkat lunak algoritma Pohlig-Hellman multiple-key berdasarkan algoritma RSA multiple-key menggunakan Teorema Fermat untuk Pembangkitan Bilangan Prima.

3. Mendapatkan kelebihan dan kekurangan algoritma Pohlig-Hellman sebelum dan sesudah pengembangan.

1.4. Manfaat Penelitian

Manfaat dari penelitian ini adalah antara lain adalah:

1. Akan diperoleh suatu pengembangan algoritma yang mampu meningkatkan keamanan data, pesan atau informasi misalnya dalam pengiriman pesan rahasia melalui email, tansaksi kode rahasia perbankan atau pun transaksi lain yang bersifat rahasia.

2. Memperkaya khazanah keilmuan khususnya dalam bidang kriptografi.

1.5. Batasan Masalah

Dalam penelitian ini perlu adanya batasan masalah agar persoalan yang dibahas tidak menyimpang dari hal-hal yang telah ditentukan sebelumnya. Selain itu, batasan masalah dapat membuat penelitian lebih terarah dan memudahkan pembahasan sehingga tujuan penelitian dapat tercapai. Adapun batasan masalah yang harus diperhatikan dalam penelitian ini adalah:

1. Perancangan model Algoritma Pohlig-Hellman multiple-key melakukan proses enkripsi dan dekripsi.


(24)

BAB II

TINJAUAN PUSTAKA

Dalam penyusunan tesis ini perlu dilakukan tinjauan pustaka sebagai dasar untuk melakukan penelitian. Adapun hal-hal yang perlu ditinjau sebagai dasar penyusunannya ialah Kriptografi yaitu Algoritma Pohlig-Hellman, Algoritma RSA dan Algoritma RSA multiple-key. Sebagai dasar perancangan algoritma juga diperlukan penjelasan tentang Teori Bilangan dan Prime Number Generate (Pembangkitan Bilangan Prima).

2.1. Kriptografi

Kriptografi adalah ilmu yang menggunakan cara tertentu untuk mengamankan data menggunakan teknik enkripsi dan proses lain yang berhubungan. Matematika merupakan dasar penting dalam kriptografi, karena hanya dengan pengetahuan matematis dapat dikembangkan prosedur yang dibutuhkan untuk mengenkripsi data secara aman (Munir, 2006).

Kriptografi saat ini menjadi hal yang paling penting dalam keamanan informasi. Banyak aspek keamanan seperti kerahasiaan data, keabsahan data, integritas data, dan autentifikasi menjadi cakupan dari tujuan kriptografi. Saat suatu pesan dikirimkan, isi pesan tersebut bisa saja disadap oleh pihak lain yang tidak berhak untuk mengetahui pesan. Supaya pesan tidak dapat diketahui oleh penyadap maka kriptografi menjadi sangat penting dengan cara mengubah pesan menjadi serangkaian kode yang hanya dapat diketahui oleh pihak yang ditentukan.


(25)

2.1.1. Perkembangan dan Konsep Kriptografi

Kriptografi berasal dari bahasa Yunani, yang terdiri dari kata crypto dan graphia. Crypto berarti rahasia dan graphia berarti tulisan. Kriptografi merupakan ilmu dan seni untuk menjaga keamanan pesan ketika dikirim dari sebuah sumber informasi ke suatu tujuan pengiriman informasi. Para sejarahwan percaya bahwa hieroglif Mesir, yang dimulai sekitar tahun 1900, merupakan contoh pengenkripsian yang paling awal ditemukan. Kunci yang dapat memecahkan rahasia hieroglif adalah Rosetta Stone, ditemukan tahun 1799 di Mesir dan sekarang berada di British Museum, London. Francois Champollion, menggunakan Rosetta Stone, mendekripsi hieroglif pada tahun 1822 (Konheim, 2007).

Dasar dari sistem kriptografi adalah untuk menyembunyikan informasi rahasia dengan cara yang tidak dapat dipahami oleh pihak lain yang tidak berhak mengetahui informasi tersebut. Dua manfaat umum kriptografi adalah untuk menyimpan data dengan aman dan untuk mengirimkan informasi melalui saluran yang tidak aman seperti internet (Diffie et al 2003). Pada kenyataannya pesan yang terenkripsi tetap dapat diakses oleh pihak lain, tetapi dapat dipastikan pihak lain tidak dapat mengerti isi utama pesan tersebut.

Pesan yang dikirimkan dapat berupa teks, data numerik, dan data jenis lain disebut dengan plaintext. Dengan melakukan proses enkripsi, plaintext tersebut berubah menjadi ciphertext. Proses untuk mengembalikan ciphertext menjadi plaintext disebut dengan proses dekripsi. Untuk melakukan proses dekripsi diperlukan adanya suatu kunci rahasia. Untuk lebih mengetahui konsep kriptografi dapat dilihat pada terminologi kriptografi.


(26)

2.1.2. Terminologi Kriptografi

Ada beberapa terminologi yang berhubungan dengan kriptografi yaitu: 1. Confidentiality

Yang dimaksud dengan confidentiality adalah dimana terdapat jaminan kerahasiaan suatu informasi sehingga tidak dapat diakses oleh pihak lain yang tidak berhak.

2. Privacy

Pengertian privacy adalah kemampuan yang dimiliki oleh seseorang untuk mengontrol bagaimana informasi pribadinya supaya menyebar dalam suatu komunitas. Istilah ini merupakan sinonim dari secrecy.

3. Code

Code merupakan sekumpulan simbol yang digunakan untuk dapat merepresentasikan informasi.

4. Coding theory

Coding theory adalah ilmu yang mempelajari tentang transformasi kode yang memungkinkan adanya pengiriman informasi melalui saluran komunikasi dengan cara yang dapat diandalkan. Biasanya teori ini berfokus pada saluran jaringan yang ramai dan mencoba membuat agar informasi dapat diungkap oleh semua orang (istilah ini merupakan kebalikan dari kriptografi, dimana informasi hanya untuk pihak yang berhak).

5. Encode, Decode

Encode dan decode merupakan proses dasar pada coding theory dimana untuk mentransformasi informasi menjadi kode, dan mengembalikan informasi dari kode tersebut.

6. Cryptography

Cryptography adalah ilmu tentang kode rahasia memungkinkan kerahasiaan komunikasi melalui saluran yang tidak aman. Kriptografi juga didefinisikan sebagai ilmu tentang pengamanan informasi terhadap pihak yang tidak


(27)

berhak. Algoritma kriptografi merupakan algoritma matematis yang menghasilkan suatu proteksi.

7. Cipher

Cipher adalah kode rahasia yang merupakan kode publik yang berhubungan dengan informasi rahasia.

8. Cryptography system

Cryptography system merupakan sekumpulan algoritma kriptografi yang terdiri atas sandi dan pola dalam kriptografi.

9. Cryptosystem

Cryptosystem adalah singkatan dari cryptography system yang sering digunakan pada istilah ”public-key cryptosystem” yang merupakan algoritma kriptografi yang memiliki sepasang kunci.

10.Cleartext

Cleartext adalah informasi yang dapat disandikan menggunakan kode publik. 11.Plaintext

Plaintext adalah masukan pada algoritma enkripsi dan biasanya merupakan cleartext.

12.Ciphertext, cryptogram

Ciphertext, cryptogram adalah informasi yang disandikan menggunakan sistem kriptografi.

13.Encryption, encipherment, decryption, decipherment

Encryption, encipherment, decryption, decipherment merupakan proses dasar kriptografi yaitu mentransformasi plainteks menjadi ciphertext dan sebaliknya.

14.Cryptanalysis, cryptographic analysis, cryptoanalysis

Cryptanalysis, cryptographic analysis, cryptoanalysis adalah teori tentang analisis keamanan sistem kriptografi.


(28)

2.1.3. Penggunaan Kriptografi

Terdapat beberapa media yang menggunakan teknik kriptografi melalui jalur internet (Schmeh, 2003) diantaranya adalah:

1. E-mail

E-mail merupakan surat elektronik yang telah disandikan menjadi daya tarik utama dalam dunia internet.

2. World Wide Web (WWW)

World Wide Web (WWW) telah banyak digunakan sebagai alat untuk mengakses basis data, administrasi sistem komputer dan pusat perbelanjaan. Pada masing-masing keadaan tersebut, teknik enkripsi sangat dibutuhkan.

3. Koneksi client-server

Koneksi client-server merupakan perkembangan sistem komputer berdampak pada perkembangan komunikasi dan adanya aliran yang besar tentang informasi rahasia.

4. Jaringan rahasia virtual

Perusahaan dengan beberapa cabang sering mengelompokan jaringan lokal dengan koneksi seperti ISDN. Semua data akan dienkripsi apabila berada diluar jaringan perusahaan dan kemudian akan didekripsi apabila telah berada di wilayah perusahaan.

5. Sistem pembayaran

Kriptografi menjaga keamanan dalam melakukan transaksi berupa transfer uang melalui internet.

6. Remote access

Beberapa layanan seperti Telnet atau SSH berfungsi untuk mengakses komputer dari jarak jauh menggunakan internet. Kriptografi berperan dalam mengenkripsi data selama proses berlangsung.


(29)

2.1.4. Kriptografi Kunci Publik

Suatu sistem kriptografi terdiri atas kumpulan transformasi enkripsi dan dekripsi disebut dengan sistem kriptografi kunci publik atau suatu sistem kriptografi asimetris jika sepasang kunci yaitu kunci untuk proses enkripsi dinamakan kunci publik, disebarkan kepada publik, dan kunci untuk proses dekripsi dinamakan kunci privat, dijaga kerahasiaannya (Schmeh, 2003). Beberapa aspek penting pada sistem kriptografi kunci publik dapat dijelaskan sebagai berikut:

1. Keamanan.

Dengan adanya sistem kriptografi kunci publik, hanya kunci privat yang harus dijaga kerahasiaannya sedangkan kunci publik disebarkan dengan bebas.

2. Usia pemakaian

Sistem kriptografi kunci publik memiliki pasangan kunci yang dapat digunakan tanpa perlu adanya perubahan dalam waktu yang lama.

3. Manajemen kunci

Pada jaringan multiuser, lebih sedikit kunci privat yang dibutuhkan. 4. Pertukaran kunci

Pada Sistem kriptografi kunci publik, tidak dibutuhkan adanya pertukaran kunci privat antar entitas.

2.2. Teori Bilangan

Teori bilangan menjadi dasar dalam kriptografi, khususnya sistem kriptografi kunci publik. Bilangan yang dimaksudkan dalam hal ini adalah bilangan bulat (integer) (Mollin, 2007). Beberapa teori bilangan yang digunakan dalam menganalisis algoritma yang digunakan adalah aritmatika modular, Greatest Common Divisor (GCD), Algoritma Euclidean, Kekongruenan, Invers Modulo, dan Euler Totient.


(30)

2.2.1. Aritmatika Modular

Aritmetika modular digunakan dalam proses enkripsi dan dekripsi pada algoritma Pohlig-Hellman. Enkripsi dapat dilakukan menghitung nilai pesan dipangkatkan dengan nilai kunci enkripsi yang didapat kemudian dengan melakukan modulo pada nilai bilangan prima yang ditentukan sebelumnya. Aritmatika modular sering dicontohkan sebagai pemahaman aritmatika jam. (Kaisar,2004). Misalkan dalam operasi a mod m berarti menghasilkan sisa jika a dibagi dengan m. Bilangan m disebut modulus atau modulo, dan hasil arimetika modulo m terletak di dalam himpunan {0, 1, 2, …, n-1} sehingga dapat dinotasikan � ��� � =� sedemikian sehingga:

m = n * q + r, 0 ≤ r < n (2.2.1) 2.2.2. Greatest Common Divisor (GCD)

Pembagi bersama terbesar atau disingkat PBB (Greatest Common Divisor atau GCD) digunakan dalam rancangan algoritma Pohlig-Hellman pada saat penentuan kunci tambahan (multiple-key). Kunci tambahan bersyarat harus merupakan anggota dari bilangan ganjil yang mana GCD antara bilangan ganjil tersebut dengan nilai totient yang didapat harus bernilai 1. Dalam notasi dapat dituliskan

�� ∈ ���, Ke ∈ ���(��,�) = 1.

Greatest Common Divisor atau GCD dari bilangan suatu a dan b adalah bilangan bulat terbesar d sedemikian sehingga d | a dan d | b. Dalam hal ini kita nyatakan bahwa GCD (a,b) = d. Misalkan dalam menentukan GCD (5,2) = 1. Didapati bahwa nilai a adalah 5 dan nilai b adalah 2. Untuk mempermudah dapat dilihat pada algoritma berikut ini.

1.1.Algoritma Greatest Common Divisor (GCD)

function gcd(a,b) while b ≠ 0

t := b

b := a mod b


(31)

2.2.3. Algoritma Euclid

Konsep pertama algoritma Euclid berasal dari Cina pada saat Dinasti Han sekitar tahun 200 SM dan 200 M. Algoritma Euclid adalah algoritma untuk mencari GCD dari dua buah bilangan bulat. Algoritma ini digunakan dalam menyederhanakan pecahan dengan membagikan pembilang dan penyebut dengan GCD dan juga untuk mencari penyelesaian bilangan bulat dari persamaan linear.

Euclid adalah matematikawan Yunani yang menuliskan algoritma Euclid dalam bukunya yang berjudul “Element” yang sangat terkenal. Algoritma ini akan digunakan dalam rancangan algoritma Pohlig-Hellman dalam penentuan nilai bilangan kunci tambahan. Misalkan ditentukan dua buah bilangan bulat bukan negatif m dan n dimana m ≥ n. Maka algoritma Eulidean dapat mencari pembagi bersama terbesar dari m dan n. (Mollin, 2007).

Misalkan m = 11 dan n = 7, maka langkah-langkah perhitungan yang dilakukan ada algoritma Euclid adalah sebagai berikut :

1. Menghitung nilai r berdasarkan perhitungan m mod n adalah 11 mod 7 = 4. Karena didapat nilai r tidak sama dengan nol, maka fungsi GCD dipanggil kembali dengan parameter n,r GCD (7,4)

2. Menghitung kembali nilai r berdasarkan perhitungan 7 mod 4 = 3. Karena r tidak sama dengan nol, maka fungsi GCD dipanggil kembali dengan parameter n,r = CGD (4,3)

3. Menghitung kembali nilai r berdasarkan perhitungan 4 mod 3. Karena r tidak sama dengan nol, maka fungsi GCD dipanggil kembali dengan parameter n,r = GCD(3,1)

4. Menghitung kembali nilai r, yaitu 3 mod 1 = 0. Karena r sama dengan nol, maka akan menghasilkan nilai n = 1. Karena GCD (11,7) sama dengan satu maka kedua bilangan tersebut adalah relatif prima.


(32)

Eucledian yang dapat menghitung faktor persekutuan terbesar dari dua buah bilangan bulat.

1.2. Algoritma Euclidean g =1

while (a mod 2=0) and (b mod 2=0) do a = a/2

b = b/2 g =2.g

end

while a 0 do

while a mod 2=0 do a = a/2

while b mod 2=0 do b = b/2

if a b then a =(a-b)/2

else b =(b a)/2

end

return g.b

2.2.4. Kekongruenan

Notasi a b (mod n) dibaca a adalah kongruen ke b modulo n. Dimana untuk integer a, b dan n ≠ 0 jika dan hanya jika, untuk beberapa k, � =�+� ∗ �. Oleh sebab itu n | (a – b) yang mana disebut juga n dibagi (a - b). Jika a ≡ b (mod n), b disebut sisa dari a modulo n. Kekongruenan dalam perancangan algoritma berhubungan dengan perhitungan nilai GCD yang akan digunakan dalam penentuan kunci tambahan (multiple-key).

Misalkan 17 ≡ 5 mod 12 dan 5 adalah sisa dari 17 modulo 12. a adalah himpunan {r1, r2, …,rn} disebut semua himpunan sisa mod n jika setiap bilangan

bulat a, tepat berpasangan dengan satu ri di dalam himpunan yang memenuhi

a ri (mod n). Kekongruenan a ≡ b (mod m) dapat pula dituliskan dalam

hubungan, �= �+� ∗ �, dalam hal ini k adalah bilangan bulat. Berdasarkan definisi aritmetika modulo, kita juga dapat dinuliskan a ����≡� sebagai,


(33)

Pembagian bilangan bulat n untuk penjumlahan dan perkalian dengan hukum assosiatif, komutatif, dan distributif terbentuk. Untuk faktanya kita dapat menurunkan modulo n dari yang lain dan kemudian dilakukan operasi dan kemudian dilakukan penurunan dari modulo n, karena sisa modulo n adalah homomorphism dari lingkaran bilangan bulat kelingkaran bilangan bulat mod n (Mollin, 2007). Maka dapat dituliskan bahwa,

(�±�) (����) ≡ [�(����) ±� (����)] (����) (2.2.4) (� ∗ �)(����)≡ [�(����)∗ �(����)] (����)

Dalam teoremanya dapat dimisalkan m adalah bilangan bulat positif 1. Jika a ≡ b (mod m) dan c adalah sembarang bilangan bulat maka:

- (�+�)≡(�+�) ���� - (� ∗ � )≡ (� ∗ �) ����

- ��≡������ ; p = bilangan bulat tak negatif) 2. Jika a ≡ b (mod m) dan c d (mod m), maka

- (� + �) ≡ (� + �) (����) - � ∗ �≡� ∗ � (����)

2.2.5. Invers Modulo

Jika a dan m relatif prima dan m > 1, maka kita dapat menemukan inversi dari a modulo m. Inversi dari a (mod m), disebut juga inversi perkalian, adalah bilangan bulat a-1

� ∗ � −1≡1 (����) (2.2.5)

, sedemikian sehingga :

dari definisi relatif prima diketahui bahwa GCD (a,m)=1, dan menurut persamaan terdapat bilangan bulat p dan q, sedemikian sehingga: � ∗ � + � ∗ � = 1

yang mengimplikasikan bahwa : � ∗ � + � ∗ �≡1 (����) Karena qm ≡ 0 (mod m ) maka nilai � ∗ �≡ 1 (����)


(34)

dari a (mod m), kita harus membuat kombinasi lanjar dari a dan m = 1. Koefisien a dari kombinasi lanjar tersebut merupakan, invers dari a mod m (Mollin, 2007).

2.2.6. Euler Totien Function

Fungsi Euler dalam rancangan algoritma Pohlig-Hellman digunakan dalam penentuan nilai relatif prima dari pembangkitan kunci. Untuk setiap bilangan bulat positif n, nilai

φ

( )

n

pada fungsi Euler Totient adalah jumlah bilangan bulat positif < n yang mana relatif prima ke-n.

1. Jika n adalah prima maka φ(n) = n – 1

2. Jika n adalah hasil kali dari 2 prima, dimana : n = p * q maka φ(n)=(p-1) * (q-1)

3. Jika p bilangan prima dimana k > 0, maka :

φ(pk) = pk - pk-1 = pk-1 (p – 1)

Fungsi ini digunakan pada kriptografi pada penggunaan Theorema Euler. Theorema Euler menyatakan bahwa jika GCD(a,n) = 1 maka:

) (mod 1

) (

n

aφ n = (2.2.6)

2.3. Pembangkitan Bilangan Prima

Pembangkitan bilangan prima (Prime Number Generate) merupakan cara dalam penentuan bilangan prima yang sudah diformula dan akan digunakan dalam pembangkitan kunci bilangan prima. Terdapat beberapa teori tentang pengujian bilangan prima seperti algoritma Primality Proving, Pengujian Bilangan Prima Lucas-Lehmer dalam Bilangan Mersenne, Teorema Pocklington, Teorema Proth, Pengujian Prima Pepin, Proofs Via the Converse of Fermat’s Theorem, Prima P, Sophie Germain’s Prime Density Conjecture dan beberapa pengujian bilangan prima lainnya.


(35)

2.3.1. Teorema Fermat

Pierre de Fermat (dibaca Fair-ma) merupakan seorang matematikawan berkebangsaan Perancis (1607-1665). Fermat megikuti pendidikan di Universitas Toulouse dan kemudian mempelajari ilmu hukum di Universitas Orleans. Setelah mendapatkan gelar sarjana hukum Fermat menjadi pengajar di kantor pemerintahan di Toulose. Namun sepanjang hidupnya dia memiliki ketertarikan yang dalam terhadap teori angka dan matematika. (Mollin, 2007).

2.3.2. Konsep Teorema Fermat

Pada teori Fermat dinyatakan suatu bilangan prima p dapat dipastikan keprimaannya. Jika bilangan p adalah sebuah bilangan prima dan a bukan merupakan kelipatan dari p, dan 1≤ �< �. Maka dapat dinotasikan dalam t dengan rumus : ��−1 ≡1 ���� ; 1≤ �<�, atau dapat dituliskan juga sebagai:

��−1���� ≡1 ; 1≤ �< � (2.3.2)

Penggunaan terorema Fermat pada rancangan algoritma Pohlig-Hellman sangat penting karena pembangkitan bilangan prima merupakan awal proses algoritma. Dengan rumus tersebut dapat dinyatakan suatu bilangan prima atau tidak prima. Misalkan sebuah bilangan bernilai 5, dapat dibuktikan keprimaannya dengan nilai p = 3. Berdasarkan syarat bahwa 1≤ � < 3, didapat nilai a yang mungkin adalah 1 dan 2. Kedua bilangan akan diuji dengan teorema Fermat yaitu:

- Untuk nilai a = 1, maka dapat dilakukan pengujian ��−1���� ≡1, = 13-1 mod 3 ≡ 12

- Untuk nilai a = 2 , maka dapat dilakukan pengujian ��−1���� ≡1, mod 3 ≡ 1 (memenuhi teorema Fermat) = 23-1 mod 3 ≡ 22 mod 3 ≡ 1 (memenuhi teorema Fermat) Dari pengujian setiap batas nilai a didapati bahwa nilai 3 merupakan bilangan prima karena memenuhi syarat yang ada pada teorema Fermat. Dan konsep Fermat dapat digunakan untuk pengujian bilangan prima lainnya.


(36)

2.4. Algoritma Pohlig-Hellman

2.4.1. Perkembangan Algoritma Pohlig-Hellman

Pada awalnya algoritma Pohlig-Hellman ditemukan oleh Roland Silver, namun

untuk pertama kalinya diterbitkan ole da

Algoritma Pohlig-Hellman dipatenkan di Amerika Serikat dan Kanada. Konsep enkripsi pada Algoritma Pohlig-Hellman hampir sama dengan algoritma RSA. Pada dasarnya algoritma ini adalah salah satu algoritma asimetris karena menggunakan kunci yang berbeda untuk enkripsi dan dekripsi (Mollin, 2007).

Dalam algoritma Pohlig-Hellman tidak mengguna konsep kunci publik karena kuncinya dapat digunakan pada saat enkripsi dan dekripsi sehingga harus terjaga kerahasiaannya (Shcneider, 1996). Sama seperti dalam algoritma RSA untuk dapat melakukan enkripsi dan dekripsi dalam dihitung dengan rumus:

C = Pe P = C

mod n (untuk melakukan enkripsi)

d

dengan ketentuan bahwa nilai � ∗ � ≡1

mod n (untuk melakukan dekripsi)

2.4.2. Proses Algoritma Pohlig-Hellman

Proses kerja algoritma Pohlig-Hellman dituliskan sebagai berikut:

1. Menentukan sebuah bilangan prima p yang besar (bersifat rahasia hanya diketahui pengirim pesan dan penerima pesan);

2. Menentukan nilai ϕ(p) = p - 1

3. Menghitung nilai e dengan syarat bahwa nilai 1<e<ϕ(p) dan juga nilai e relatif prima dengan ϕ(p)

4. Menghitung nilai d sebagai invers dari e modulo ϕ(p) atau dapat dituliskandengan notasi: d*e mod ϕ (p)=1

5. Melakukan enkripsi dari suatu plainteks. Untuk enkripsi dapat dilakukan dengan rumus: C = me

6. Dekripsi dapat dilakukan dengan rumus: mod p


(37)

2.4.3. Contoh Kasus Algoritma Pohlig-Hellman

Penggunaan algoritma Pohlig-Hellman dalam sebuah simulasi pengiriman pesan yang dilakukan antara Alice dan Bob. Misalkan Alice mengizinkan Bob untuk mengirimkan sebuah pesan pribadi (private message) kepadanya melalui media transmisi yang tidak aman (insecure). Dalam algoritma Pohlig-Hellman, Alice dan Bob akan melakukan langkah-langkah pada sebagai berikut :

1. Alice (penerima) dan Bob (pengirim) menyepakati sebuah bilangan prima sebagai kunci privat dari pesan yang akan dikirimkan. Misalkan kunci tersebut adalah p bernilai 487.

2. Setelah disepakati bilangan prima tersebut kemudian digunakan untuk menghitung nilai totient dengan rumus ϕ(p) =p–1, sehingga didapat nilai:

ϕ(p) = 487 – 1 = 486.

3. Dengan nilai totient, maka Bob dapat menghitung nilai kunci enkripsi e yang digunakan dalam program dengan syarat bahwa nilai 1<e<ϕ(p) dan juga nilai e relatif prima dengan ϕ(p). Hal ini dapat dihitung dengan menghitung GCD (ϕ(p),e)=1. Dalam perhitungan didapati:

GCD (486, e) = 1 , 1<e<486 e = 145

Didapat nilai e yang memungkinkan dan disepakati oleh keduanya adalah e = 145. Dengan nilai kunci enkripsi ini makan selanjutnya dapat dilakukan proses enkripsi.

4. Kunci dekripsi juga langsung ditetapkan oleh kedua belah pihak dengan syarat rumusan d = e-1

d = e

mod ϕ (p). Dari nilai e yang didapat sebelumnya maka dapat dihitung nilai d dengan langkah sebagai berikut :

-1

d = 145

mod ϕ (p) -1

d = 181

mod 486

Kunci dekripsi digunakan untuk mengembalikan nilai ciphertext ke dalam bentuk plaintext.


(38)

membuat pesan rahasia berupa text. Dalam contoh pesan yang akan digunakan adalan ECIL. Dari rumus perhitungan enkripsi C = me

Pesan yang akan dikirim M = ECIL

mod p, maka dapat dihitung kode ciphertext dari setiap pesan tersebut sebagai berikut:

Nilai dari setiap Plaintext : P1

P

= E, nilai dalam kode ASCII adalah 5 (huruf kelima)

2

P

= C, nilai dalam kode ASCII adalah 3 (huruf ketiga)

3

P

= I, nilai dalam kode ASCII adalah 9 (huruf kesembilan)

4

Maka nilai ciphertext dari setiap pesan adalah :

= L, nilai dalam kode ASCII adalah 12 (huruf keduabelas)

C1 = M e mod p = P1e

= 5 mod p 145 C mod 487 1 C = 269

2 = M e mod p = P2e

= 3 mod p 145 C mod 487 2 C = 354

3 = M e mod p = P3e

= 9 mod p 145 C mod 487 3 C = 314

4 = M e mod p = P3e

= 12 mod p 145 C mod 487 4

6. Setelah mendapatkan semua kode ciphertext maka dapat dirangkai seluruh kode dan menghasilkan ciphertext 269, 354, 314 dan 107. Pesan inilah yang akan dikirimkan kepada Alice, sehingga pihak lain tidak akan mengetahui makna pesan sebenarnya.

= 107

7. Alice dapat mendapatkan pesan sebenarnya dengan melakukan proses dekripsi. Dari rumus perhitungan dekripsi P = Cd

C = 269 354 314 107

mod p, maka dapat dihitung kode plaintext dari setiap chipertext tersebut sebagai berikut:


(39)

Nilai dari setiap Plaintext : P1 = C d mod p = C1 d

= 269 mod p 181 P mod 487 1 P

= 5 plaintext = E

2 = C d mod p = C2 d

= 354 mod p 181 P mod 487 2 P

= 3 plaintext = C

3 = C d mod p = C3 d

= 314 mod p 181 P mod 487 3 P

= 9 plaintext = I

4 = C d mod p = C4 d

= 107 mod p 181 P mod 487 1

Setelah mendapatkan semua plaintext terhitung maka dapat dirangkai seluruh kode dan menghasilkan plaintext : ECIL

= 12 plaintext = L

8. Dari contoh didapat bahwa Alice dapat membuka kembali pesan yang sudah dienkripsi dengan melakukan proses dekripsi.

2.5. Algoritma RSA

2.5.1. Perkembangan Algoritma RSA

Algortima RSA dijabarkan pada tahun Shamir Adleman). Algoritma ini dipatenkan oleh Massachusetts Institute of Technology pada tadi(Stallings, 2005).

Algoritma RSA adalah sebuah merupakan algoritma pertama yang cocok digunakan unt algoritma yang lebih banyak dikembangkan dalam bidang kriptografi public key.


(40)

2.5.2. Proses Algoritma RSA

Proses atau cara kerja dari algoritma RSA dapat dilihat sebagai berikut:

1. Menentukan duap ≠ q secara acak dan terpisah untuk tiap-tiap p dan q.

2. Melakukan perhitungan n = p*q. (n merupakan hasil perkalian dari p dikalikan dengan q)

3. Melakukan perhitungan nilai totient φ (n)= (p-1)(q-1).

4. Menentukan nilai kunci enkripsi e dengan syarat bahwa nilangan tersebut merupakan bilangan bulat (integer) 1 < e < φ(n) dimana nilai GCD (φ(n), e)=1. 5. Menghitung kunci enkripsi yang dilakukan dengan perhitungan kunci dekripsi

dengan rumus d ≡ e -1

6. Setelah mendapatkan kunci-kunci tersebut maka dapat dilakukan proses enkripsi maupun proses dekripsi.

mod φ(n).

7. Rumus untuk melakukan proses enkripsi adalah C = M e 8. Rumus untuk melakukan proses dekripsi adalah P = C

mod n

d

mod n

2.5.3. Contoh Kasus Algoritma RSA

Algoritma RSA disimulasikan dalam sebuah simulasi pengiriman pesan yang dilakukan antara Alice dan Bob. Alice mengizinkan Bob untuk mengirimkan sebuah pesan pribadi (private message). Dalam algoritma RSA multiple-key, Alice dan Bob akan melakukan langkah-langkah pada sebagai berikut :

1. Alice (penerima) dan Bob (pengirim) menyepakati dua buah bilangan prima sebagai kunci privat dari pesan yang akan dikirimkan. Misalkan kunci tersebut adalah bernilai p=631 dan q=311.

2. Setelah disepakati kedua bilangan prima tersebut kemudian digunakan untuk menghitung nilai totient dengan rumus n =p*q, sehingga didapat nilai:

n = (631)*(311)= 196241

3. Langkah selanjutnya adalah menghitung nilai totient dengan rumus

ϕ(n) =(p–1)(q-1), sehingga didapat nilai:


(41)

4. Dari nilai totient yang didapat, maka Bob dapat menghitung nilai kunci enkripsi e yang digunakan dalam program dengan syarat bahwa nilai 1<e<ϕ(n) dan juga nilai e relatif prima dengan ϕ(n). Hal ini dapat dihitung dengan menghitung GCD (ϕ(n),e)=1. Dalam perhitungan didapati:

GCD (195300, e) = 1 , 1<e<195300 e = 78899

Didapat nilai e yang memungkinkan dan disepakati oleh keduanya adalah e = 78899. Dengan nilai kunci enkripsi ini makan selanjutnya dapat dilakukan proses enkripsi.

5. Kunci dekripsi juga langsung ditetapkan oleh kedua belah pihak dengan syarat rumusan d = e-1

d = e

mod ϕ (n). Dari nilai e yang didapat sebelumnya maka dapat dihitung nilai d dengan langkah sebagai berikut :

-1

d = 78899

mod ϕ (n) -1

d = 17399

mod 195300

Kunci dekripsi digunakan untuk mengembalikan nilai ciphertext ke dalam bentuk plaintext.

6. Proses enkripsi merupakan proses dimana pesan yang sebelumnya berupa plaintext yang dikodekan menjadi ciphertext. Terlebih dahulu Bob akan membuat pesan rahasia berupa teks. Dalam kasus ini pesan yang akan digunakan adalah kode 100. Dari rumus perhitungan enkripsi C = me

Pesan yang akan dikirim M = 100

mod n, maka dapat dihitung kode ciphertext dari setiap pesan tersebut sebagai berikut:

Nilai dari setiap Plaintext P1

C

= 100, maka nilai ciphertext dari setiap pesan dengan perhitungan :

= M e = 100

mod n 78899

C = 31538

mod 196241

7. Setelah mendapatkan semua kode ciphertext maka dapat dirangkai seluruh kode yang menghasilkan ciphertext sebesar 31538. Pesan inilah yang akan


(42)

dikirimkan kepada Alice, sehingga pihak lain tidak akan mengetahui makna pesan sebenarnya.

8. Alice dapat mendapatkan pesan sebenarnya dengan melakukan proses dekripsi. Dari rumus perhitungan dekripsi P = Cd

C = 31538

mod n, maka dapat dihitung kode plaintext dari setiap chipertext tersebut sebagai berikut:

Nilai dari setiap Plaintext : P1 = C d mod n = C1 d

= 31538

mod n 17399

P

mod 196241

1

Setelah mendapatkan semua plaintext terhitung maka dapat dirangkai seluruh kode dan menghasilkan plaintext adalah 100

= 100

9. Dari contoh didapat bahwa Alice dapat membuka kembali pesan yang sudah dienkripsi dengan melakukan proses dekripsi.

2.5.4. Algoritma RSA Multiple Key

Algoritma RSA Multiple-key merupakan pengembangan dari Algoritma RSA sebelumnya. Untuk pengembangannya dilakukan penambahan beberapa atau banyak kunci untuk meningkatkan kemampuan algoritma dalam keamanan datanya. (Schneider,1996). Sama seperti pada proses algoritma RSA, yaitu melakukan pembangkitan dua buah bilangan prima p dan q, menentukan nilai n (merupakan perkalian p dan q), selanjutnya mencari nilai φ (merupakan hasil perhitungan (p-1)(q-1).

Namun pada algoritma RSA multiple-key dilakukan penambahan prosedur dengan menambahkan kunci enkripsi (dengan syarat bahwa bilangan tersebut adalah bilangan ganjil dan dapat dibuat sebanyak sejumlah n-kunci). Demikian juga untuk dekripsinya, dilakukan penambahan kunci dekripsi yang syaratnya sama dengan kunci enkripsi sehingga dengan rumusan tersebut maka dapat dihitung nilai dari e (kunci untuk enkripsi) yang didapat dari perkalian semua


(43)

dekripsi dengan menghitung nilai d (kunci untuk dekripsi) yang didapat dari perkalian semua kunci dekripsi yang dibuat sebelumnya. Untuk mempermudah penyampaian algoritma RSA Multiple-key berikut ini disajikan dalam konsep: 1. Membangkitkan Bilangan Prima

Menentukan dua bilangan prima p dan q dimana � ≠ �. Untuk pembangkitannya menggunakan teorema Fermat.

2. Menghitung nilai n.

Nilai n didapat dari perkalian p dan q, dapat dinotasikan : n = p * q. 3. Menghitung nilai totient.

Nilai totient �(�) = (� −1)(� −1) 4. Menghitung Kunci Tambahan Enkripsi

Menentukan berapa banyak kunci tambahan enkripsi sebanyak -x (Ke1, Ke2, Ke3 … Kex). Setelah itu menentukan nilai setiap Ke

K

dengan syarat bahwa nilai:

e1 ∈ K

bilangan ganjil dan GCD(K�1,�(n)) = 1 e2 ∈

.

bilangan ganjil dan GCD (K�1∗K�2,�(n)) = 1 .

. Kex ∈

Setelah didapat nilai K

bilangan ganjil dan GCD (K�1∗K�2∗… …∗K�x,�(n)) = 1 e

5. Enkripsi

, dapat dihitung nilai �= (K�1∗K�2. .∗K�x,�(n) Enkripsi merupakan proses pengubahan plaintext menjadi ciphertext. Untuk melakukan enkripsi dapat dilakukan dengan rumus � =������ dimana pada plaintext m < n

6. Menghitung Kunci tambahan Dekripsi

Menentukan berapa banyak kunci tambahan dekripsi sebanyak –x (Kd1, Kd2, Kd3 … Kdx). Setelah itu menentukan nilai setiap Kd

K

dengan syarat bahwa nilai:


(44)

. . Kdx ∈

Setelah didapat nilai K

bilangan ganjil dan GCD (K�1∗K�2∗… …∗K�x,�(n)) = 1 d

7. Dekripsi

, dapat dihitung nilai � = (K�1∗K�2. .∗K�x,�(n) Dekripsi merupakan kebalikan dari enkripsi. Masukannya adalah ciphertext dan keluarannya adalah plaintext. Untuk melakukan dekripsi dapat dilakukan dengan rumus �= ������

2.5.5. Contoh Kasus RSA Multiple Key

Algoritma RSA multiple-key dapat disimulasikan dalam sebuah simulasi pengiriman pesan yang dilakukan antara Alice dan Bob. Alice mengizinkan Bob untuk mengirimkan sebuah pesan pribadi (private message). Dalam algoritma RSA multiple-key, Alice dan Bob akan melakukan langkah-langkah pada sebagai berikut :

1. Alice (penerima) dan Bob (pengirim) menyepakati dua buah bilangan prima sebagai kunci privat dari pesan yang akan dikirimkan. Misalkan kunci tersebut adalah bernilai p=631 dan q=311.

2. Setelah disepakati kedua bilangan prima tersebut kemudian digunakan untuk menghitung nilai totient dengan rumus n =p*q, sehingga didapat nilai:

n = (631)*(311)= 196241

3. Langkah selanjutnya adalah menghitung nilai totient dengan rumus

ϕ(n) =(p–1)(q-1), sehingga didapat nilai: ϕ(n) = (631-1)*(311-1))= 195300.

Nilai n dan nilai totient akan digunakan dalam perhitungan nilai kunci enkripsi. 4. Dari nilai totient yang didapat selanjutnya Bob akan melakukan perhitungan

kunci-kunci tambahan untuk enkripsi dan untuk dekripsinya. Kunci tambahan tersebut haru memenuhi syarat bahwa setiap kunci yang ditentukan adalah Kdx


(45)

Dalam kasus ini digunakan tiga kunci tambahan enkripsi dan dua kunci tambahan untuk dekripsi. KUnci yang digunakan adalah:

Ke1 = 41213, Ke2 = 44969, Ke3

K

= 50483

d1 = 7313, Kd2

5. Berdsarkan kunci enkripsi yang didapat selanjutnya dapat dihitung nilai kunci enkripsi e yang digunakan dalam program dengan perkalian dari setiap kunci tambahan enkripsinya

= 8983

e = Ke1 * Ke2 * Ke3

e = 41213 * 44969 * 50483

e = 93560517322751

Didapat nilai e yang memungkinkan dan disepakati oleh keduanya adalah e = 93560517322751. Dengan nilai kunci enkripsi ini makan selanjutnya dapat dilakukan proses enkripsi.

6. Kunci dekripsi juga langsung ditetapkan oleh kedua belah pihak dengan syarat rumusan d = Kd1 *Kd2 …*Kdx

d = K

. Dari nilai kunci tambahan dekripsi yang didapat sebelumnya maka dapat dihitung nilai d dengan langkah sebagai berikut :

d1 *K

d = 7313 * 8983

d2

d = 65692679

Kunci dekripsi digunakan untuk mengembalikan nilai ciphertext ke dalam bentuk plaintext.

7. Proses enkripsi merupakan proses dimana pesan yang sebelumnya berupa plaintext dikodekan menjadi berupa ciphertext. Terlebih dahulu Bob akan membuat pesan rahasia berupa text. Dalam contoh pesan yang akan digunakan adalah kode 100. Dari rumus perhitungan enkripsi C = me

Pesan yang akan dikirim M = 100, nilai dari setiap Plaintext P

mod n, maka dapat dihitung kode ciphertext dari setiap pesan tersebut sebagai berikut:

1

C

= 100, ,maka nilai ciphertext dari setiap pesan adalah :

= M e = 100

mod n 93560517322751


(46)

8. Setelah mendapatkan semua kode ciphertext selanjutnya seluruh kode dirangkai dan menghasilkan ciphertext sebesar 113452. Pesan ini kemudian dikirimkan kepada Alice, sehingga pihak lain tidak akan mengetahui makna pesan sebenarnya.

9. Alice dapat mendapatkan pesan sebenarnya dengan melakukan proses dekripsi. Dari rumus perhitungan dekripsi P = Cd

C = 113452

mod n, maka dapat dihitung kode plaintext dari setiap chipertext tersebut sebagai berikut:

Nilai dari setiap Plaintext : P1 = C d mod n = C1 d

= 113452

mod n 65692679

P

mod 196241

1

Setelah mendapatkan semua plaintext terhitung maka dapat dirangkai seluruh kode dan menghasilkan plaintext adalah 100

= 100

10. Dari kasus didapat bahwa Alice dapat membuka kembali pesan yang sudah dienkripsi dengan melakukan proses dekripsi.


(47)

BAB III

METODE PENELITIAN

Sesuai dengan tujuan penelitian yaitu membangun model perangkat lunak algoritma Pohlig-Hellman multiple-key berdasarkan algoritma RSA multiple-key, maka pada bab ini dimulai dengan pembahasan tentang gambaran studi kasus algoritma yang akan dibahas berupa analisis algoritma (untuk algoritma Pohlig-Hellman, algoritma RSA, algoritma RSA Multiple-key, teorema Fermat dan konsep algoritma Pohlig-Hellman multiple-key), analisis sistem, perancangan sistem, kamus data dan perancangan antarmuka.

3.1. Bahan-bahan

Penelitian ini akan menggunakan bahasa pemrograman Bloodshed Dev-Pascal versi 1.9.2 (FreePascal) untuk perancangan program algoritma Pohlig-Hellman multiple-key dan beberapa perlengkapan lainnya juga akan digunakan sebagai alat pendukung dalam perancangan algoritma.

3.2. Analisis Algoritma

Untuk membuat rancangan Algoritma Pohlig-Hellman multiple-key maka perlu terlebih dahulu menganalisis algoritma Pohlig-Hellman, algoritma RSA, algoritma RSA Multiple-key dan Teorema Fermat.

3.2.1. Analisis Algoritma Pohlig-Hellman

Dalam tesis ini algoritma Pohlig-Hellman menjadi dasar untuk dikembangkan kemudian menggunakan konsep multiple-key. Konsep dasar algoritma


(48)

1. Pembangkitan Bilangan Prima

Bilangan Prima p diambil secara acak dan diuji dengan Teorema Fermat. Dalam hal ini nilai p disarankan agar diambil dengan jumlah yang besar. 2. Perhitungan nilai totient

Nilai totient � didapat dari � (�) =� −1 3. Perhitungan nilai kunci enkripsi e

Nilai kunci enkripsi e dapat dihitung dengan syarat nilai 1 <�< � (�). Dan nilai e tersebut adalah relatif prima dengan � (�) dihitung berdasarkan GCD (e, � (�)) = 1

4. Perhitungan nilai kunci dekripsi d

Nilai d sebagai invers dari e modulo (�) , dinotasikan �� mod � (�) = 1 5. Enkripsi

Enkripsi merupakan proses pengubahan plaintext menjadi ciphertext. Untuk melakukan enkripsi dapat dilakukan dengan rumus �= ������

6. Dekripsi

Dekripsi merupakan proses pengubahan ciphertext menjadi plaintext. Untuk melakukan dekripsi dapat dilakukan dengan rumus � = ������

Terdapat beberapa variabel yang menjadi dasar pada algoritma seperti bilangan prima p, nilai totient �, nilai kunci enkripsi e, nilai kunci dekripsi d. Setelah semua kunci ini dipenuhi maka selanjutnya dapat dilakukan proses enkripsi dan dekripsi. Setiap nilai-nilai yang didapati bersifat rahasia yang hanya boleh diketahui oleh pengirim dan penerima pesan. Cara yang aman dalam pembangkitan nilai sebaiknya dilakukan secara acak sehingga dapat mempersulit pihak lain untuk melakukan penyadapan.

3.2.2. Analisis Algoritma RSA

Algoritma kriptografi Pohlig-Hellman, algoritma RSA pada dasarnya melakukan cara yang sama dalam enkripsi dan dekripsi. Kebutuhan-kebutuhan yang menjadi dasar dalam analisis algoritma RSA adalah :


(49)

Menentukan 2 bilangan prima p dan q secara acak dimana � ≠ �. Dalam rancangan ini digunakan teorema Fermat untuk pengujian bilangan prima dan dipilih secara acak.

2. Perhitungan nilai n

Nilai n didapat dari perkalian p dan q. 3. Perhitungan nilai totient

Nilai totient (�) = (� −1)(� −1). Hasil �(�) digunakan untuk menentukan nilai kunci enkripsi e yang digunakan untuk melakukan enkripsi.

4. Perhitungan nilai kunci enkripsi e

Nilai kunci enkripsi e diambil berdasarkan GCD(�(�),�)=1 ; 1 < �<�(n) 5. Perhitungan nilai kunci dekripsi d.

Nilai kunci dekripsi d dihitung dengan rumus � =�−1����(�) 6. Enkripsi

Enkripsi merupakan proses pengubahan plaintext menjadi ciphertext. Untuk melakukan enkripsi dapat dilakukan dengan rumus � =������ dimana pada plaintext m < n

7. Dekripsi

Dekripsi merupakan kebalikan dari enkripsi. Masukannya adalah ciphertext dan keluarannya adalah plaintext. Untuk melakukan dekripsi dapat dilakukan dengan rumus �= ������

Dalam algoritma RSA terdapat beberapa variabel yang menjadi dasar pada algoritma seperti dua bilangan prima p dan q, nilai n, nilai totient �, nilai kunci enkripsi e, nilai kunci dekripsi d. Setelah semua kunci ini dipenuhi maka selanjutnya dapat dilakukan proses enkripsi dan dekripsi.


(50)

3.2.3. Analisis Algoritma RSA Multiple-key

Algoritma RSA Multiple-key merupakan pengembangan dari algoritma RSA yang sudah ada sebelumnya. Namun dengan penambahan kunci-kunci (multiple key) dapat lebih meningkatkan keamanan informasi dan lebih mempersulit pihak lain untuk mengakses informasi yang bersifat rahasia. Penambahan kunci dapat dilakukan sampai sebanyak -n kunci.

Kebutuhan-kebutuhan yang menjadi dasar dalam analisis algoritma RSA Multiple-key adalah :

1. Pembangkitan Bilangan Prima

Menentukan 2 bilangan prima p dan q secara acak dimana � ≠ �. Untuk pembangkitannya menggunakan teorema Fermat.

2. Perhitungan nilai n.

Nilai n didapat dari perkalian p dan q. 3. Perhitungan nilai totient.

Nilai totient �(�) = (� −1)(� −1)

4. Penentuan kunci tambahan enkripsi (Multiple-key)

Menentukan berapa banyak kunci tambahan sebanyak –x (Ke1, Ke2, Ke3

Kex). Setelah itu menentukan nilai setiap Ke K

dengan syarat bahwa nilai :

e1

K

bilangan ganjil dan GCD(Ke1,�(n)) = 1

e2

.

bilangan ganjil dan GCD (Ke1∗Ke2,�(n)) = 1 .

Kex

5. Perhitungan nilai e

bilangan ganjil dan GCD (Ke1∗Ke2∗… …∗Kex,�(n)) = 1 Setelah semua nilai kunci tambahan Ke

6. Enkripsi

, maka dapat dilakukan perhitungan untuk penentuan kunci enkripsi dengan rumus �= (K�1∗K�2. .∗K��)

Enkripsi merupakan proses pengubahan plaintext menjadi ciphertext. Untuk melakukan enkripsi dapat dilakukan dengan rumus � =������ dimana pada plaintext dihitung dengan nilai m < n


(51)

7. Penentuan kunci tambahan dekripsi (Multiple-key)

Menentukan berapa banyak kunci dekripsi sebanyak –x (Kd1, Kd2, Kd3 … Kdx). Setelah itu menentukan nilai setiap Kd

K

dengan syarat bahwa nilai :

d1

K

bilangan ganjil dan GCD(K�1,�(n)) = 1

d2

.

bilangan ganjil dan GCD (K�1∗K�2,�(n)) = 1 .

Kdx

8. Perhitungan nilai kunci dekripsi

bilangan ganjil dan GCD (K�1∗K�2∗… …∗K�x,�(n)) = 1 Setelah nilai Kd

9. Dekripsi

didapat, maka dapat dilakukan perhitungan untuk kunci dekripsi d, dihitung nilai � = (K�1∗K�2… .∗K��, )

Dekripsi merupakan kebalikan dari enkripsi. Masukannya adalah ciphertext dan keluarannya adalah plaintext. Untuk melakukan dekripsi dapat dilakukan dengan rumus �= ������

3.2.4. Analisis Teorema Fermat

Dalam pembangkitan bilangan prima menggunakan Teorema Fermat. Teorema Fermat menyatakan bahwa jika suatu bilangan p bilangan prima, maka dapat dipastikan bilangan tersebut adalah prima atau tidak dengan rumus:

��−1���= 1 (3.2.4)

Maka bilangan p dapat dinyatakan prima, dengan syarat bahwa nilai 1≤ �< �. Misalkan kita menguji bilangan 3 apakah prima atau tidak, maka dapat diuji dengan Teorema Fermat:

p = 3

1≤ �< 3 = � = 1 maka 13−1��� 3 = 1

1≤ �< 3 = � = 2 maka 23−1��� 3 = 1


(52)

3.2.5. Model Algoritma Pohlig-Hellman Multiple-key

Setelah membandingkan konsep Multiple-key pada algoritma RSA maka dapat disesuaikan dengan rancangan algoritma Pohlig-Hellman Multiple-key. Penambahan kunci-kunci sama dengan yang ada pada algoritma RSA Multiple-key yaitu diinput setelah mendapatkan nilai totient dan sebelum proses enkripsi dan dekripsi dilakukan. Hal ini bertujuan karena dalam penentuan nilai e (kunci enkripsi) yang didapat nantinya melalui perhitungan kunci-kunci baru yang diinput sesuai dengan syarat-syarat yang ditentukan. Berikut ini merupakan konsep Algoritma Pohlig-Hellman Multiple-key:

1. Pembangkitan Bilangan Prima

Bilangan Prima p diambil secara acak dan untuk menguji keprimaan bilangan tersebut dilakukan menggunakan Teorema Fermat. Dalam hal ini nilai p disarankan agar diambil dengan jumlah yang besar untuk lebih mempersulit pihak lain melakukan perhitungan untuk mendapatkan kunci rahasia.

2. Perhitungan nilai totient.

Nilai totient � didapat dari � (�) =� −1

3. Penentuan kunci tambahan enkripsi (multiple-key)

Dalam konsep ini, berbeda dengan konsep algoritma Pohlig-Hellman sebelumnya karena terdapat adanya penambahan kunci untuk enkripsi seperti yang ada pada algoritma RSA. Banyaknya kunci tambahan dapat ditentukan berapa banyak kunci tambahan enkripsi sebanyak–x (Ke1, Ke2, Ke3 … Kex). Setelah ditentukan banyaknya kunci untuk menentukan nilai setiap Ke

K

dengan syarat bahwa nilai:

e1

K

bilangan ganjil dan GCD(Ke1,�(n)) = 1

e2

.

bilangan ganjil dan GCD (Ke1∗Ke2,�(n)) = 1 .


(53)

4. Perhitungan nilai kunci enkripsi e

Setelah setiap nilai kunci Ke ditentukan selanjutnya dapat dihitung nilai kunci

enkripsi e,dengan rumus e=Ke1*Ke2…*Kex

5. Enkripsi

.

Enkripsi merupakan proses pengubahan plaintext menjadi ciphertext. Untuk melakukan enkripsi dapat dilakukan dengan rumus � =������ dimana pada plaintext dengan nilai m<n

6. Penentuan Kunci Dekripsi

Menentukan berapa banyak kunci dekripsi sebanyak –x (Kd1, Kd2, Kd3 … Kdx). Setelah itu menentukan nilai setiap Kd

K

dengan syarat bahwa nilai :

d1

K

bilangan ganjil dan GCD(K�1,�(n)) = 1

d2

.

bilangan ganjil dan GCD (K�1∗K�2,�(n)) = 1 .

Kdx

7. Perhitungan nilai kunci dekripsi d

bilangan ganjil dan GCD (K�1∗K�2∗… …∗K��,�(n)) = 1 Setelah didapat nilai Kd

8. Dekripsi

, dapat dihitung nilai � = (K�1∗K�2. .∗K��)

Dekripsi merupakan kebalikan dari enkripsi. Masukannya adalah ciphertext dan keluarannya adalah plaintext. Untuk melakukan dekripsi dapat dilakukan dengan rumus �= ������

3.3. Analisis Sistem

Setelah mengetahui analisis algoritma yang akan dirancang, selanjutnya dilakukan analisis sistem. Dalam hal ini analisis sistem yang akan dilakukan terdiri dari analisis permasalahan dan analisis kebutuhan dari sistem yang akan dirancang.

3.4.1. Analisis Permasalahan


(54)

sistem berhubungan dengan data yang diinput dan output data yang didapati. Penjelasan diagram konteks sistem dapat dilihat pada gambar 3.1.

PENGIRIM SISTEM PENERIMA

(plaintext, kunci enkripsi)

(ciphertext, kunci dekripsi) (ciphertext)

(plaintext)

Gambar 3. 1. Diagram Konteks Sistem

Pada gambar 3.1. terlihat adanya empat proses yang menjadi fungsi utama sistem yang terdiri dari dua bagian utama yaitu berdasarkan sisi pengirim dan penerima. Pada sisi pengirim, proses pertama terdapat inputan data yaitu plain text dan kunci enkripsi yang selanjutnya melalui sistem akan menghasilkan ciphertext. Ciphertext tersebut nantinya akan digunakan oleh penerima dalam membangkitkan kembali plaintext yang dikirimkan oleh pengirim. Pada sisi penerima proses pertama terdapat inputan ciphertext dan kunci dekripsi yang dihubungkan ke dalam sistem. Dari proses selanjutnya akan dihasilkan kembali plaintext awal.

3.4.2. Analisis Kebutuhan Sistem

Aspek fungsional yang terdapat pada sistem meliputi adanya fungsi enkripsi, dekripsi, pembangkitan kunci, penambahan kunci serta bantuan penggunaan sistem.


(55)

3.4. Perancangan Sistem

Pada tahap perancangan sistem ini menggunakan UML yang mencakup diagram use case, sequence, class dan activity. Tahap perancangan juga mencakup perancangan flowchart dan antarmuka sistem.

3.5.1. Diagram Use Case

Diagram ini menunjukkan hubungan antara pemakai dengan sistem. Pada diagram ini terdapat dua pelaku yaitu pengirim dan penerima. Use case yang terdapat pada pengirim adalah melakukan enkripsi. Hasil yang dienkripsi kemudian akan digunakan untuk melakukan dekripsi. Pada gambar 3.2. dijelaskan tentang diagram use-case dari sistem yang akan dirancang.

SISTEM

enkripsi

dekripsi

PENGIRIM PENERIMA

Gambar 3. 2. Diagram Use Case

3.5.2. Diagram Sequence

Diagram sequence menggambarkan proses atau langkah-langkah yang dilakukan oleh pengirim dan penerima dalam menggunakan sistem. Pengirim terlebih dahulu melakukan proses penginputan data berupa plaintext dan pembangkitan kunci yang dilakukan secara acak oleh sistem yang dilakukan dengan teorema Fermat.


(56)

selanjutnya akan dikirimkan kepada penerima pesan. Penerima yang telah mendapat ciphertext akan melakukan proses dekripsi sehingga menghasilkan kembali plaintext yang dikirimkan oleh pengirim. Proses dekripsi dilakukan setelah mendapatkan kunci dekripsi terlebih dahulu. Diagram sequence untuk sistem yang dibangun dapat dilihat pada gambar 3.3.

PENGIRIM PENERIMA

enkripsi dekripsi

plaintext

kunci enkripsi

ciphertext

kunci deskripsi

Gambar 3.3. Diagram Sequence

3.5.3. Diagram Class

Diagram class menggambarkan keadaan atribut dari masing-masing proses yang terdapat pada sistem yaitu enkripsi dan dekripsi. Pada proses enkripsi terdapat beberapa atribut yaitu plaintext, kunci tambahan (multiple-key) enkripsi , kunci enkripsi dan proses Pohlig-Hellman. Pada proses dekripsi terdapat atribut ciphertext, kunci tambahan (multiple-key) dekripsi, kunci dekripsi dan Pohlig-Hellman. Pada gambar 3.4. merupakan diagram class sistem yang dirancang.

Enkripsi - plaintext - kunci enkripsi - multipl key enkripsi - Pohlig-Hellman

+Enkripsi ()

Dekripsi - ciphertext - kunci dekripsi - multiple key dekripsi - Pohlig-Hellman


(57)

3.5.4. Diagram Activity

Diagram activity menggambarkan segala aktivitas yang terdapat pada sistem. Terdapat dua aktivitas utama yaitu aktivitas pada pengirim yang akan mengirimkan pesan dengan melibatkan proses enkripsi dan aktivitas pada penerima yang melibatkan proses dekripsi. Pada kedua proses terdapat aktvitas seperti pembangkitan kunci dan penambahan multiple-key. Gambar 3.5. menjelaskan tentang diagram activity yang akan dirancang.

PENGIRIM

PENERIMA

Kunci bil. Prima

Kunci enkripsi

plaintext

Enkripsi

ciphertext

Kunci dekripsi

dekripsi

plaintext Multiple key enkripsi Multiple key dekripsi

Gambar 3. 5. Diagram Activity

Setelah pengirim menginputkan plaintext , multiple key dan kunci enkripsi agar proses enkripsi dapat berlangsung. Proses ini nantinya akan menghasilkan ciphertext. Penerima akan melakukan proses dekripsi dengan kunci dekripsi yang berhubungan dengan kunci enkripsi yang ada pada pengirim. Selanjutnya proses dekripsi akan menghasilkan plaintext.

3.5.5. Flowchart Sistem Algoritma Pohlig-Hellman Multiple-key

Terdapat dua hal penting yang dilakukan dalam sistem yang dirancang yaitu enkripsi dan dekripsi. Dalam melakukan enkripsi data, terlebih dahulu


(58)

Fermat dan dihasilkan secara acak dari bilangan prima yang disepakati. Dengan dilakukan secara acak maka tingkat keamanan kunci publik juga akan lebih tinggi karena hanya diketahui oleh pengirim dan selanjutnya diketahui penerima melalui pengirim.

Perhitungan nilai totient dilakukan dengan pengurangan nilai p dengan 1. Nilai totient diperlukan dalam proses enkripsi dan dekripsi. Dalam proses enkripsi selanjutnya akan ditentukan nilai kunci tambahan (multiple-key) yang didapat berdasarkan dari GCD antara nilai kunci yang mungkin dengan nilai totient harus bernilai 1. Kunci tambahan yang dihasilkan nantinya akan digunakan dalam perhitungan nilai kunci enkripsi e. Nilai e didapat dengan perkalian setiap kunci tambahan yang digunakan.

Jika semua nilai telah terpenuhi maka dapat dihitung ciphertext dari plaintext yang diinput. Demikian halnya untuk melakukan proses dekripsi dapat dilakukan berdasarkan ciphertext yang didapat. Setiap plaintext yang diinput satu persatu akan dikodekan dalambentuk ciphertext dengan perhitungan pada proses enkripsi. Kode tersebut dihitung berdasarkan nilai plaintext pada kode ASCII.

Dengan menentukan kunci tambahan dekripsi sebanyak n-buah yang didapat secara acak dari GCD antara kunci yang memungkinkan dengan nilai totient harus bernilai 1. Nilai dekripsi d dapat dihitung dengan perkalian setiap kunci tambahan. Dengan nilai d yang didapat maka plaintext dapat dihitung kembali berdasarkan rumus dekripsi. Untuk lebih lanjut flowchart tersebut dapat dilihat pada gambar 3.6.


(1)

end;

e := k_mult; end;

procedure getDecryptionKeys(); var

k_mult, a : int64; i : longint;

begin

k_mult := 1;

for i := 1 to EKEYS do begin

k_mult := k_mult * ke[i]; end;

for i := 1 to DKEYS - 1 do begin

repeat

a := random(totient div DKEYS); until gcd(k_mult * a, totient) = 1; kd[i] := a;

k_mult := k_mult * a; end;

a := 0; repeat

a := a + 1;

until (k_mult * a) mod totient = 1; kd[DKEYS] := a;

d := 1;

for i := 1 to DKEYS do begin

d := d * kd[i]; end;

end;

function compute_e(totient: int64): int64; begin

repeat

compute_e := 2 + random(totient - 3); until gcd(compute_e, totient) = 1;

end;

function compute_d(e, totient: int64): int64; begin

compute_d := 0; repeat

compute_d := compute_d + 1; until compute_d * e mod totient = 1; end;


(2)

procedure menu(); begin

writeln('========================================='); writeln('--CRYPTOGRAPHY : PROGRAM POHLIG HELLMAN--'); writeln('========================================='); writeln(' MENU');

writeln('1. Enkripsi Pohlig Hellman + Multiple Key'); writeln('2. Dekripsi Pohlig Hellman + Multiple Key'); writeln('3. Enkripsi Pohlig Hellman Standard');

writeln('4. Dekripsi Pohlig Hellman Standard'); writeln('5. Keluar');

writeln;

writeln('Masukkan Pilihan Anda (1 - 5):'); readln(cek); if (cek = 1) then

begin

clrscr; cip := '';

p := getRandomPrime(MIN, MAX); totient := p - 1;

writeln('================================================='); writeln('== Enkripsi Algoritma Pohlig-Hellman +

Multiple-key ==');

writeln('================================================='); writeln('nilai p = ', p);

writeln('nilai totient = ', totient); getEncryptionKeys();

for j := 1 to EKEYS do begin

writeln('Nilai Ke[', j, '] = ', ke[j]); end;

getDecryptionKeys(); for j := 1 to DKEYS do begin

writeln('Nilai Kd[', j, '] = ', kd[j]); end;

writeln('nilai e = ', e); writeln('nilai d = ', d); writeln;

writeln('Silahkan menuliskan pesan anda: '); readln(msg);


(3)

for j := 1 to length(msg) do begin

value[j] := ord(msg[j]); end;

for j:= 1 to length(msg) do begin

m := value[j];

c := modexp(m, e, p); cipher[j] := c;

cip := cip+inttostr(cipher[j])+' '; end;

writeln('Kode Ciphertext dari pesan anda: ', cip); writeln;

end

else if (cek = 2) then begin

clrscr; plain := '';

writeln('==================================================== =========');

writeln(' == Dekripsi dengan Algoritma Pohlig-Hellman Multiple-key == ');

writeln('==================================================== =========');

writeln('Input nilai p : '); readln(p2); writeln('input nilai d : '); readln(d2);

writeln('Input panjang pesan anda: '); readln(lenCipher);

for j := 1 to lenCipher do begin

writeln('Input setiap cipherteks anda [',j,'] : '); readln(nCip);

cipher2[j] := nCip; end;

for j:= 1 to lenCipher do begin

c2 := cipher2[j];

m2 := modexp(c2, d2, p2); plaintext2[j] := m2;


(4)

end; writeln;

writeln('Plaintext anda adalah: ', plain); writeln;

end

else if (cek = 3) then begin

clrscr; cip := '';

p := getRandomPrime(MIN, MAX); totient := (p - 1);

e := compute_e(totient); d := compute_d(e, totient);

writeln('==================================================== ===');

writeln('== Enkripsi dengan Algoritma Pohlig-Hellman Standard ==');

writeln('==================================================== ===');

writeln('bilangan prima p = ', p);

writeln('nilai totient (p-1) = ', totient); writeln('nilai kunci enkripsi e = ', e); writeln('nilai kunci dekripsi d = ', d);

writeln;

writeln('Tuliskan pesan anda: '); readln(msg); writeln;

for j := 1 to length(msg) do begin

value[j] := ord(msg[j]); end;

for j:= 1 to length(msg) do begin

m := value[j];

c := modexp(m, e, p); cipher[j] := c;

cip := cip+inttostr(cipher[j])+' '; end;

writeln('Kode Ciphertext anda adalah: ', cip); writeln;


(5)

else if (cek = 4) then begin

clrscr; plain := ''; plain := '';

writeln('==================================================== ===');

writeln('== Dekripsi dengan Algoritma Pohlig-Hellman Standard ==');

writeln('==================================================== ===');

writeln('Input nilai p : '); readln(p2); writeln('Input nilai d : '); readln(d2);

writeln('Input panjang pesan anda : '); readln(lenCipher);

for j := 1 to lenCipher do begin

writeln('Input cipherteks anda [',j,'] : '); readln(nCip);

cipher2[j] := nCip; end;

for j:= 1 to lenCipher do begin

c2 := cipher2[j];

m2 := modexp(c2, d2, p2); plaintext2[j] := m2;

plain := plain+char(plaintext2[j]); end;

writeln;

writeln('Plaintext anda adalah: ', plain); writeln;

end

else if (cek = 5) then begin

clrscr;

writeln('...Terimakasih anda keluar dari program...');

writeln('...---...');


(6)

writeln('...************************************.... ...');

writeln('==ssssss===m=====m========a========rrrrrr====ttttttt tt=======');

writeln('==s========m=m=m=m=======a=a=======r=====r=======t== =========');

writeln('==ssssss===m==m==m======a===a======r=====r=======t== =========');

writeln('=======s===m=====m=====aaaaaaa=====rrrrrr========t== =========');

writeln('=======s===m=====m====a=======a====r=rr==========t== =========');

writeln('==ssssss===m=====m===a=========a===r===rrr=======t== =========');

writeln('===================================================S ystem.===');

readln(); end

else begin

writeln('"Maaf, Pilihan hanya 1, 2, 3, 4 dan 5 !"'); end;

end; begin

while (cek < 5) do begin

menu(); end;