Algoritma The Sieve Of Eratosthenes Dan Linear Congruential Generator (LCG) Dalam Perancangan Aplikasi Kriptografi RSA

(1)

ALGORITMA THE SIEVE OF ERATOSTHENES DAN

LINEAR CONGRUENTIAL GENERATOR ( LCG )

DALAM PERANCANGAN APLIKASI

KRIPTOGRAFI RSA

TESIS

Oleh

M FAKHRIZA

097038035/TINF

PROGRAM STUDI MAGISTER (S2) TEKNIK INFORMATIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA 2012


(2)

ALGORITMA THE SIEVE OF ERATOSTHENES DAN

LINEAR CONGRUENTIAL GENERATOR ( LCG )

DALAM PERANCANGAN APLIKASI

KRIPTOGRAFI RSA

TESIS

Diajukan sebagai salah satu syarat untuk memperoleh gelar

Magister Komputer dalam Program Studi Magister

Teknik Informatika pada Program Pascasarjana

Fasilkom -TI Universitas Sumatera Utara

Oleh

M FAKHRIZA

097038035/TINF

PROGRAM STUDI MAGISTER (S2) TEKNIK INFORMATIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA 2012


(3)

PENGESAHAN TESIS

Judul Tesis

:

ALGORITMA THE SIEVE OF

ERATOSTHENES DAN LINEAR

CONGRUENTIAL GENERATOR ( LCG ) DALAM PERANCANGAN APLIKASI KRIPTOGRAFI RSA

Nama Mahasiswa

: M Fakhriza

NIM

: 097038035

Program Studi

: Magister Teknik Informatika

Fakultas

: Ilmu Komputer dan Teknologi Informasi

Menyetujui Komisi Pembimbing

M.Andri Budiman,ST, M.Comp.Sc, MEM

Ketua Program Studi

Prof. Dr. Muhammad Zarlis

Anggota Ketua

Dekan

Prof. Dr. Muhammad Zarlis NIP : 195707011986011003

Dr. Sutarman, M.Sc NIP : 196310261991031001


(4)

PERNYATAAN ORISINALITAS

ALGORITMA THE SIEVE OF ERATOSTHENES DAN

LINEAR CONGRUENTIAL GENERATOR ( LCG )

DALAM PERANCANGAN APLIKASI

KRIPTOGRAFI RSA

TESIS

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

Medan, 22 Februari 2012

M. FAKHRIZA NIM : 097038035


(5)

PERNYATAAN PERSETUJUAN PUBLIKASI

KARYA ILMIAH UNTUK KEPENTINGAN

AKADEMIS

Sebagai civitas akademika Universitas Sumatera Utara, saya yang bertanda tangan di bawah ini:

Nama : M FAKHRIZA Nim : 097038035

Program Studi : Magister ( S2) 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:

ALGORITMA THE SIEVE OF ERATOSTHENES DAN

LINEAR CONGRUENTIAL GENERATOR ( LCG ) DALAM

PERANCANGAN APLIKASI KRIPTOGRAFI RSA

Beserta perangkat yang ada (jika diperlukan). Dengan Hak Bebas Royalti Non-Eksklusif ini, Universitas Sumatera Utara berhak menyimpan, mengalih media, memformat, mengelola dalam bentuk database, merawat dan mempublikasikan Tesis saya 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, 22 Februari 2012

M. FAKHRIZA NIM : 097038035


(6)

Telah diuji pada Tanggal : 24 Januari 2012

PANITIA PENGUJI TESIS

Pembimbing Utama : Prof. Dr. Muhammad Zarlis

Pembimbing Anggota : M. Andri Budiman, ST,M.Comp.Sc,MEM

Ketua Penguji : Prof. Dr. Herman Mawengkang

Anggota Penguji : Dr. Erna Budhiarti Nababan

Anggota Penguji : Ade Candra, ST, M.Kom


(7)

RIWAYAT HIDUP

DATA PRIBADI

Nama lengkap berikut gelar : M Fakhriza

Tempat dan Tanggal Lahir : Medan 12 Februari 1985 Alamat Rumah : Jl Seto, No. 92 Medan Telepon / HP : 085296550077

Email : [email protected]

DATA PENDIDIKAN

SD : SD Mamiyai Medan Tamat : 1997 SMP : Pesantren Modern Nurul Hakim Tembung Tamat : 2000 SMU : SMU Swasta Harapan Medan Tamat : 2003 Strata-1 : Universitas Islam Sumatera Utara Tamat : 2009


(8)

KATA PENGANTAR

Bismillahhirahmanirahim. Dengan menyebut Nama Allah yang Maha Pengasih dan Penyayang,. Serta rahmat dan hidayah-NYA, Alhamdulillahi rabbil ‘alamin, puji dan syukur atas segala yang telah diberikan Allah SWT kepada penulis melalui Ridha dan Karunia-Nya sehingga tesis ini dapat diselesaikan, dengan judul “Algoritma The Sieve Of Eratosthenes Dan Linear Congruential Generator (LCG) Dalam Perancangan Aplikasi Kriptografi RSA”.

Tesis merupakan salah satu syarat yang harus dipenuhi oleh setiap mahasiswa untuk mendapat gelar Magister Komputer pada Program Studi Teknik Informatika Sekolah Pascasarjana Universitas Sumatera Utara Medan.

Pada kesempatan ini pula penulis ingin mengucapkan terima kasih yang sebesar-besarnya kepada berbagai pihak yang telah banyak membantu peneliti baik secara moril maupun material, langsung dan tidak langsung sehingga penulisan tesis ini selesai tepat pada waktunya. Untuk itu semua saya ingin mengucapkan terima kasih kepada :

1. Bapak Prof. Dr. H. Muhammad Zarlis, selaku Pembimbing utama, Ketua Program Studi Magister Teknik Informatika dan Dekan Fakultas Ilmu Komputer dan Teknologi Informasi.

2. Bapak M. Andri Budiman, ST, M.Comp.Sc, MEM selaku sekretaris Program studi Magister Teknik Informatika dan pembimbing anggota.

3. Bapak Prof. Dr. Herman Mawengkang selaku ketua komisi pembanding. 4. Dr. Erna Budhiarti Nababan selaku anggota komisi pambanding.

5. Bapak Ade Candra, ST, M.Kom, selaku anggota komisi pembanding.

6. Kedua Orang Tua penulis ( Papa dan Mama ) yang selalu memberikan dukungan moril, materil serta do’a kepada penulis sampai saat ini. Isteri (maya) dan anak tercinta (Alief Sandro), Beserta adik Rika, Ima, Rozi dan Koko yang selalu menyayangi penulis.

7. Seluruh Guru serta Dosen yang telah mendidik dan membentuk pola pikir penulis selama ini, Anda adalah pahlawan tanpa tanda jasa.


(9)

8. Bapak Ir. Suhaimi Batubara beserta isteri selaku guru, dosen, dan orang tua yang telah memberikan banyak inspirasi serta dorongan moril kepada penulis. 9. Rekan-rekan sesama mahasiswa, terutama buat : Pak Kapten, Pak Udin, Pak

Husni, Pak Marlin, Pak Sayed, Pak Nurdin, Razi, Maries, Tessa dan lainnya. 10.Seluruh Pegawai administrasi Program Studi Magister Teknik Informatika

USU terutama buat : Bang Jawa, Citra, Bang ewin, widya dan lainnya. 11.Seluruh keluarga besar ADA FC dan sahabat-sahabat tercinta.

12.Semua pihak yang telah memberikan bantuan dalam penyelesaian tesis ini.

Penulis menyadari bahwa kemampuan dan pengalaman penulis masih sangat terbatas. Oleh karena itu, semoga kekurangan yang ada pada penulis dapat diperbaiki bersama dan berharap Tesis ini bermanfaat bagi semua pihak, Amin. Wabillahi taufik walhidayah Wassalamu’alaikum warahmatullahi wabarakatuh

Medan, 22 Februari 2012 Penulis,

M. Fakhriza 097038035


(10)

ALGORITMA THE SIEVE OF ERATOSTHENES DAN LINEAR CONGRUENTIAL GENERATOR (LCG) DALAM PERANCANGAN

APLIKASI KRIPTOGRAFI RSA

ABSTRAK

Kriptografi adalah ilmu untuk menyamarkan pesan agar hanya dikenal baik oleh penyedia dan penerima pesan. Algoritma kunci publik RSA adalah salah satu metode dalam ilmu kriptografi. Dalam algoritma kunci publik RSA, ada kunci privat dan publik, di mana masing-masing kunci menggunakan bilangan acak yang merupakan bilangan prima untuk melakukan enkripsi dan dekripsi.Bilangan acak yang dihasilkan sebenarnya adalah bilangan pseudo-random ('hampir' acak). Linear Congruential Generator (LCG) algoritma yang digunakan untuk menghasilkan bilangan acak, dan The Sieve Of Eratosthenes diterapkan untuk menentukan apakah bilangan acak yang dihasilkan adalah bilangan prima.

Kata-kata Kunci : RSA, The Sieve of Eratosthenes, Linear Congruential Generator, Enkripsi, Dekripsi.


(11)

THE SIEVE OF ERATOSTHENES ALGORITHM AND LINEAR

CONGRUENTIAL GENERATOR ( LCG ) IN THE DESIGN

OF RSA CRYPTOGRAPHY APPLICATIONS

ABSTRACT

Cryptography is a science for disguising message in order that it is only known by both the provider and the receiver of the message. RSA Public key algorithm is a method in the science of cryptography. In RSA public key algorithm, there are private and public keys, in which each of the keys uses random number which is a prime in order to do encryption and decryption. The random number generated is actually a pseudo-random numbers (‘almost’ random). Linear Congruential Generator ( LCG ) algorithm is used to generate random numbers, and the Sieve of Eratosthenes is applied to determine whether the random numbers generated are primes.

Keywords: RSA, The Sieve of Eratosthenes, Linear Congruential Generator, Encryption, Decryption.


(12)

DAFTAR ISI

KATA PENGANTAR ... i

ABSTRAK ... iii

ABSTRACT ... iv

DAFTAR ISI ... v

DAFTAR TABEL ... vii

DAFTAR GAMBAR ... viii

BAB I PENDAHULUAN ... 1

1.1. Latar Belakang Masalah ... 1

1.2. Perumusan Masalah ... 4

1.3. Batasan Masalah ... 4

1.4. Tujuan Penelitian ... 5

1.5. Manfaat Penelitian ... 5

BAB II TINJAUAN PUSTAKA ... 6

2.1. Kriptografi ... 6

2.1.1. Kriptografi Kunci Simetris dan Asimetris ... 9

2.2. Algoritma RSA ... 12

2.3. Pembangkit Bilangan Prima ... 17

2.3.1. ALgoritma The Sieve Of Eratosthenes ... 17

2.4. Bilangan Acak ... 19

2.4.1. Pembangkit Bilangan Acak (Crytographically Pseudo- Random Number Generator ... 19

2.4.2. Algoritma Pembangkit Bilangan Acak Semu ... 20

2.5. Probabilistic Encryption ... 20

2.6. Pembangkit Bilangan Acak Linera Congruential Generator (LCG) ... 21

BAB III METODOLOGI PENELITIAN ... 25

3.1. Perumusan Algoritma Kunci Publik RSA ... 25


(13)

3.2.1. Enkripsi ... 27

3.2.2. Dekripsi ... 29

3.3. Membangkit Bilangan Acak Dengan Linear Congruential Generator ... 31

3.4.. Pengujian Bilangan Prima dengan The Sieve of Eratosthenes 38

BAB IV ANALISIS DAN PEMBAHASAN ... 41

4.1. Pendahuluan ... 41

4.2. Perancangan Program ... 41

BAB V KESIMPULAN DAN SARAN ... 47

5.1. Kesimpulan ... 47

5.2. Saran ... 47

DAFTAR PUSTAKA LISTING PROGRAM


(14)

DAFTAR TABEL

Tabel 2.1. Perbandingan Kecepatan Waktu Penghasilan Angka ... 22

Tabel 2.2. Contoh Bilangan Acak Yang Dihasilkan Dari Persamaan LCG... 23

Tabel 3.1. Konstanta Yang Bagus Untuk LCG ... 32


(15)

DAFTAR GAMBAR

Gambar 1.1. Proses Enkripsi dan Dekripsi Kunci Publik ... 2

Gambar 2.1. Contoh Confidentiality ... 6

Gambar 2.2. Contoh Data Integrity ... 7

Gambar 2.3. Contoh Authentication ... 7

Gambar 2.4. Contoh Non-repudiation ... 8

Gambar 2.5. Diagram Proses Enkripsi dan Dekripsi Algoritma Simetris ... 10

Gambar 2.6. Diagram Proses Enkripsi dan Dekripsi Algoritma Asimetris ... 11

Gambar 3.1. Main Flowchart ... 26

Gambar 3.2. Flowchart Proses Enkripsi ... 28

Gambar 3.3. Flowchart Proses Dekripsi ... 29

Gambar 3.4. Flowchart LCG ... 37

Gambar 3.5. Eksekusi Bilangan Kelipatan Dua ... 38

Gambar 3.6. Eksekusi Bilangan Kelipatan Tiga ... 39

Gambar 3.7. Eksekusi Bilangan Kelipatan Lima ... 3

Gambar 3.8. Eksekusi Bilangan Kelipatan Tujuh ... 40

Gambar 4.1. Tampilan Utama Program ... 41

Gambar 4.2. Input Teks ... 42

Gambar 4.3. Setelah Submit ... 43

Gambar 4.4. Setelah Submit Berkali-kali ... 44

Gambar 4.5. Simulasi 10 karakter ... 45

Gambar 4.4. Simulasi 10 karakter setelah submit ... 45


(16)

ALGORITMA THE SIEVE OF ERATOSTHENES DAN LINEAR CONGRUENTIAL GENERATOR (LCG) DALAM PERANCANGAN

APLIKASI KRIPTOGRAFI RSA

ABSTRAK

Kriptografi adalah ilmu untuk menyamarkan pesan agar hanya dikenal baik oleh penyedia dan penerima pesan. Algoritma kunci publik RSA adalah salah satu metode dalam ilmu kriptografi. Dalam algoritma kunci publik RSA, ada kunci privat dan publik, di mana masing-masing kunci menggunakan bilangan acak yang merupakan bilangan prima untuk melakukan enkripsi dan dekripsi.Bilangan acak yang dihasilkan sebenarnya adalah bilangan pseudo-random ('hampir' acak). Linear Congruential Generator (LCG) algoritma yang digunakan untuk menghasilkan bilangan acak, dan The Sieve Of Eratosthenes diterapkan untuk menentukan apakah bilangan acak yang dihasilkan adalah bilangan prima.

Kata-kata Kunci : RSA, The Sieve of Eratosthenes, Linear Congruential Generator, Enkripsi, Dekripsi.


(17)

THE SIEVE OF ERATOSTHENES ALGORITHM AND LINEAR

CONGRUENTIAL GENERATOR ( LCG ) IN THE DESIGN

OF RSA CRYPTOGRAPHY APPLICATIONS

ABSTRACT

Cryptography is a science for disguising message in order that it is only known by both the provider and the receiver of the message. RSA Public key algorithm is a method in the science of cryptography. In RSA public key algorithm, there are private and public keys, in which each of the keys uses random number which is a prime in order to do encryption and decryption. The random number generated is actually a pseudo-random numbers (‘almost’ random). Linear Congruential Generator ( LCG ) algorithm is used to generate random numbers, and the Sieve of Eratosthenes is applied to determine whether the random numbers generated are primes.

Keywords: RSA, The Sieve of Eratosthenes, Linear Congruential Generator, Encryption, Decryption.


(18)

BAB I PENDAHULUAN

1.1.Latar Belakang Masalah

Perkembangan teknologi yang begitu pesat memungkinkan manusia dapat berkomunikasi dan saling bertukar informasi/data secara jarak jauh. Antar kota antar wilayah antar negara bahkan antar benua, bukan merupakan suatu kendala lagi dalam melakukan komunikasi dan pertukaran data. Seiring dengan itu tuntutan akan sekuritas (keamanan) terhadap kerahasiaan informasi yang saling dipertukarkan tersebut semakin meningkat. Begitu banyak pengguna seperti departemen pertahanan, suatu perusahaan atau bahkan individu-individu tidak ingin informasi yang disampaikannya diketahui oleh orang lain atau kompetitornya atau negara lain. Oleh karena itu dikembangkanlah cabang ilmu yang mempelajari tentang cara pengamanan data atau dikenal dengan istilah Kriptografi.

Menurut Mollin,( 2007 )kriptografi adalah sebuah metode mengirimkan pesan secara rahasia dan disamarkan, sehingga hanya penerima pesan yang dituju yang dapat merubah, menghapus dan membaca pesan tersebut. Dalam bahasa Yunani Kriptografi berarti kryptos yang artinya yang tersembunyi dan graphein yang artinya menulis. Pesan asli disebut plaintext, dan pesan yang disamarkan disebut ciphertext. pesan yang terakhir, dikemas dan dikirim, disebut kriptogram. Proses membalikkan dan mengubah plaintext ke ciphertext disebut enkripsi, encryption, atau enciphering. proses untuk mengubah ciphertext menjadi plaintext, yang disampaikan oleh penerima disebut dekripsi atau menguraikan. Orang yang mendesain dan merancang sistem kriptografi disebut kriptografer. Sedangkan orang yang menggunakan teknik matematika dan statistika tanpa ia harus mengetahui kunci secara legal dalam rangka memecahkan ciphertext menjadi plaintext disebut kriptoanalis.


(19)

Dalampenelitian ini penulis tertarik untuk membahas tentang kriptografi kunci publik RSA serta bagaimana merancang aplikasinya. Sebagaimana yang telah dilakukan oleh Arifin, ( 2009 ) disimpulkan bahwa, RSA merupakan salah satu solusi yang baik untuk mengatasi masalah keamanan dan kerahasiaan data yang pada umumnya diterapkan dalam pengiriman dan penyimpanan data melalui media elektronik. Dan dianggap sebagai algoritma kriptografi yang paling aman saat ini. Hal ini dikarenakan belum ditemukannya algoritma yang mangkus (efisien) untuk memecahkan sistem keamanan yang diberikan oleh sistem RSA.

Dalam kriptografi kunci publik terdapat dua konsep utama yakni enkripsi dan dekripsi. Enkripsi adalah proses dimana informasi/data yang hendak dikirim diubah menjadi bentuk yang hampir tidak dikenali sebagai informasi awalnya dengan menggunakan algoritma tertentu. Dekripsi adalah kebalikan dari enkripsi yaitu mengubah kembali bentuk tersamar tersebut menjadi informasi awal, prosesnya dapat dilihat pada gambar 1.1. Munir, ( 2006 )

Gambar 1.1 Proses Enkripsi dan Dekripsi Kunci Publik

Pembangkitan bilangan prima adalah sebuah permasalahan yang esensial di dalam ilmu komputer dan teori bilangan, terutama dalam bidang kriptografi. Hal ini dikarenakan protokol-protokol enkripsi kunci publik didasarkan pada penggunaan dari bilangan prima dengan ukuran besar. Sedangkan keamanan sistem kriptografi kunci publik sering didasarkan pada kesulitan untuk mendapatkan faktor-faktor prima dari suatu bilangan prima yang sangat besar.


(20)

Sebagaimana yang telah disimpulkan oleh Siang, ( 2002 ) bahwa semakin pesat perkembangan komputer, semakin terasalah pentingnya peranan bilangan prima. Bilangan prima yang dulunya dianggap sebagai sesuatu yang tidak memiliki manfaat, kini menjadi bagian yang tak terpisahkan dalam keamanan data. Kriptografi dewasa ini lebih dari sekedar enkripsi dan dekripsi. Tanda tangan digital (digital signature) mulai banyak dipakai untuk mencegah pemalsuan dokumen elektronik. Semuanya itu membutuhkan bilangan prima. Dalam hal ini penulis menggunakan algoritma The Sieve of Eratosthenes.

Pada hasil penelitian Oni, ( 2011 ) disimpulkan bahwa algoritma Linear Congruential Generators (LCG), algoritma Well Equidistributed Long-period Linear (WELL) dan SIMD-oriented Fast Mersenne Twister (SFMT) dapat digunakan untuk menghasilkan bilangan acak semu (pseudorandom). Dari segi kecepatan LCG membutuhkan waktu yang paling pendek dalam menghasilkan bilangan acak. Sedangkan dari sisi periode WELL mempunyai periode yang paling panjang hal ini membuat WELL mempunyai tingkat keamanan paling tinggi.

Meningkatnya tingkat keamanan akan berbanding terbalik dengan kecepatan. Sehingga bila diingiinkan keamanan yang lebih tinggi maka kecepatan akan berkurang dan bila menginginkan kecepatan yang tinggi maka keamanan akan berkurang. Karena mempunyai tingkat keamanan yang cukup tinggi dan kecepatan yang cukup cepat, memungkinkan Algoritma Well Equidistributed Long-period Linear (WELL) dan SIMD-oriented Fast Mersenne Twister (SFMT) untuk digunakan dalam berbagai algoritma untuk fungsi-fungsi kriptografi. Selain itu algoritma Algoritma Well Equidistributed Long-period Linear (WELL) dan SIMD-oriented Fast Mersenne Twister (SFMT) tergolong cryptographically secure pseudorandom generator (CSPRNG).

Untuk pembangkit bilangan acak penulis menggunakan algoritma Linear Congruential Generator (LCG). LCG adalah salah satu pembangkit bilangan acak tertua dan sangat terkenal. LCG adalah algoritma yang sering diimplementasikan pada beberapa bahasa pemrograman untuk membangkitkan bilangan acak. Namun jika dilihat dari angka yang dihasilkan, algoritma Linear Congruential Generator (LCG) memiliki kelemahan. Sebab angka (bilangan acak) yang dihasilkan dapat


(21)

diprediksi urutan kemunculannya. Oleh karena itu penulis tertarik untuk menganalisa bagaimana cara mendapatkan bilangan yang cukup acak dengan LCG yang nantinya bilangan tersebut digunakan sebagai kunci dalam aplikasi RSA.

1.2. Perumusan Masalah

Berdasarkan uraian yang telah dijelaskan sebelumnya yang menjadi perumusan masalah adalah bagaimana mengamankan data dengan algoritma The Sieve Of Eratosthenes dan LCG pada RSA.

1.3. Batasan Masalah

Batasan masalah dalam penelitian ini adalah :

1. Tidak diteliti tentang serangan terhadap Kriptografi. 2. Tidak membandingkan dengan metode Kriptografi lain.

3. Tidak membandingkan dengan algoritma pembangkitan acak dan prima lain.

4. Hasil enkripsi tidak dikonversi kedalam ASCII (dalam bentuk angka – angka).

5. Pengambilan bilangan m berdasarkan hitungan detik keberapa saat transaksi.

6. Pengambilan bilangan acak b dibatasi 1 s/d 100.

7. Dalam simulasi program, jenis pesan yang digunakan dalam bentuk text yang dimasukkan secara manual.


(22)

1.4. Tujuan Penelitian

Tujuan penelitian ini adalah sebagai berikut :

1. Untuk mengamankan data atau pesan dengan kombinasi algoritma The Sieve of Eratosthenes dan Linear Congruential Generator (LCG) berbasis RSA, kedalam bentuk aplikasi komputer.

2. Memodifikasi variabel algoritma Linear Congruential Generator (LCG) sehingga bilangan yang dihasilkan cukup acak untuk RSA.

1.5. Manfaat Penelitian

Manfaat penelitian ini adalah sebagai berikut :

1. Mengetahui bahwa dalam algoritma kunci publik RSA dapat menggunakan metode Linear Congruential Generator (LCG) untuk membangkitkan bilagan acak dan The Sieve of Eratosthenes untuk membangkitkan bilangan prima.

2. Mengetahui apakah algoritma LCG dapat dianggap sebagai Cryptographically-secure.


(23)

BAB II

TINJAUAN PUSTAKA

2.1. Kriptografi

Kriptografi adalah ilmu yang mempelajari bagaimana membuat suatu pesan yang dikirim pengirim dapat disampaikan kepada penerima dengan aman Schneier, (1996).

Prinsip-prinsip yang mendasari kriptografi yakni:

Confidentiality (kerahasiaan) yaitu layanan agar isi pesan yang dikirimkan tetap rahasia dan tidak diketahui oleh pihak lain (kecuali pihak pengirim, pihak penerima / pihak-pihak memiliki ijin). Umumnya hal ini dilakukan dengan cara membuat suatualgoritma matematis yang mampu mengubah data hingga menjadi sulit untuk dibaca dan dipahami. Dapat dilihat pada gambar berikut :

Gambar 2.1 Contoh Confidentiality Sumbe


(24)

Data integrity (keutuhan data) yaitu layanan yang mampu mengenali/mendeteksi adanya manipulasi (penghapusan, pengubahan atau penambahan)data yang tidak sah (oleh pihak lain). Dapat dilihat pada gambar berikut:

Gambar 2.2 Contoh Data Integrity Sumbe

Authentication (keotentikan) yaitu layanan yang berhubungan dengan identifikasi. Baik otentikasi pihak-pihak yang terlibat dalam pengiriman data maupun otentikasi keaslian data/informasi. Dapat dilihat pada gambar berikut:

Gambar 2.3 Contoh Authentication Sumbe


(25)

Non-repudiation (anti-penyangkalan) yaitu layanan yang dapat mencegah suatu pihak untuk menyangkal aksi yang dilakukan sebelumnya (menyangkal bahwa pesan tersebut berasal dirinya). Dapat dilihat pada gambar berikut:

Gambar 2.4 Contoh Non – repudiation Sumbe

Berbeda dengan kriptografi klasik yang menitikberatkan kekuatan pada kerahasiaan algoritma yang digunakan (yang artinya apabila algoritma yang digunakan telah diketahui maka pesan sudah jelas "bocor" dan dapat diketahui isinya oleh siapa saja yang mengetahui algoritma tersebut), kriptografi modern lebih menitikberatkan pada kerahasiaan kunci yang digunakan pada algoritma tersebut (oleh pemakainya) sehingga algoritma tersebut dapat saja disebarkan ke kalangan masyarakat tanpa takut kehilangan kerahasiaan bagi para pemakainya.

Berikut adalah istilah-istilah yang digunakan dalam bidang kriptografi :

Plaintext (M) adalah pesan yang hendak dikirimkan (berisi data asli).

Ciphertext (C) adalah pesan ter-enkrip (tersandi) yang merupakan hasil enkripsi.


(26)

Dekripsi (fungsi D) adalah kebalikan dari enkripsi yakni mengubah ciphertext menjadi plaintext, sehingga berupa data awal/asli.

Kunci adalah suatu bilangan yang dirahasiakan yang digunakan dalam proses enkripsi dan dekripsi.

Kriptografi itu sendiri terdiri dari dua proses utama yakni proses enkripsi dan proses dekripsi. Seperti yang telah dijelaskan , proses enkripsi mengubah plaintext menjadi ciphertext (dengan menggunakan kunci tertentu) sehingga isi informasi pada pesan tersebut sukar dimengerti. Dapat dilihat pada gambar 1.1.

2.1.1. Kriptografi Kunci Simetris dan Asimetris

Selain berdasarkan sejarah yang membagi kritografi menjadi kriptografi klasik dan kriptografi modern, maka berdasarkan kunci yang digunakan untuk enkripsi dan dekripsi, kriptografi dapat dibedakan lagi menjadi kriptografi Kunci-Simetris (Symmetric-key Cryptography) dan kriptografi Kunci-Asimetris (Asymmetric-key Cryptography).

a) Kriptografi Kunci-Simetris

Algoritma ini mengasumsikan pengirim dan penerima pesan sudah berbagi kunci yang sama sebelum bertukar pesan. Algoritma simetris (symmetric algorithm) adalah suatu algoritma dimana kunci enkripsi yang digunakan sama dengan kunci dekripsi, sehingga algoritma ini disebut juga sebagai single-key algorithm. Algoritma ini sering juga disebut dengan algoritma klasik karena memakai kunci yang sama untuk kegiatan enkripsi dan dekripsi. Algoritma ini sudah ada sejak lebih dari 4000 tahun yang lalu.Semua algoritma kriptografi klasik termasuk kedalam sistem kriptografi simetri.Keamanan dari pesan yang menggunakan algoritma ini tergantung pada kunci. Jika kunci tersebut diketahui oleh orang lain maka orang tersebut akan dapat melakukan enkripsi dan dekripsi terhadap pesan. Mollin, (2007)


(27)

Algoritma yang memakai kunci simetris diantaranya adalah : 1. Data Encryption Standard (DES)

2. RC2, RC4, RC5, RC6

3. International Data Encrytion Algorithm (IDEA) 4. Advanced Encryption Standard (AES)

5. One Time Pad (OTP) 6. Dan lain-lain

Berikut ilustrasi penggunaan algoritma simetris :

Kunci Dekripsi Kunci Dekripsi

Gambar 2.5 Diagram proses enkripsi dan dekripsi algoritma simetris

Sebelum melakukan pengiriman pesan, pengirim dan penerima harus memilih suatu kunci tertentu yang sama untuk dipakai bersama, dan kunci ini haruslah rahasia bagi pihak yang tidak berkepentingan sehingga algoritma ini disebut juga algoritma kunci rahasia (secret-key algorithm).

Kelebihan Algoritma Simetris:

• Kecepatan operasi lebih tinggi bila dibandingkan dengan algoritmaasimetrik.

• Karena kecepatannya yang cukup tinggi, maka dapat digunakan pada sistem real-time


(28)

Kelemahan Algoritma Simetris :

• Untuk tiap pengiriman pesan dengan pengguna yang berbeda dibutuhkan kunci yang berbeda juga, sehingga akan terjadi kesulitan dalam manajemen kunci tersebut.

• Permasalahan dalam pengiriman kunci itu sendiri yang disebut “key distribution problem”

b) Kriptografi Kunci-Asimetris

Kriptografi asimetris juga disebut dengan kriptografi kunci-publik.Dengan arti kata kunci yang digunakan untuk melakukan enkripsi dan dekripsi adalah berbeda. Pada kriptografi jenis ini, setiap orang yang berkomunikasi mempunyai sepasang kunci yaitu:

1. Kunci umum (public key) : yaitu kunci yang boleh semua orang tahu. Pengirim mengenkripsi pesan dengan menggunakan kunci publik si penerima pesan.

2. Kunci rahasia (private key) : yaitu kunci yang dirahasiakan atau diketahui oleh satu orang saja. Hanya penerima pesan yang dapat mendekripsi pesan, karena hanya ia yang mengetahui kunci privatenya sendiri

Kunci-kunci tersebut berhubungan satu sama lain. Walau kunci publik telah diketahui namun akan sangat sukar mengetahui kunci private yang digunakan. Contoh algoritma kriptografi kunci-publik diantaranya RSA, Elgamal, DSA dll. Berikut ilustrasi penggunaan algoritma Asimetris :

Kunci Dekripsi ( K1 ) ( Tidak Rahasia )

Kunci Dekripsi ( K2 ) ( Rahasia )


(29)

Kelebihan Algoritma Asimetris:

• Masalah keamanan pada distribusi kunci dapat lebih baik

• Masalah manajemen kunci yang lebih baik karena jumlah kunci yang lebih sedikit

Kelemahan Algoritma Asimetris:

• Kecepatan yang lebih rendah bila dibandingkan dengan algoritma simetris • Untuk tingkat keamanan sama, kunci yang digunakan lebih panjang

dibandingkan dengan algoritma simetris.

Kriptografi kunci-publik mempunyai kontribusi yang luar biasa dibandingkan dengan sistem kriptografi simetri.Kontribusi yang paling penting adalah tandatangan digital pada pesan untuk memberikan aspek keamanan otentikasi, integritas data, dan nir-penyangkalan.Tandatangan digital adalah nilai kriptografis yang bergantung pada isi pesan dan kunci yang digunakan.Pengirim pesan mengenkripsi pesan (yang sudah diringkas) dengan kunci private nya, kemudian hasil enkripsi inilah yang dinamakan tandatangan digital.Tandatangan digital dilekatkan pada pesan asli.Penerima pesan memverifikasi tandatangan digital dengan menggunakan kunci publik.Kristanto, (2003)

2.2. Algoritma RSA

Dari sekian banyak algoritma kunci publik yang pernah dibuat, algoritma yang paling populer adalah algoritma RSA. Algoritma RSA dibuat oleh 3 orang peneliti dari MIT (Massachusetts Institute of Technology) pada tahun 1976, yaitu: Ron

(R)ivest, Adi (S)hamir, dan Leonard (A)dleman. Keamanan algoritma RSA terletak pada sulitnya memfaktorkanbilangan yang besar menjadi faktor prima.Pemfaktoran dilakukan untuk memperoleh kunci privat.Selama pemfaktoran bilangan besar menjadi faktor-faktor prima belum ditemukan algoritma yang mangkus, maka selama itu pula keamanan algoritma RSA tetap terjamin. Schneier, (1996)


(30)

Algoritma RSA memiliki besaran-besaran sebagai berikut: 1. p dan q, bilangan prima (rahasia)

2. n = p . q (tidak rahasia) 3. Φ(n) = (p-1)(q-1) (rahasia) 4. e (kunci enkripsi ) (tidak rahasia) 5. d (kunci dekripsi) (rahasia) 6. m (plainteks) (rahasia) 7. c (cipherteks) (tidak rahasia)

Fungsi totientΦ(n), Juga disebut fungsi totient Euler, didefinisikan sebagai

jumlah nyang

mengandung faktor kesamaan dengan) n, Di mana 1 dihitung sebagai untuk semua nomor. Karena jumlah kurang dari atau sama dengan da

Φ(n)bisa

dengan sederhana didefinisikan sebagai jumlan. Misalnya, ada

delapaΦ(24) = 8.

Ada metode lain untuk menghitung invers modulo n, tapi mungkin tidak selalu bisa digunakan.Set mengurangi residu mod n adalah subset dari set lengkap residu yang relatifprima dengan n. Sebagaicontoh,himpunan mengurangi residu mod 12 adalah {1, 5, 7, 11}. Jika n adalah bilangan prima, maka dikurangi set residu mod n adalah himpunan semua bilangan dari 1 sampai n-1. 0 (nol)bukan bagian dari set pengurangan residu untuk setiap n tidak sama dengan 1.

Fungsi Euler totient, juga disebut fungsi Euler phi dan ditulis sebagaiΦ(n), adalahjumlahelemen dalam set mengurangi residu modulo n. Dengan kata lain,Φ(n)adalahjumlahpositifkurang dari n yang relatif prima terhadap n (untuk nlebihbesardari1)bilanganbulat.(LeonhardEuler, menyebutkan "kapal tangki," adalah seorang ahli matematika Swiss yang hidup pada 1707-1783). Mollin, (2002).

Jika n adalah bilangan prima, maka (n) = n-1. Jika n = pq, dimana p dan q adalah prima, maka Φ(n) = (p-1) (q-1). Inilah mengapa angka - angka muncul


(31)

dalam beberapa algoritma kunci publik.Menurut generalisasi dari teorema Euler kecil Fermat,

jika FPB (a, n) = 1, makaSchneier, ( 1996 ) :

aΦ(n) mod n = 1 ……….. (2.1) saat ini mudah untuk menghitunga-1 mod n Schneier, ( 1996 ) :

x = aΦ(n)-1 modn……….. (2.2)Misalnya, apa kebalikan 5, modulo 7? jika 7 adalah bilangan prima, Φ(7) = 7 –1= 6. Jadi, kebalikan 5, modulo 7, adalah :

56-1 mod 7 = 55 mod 7 = 3 ..……….. (2.3)Kedua metode untuk menghitung invers dapat diperpanjang untuk menyelesaikan x dalam masalah umum (jika FPB(a, n) = 1)Schneier, ( 1996 ) :

(a*x) mod n = b………(2.4) Menggunakan generalisasi Euler, Schneier, ( 1996 ) :

x = (b * (n) -1)) mod n ………(2.5) Menggunakan algoritma Euclid, Schneier, ( 1996 ) :

x= (b * (a-1 mod n)) mod n ………(2.6)

Secara umum, algoritma Euclid 'slebih cepat darigeneralisasiEuleruntukmenghitunginvers, terutamauntuk digitdi

kisaran500-bit. JikaFPB (a, n)≠ 1, semua tidak hilang. secara umum,(a* x) mod n =b, dapat memiliki beberapa solusiatautidak.

1. Pilih 2 buah bilangan prima p dan q.Untuk tujuan keamanan, bilanganinteger p dan q dipilihsecara random, dan harus memiliki panjang bityang sama. Biasanya panjang bit yang dipilih untukbilangan p dan q ukurannya besar, agar kunci semakinaman.

Schneier, ( 1996 ) Proses pembangkitan kunci RSA adalah sebagaiberikut:

2. Hitung n, yaitu n = pq.Bilangan nakan digunakan sebagai modulus untukkunci publik dan kunci privat.


(32)

3. Hitung Φ(n)= (p – 1)(q – 1), dimana Φ adalah fungsitotient Euler.

4. Pilih bilangan integer e, dimana 1 <e <Φ(n), fpb(e,Φ(n) )= 1, e dan Φ(n)adalah coprime (e relatif primaterhadap Φ(n) ).Bilangan e adalah bilangan yang menjadikunci publik.

5. Hitung kunci dekripsi d, dengan persamaanMollin, ( 2007 ) : ed= 1 (mod Φ(n)) atau d = e-1

- Kunci publik adalah pasangan (e, n)

mod (Φ(n) )…………..( 2.7 )Dari perhitungan di atas didapatkan kunci publik dankunci privat:

- Kunci privat adalah pasangan (d, n)

Proses enkripsi dan dekripsi algoritma RSA:

1. Nyatakan pesan menjadi blok-blok plainteks m1, m2, m3, ..., mn, dengan

syarat 0 <mi

2. Hitung blok chiperteks c < n-1.

iuntuk blok plainteks pi c

dengan persamaan

i= miemod n.

………..(2.8)Proses dekripsi dilakukan dengan menggunakan persamaan

pi = cid

1. Hitung n = p.q memberikan

mod n. ………..(2.9)

Contoh:

Pilih dua bilangan prima yang berbeda, seperti p = 13 dan q = 5.

n = 13 · 5 = 65 .

2. HitunglaΦ(n) = (p - 1) (q - 1) memberikan Φ(n)= (13-1) (5-1) = 48.

3. Ambil bilangan bulat e dengan syarat 1 <e<Φ(n) Yang memiliki FPB = 1 dengan 28.

Misalkan e = 17.


(33)

4. encode pesan ke ASCII

misalkanplaintext yang dikirim adalah “ POT“ plainchar (1) = “P” → P1 = 80………. (P1)

plainchar (2) = “O” → P2 = 79………. (P2)

plainchar (3) = “T” → P3 = 84……….(P3

5. Enkripsi pesan dengan rumus (Mollin, 2007): )

c = pe (mod n)

8017 mod 65 =45 ……….(C1)

79 17 mod65 = 14 ……….(C2)

8417 mod65 = 54 ……….(C3

6. Hitunglah kunci privat d, dengan rumus berikut (Mollin, 2007): )

d = e

1 + k modΦ(n)

Untuk mencari nilai k Dapat dicari dengan menggunakan Microsoft Excel. Dengan syarat k dan d adalah bilangan bulat positif. Menghasilkand = 113.

Kunci Privat adalah ( n = 65, d = 113 ) 7. Deskripsikan pesan terenkripsi dengan rumus :

P = cd (mod n)

P1 = 45113 mod 65 = 80

P2 = 14 113 mod 65 = 79

P1 = 54113

8. Hasil Dekripsi adalah ( “80”, “79”, “84” ) = (“POT ’’). mod 65 = 84

Penemu algoritma RSA menyarankan untuk nilai p dan q agar panjangnya lebih dari 100 digit. Dengan demikian hasil kali dari n = p x q akan berukuran lebih dari 200 digit. Maka waktu yang dibutuhkan untuk mencari faktor prima dari bilangan 200 digit adalah selama 4 milayar tahun, sedangkan untuk bilangan 500 digit membutuhkan waktu 1025tahun. Dengan asumsi algoritma pemfaktoran yang digunakan adalah algoritma yang tercepat saat ini dan komputer yang dipakai mempunyai kecepatan 1 milidetik.Mollin, ( 2007 )


(34)

Secara umum dapat disimpulkan bahwa RSA hanya aman jika n cukup besar. Jika panjang n hanya 256 bit atau kurang, maka ia dapat difaktorkan dalam beberapa jam saja dengan sebuah komputer PC dan program yang tersedia secara bebas.

Jika sebuah bilangan prima acak yang memiliki nilai kecil bukanlah sebuah masalah untuk membentuk sebuah kunci, akan tetapi menentukan sebuah bilangan yang sudah terlalu besar prima atau tidak, maka perlu dilakukan pengujian berulang-ulang kali (sebanyak t kali). Maka untuk melakukan pengujian tersebut, penulis mencoba menggunakan pengujian bilangan prima menggunakan algoritma The Sieve of Eratosthenes.

2.3. Pembangkit Bilangan Prima

Ada berbagai metode yang dapat digunakan untuk menghasilkan sebuah bilangan prima.Untuk menghasilkan bilangan prima yang besar dengan menggunakan ruang memori dan waktu.

Secara umum pembangkitan bilangan prima dapat dikelompokkan menjadi dua, yaitu dengan membangkitkan bilangan prima dari bilangan prima terkecil dengan pengujian yang menghasilkan 100% bilangan prima atau dengan membangkitkan bilangan acak dan menguji kemungkinan bilangan tersebut prima.

2.3.1 Algoritma The Sieve of Eratosthenes

Eratosthenes (276-194 S.M) adalah seorang petugas perpustakaanketiga dari perpustakaan terkenal di Alexandria dan adalahseorang sarjana yang sangat hebat. Eratosthenes dikenangdengan pengukurannya terhadap keliling dari dari bumi,memperkirakan jarak antara bumi dengan matahari dan bulan,dalam matematika, untuk penemuan dari sebuah algoritmauntuk mencari bilangan-bilangan prima, yang dikenal sebagaiAlgoritma Sieve of Eratosthenes.

Sieve of Eratosthenes adalah sebuah algoritma klasikuntuk menemukan seluruh bilangan prima sampai ke sebuah n yang ditentukan. Mulai dengan array of integer yang belumdicoret dari 2 ke n. Integer pertama yang belum dicoret


(35)

yaitu 2,adalah bilangan prima pertama. Coret seluruh kelipatan daribilangan prima ini. Ulangi pada integer selanjutnya yang belumdicoret.

Sebagai contoh, berikut adalah array pada awalnya:

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2526 27

Karena 2 belum dicoret, maka 2 adalah bilangan pertama.Coret seluruh kelipatan 2, yaitu 4, 6, 8, 10, 12,dst.

23 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2526 27

Integer selanjutnya yang belum dicoret adalah 3, maka 3adalah prima dan coret seluruh kelipatan 3, seperti 6, 9. 12,dst.

2 34 5 6 7 8910 11 12 13 141516 17 18 19 202122 23 24 252627

5 adalah bilangan prima selanjutnya dan coretseluruh kelipatan 5. Satu-satunya bilangan yang dicoret dalamrangeini adalah 25.

2 34567891011121314151617181920212223

2.4. Bilangan Acak

24252627

Maka bilangan prima setelah 2,3 dan 5 yaitu7, 11, 13, 17, 19, dan 23.

Metode Sieve of Eratosthenes sangat cepat, sehingga tidak ada alasan untuk menyimpan daftar bilangan prima yangbesar pada komputer, karena implementasi yang efisien darialgoritma ini dapat mendapatkan bilangan-bilangan tersebutlebih cepat daripada komputer harus membacanya dari mediapenyimpanan. Pada faktanya permasalahan dengan algoritmaseperti yang disajikan di atas tidaklah selalu tentang kecepatan,tetapi lebih ke penggunaan tempat.Mollin, ( 2007 )

Bilangan acak adalah deretan nilai yang acak dan tidak dapat diprediksi secara keseluruhan. Untuk menghasilkan bilangan acak merupakan hal yang sulit, kebanyakan pembangkit bilangan acak semu yang aman untuk kriptografi


(36)

(Cryptographically-secure Pseudo-Random Number Generator = CPRNG) mempunyai beberapa bagian yang dapat diprediksi dan berhubungan.

Kebanyakan CPRNG mengulang string yang sama setelah melakukan n putaran. Sedangkan ada beberapa CPRNG lainnya menghasilkan nilai acak dengan berfokus pada suatu area tertentu dan mendistribusikannya secara seragam.

2.4.1. Pembangkit Bilangan Acak (Cryptographically-secure Pseudo-Random

Number Generator)

Cryptographically-secure Pseudo-Random Number Generator (CPRNG) adalah suatu peralatan komputasional yang dirancang untuk menghasilkan suatu urutan nilai yang tidak dapat ditebak polanya dengan mudah, sehingga urutan nilai tersebut dapat dianggap sebagai suatu keadaan acak (random).

CPRNG ini tidak dapat diterapkan dalam prakteknya.Bilangan acak yang dihasilkan oleh komputer sekalipun tidak benar-benar acak dan kebanyakan bilangan acak yang diterapkan dalam kriptografi juga tidak benar-benar acak, tetapi hanya berupa acak semu.Ini berarti bahwa bilangan acak yang dihasilkan itu dapat ditebak susunan atau urutan nilainya.Dalam kriptografi, bilangan acak sering dibangkitkan dengan menggunakan pembangkit bilangan acak semu (Cryptographically-secure Pseudo-Random Number Generator).

Suatu Cryptographically-secure Pseudo-Random Number Generator(CPRNG) merupakan suatu algoritma yang menghasilkan suatu urutan nilai dimana elemen-elemennya bergantung pada setiap nilai yang dihasilkan.Output dari CPRNG tidak betul-betul acak, tetapi hanya mirip dengan properti dari nilai acak.Kebanyakan algoritma dari Cryptographically-secure Pseudo-Random Number Generatorditujukan untuk menghasilkan suatu sampel yang secara seragam terdistribusi.CPRNG ini sering digunakan dalam kriptografi pada proses pembentukan kunci dari metoda kriptografi. Tingkat kerumitan dari CPRNG ini menentukan tingkat keamanan dari metoda kriptografi.Semakin rumit (kompleks) CPRNG yang digunakan maka semakin tinggi tingkat keamanan dari metoda kriptografi.


(37)

2.4.2. Algoritma Pembangkit Bilangan Acak Semu

Semua deretan bilangan acak yang dibangkitkan dari rumus matematika, serumit apapun, dianggap sebagai deret acak semu, karena dapat diulang pembangkitannya Sementara itu, banyak produk software yang dinyatakan

sebagai produk yang aman karena menggunakan bilangan acak semacam OTP (One Time Programmable). Namun karena OTP ini dibangkitkan dari bilangan acak semu, maka keamanan yang diperoleh juga semu.

Pembangkit bilangan acak yang sering diimplementasikan adalah Linier Congruential Generator (LCG) dan Linear Feedback Shift Register (LFSR). Beberapa algoritma lainnya yang dapat digunakan untuk membangkitkan deretan bilangan acak semu selain Linier Congruential Generator (LCG) adalah sebagai berikut :

1. Non Linear Feedback Shift Register (NLFSR).

2. Indirection, Shift, Accumulate, Add and Count (ISAAC). 3. Lagged Fibonacci Generator (LFG).

4. Mersenne - Twister. 5. Fortuna.

6. Blum-Blum Shub.

2.5 Probabilistic Encryption

Probabilistic encryption adalah penggunaan keadaan acak pada sebuah algoritma kriptografi, sehingga ketika mengenkripsi pesan yang sama beberapa kali, secara umum, akan menghasilkan ciphertext yang berbeda. Bentuk ‘probabilistic encryption’ secara khusus digunakan pada algoritma kriptografi kunci publik, ide dari probabilistic encryption pertama kali ditemukan oleh Shafi Goldwasser dan Silvio Micali.

Inti dari metode probabilistic encryption adalah untuk mengeliminasi kebocoran informasi dengan kriptografi kunci publik, karena metode ini menerapkan konsep acak dalam proses enkripsinya sehingga setiap kali proses enkripsi terhadap pesan yang sama akan menghasilkan nilai ciphertext yang berbeda. Hal ini menyebabkan seorang cryptanalyst tidak dapat menerka bentuk


(38)

pesan dari ciphertext yang diperolehnya, karena setiap kali proses percobaan akan selalu menghasilkan nilai yang berbeda-beda.

Algoritma enkripsi kunci publik probabilistic yang ditemukan oleh Shafi Goldwasser dan Silvio Micali ini memiliki teori yang membuatnya menjadi kriptosistem yang paling aman, yaitu berdasarkan pada kesulitan dari problema kuadratik residu dan memiliki sebuah faktor ekspansi pesan yang sama dengan ukuran kunci publik. Problema ini adalah untuk menemukan apakah x merupakan kuadrat modulo sebuah bilangan integer n. Problema ini dapat diselesaikan jika faktor dari n diketahui, tetapi tidak dapat diselesaikan jika tidak diketahui.Micali, (1984 ).

Algoritma probabilistic encryption memiliki proses kerja yang sama dengan algoritma kriptografi lainnya, dimana dapat dibagi menjadi tiga bagian besar, yaitu:

1. Proses pembentukan kunci, yang berfungsi untuk menghasilkan kunci yang akan digunakan pada proses enkripsi dan dekripsi.

2. Proses enkripsi, yang berfungsi untuk menghasilkan ciphertext dari pesan dengan menggunakan kunci publik.

3. Proses dekripsi, yang berfungsi untuk mengubah ciphertext menjadi pesan semula dengan menggunakan kunci private.

2.6. Pembangkit Bilangan Acak Linear Congruential Generator (LCG)

Bilangan acak adalah bilangan yang tidak dapat diprediksi kemunculannya. Tidak ada komputasi yang benar – benar menghasilkan deret bilangan acak secara sempurna. Banyak algoritma atau metode yang dapat digunakan untuk membangkitkan bilangan acak salah satunya adalah pembangkit bilangan acak Linear Congruential Generator (LCG).LCG adalah salah satu pembangkit bilangan acak tertua dan sangat terkenal.LCG didefinisikan dalam relasi rekurens yaituSchneier, (1996) :


(39)

Yang dalam hal ini:

xn = bilangan acak ke-n dari deretnya xn- 1 = bilangan acak sebelumnya

a = faktor pengali

b = penambah (increment) m = modulus

( a, b , dan m semuanya konstanta)

Sebagaimana yang telah dilakukan Oni (2011) Jika dilihat dari sisi kecepatan, Linear Congruential Generator (LCG) mempunyai waktu yang lebih cepat dibandingkan dengan algoritma SIMD- Oriented Fast Mersenne Twister(SFMT) dan Well Equidistributed Long-Period Linear (WELL) dapat dilihat pada tabel 2.1.

Tabel 2.1. Perbandingan Kecepatan Waktu Penghasilan Angka Algoritma LCG SFMT WELL

Waktu Penghasilan Angka 0,527 1.017 1.970

Jika dilihat dari angka yang dihasilkan, algoritma Linear Congruential Generator (LCG) memiliki kelemahan.Sebab angka (bilangan acak) yang dihasilkan dapat diprediksi urutan kemunculannya. Dapat dilihat pada contoh berikut :

Misalkan : a = 5 b = 13 m = 19


(40)

Tabel 2.2. Contoh bilangan acak yang dihasilkan dari persamaan LCG

n xn

0 0

1 13

2 2

3 4

4 14

5 7

6 10

7 6

8 5

9 0

10 13

11 2

12 4

13 14

14 7

15 10

16 6

17 5

18 0

19 13

20 2

21 4

22 14

23 7

24 10

25 6

26 5

27 0

Dari hasil contoh pada tabel 2.1 dan tabel 2.2 dapat diketahui bahwa keunggulan LCG terletak pada kecepatannya dan hanya membutuhkan sedikit operasi bit. Sebenarnya, LCG tidak dapat digunakan untuk kriptografi karena bilangan acaknya dapat diprediksi urutan kemunculannya dapat dilihat pada (tabel 2.2). Meskipun secara teoritis LCG mampu menghasilkan bilagan acak yang lumayan, namun ia sangat sensitif terhadap pemilihan nilai a, b, dan m. Pemilihan


(41)

nilai – nilai yang buruk dapat mengarah pada implementasi LCG yang tidak bagus.Oleh karena itu pada penelitian ini, penulis ingin melakukan pengujian dan analisa dengan menggunakan algoritma LCGdalam perancangan aplikasi kriptografi RSA.


(42)

BAB III

METODOLOGI PENELITIAN

3.1. Perumusan Algoritma Kunci Publik RSA

RSA melibatkan kunci publik da semua orang dan digunakan untuk mengenkripsi pesan. Pesan dienkripsi dengan kunci publik hanya dapat didekripsi menggunakan kunci privat. Kunci untuk algoritma RSA yang dihasilkan dengan cara berikut:

1. Pilih dua yang berbedap dan q.

Untuk tujuan keamanan, bilangan bulat p dan q harus dipilih secara acak dengan menggunakan metode LCG dan menggunaka dengan metode The Sieve Of Eratosthenes.

2. Hitung n = pq.

n digunakan sebagai

3. Hitunglah Φ(n) = (p - 1) (q - 1), di mana Φ adala 4. Pilih e bilangan bulat sedemikian sehingga 1 <e < Φ(n) dan FPB

(e,Φ(n)) = 1, e dan Φ yaitu (n) adalah relatif prima) .

5. Tentukan d = e mod Φ-1 (n); yaitu d adalΦe (n). dengan rumus berikut Mollin, (2007) :

………(3.1)

d adalah eksponen disimpan sebagai kunci pribadi.

Kunci publik terdiri dari modulus n dan e (atau enkripsi) eksponen publik. Kunci privat terdiri dari modulus n dan (atau dekripsi) swasta eksponen d yang harus dirahasiakan. Untuk perancangan aplikasinya dapat dilihat pada flowchart berikut :

d =

e


(43)

(44)

3.2. Enkripsi dan Dekripsi RSA Kunci Publik

3.2.1 Enkripsi

Bob mengirimkan kunci publik nya

(n, e) unt

pribadi. Alice mengirim pesan “POT” ke Bob. Dia pertama kali merubah pesan “POT” kedalam bentuk ASCII, sehingga pesan yang disampaikan menjadi plainchar yang sudah dikonversi kedalam ASCII. Hal ini dapat dilakukan dengan

cepat menggunakan metode

rumus Mollin, (2007) :

C = p e (mod n) ……… (3.2)

Alice kemudian mengirimkan hasil c kepada Bob. Misalkan,

Plaintext yang dikirim adalah “ POTkemudian dikonversi ke ASCII maka :

plainchar (1) = “P” → P1 = 80 ………. (P1)

plainchar (2) = “O” → P2 = 79………. (P2)

plainchar (3) = “T” → P3 = 84 ……….(P3

Bob mengirimkan kunci publik nya

)

setelah dikonversi ke ASCII yaitu : ( 80, 79, 84 ). Hasil inilah yang di enkripsi Alice dengan persamaan (3.2)kemudian dikirim kepada Bob.

(n, e) unt

kunci pribadi Bob, maka keinginan untuk mengirim pesan T (plainchar) ke Bob, Alice pertama kali merubah menjadi T bilangan bulat, sedemikian sehingga 0 <m <n dengan menggunakan protokol yang disepakati reversibel dikenal sebagai

c sesuai dengan rumus


(45)

Hal ini dapat dilakukan dengan cepat menggunakan metode

T kepada

Bob. Perancangan aplikasinya dapat dilihat pada flowchart berikut :


(46)

3.2.2 Dekripsi

Bob dapat memulihkan

P (plaintext) dari C (chipertext) dengan menggunakan

kunci pribadinya d eksponen melalui komputasi (3.1) Kunci pribadi Bob adalah ( d , n ).

Untuk melakukan enkripsi RSA, teks asli disusun menajdi blok x1, x2, ….. sedemikian sehingga setiap blok mempresentasikan nilai di dalam rentang 0 sampai r-1. Setiap blok x1 di enkripsi menjadi blok y1 dengan rumus (Mollin, 2007) :

P = c d (mod n).………... (3.3)

Perancangan aplikasinya dapat dilihat pada flowchart berikut :


(47)

Contoh:

Setelah dilakukan kombinasi pembangkitan bilangan acak dengan metode LCG dan The Sieve of Eratosthenes, maka bilangan yang akan muncul akan acak pula. Misalkan bilangan yang muncul adalah :

p = 13 q = 5

9. Hitung n = p.q memberikan n = 13 · 5

n = 65

10.HitunglaΦ(n) = (p - 1) (q - 1) memberikan Φ(n) = (13-1) (5-1)

Φ(n) = 48

11.Ambil bilangan bulat e dengan syarat 1 <e < Φ(n), 48. Yang memiliki FPB = 1 dengan 48.

Misalkan e = 17.

Kunci publik adalah (n = 65, e = 17 ) 12.encode pesan ke ASCII

misalkan plaintext yang dikirim adalah “ POT“ plainchar (1) = “P” → P1 = 80 ………. (P1)

plainchar (2) = “O” → P2 = 79………. (P2)

plainchar (3) = “T” → P3 = 84 ……….(P3

13.Enkripsi pesan dengan rumus (3.2) maka :

)

80 17 mod 65 = 45 ……….(C1)

79 17 mod 65 = 14 ……….(C2)

84 17 mod 65 = 54 ……….(C3

14.Hitunglah kunci privat d, dengan rumus (3.1). Untuk mencari nilai k Dapat dicari dengan menggunakan Microsoft Excel. Dengan syarat k dan d adalah bilangan bulat positif. Menghasilkan d = 113.

)


(48)

15.Deskripsikan pesan terenkripsi dengan rumus (3.3) maka : P1 = 45 113 mod 65 = 80

P2 = 14 113 mod 65 = 79

P1 = 54 113

16.Hasil Dekripsi adalah ( “80”, “79”, “84” ) = (“POT’’) mod 65 = 84

3.3. Membangkitkan Bilangan Acak Dengan Linear Congruential Generator

Bilangan acak adalah bilangan yang tidak dapat diprediksi kemunculannya. Tidak ada komputasi yang benar – benar menghasilkan deret bilangan acak secara sempurna. Banyak algoritma atau metode yang dapat digunakan untuk membangkitkan bilangan acak salah satunya adalah pembangkit bilangan acak Linear Congruential Generator (LCG).

Dapat dilihat pada tabel (2.2) terjadi pengulangan pada periode tertentu atau setelah sekian kali pembangkitan. LCG mempunyai periode tidak lebih besar dari m, dan pada kebanyakan kasus periodenya kurang dari itu.

LCG mempunyai periode penuh (m – 1) jika memenuhi syarat sebagai berikut :

1. b relatif prima terhadap m

2. a-1 dapat dibagi dengan semua faktor prima dari m 3. a-1 adalah kelipatan 4 jika m adalah kelipatan 4 4. m > maks ( a, b, x0 )

5. a > 0, b > 0

Dari beberapa syarat tersebut Schneier, (1996) merekomendasikan beberapa nilai konstanta a, b, dan m yang bagus untuk LCG dapat dilihat pada tabel berikut :


(49)

Tabel 3.1 Konstanta yang bagus untuk LCG

a B m

106 1283 6075

211 1663 7875

421 1663 7875

430 2351 11979

936 1399 6655

1366 1283 6075

171 11213 53125

859 2531 11979

419 6173 29282

967 3041 14406

141 28411 134456

625 6571 31104

1541 2957 14000

1741 2731 12960

1291 4621 21870

205 29573 139968

421 17117 81000

1255 6173 29282

281 28411 134456

Untuk membuktikannya dapat mengambil salah satu konstanta sebagai contoh. Misalkan :

a = 106 b = 1283 m = 6075


(50)

Tabel 3.2 Hasil pembuktian contoh salah satu konstanta

n xn

0 0

1 1283

2 3631

3 3444

4 1847

5 2665

6 4323

7 3896

8 1159

9 2637

10 1355

11 5188

12 4461

13 299

14 2602

15 3720

16 728

17 5551

18 414

19 2642

20 1885

21 618

22 6041


(51)

24 4332

25 4850

26 5083

27 5481

28 5144

29 5872

30 4065

31 848

32 46

33 84

34 4112

35 5830

36 5688

37 2786

38 4999

39 2652

40 2945

41 3628

42 3126

43 4589

44 1717

45 1035

46 1643

47 5341

48 2454

49 182


(52)

51 1308

52 206

53 4894

54 3672

55 1715

56 823

57 3471

58 4709

59 2287

60 705

61 3113

62 3211

63 1449

64 3002

65 3595

66 5703

67 4376

68 3439

69 1317

70 1160

71 2743

72 441

73 5504

74 1507

75 3075

76 5258


(53)

78 3144

79 422

80 3490

81 648

82 3146

83 634

84 1662

85 1280

Dari tabel tersebut dapat dilihat bahwa tidak ada perulangan angka pada periode 85 , dan angka yang dihasilkan cukup besar. Mengingat pada penelitian ini penulis membatasi bilangan acak yang digunakan adalah 1 s/d 100 untuk menghindari kesalahan perhitungan pada aplikasi. Dan mengacu pada tujuan penelitian adalah mencari dan memunculkan bilangan yang cukup acak sehingga tidak dapat diprediksi, ada beberapa cara yang dilakukan yaitu :

1. Pada syarat b relatif prima terhadap m, penulis menggunakan bilangan prima pada konstanta b, karena suatu bilangan bulat sudah pasti relatif prima dengan bilangan prima.

2. Konstanta a adalah memiliki faktor pembagi yang sama dengan m yaitu kelipatan 4.

3. Konstanta m adalah fungsi waktu yaitu dalam detik, maksud waktu disini adalah pada detik keberapakah saat melakukan pengambilan bilangan untuk m. misalkan saat pengambilan bilangan detik menunjukkan ke-12, maka m = 12.


(54)

Untuk perancangan aplikasinya dapat dilihat pada flowchart berikut :


(55)

3.4. Pengujian Bilangan Prima Dengan The Sieve of Eratosthenes

Berikut langkah-langkah sederhanal untuk menentukan bilangan prima melalui pengeksekusian. Ilustrasi langkah-langkah ini di kemukakan dari teori The Sieve of Eratosthenes. Adapun eksekusi bilangan prima tersebut dimulai dari 2 sampai seterusnya hingga secara keseluruhan bilangan tersebut menjadi prima untuk seluruh bilangan sisanya. Berikut tahapan eksekusi yang dilakukan yaitu:

Eksekusi 1:

Dimulai dari bilangan prima 2, kemudian kelipatannya di nonaktifkan untuk menentukan bilangan prima selanjutnya. Sehingga menjadi tabel seperti berikut. Pada kondisi ini banyaknya angka nonaktif kelipatan 2 adalah sebanyak 49 bilangan.

Gambar 3.5 Eksekusi Bilangan Kelipatan Dua

Eksekusi 2:

Dimulai dari bilangan prima 3, kemudian kelipatannya di nonaktifkan untuk menentukan bilangan prima selanjutnya. Sehingga menjadi tabel berikut. Pada kondisi ini banyaknya angka nonaktif kelipatan 3 adalah sebanyak 16 bilangan.

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100


(56)

Gambar 3.6 Eksekusi Bilangan Kelipatan Tiga

Eksekusi 3

Gambar 3.7 Eksekusi Bilangan Kelipatan Lima :

Dimulai dari bilangan prima 5, kemudian kelipatannya di nonaktifkan untuk menentukan bilangan prima selanjutnya. Sehingga menjadi tabel berikut. Pada kondisi ini banyaknya angka nonaktif kelipatan 5 adalah sebanyak 6 bilangan.

2 3 4 5 6 7 8 9 10

11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100


(57)

Eksekusi 4

.

Gambar 3.8 Eksekusi Bilangan Kelipatan Tujuh

Dari 4 kali eksekusi yang dilakukan dan setelah dianalisa bilangan dari 1 sampai 100 telah ditemukan atau ditetapkan sebagai bilangan prima, maka eksekusi dihentikan. Adapun bilangan tersisa yang dinyatakan prima yakni :

2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97. Sehingga dapat disimpulkan bahwa untuk menentukan bilangan prima dari 1 sampai x (tak terhingga) eksekusi yang dilakukan cukup sebanyak 4 kali eksekusi.

:

Dimulai dari bilangan prima 7, kemudian kelipatannya di nonaktifkan untuk menentukan bilangan prima selanjutnya. Sehingga menjadi tabel berikut. Pada kondisi ini banyaknya angka nonaktif kelipatan 7 adalah sebanyak 3 bilangan.

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100


(58)

BAB IV

HASIL DAN PEMBAHASAN

4.1. Pendahuluan

Pada bagian ini akan disajikan teknik implementasi cara menentukan bilangan prima dan acak, dalam hal ini penulis menggunakan teori The Sieve of Eratosthenes sebagai pembangkit bilangan prima dan teori Linear Congruential generator (LCG) sebagai pembangkit bilangan acak. Dan menampilkan hasil aplikasinya dalam bentuk simulasi program.

4.2. Perancangan Program

Adapun rancangan program yang penulis buat guna memberikan gambaran tentang sistem yang dibangun adalah sebagai berikut :

Pada saat progam aplikasi dijalankan, maka terlebih dahulu muncul tampilan menu seperti pada gambar berikut :


(59)

Untuk memasukkan teks pada simulasi ini dilakukan secara manual, misalkan dimasukkan teks “TESIS” pada kolom “ Text” maka simulasi program akan menampilkan bilangan prima yang acak pada p dan q, dan bilangan prima akan selalu menghasilkan bilangan-bilangan yang berbeda jika “Submit” ditekan berkali-kali. Berikut gambar tampilannya.


(60)

Sebelum “Submit” ditekan, maka seluruh kolom data dalam keadaan kosong. Setelah menekan “Submit” maka akan tampil seluruh hasil enkripsi dan dekripsi, berikut gambar tampilannya.

Gambar 4.3 Setelah Submit

Jika “Submit” ditekan sekali lagi, maka bilangan prima pada (p dan q) akan berubah, dan akan selalu berubah jika “Submit” terus ditekan. Berikut tampilannya.


(61)

Gambar 4.4 Setelah Submit Berkali- kali

Ada kelemahan pada penelitian ini yaitu karakter ( teks ) yang digunakan tidak bisa lebih dari 10 (sepuluh) karakter, karena terjadi perbedaan hasil dekripsi. Dan memakan waktu yang lama dalam proses dekripsinya sehingga sesekali program dapat menyelesaikannya sesekali pula hasil dekripsi tidak sesuai dengan pesan awal yang dikirim. Ini disebabkan oleh perhitungan modulasi yang sangat besar dan bahasa pemrograman PHP yang digunakan tidak maksimal menghitungnya, pada akhirnya aplikasi dapat menyelesaikan namun hasil ( dekripsi ) tidak sesuai dengan pesan ( teks ) yang dikirim.


(62)

Berikut tampilan gambar menggunakan 10 karakter ( teks ) :

Gambar 4.5 Simulasi 10 karakter

Jika di “submit “ maka akan menghasilkan :


(63)

Dari tampilan sebelumnya dekripsi masih dapat dilakukan dengan sepuluh karakter, pesan yang disampaikan masih sama hasilnya. Bagaimana jika lebih dari sepuluh, berikut tampilannya simulasinya :


(64)

BAB V

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Tesis ini menghasilkan beberapa kesimpulan sebagai berikut :

1. Pembangkitan bilangan prima acak didalam kriptografi RSA dapat dilakukan dengan mengkombinasikan algoritma Linear Congruential Generator (LCG) dan The Sieve of Eratosthenes.

2. Konstanta m pada LCG dapat menggunakan fungsi waktu yaitu detik dalam pembangkitan bilangan acak pada aplikasi simulasi berbasis RSA, sehingga tidak dapat diprediksi kemunculannya.

3. Untuk hasil yang maksimal simulasi hanya mampu menyelesaikan sepuluh pesan teks ( karakter ) saja.

5.2 Saran

Saran penulis terhadap tesis ini adalah sebagai berikut :

1. Untuk memperoleh hasil yang lebih mungkin penelitian ini dapat menggunakan bahasa pemrograman Phyton agar saat melakukan perhitungan pada proses enkripsi dan dekripsi dapat menggunakan bilangan yang besar.

2. Dalam penelitian lebih lanjut, penggunaan fungsi waktu pada konstanta m dalam LCG dapat menambahkan parameter jam dan menit, sehingga untuk memprediksi bilangan acak yang muncul akan lebih sulit.

3. Memasukkan teks pada aplikasi secara manual, untuk penelitian lanjutan diharapkan data atau teks yang diambil bisa dari file.

4. Untuk penelitian lanjutan diharapkan bisa menggunakan lebih dari sepuluh pesan teks ( karakter )

5. Upayakan mengambil bilangan prima sebagai kunci publik (p & q) jika dikalikan akan menghasilkan n > 256, agar tidak terjadi kesalahan hasil saat proses enkripsi dan dekripsi.


(65)

DAFTAR PUSTAKA

Abrarov, R.M. and Abrarov, S.M. 2011. Sieve Procedure For The M¨ Obius Prime-Functions, The Infinitude Of Primes And The Prime Number Theorem. Cornell University.

Arifin, Zainal. 2009. StudiKasusPenggunaanAlgoritma RSA SebagaiAlgoritmaKriptografi yang Aman.Program StudiIlmuKomputer, FMIPA UniversitasMulawarman.

Demchik, Vadim. 2010. Pseudo-random number generators for Monte Carlo simulations on Graphics Processing Units. Dnepropetrovsk National University, Dnepropetrovsk, Ukraine.

Probabilistic Encryption, Journal of

Computer and System Sciences, Volume 28(2), pp. 270 - 299, Elsevier, 1984.

Haro, GokAsido. 2007. AlgoritmaPencarianBilangan Prima. Bandung, TeknikInformatika ITB.

Holt, Fred B. 2007. Expected Gaps Between Prime Numbers.

Mahmudi, Kamal. 2010.Sifat Prima TerhadapFungsionalitasAlgoritma RSA. Bandung STEI ITB.

Mollin, Richard A. 2002. RSA and Public-Key Cryptography. Florida, Boca Raton: CRC Press LLC.

Mollin, Richard A. 2007. An Introduction to Cryptography 2nd edition. New York, Chapman& Hall/CRC is an imprint of the Taylor & Francis Group, an informa business.

Munir, Rinaldi. 2006. Kriptografi. Bandung Informatika

Oni, Marvello. 2011. Comparison Between Linear CongruentialGenerators,WellEquidistributed Long-Period Linear (WELL), And SIMD-Oriented Fast Mersenne Twister(SFMT) Algorithm To Generate Pseudo Random Number. Bandung, Program StudiTeknikInformatika STEI InstitutTeknologi Bandung.

Saito, Mutsuo. 2010. A Variant OfMersenne Twister Suitable For Graphic Processors. Cornell University.

Schneier, Bruce. 1996. Applied Cryptography, 2ndEdition :Protocols, Algorthms and Source Code in C (cloth). Publisher: John Wiley & Sons, Inc. Seattle .


(66)

Schneier, Bruce. 1996. Applied Cryptography, 2nd Edition :Foreword By Whitfield Diffie Mountain View, CA.

CryptMail User's Guide, Utimaco. Belgium.

Siang , J, J. 2002. Bilangan Prima PerkembangandanAplikasinya. Yogyakarta, Fakultas MIPA Universitas Kristen Immanuel.

Smart, Nigel Paul. 2003. Cryptography an Introduction. University of California.McGraw-Hill.

Stallings, William. 2006. Cryptography and Network Security Principles and Practice Fifth Edition. United States of America.Pearson Education, Inc.

Wibowo, Ivan. Susanto,Budi. Karel T, junius. 2009. PenerapanAlgoritmaKriptografiAsimetris RSA untukKeamanan Data Di Oracle.


(67)

LIST PROGRAM

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"> <head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>RSA</title>

<style type="text/css"> <!--

.style1 {color: #FF0000} .style2 {color: #0000FF} --> <?php //********************************************************** global $p,$q,$n,$tot,$e; function primes($angka) {

if($angka%3 != 0 and $angka%2 != 0 and $angka%5 != 0 and $angka%7 != 0 and $angka != 1)

return true; else return false; } //************************************************************ function enkrip($text,$e,$n) {

$chip = '';

for ($i=0; $i <= strlen($text)-1;$i++ ) {

$as = ord($text[$i]);

$hit = bcmod(strval(bcpow(strval($as),$e)),$n); $chip = $chip .','. strval($hit);

}

$chipx = substr($chip,1,strlen($chip)); return $chipx;

}

//********************************************************* function dekrip($chip,$tot,$e,$n)

{

$chipn = '';


(68)

{

if (substr($chip,$j,1) != ',')

$chipn = $chipn . substr($chip,$j,1); else

{

$chipnum[] = $chipn; $chipn = ''; }

}

$chipnum[] = $chipn; $plain = '';

for ($j = 0; $j<=count($chipnum)-1 ;$j++) {

$k = 1; do

{

$dr = (1 + $k * $tot)/$e; $d = intval($dr);

$k++; }

While ($dr/$d != 1); $plain = $plain .

chr(intval(bcmod(strval(bcpow(strval($chipnum[$j]),$d)),$n))); }

echo "k = $k",PHP_EOL; echo "d = $d\n";

return $plain; }

//***************************************************************** ****

if (isset ($_POST['text'])){ $text = trim($_POST['text']); if (!empty($text)) {

do

$p = LCG(); while (!primes($p)) ; do

$q = LCG(); while (!primes($q)) ; $n = $p*$q;

$tot = ($p-1) * ($q-1); do

$e = LCG();

while (!primes($e)) ; }


(69)

else {

$p = 0; $q = 0; $n = 0; $tot = 0; $e = 0; } } ?> <?php //**************************************************************** function LCG(){ date_default_timezone_set('Asia/Jakarta'); $localtime_assoc = localtime(time(), true); $m = $localtime_assoc[tm_sec] ;

if ($m % 4 == 0) { $a = $m/4 + 1; } else

{ $a = getvar_a($m); }

$a = getvar_a($m); do {

$b = rand(1,100); }

while (primes($b)); $i = 1;

$rnd = 0 ;

while ($i<$m-1) {

$rnd = ($a * $rnd + $b) % $m; $i++; } return $rnd; } //***************************************************************** **********

function gcd($bilangan1, $bilangan2) { do {

$tmp = $bilangan1 % $bilangan2; $bilangan1 = $bilangan2 ;

$bilangan2 = $tmp ; }

while ($bilangan2>0) ; return $bilangan1 ; }


(70)

do {

$i = rand(1,$m); $a = gcd($m,$i); }

while ($a < 1); return $a+1; } ?> </style> </head> <body>

<p class="style1">SIMULASI RSA DENGAN PEMBANGKITAN KUNCI RANDOM<br />

METODE MARSENNE TWISTER DAN BILANGAN PRIMA THE SIEVE OF ERATOS THENES</p>

<form id="form1" name="form1" method="post" action= "<?php $_SERVER['PHP_SELF'] ?>" >

<label><span class="style2">Text </span>

<input name="text" type="text" id="text" value="" /> </label>

<p> <label>

<input type="submit" name="sub" id="sub" value="Submit" /> </label>

</p> </form>

<p class="style1">Key yang dibangkitkan</p>

<table width="267" border="0" cellspacing="0" cellpadding="0"> <tr>

<td width="91">p</td> <td width="176">:

<?php echo $p; ?> </td> </tr> <tr> <td>q</td> <td>: <?php echo $q; ?> </td> </tr>

<tr>

<td>n</td> <td>:


(71)

<?php echo $n;

?> </td> </tr>

<tr>

<td>Totient (n)</td> <td>:

<?php echo $tot ?> </td> </tr>

<tr>

<td>e</td> <td>

: <?php echo $e ?> &nbsp;</td> </tr> <tr> <td>Kunci Publik</td> <td>: <?php

echo $n . ',' . $e; ?> </td>

</tr> </table>

<p>&nbsp;</p> <p>Hasil</p> <p>Plain Text : <?php echo $text; ?> </p> <p>Enkripsi : <?php if (!empty($text)) {

$chipper = enkrip($text,$e,$n); echo $chipper;} ?> </p> <p>Dekripsi :</p> <p> <?php

if (!empty($text)) {

$plain = dekrip($chipper,$tot,$e,$n); }


(72)

?> </p>

<p><?php echo $plain; ?> &nbsp; </p> <p>&nbsp;</p>

</body> </html>


(1)

LIST PROGRAM

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"> <head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>RSA</title>

<style type="text/css"> <!--

.style1 {color: #FF0000} .style2 {color: #0000FF} -->

<?php

//********************************************************** global $p,$q,$n,$tot,$e;

function primes($angka) {

if($angka%3 != 0 and $angka%2 != 0 and $angka%5 != 0 and $angka%7 != 0 and $angka != 1)

return true; else

return false; }

//************************************************************ function enkrip($text,$e,$n)

{

$chip = '';

for ($i=0; $i <= strlen($text)-1;$i++ ) {

$as = ord($text[$i]);

$hit = bcmod(strval(bcpow(strval($as),$e)),$n); $chip = $chip .','. strval($hit);

}

$chipx = substr($chip,1,strlen($chip)); return $chipx;

}

//********************************************************* function dekrip($chip,$tot,$e,$n)

{

$chipn = '';


(2)

{

if (substr($chip,$j,1) != ',')

$chipn = $chipn . substr($chip,$j,1); else

{

$chipnum[] = $chipn; $chipn = ''; }

}

$chipnum[] = $chipn; $plain = '';

for ($j = 0; $j<=count($chipnum)-1 ;$j++) {

$k = 1; do

{

$dr = (1 + $k * $tot)/$e; $d = intval($dr);

$k++; }

While ($dr/$d != 1); $plain = $plain .

chr(intval(bcmod(strval(bcpow(strval($chipnum[$j]),$d)),$n))); }

echo "k = $k",PHP_EOL; echo "d = $d\n";

return $plain; }

//***************************************************************** ****

if (isset ($_POST['text'])){ $text = trim($_POST['text']); if (!empty($text)) {

do

$p = LCG();

while (!primes($p)) ; do

$q = LCG();

while (!primes($q)) ; $n = $p*$q;

$tot = ($p-1) * ($q-1); do

$e = LCG();

while (!primes($e)) ; }


(3)

else {

$p = 0; $q = 0; $n = 0; $tot = 0; $e = 0; }

} ?> <?php

//**************************************************************** function LCG(){

date_default_timezone_set('Asia/Jakarta'); $localtime_assoc = localtime(time(), true); $m = $localtime_assoc[tm_sec] ;

if ($m % 4 == 0) { $a = $m/4 + 1; } else

{ $a = getvar_a($m); }

$a = getvar_a($m); do {

$b = rand(1,100); }

while (primes($b)); $i = 1;

$rnd = 0 ;

while ($i<$m-1) {

$rnd = ($a * $rnd + $b) % $m; $i++;

}

return $rnd; }

//***************************************************************** **********

function gcd($bilangan1, $bilangan2) { do {

$tmp = $bilangan1 % $bilangan2; $bilangan1 = $bilangan2 ;

$bilangan2 = $tmp ; }

while ($bilangan2>0) ; return $bilangan1 ; }


(4)

do {

$i = rand(1,$m); $a = gcd($m,$i); }

while ($a < 1); return $a+1; }

?> </style> </head> <body>

<p class="style1">SIMULASI RSA DENGAN PEMBANGKITAN KUNCI RANDOM<br />

METODE MARSENNE TWISTER DAN BILANGAN PRIMA THE SIEVE OF ERATOS THENES</p>

<form id="form1" name="form1" method="post" action= "<?php $_SERVER['PHP_SELF'] ?>" >

<label><span class="style2">Text </span>

<input name="text" type="text" id="text" value="" /> </label>

<p> <label>

<input type="submit" name="sub" id="sub" value="Submit" /> </label>

</p> </form>

<p class="style1">Key yang dibangkitkan</p>

<table width="267" border="0" cellspacing="0" cellpadding="0"> <tr>

<td width="91">p</td> <td width="176">:

<?php echo $p; ?> </td> </tr>

<tr>

<td>q</td> <td>: <?php

echo $q; ?> </td> </tr>

<tr>

<td>n</td> <td>:


(5)

<?php echo $n;

?> </td> </tr>

<tr>

<td>Totient (n)</td> <td>:

<?php echo $tot ?> </td> </tr>

<tr>

<td>e</td> <td>

: <?php echo $e ?> &nbsp;</td> </tr>

<tr>

<td>Kunci Publik</td> <td>:

<?php

echo $n . ',' . $e; ?> </td>

</tr> </table>

<p>&nbsp;</p> <p>Hasil</p> <p>Plain Text : <?php

echo $text; ?>

</p>

<p>Enkripsi : <?php

if (!empty($text)) {

$chipper = enkrip($text,$e,$n); echo $chipper;}

?> </p>

<p>Dekripsi :</p> <p>

<?php

if (!empty($text)) {

$plain = dekrip($chipper,$tot,$e,$n); }


(6)

?> </p>

<p><?php echo $plain; ?> &nbsp; </p> <p>&nbsp;</p>

</body> </html>