• Tidak ada hasil yang ditemukan

Penambahan Chinese Reminder Theorem Untuk Mempercepat Proses Enkripsi Dan Dekripsi Pada RSA

N/A
N/A
Protected

Academic year: 2016

Membagikan "Penambahan Chinese Reminder Theorem Untuk Mempercepat Proses Enkripsi Dan Dekripsi Pada RSA"

Copied!
65
0
0

Teks penuh

(1)

PENAMBAHAN CHINESE REMINDER THEOREM UNTUK

MEMPERCEPAT PROSES ENKRIPSI DAN DEKRIPSI

PADA RSA

SKRIPSI

ANDI HAZRI HASIBUAN

100823021

DEPARTEMEN MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA

(2)

PENAMBAHAN CHINESE REMINDER THEOREM UNTUK MEMPERCEPAT PROSES ENKRIPSI DAN DEKRIPSI PADA RSA

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Sarjana Sains

ANDI HAZRI HASIBUAN

100823021

DEPARTEMEN MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA

(3)

PERSETUJUAN

Judul : PENAMBAHAN CHINESE REMINDER THEOREM

UNTUK MEMPERCEPAT PROSES ENKRIPSI DAN DEKRIPSI PADA RSA

Kategori : SKRIPSI

Nama : ANDI HAZRI HASIBUAN

Nomor Induk Mahasiswa : 100823021

Program Studi : SARJANA (S1) MATEMATIKA

Departemen : MATEMATIKA

Fakultas : MATEMATIKA DAN ILMU PENGETAHUAN

ALAM (FMIPA) UNIVERSITAS SUMATERA UTARA

Diluluskan di

Medan, September 2013

Komisi Pembimbing :

Pembimbing 2, Pembimbing 1,

Syahriol Sitorus, S.Si., M.IT. Prof. Dr. Drs. Iryanto, M.Si.

Nip. 197103101997031004 Nip. 194604041971071001

Diketahui/Disetujui oleh

Departemen Matematika FMIPA USU

(4)

PERNYATAAN

PENAMBAHAN CHINESE REMINDER THEOREM UNTUK MEMPERCEPAT

PROSES ENKRIPSI DAN DEKRIPSI PADA RSA

SKRIPSI

Saya mengakui bahwa Tugas Akhir ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan, September 2013

(5)

PENGHARGAAN

Puji dan syukur penulis panjatkan kehadirat Allah SWT yang telah memberikan rahmat dan karunia-Nya sehingga penulis dapat menyelesaikan skripsi ini tepat pada waktunya.

Ucapan terima kasih Penulis sampaikan kepada Bapak Prof. Dr. Drs. Iryanto, M.Si, Bapak Syahriol Sitorus, S.Si., M.IT. selaku pembimbing pada penyelesaian skripsi ini yang telah memberikan panduan dan penuh kepercayaan kepada penulis. Bapak Drs. Sawaluddin, M.IT. dan Bapak Drs. Marihat Situmorang, M.Si. selaku pembanding pada skripsi ini yang telah banyak memberi semangat dan motivasi. Ucapan terima kasih juga ditujukan kepada Ketua dan Sekretaris Departemen Matematika FMIPA USU Bapak Prof. Drs. Tulus, Vordipl.Math., M.Si., Ph.D. dan Ibu Dra. Mardiningsih, M.Si., Dekan dan Pembantu Dekan FMIPA USU, semua Dosen Pengajar FMIPA USU, pegawai FMIPA USU, dan rekan-rekan Penulis kelas Ekstensi Matematika Komputasi tahun angkatan 2010.

Akhirnya, tidak terlupakan Orang Tua Penulis dan keluarga yang telah banyak memberikan bantuan dan dorongan untuk penyelesaian skripsi ini. Semoga Allah SWT membalasnya.

Medan, September 2013

(6)

ABSTRACT

Many methods are used to protect digital data stored or transmitted via electronic media. One way is to use a cryptographic algorithm RSA (Rivest-Shamir-Adleman). Standard RSA uses modular arithmetic to perform the encryption and decryption. In this thesis discussed the addition of Chinese Remainder Theorem to speed up the RSA.

(7)

ABSTRAK

Banyak cara yang digunakan untuk melindungi data digital yang disimpan ataupun dikirim melalui media elektronik. Salah satunya adalah dengan menggunakan kriptogfari algoritma RSA (Rivest-Shamir-Adleman). RSA standar menggunakan aritmatika modular untuk melakukan proses enkripsi dan dekripsinya. Dalam skripsi ini dibahas tentang penambahan Chinese Remainder Theorem untuk mempercepat proses pada RSA.

(8)

DAFTAR ISI

1.2 Identifikasi Masalah 3

1.3 Perumusan Masalah 3

2.2 Pengertian Kriptografi 8

2.3 Konsep Kriptografi 9

2.4 Macam-macam Algortima Kriptografi 13

2.4.1 Algoritma Kriptografi Klasik 13

2.4.2 Algoritma Kriptografi Modern 14

2.5 RSA 18

2.5.1 Sejarah Singkat RSA 18

2.5.2 Cara Kerja Algoritma RSA 19

2.5.3 Pembangkitan Kunci RSA 20

2.5.4 Proses Enkripsi Pada RSA 20

2.5.5 Proses Dekripsi Pada RSA 21

2.5.6 Kelebihan dan Kelemahan RSA 22

2.6 Teori Bilangan 22

2.6.1 Sifat Habis Dibagi Pada Bilangan Bulat 22

2.6.2 Kongruensi 24

2.6.3 Bilangan Prima dan Relatif Prima 25

2.7 Chinese Remainder Theorem 25

Bab 3 Pembahasan 27

3.1 Proses Pada RSA 27

3.1.1 Pembangkitan Kunci 27

3.1.2 Proses Ekripsi 28

3.1.3 Proses Dekripsi 29

(9)

3.2.1 Pembentukan Kunci 29

3.2.2 Proses Dekripsi pada RSA-CRT 30

3.3 Perbedaan RSA dengan RSA-CRT 32

3.4 Flowchart Algoritma RSA 36

3.5 Flowchart Algoritma RSA-CRT 37

3.6 Pengujian Pada Program 38

3.6.1 Pengujian Algoritma RSA 38

3.6.2 Pengujian Algoritma RSA-CRT 39

Bab 4 Kesimpulan dan Saran 40

4.1 Kesimpulan 40

4.2 Saran 41

Daftar Pustaka 42

(10)

DAFTAR GAMBAR

Halaman

Gambar 2.1 Egyptian Hieroglyphs 6

Gambar 2.2 Proses enkripsi/dekripsi Sederhana 12

Gambar 2.3 Ilustrasi Algoritma Kriptografi Simetris 15

Gambar 2.4 Ilustrsi Algoritma Kriptografi Asimetris 17

Gambar 3.1 Bagan perbandingan RSA dengan RSA-CRT 34

Gambar 3.2 Bagan contoh perbandingan RSA dengan RSA-CRT 35

Gambar 3.3 Flowchart Algoritma RSA 36

Gambar 3.4 Flowchart Algoritma RSA-CRT 37

Gambar 3.5 Proses Enkripsi dan Dekripsi RSA dengan Java 38

(11)

DAFTAR TABEL

Halaman

Tabel 2.1 Simbol-simbol Data Flow Diagram 11

Tabel 2.2 Simbol-simbol Flowchart 12

Tabel 4.1 Tabel Admin 52

Tabel 4.2 Tabel Siswa 52

Tabel 4.3 Tabel Nilai 53

Tabel 4.4 Tabel Guru 54

Tabel 4.5 Tabel Buku Tamu 54

Tabel 4.6 Tabel Informasi Akademik 55

(12)

ABSTRACT

Many methods are used to protect digital data stored or transmitted via electronic media. One way is to use a cryptographic algorithm RSA (Rivest-Shamir-Adleman). Standard RSA uses modular arithmetic to perform the encryption and decryption. In this thesis discussed the addition of Chinese Remainder Theorem to speed up the RSA.

(13)

ABSTRAK

Banyak cara yang digunakan untuk melindungi data digital yang disimpan ataupun dikirim melalui media elektronik. Salah satunya adalah dengan menggunakan kriptogfari algoritma RSA (Rivest-Shamir-Adleman). RSA standar menggunakan aritmatika modular untuk melakukan proses enkripsi dan dekripsinya. Dalam skripsi ini dibahas tentang penambahan Chinese Remainder Theorem untuk mempercepat proses pada RSA.

(14)

BAB 1

PENDAHULUAN

1.1 Latar Belakang

Perkembangan teknologi memberi pengaruh besar bagi segala aspek kehidupan. Begitu

banyak manfaat teknologi tersebut yang dapat diimplementasikan dalam kehidupan.

Teknologi saat ini telah memberikan kemudahan dalam penyampaian suatu informasi.

Pada umumnya untuk menyampaikan suatu informasi melalui surat atau

berkomunikasi melalui telepon, namun sekarang proses pengiriman informasi berupa

pesan dapat dilakukan melalui teknologi internet.

Seiring dengan berkembangnya teknologi yang memberikan kemudahan,

khususnya komputer, juga membawa dampak negatip dalam pengiriman pesan itu

sendiri. Hal ini dapat disebabkan karena adanya suatu serangan dari pihak yang tidak

berhak untuk mendapatkan isi pesan tersebut dengan menggunakan berbagai cara,

sehingga dapat merugikan pengirim pesan tersebut.

Dalam komunikasi data terdapat sebuah metode pengamanan data yang dikenal

dengan nama kriptografi. Kriptografi merupakan salah satu metode pengamanan data

yang dapat digunakan untuk menjaga kerahasiaan data, keaslian data serta keaslian

pengirim data. Metode ini bertujuan agar informasi yang bersifat rahasia yang dikirim

melalui telekomunikasi umum seperti internet, tidak dapat diketahui atau dimanfaatkan

oleh orang yang tidak berkepentingan atau orang yang tidak berhak menerimanya.

Salah satu algoritma kriptografi yang popular saat ini adalah RSA. RSA

merupakan algoritma kunci publik yang dikembangkan oleh Rivest-Shamir-Adleman.

(15)

dikenal juga dengan kriptografi asimetris dimana pengguna memiliki pasangan kunci

kriptografi yaitu kunci publik dan kunci privat. Kunci privat dirahasiakan, sedangkan

kunci publik dapat disebarluaskan.

Keamanan algoritma RSA terletak pada sulitnya memfaktorkan bilangan yang

besar menjadi faktor-faktor primanya. Pemfaktoran dilakukan untuk memperoleh

kunci privat yang digunakan untuk mendekripsi cipherteks. Selama belum ditemukan algoritma yang efisien untuk pemfaktoran bilangan besar menjadi faktor-faktor

primanya, maka keamanan algoritma RSA tetap terjamin. Salah satu kelemahan RSA

yang paling signifikan adalah kecepatannya. RSA adalah algoritma kriptografi yang

lambat karena proses komputasinya yang melibatkan bilangan-bilangan besar. Oleh

karena itu, pada prakteknya RSA biasanya hanya digunakan untuk mengenkripsi kunci

dari algoritma kriptografi kunci simetri dan untuk tandatangan digital. (Aditya, 2010)

Penulis akan mencoba memodifikasi algoritma RSA menggunakan Chinese

Remainder Theorem (CRT) untuk mempercepat proses enkripsi dan dekripsi. CRT merupakan teorema dalam aritmatika modulo yang akan digunakan dalam melakukan

operasi modulo pada proses enkripsi dan dekripsi. Berdasarkan penjelasan tersebut,

penulis tertarik untuk melakukan penelitian dengan judul: “PENAMBAHAN

CHINESE REMINDER THEOREM UNTUK MEMPERCEPAT PROSES ENKRIPSI DAN DEKRIPSI PADA RSA”.

1.2 Identifikasi Masalah

Masalah yang menjadi dasar penelitian ini adalah proses komputasi yang lambat pada

dekripsi algoritma RSA. Kelambatan proses ini diakibatkan proses komputasi yang

melibatkan bilangan-bilangan eksponen dan modulo yang besar pada algortima RSA.

Untuk mengatasai masalah tersebut, penulis mencoba memodifikasi algoritma RSA

(16)

1.3 Perumusan Masalah

Berdasarkan identifikasi masalah di atas, yang menjadi rumusan masalah pada

penelitian ini adalah bagaimana cara menggunakan Chinese Reminder Theorem (CRT) untuk mempercepat proses dekripsi pada algoritma RSA.

1.4 Pembatasan Masalah

Didalam mengkaji suatu permasalahan diperlukan suatu pembatasan agar

pengkajiannya lebih terarah. Dalam hal ini, batasan masalahnya adalah sebagai berikut:

1. Sistem pengamanan data atau kriptografi memiliki cakupan yang luas, oleh

karena itu dalam tulisan ini dibatasi hanya menguraikan kriptografi algoritma

RSA.

2. Modifikasi RSA hanya dengan penambahan Chinese Reminder Theorem.

3. Character yang digunakan dalam proses enkripsi adalah character ASCII.

1.5Tinjauan Pustaka

Dalam tulisan ini penulis memanfaatkan buku-buku, internet, dan jurnal yang dapat

dipergunakan untuk menjelaskan teori-teori pemecahan masalah atau dasar pemikiran

untuk menjelaskan masalah yang dibahas.

(Dony Ariyus, 2009) dalam bukunya “Keamanan Multimedia”, kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan ketika pesan dikirim dari suatu

(17)

(Rinaldi Munir, 2006) dalam bukunya “Kriptografi”, menerangkan bahwa

kriptografi bertujuan untuk memberi layanan keamanan yang dimaksud sebagai

aspek-aspek keamanan yaitu : Kerahasiaan (confidentiality), Integritas Data (Data Integrity), Otentikasi (Authentication) dan Nirpenyangkalan (Non-Repudiation).

(Tri Rahajoeningroem, 2009) dalam jurnalnya “Studi dan Implementasi

Algoritma RSA”, Algoritma RSA dibuat oleh tiga orang peneliti dari MIT (Massachussets Institute of Technology) pada tahun 1976, yaitu Ron Rivest, Adi Shamir dan Leonard Adleman. RSA adalah salah satu teknik kriptografi dimana kunci

untuk melakukan enkripsi berbeda dengan kunci untuk melakukan dekripsi. Kunci

untuk melakukan enkripsi disebut sebagai kunci publik, sedangkan kunci untuk

melakukan dekripsi disebut sebagai kunci privat.

(Dimas Gilang Saputra, 2010) dalam makalahnya “Aplikasi Chinese

Remainder Theorem dalam Secret Sharing”, menerangkan bahwa chinese remainder theorem adalah teorema mengenai kekongruenan lanjar dalam teori bilangan bulat yaitu aritmetika modulo. Teorema ini pertama kali ditemukan oleh Sun Tze pada abad

pertama.

1.6Tujuan Penelitian

Penelitian ini bertujuan untuk memperoleh modifikasi algortima kriptografi RSA

dengan penambahan Chinese Reminder Theorem untuk mempercepat proses

dekripsinya.

1.7Kontribusi Penelitian

Manfaat dari penelitian ini adalah untuk menambah pengetahuan penulis di bidang

(18)

suatu algoritma baru yakni modifikasi algoritma RSA dengan penambahan Chinese Reminder Theorem yang dapat mempercepat proses enkripsi dan deksripsi pada RSA.

1.8Metode Penelitian

Metode penelitian ini digunakan sebagai pedoman dalam melaksanakan penelitian agar

hasil yang dicapai tidak menyimpang dari tujuan yang telah ditentukan sebelumnya.

Metode penelitian yang digunakan adalah sebagai berikut:

1. Mempelajari algoritma kriptografi, dalam hal ini yang dibahas adalah

kriptografi dengan menggunakan algoritma Rivest Shamir Adleman (RSA).

2. Mempelajari Chinese Reminder Theorem dan teknik penggabungannya

dengan algoritma RSA.

3. Merancang suatu sistem pengamanan pesan dengan menggunakan algoritma

RSA yang dapat mengenkripsi dan mendekripsi pesan yang

diimplementasikan dalam bahasa pemograman Java.

4. Melakukan uji program.

(19)

BAB 2

LANDASAN TEORI

2.1 Sejarah Kriptografi

Kriptografi memiliki sejarah yang panjang. Penulisan rahasia ini dapat dilacak kembali

ke 3000 tahun SM saat digunakan oleh bangsa Mesir. Mereka menggunakan

hieroglyphics untuk tulisan mereka agar tidak mudah dimengerti oleh orang yang tidak diharapkan. Hieroglyphics diturunkan dari bahasa Yunani yakni hieroglyphica yang berarti ukiran rahasia. Hieroglyphcs berevolusi menjadi hieratic, yaitu stylized script

yang lebih mudah digunakan. (Dony, 2009)

Gambar 2.1Egyptian Hieroglyphs

Sumber : www.wikipedia.org

Sekitar 400 SM, kriptografi militer digunakan oleh bangsa Spartan dalam

bentuk sepotong papyrus atau perkamen dibungkus dengan batang kayu. Sistem ini disebut dengan Scytale.

Sekitar 50 SM, Julius Caesar, kaisar Roma, menggunakan cipher subsitusi

untuk mengirim pesan ke Marcus Tullius Cicero. Pada cipher ini, huruf-huruf alphabet

disubtitusikan dengan huruf-huruf yang lain pada alphabet yang sama. Karena hanya

(20)

semacam ini mencakup penggeseran alphabet dengan 3 (tiga) huruf dan

mensubsitusikan huruf tersebut. Subsitusi ini kadang disebut dengan C3.

Di India, cryptography digunakan oleh pecinta untuk berkumunikasi tanpa

diketahui orang lain. Bukti itu ditemukan dalam buku Kama Sutra yang

merekomendasikan bagaimana wanita seharusnya mempelajari seni memahami tulisan

menggunakan cipher.

Pada abad ke-15, Leo Battista Alberti menemukan suatu metode wheel cipher,

lalu mengembangkannya menjadi alat enkripsi dan dekripsi. Metode ini kemudian

dikembangkan ulang oleh Thomas Jefferson yang kemudian dinamakan Jefferson Wheel Cipher. Selanjutnya metode tersebut dikembangkan lagi oleh Bazeries yang kemudian dinamakan Bazaries Cylinder. Metode tersebut terus dikembangkan menjadi

M94, dan versi-versi setelahnya.

Bentuk wheel cipher yang pada saat itu masih dikenal sebagai cipher disk,

ditemukan pertama kali oleh Leon Alberti. Terdapat dua buah potongan silinder, yaitu

potongan silinder dalam dan potongan silinder luar. Masing-masing potongan silinder

berlabel seluruh alfabet dengan susunan yang tidak harus terurut sama. Potongan

silinder luar merupakan alfabet untuk plaintext dan potongan silinder dalam untuk

ciphertext.

Pada perang dunia kedua, Jerman menggunakan enigma, atau juga disebut

mesin rotor, yang oleh Hitler dimanfaatkan untuk mengirim pesan kepada tentaranya.

Enigma yang digunakan Jerman bisa mengenkripsi satu pesan yang memiliki 15

miliyar kemungkinan untuk didekripsikan. Dari kemungkinan-kemungkinan tersebut,

Jerman tidak percaya bahwa pesan yang dikirim melalui enigma tersebut bisa

dipecahkan. Namun pada kenyataannya pesan tersebut bisa didekripsikan oleh pihak

sekutu.

(21)

Akan tetapi, 30 tahun terakhir ini, cryptography tidak hanya dimonopoli oleh pihak militer saja. Hal yang sama juga dilakukan oleh individu-individu yang menginginkan

pesan dan komunikasi mereka tidak diketahui oleh pihak lain. Apalagi pada zaman

sekarang ini, dimana persaingan begitu ketat sehingga mereka mengeluarkan biaya

lebih hanya untuk menjaga privasi mereka.

2.2 Pengertian Kriptografi

Kata cryptography berasal dari bahasa Yunani, kripto (hidden atau secret) dan grafh

(writing) artinya “secret writing”. Menurut terminologinya, cryptography adalah ilmu dan seni untuk menjaga keamanan pesan ketika pesan dikirim dari suatu tempat ke

tempat lain. (Dony, 2009)

Cryptography adalah cabang ilmu matematika tentang persandian untuk menjaga keamanan data. (Munawar, 2012)

Kriptografi adalah ilmu yang mempelajari teknik-teknik matematis yang

berhubungan dengan aspek keamanan informasi seperti keabsahan, integritas data,

serta autentifikasi data. Kriptografi tidak berarti hanya memberikan keamanan

informasi saja, namun lebih kearah teknik-tekniknya.

2.3 Konsep Kriptografi

Konsep kriptografi sendiri telah lama digunakan oleh manusia misalnya pada

peradaban Mesir dan Romawi walaupun masih sangat sederhana. Prinsip-prinsip yang

mendasari kriptografi adalah sebagai berikut :

a. Confidentiality (kerahasiaan) yaitu layanan yang ditujukan untuk menjaga agar isi pesan yang dikirimkan tidak dapat dibaca oleh pihak lain (kecuali pihak

pengirim, pihak penerima/pihak-pihak yang memiliki ijin). Umumnya hal ini

(22)

b. Data integrity (keutuhan data) yaitu layanan yang mampu menjamin pesan masih asli/utuh atau belum pernah dimanipulasi selama masa waktu

pengiriman. Untuk menjaga integritas data, sistem harus memiliki kemampuan

untuk mendeteksi adanya manipulasi pesan tersebut oleh pihak-pihak yang

tidak berhak antara lain penghapusan, pengubahan atau penambahan data yang

tidak sah oleh pihak lain.

c. Authentication (otentikasi) yaitu layanan yang berhubungan dengan identifikasi. Baik mengidentifikasi kebenaran pihak-pihak yang berkomunikasi

maupun mengidentifikasi kebenaran sumber pesan. Dua pihak yang saling

berkomunikasi harus dapat mengotentikasi satu sama lain sehingga ia dapat

memastikan sumber pesan. Pesan yang di kirim melalui saluran komunikasi

juga harus diotentikasi asalnya. Dengan kata lain, aspek keamanan ini dapat

diungkapkan sebagai pertanyaan : “apakah pesan yang diterima benar-benar berasal dari pengirim yang benar ?” Otentikasi sumber pesan secara implisit

juga memberikan kepastian integritas data, sebab jika pesan telah dimodifikasi

berarti sumber pesan sudah tidak benar. Oleh karena itu, layanan integritas data

selalu dikombinasikan dengan layanan otentikasi sumber pesan. Didalam

kriptografi, layanan ini direalisasikan dengan menggunakan tandatangan digital

(digital signature). Oleh sebab itu tandatangan digital selalu dikombinasikan dengan layanan otentikasi sumber pesan.

d. Non-repudiation (anti-penyangkalan) yaitu layanan yang dapat mencegah suatu pihak untuk menyangkal aksi yang dilakukan sebelumnya, yaitu pengirim

pesan menyangkal melakukan pengiriman atau penerimaan pesan menyangkal

telah menerima pesan. Sebagai contoh, misalnya pengiriman pesan memberi

otoritas kepada penerima pesan untuk melakukan pembelian, namun kemudian

ia menyangkal telah memberikan otoritas tersebut.

Berikut adalah istilah-istilah yang digunakan dalam bidang kriptografi :

a. Pesan, Plaintext dan Chiphertext

(23)

atau informasi yang dikirim melalui kurir, saluran telekomunikasi maupun

saluran lain. Pesan yang tersimpan tidak hanya berupa text, tetapi juga dapat

berbentuk citra (image), suara/bunyi (audio) dan video atau berkas biner lainnya. Agar pesan tidak dapat dimengerti maknanya oleh pihak lain, maka

pesan perlu disandikan kebentuk lain yang tidak dapat dipahami. Bentuk pesan

yang tersandi disebut ciphertext atau sering juga disebut kriptogram. Ciphertext

harus dapat ditransformasikan kembali menjadi plaintext semula agar pesan yang diterima bisa dibaca.

b. Pengirim dan Penerima

Komunikasi data melibatkan pertukaran pesan antara dua entitas. Pengirim

(sender) adalah entitas yang mengirim pesan kepada entitas lainnya. Penerima (receiver) adalah entitas yang menerima pesan. Entitas yang dimaksud dapat berupa orang , mesin (komputer, kartu kredit) dan sebagainya. Jadi orang dapat

bertukar pesan dengan orang lainnya, sementara didalam jaringan komputer

mesin (komputer) berkomunikasi dengan mesin. contoh : mesin ATM dengan komputer server di bank.

c. Enkripsi (E) dan Dekripsi (D)

Proses menyandikan plainteks menjadi ciphertext disebut enkripsi. Ada 2 syarat keamanan suatu system enkripsi, yaitu true random bits dan key space yang

sangat besar untuk algoritma enkripsi tersebut. Jika kedua syarat dipenuhi,

maka tidak ada masalah seberapa kompleks algoritma enkripsinya. Bahakan

semakin sederhana semakin baik, karena semakin sederhana, maka makin

sedikit proses komputasinya, dan semakin sedikit waktu yang dibutuhkan untuk

mengeksekusinya.

Proses mengembalikan ciphertext menjadi plainteks disebut dekripsi. Enkripsi dan dekripsi dapat diterapkan baik pada pesan yang dikirim maupun pada pesan

(24)

d. Cipher dan Kunci

Algoritma kriptografi disebut juga cipher yaitu aturan untuk enciphering dan

deciphering, atau fungsi matematik yang digunakan untuk enkripsi dan dekripsi. Konsep matematis yang mendasari algoritma kriptografi adalah relasi antara dua buah himpunan yaitu himpunan yang berisi elemen-elemen plainteks

dan himpunan yang berisi ciphertext. Enkripsi dan dekripsi merupakan fungsi

yang memetakan elemen-elemen antara kedua himpunan tersebut. Misalkan P

menyatakan plainteks dan C menyatakan ciphertext, maka fungsi enkripsi E

memetakan P ke C

E(P) = C (2.1)

Dan fungsi dekripsi D memetakkan C ke P

D(C) = P (2.2)

Karena proses enkripsi kemudian dekripsi mengembalikan pesan ke pesan asal,

maka kesamaan berikut harus benar :

D (E(P)) = P (2.3)

Kriptografi modern juga telah banyak mengatasi masalah dengan penggunaan

kunci, yang dalam hal ini algoritma tidak lagi dirahasiakan, tetapi kunci harus

dijaga kerahasiaannya. Kunci (key) adalah parameter yang digunakan untuk transformasi enciphering dan deciphering. Kunci biasanya berupa string atau deretan bilangan. Dengan menggunakan kunci K, maka fungsi enkripsi dan dekripsi dapat ditulis sebagai berikut :

Ek(P)= C dan Dk(C) = P (2.4)

dan kedua fungsi ini memenuhi

Dk(Ek(P))= P (2.5)

berikut ilustrasi skema enkripsi dan dekripsi dengan menggunakan kunci

(25)

Gambar 2.2 Proses enkripsi/dekripsi Sederhana

e. Penyadap

Penyadap (eavesdropper) adalah orang yang mencoba menangkap pesan selama ditransmisikan. Tujuan penyadap adalah untuk mendapatkan informasi

sebanyak-banyaknya mengenai sistem kriptografi yang digunakan untuk

berkomunikasi dengan maksud memecahkan ciphertext.

f. Kriptanalisis dan kriptologi

Kriptanalisis adalah ilmu dan seni untuk memecahkan ciphertext menjadi

plainteks tanpa mengetahui kunci yang digunakan dan pelakunya disebut Kriptanalis. Jika seorang kriptografer mentransformasikan plainteks menjadi

ciphertext dengan suatu algoritma dan kunci maka sebaliknya seorang kriptanalis berusaha untuk memecahkan ciphertext tersebut untuk menemukan

plainteks atau kunci.

Kriptologi adalah studi mengenai kriptografi dan kriptanalisis. Baik kriptografi maupun kriptanalisis keduanya saling berkaitan.

2.4 Macam-macam Algoritma Kriptografi

Berdasarkan sejarahnya, kriptografi dapat dibedakan menjadi dua bagian yaitu

Kriptografi Klasik dan Kriptografi Modern. Perbedaan mendasar yang terdapat pada

kedua jenis tersebut adalah pada kriptografi modern, algoritma kriptografi umumnya

beroprasi pada mode-bit sehingga kriptanalis sangat sulit untuk memcahkan cipherteks

tanpa mengetahui kuncinya, sedangkan kriptografi klasik beroprasi pada mode

karakter, sehingga memungkinkan cipherteks dapat depecahkan dengan mudah, seperti

Enkripsi Ciphertext Dekripsi

Plaintext Plaintex

(26)

penggunaan statistik kemunculan huruf pada bahasa tertentu, terkaan, intuisi dan

sebagainya.

Berbeda dengan kriptografi klasik yang menitikberatkan kekuatan pada

kerahasiaan algoritma yang digunakan. 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.

2.4.1 Algoritma Kriptografi Klasik

Kriptografi klasik meruapakan algoritma yang menggunakan satu kunci untk

mengamankan data. Teknik ini telah digunakan beberapa abad yang lalu. Dua teknik

dasar yang digunakan pada algoritma klasik adalah teknik subsitusi dan teknik

permutasi.

a. Teknik Subsitusi

Teknik ini merupakan penggantian setiap karakter dari plaintext dengan karakter lainnya. Ada empat istilah subsitusi cipher, yaitu : monoalphabet

adalah dimana setiap karakter cipherteks menggantikan satu karakter

plainteks. Polyalphabet dimana setiap karakter cipherteks dapat menggantikan lebih dari satu macam karakter plainteks. Monograf yaitu satu enkripsi dilakukan terhadap satu karakter plainteks. Polygraph

dimana satu enkripsi dilakukan terhadap lebih dari satu karakter

plainteks.

(27)

b. Teknik Permutasi

Teknik ini menggunakan permutasi karakter. Penggunaan teknik ini

menyebabkan pesan yang asli tidak dapat dibaca kecuai bila memiliki

kunci untuk mengembalikan pesan cipherteks ke pesan plainteks atau

disebut dekripsi.

Teknik Permutasi (transposisi) dengan bermacam pola bisa dilakukan

untuk menyembunyikan pesan dari tangan-tangan orang yang tidak

berhak. Kombinasi dari pola-pola tersebut merupakan dasar dari

pembentukan algoritma kriptografi yang dikenal sekarang ini.

2.4.2 Algoritma Kriptografi Modern

Kriptografi modern berbeda dengan kriptografi konvensional karena kriptografi

modern sudah menggunakan komputer dalam pengoperasiannya. Fungsinya adalah

untuk mengamankan data, baik yang ditransfer melalui jaringan komputer maupun

tidak. Hal tersebut sangat berguna untuk melindungi privasi, integritas data,

authentication, dan non-repudiation.

Kriptografi modern merupakan suatu perbaikan yang mengacu pada kriptografi

klasik. Pada kriptografi modern terdapat berbagai macam algoritma yang bertujuan

mengamankan informasi yang dikirim melalui jaringan komputer.

Kriptografi modern terdiri dari 3 (tiga) bagian, yaitu :

a. Algoritma 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

(28)

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.

Berikut ilustrasi penggunaan algoritma simetris :

Gambar 2.3 Ilustrasi Algoritma Kriptografi Simetris

Algoritma kriptografi yang memakai kunci simetris antara lain adalah Data Encryption Standard (DES), RC2, RC4, RC5, RC6, International Data Encrytion Algorithm (IDEA), Advanced Encryption Standard (AES), One Time Pad (OTP), dan lain-lain

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:

1. Kecepatan operasi lebih tinggi bila dibandingkan dengan algoritma

asimetrik.

2. Karena kecepatannya yang cukup tinggi, maka dapat digunakan

pada sistem real-time

Enkripsi Dekripsi

Ciphertext

Plaintext Plaintex

(29)

Kelemahan Algoritma Simetris :

1. Untuk tiap pengiriman pesan dengan pengguna yang berbeda

dibutuhkan kunci yang berbeda juga, sehingga akan terjadi kesulitan

dalam manajemen kunci tersebut.

2. 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 (publik 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 private

nya sendiri

Kunci-kunci tersebut berhubungan satu sama lain. Walau kunci publik telah

(30)

Berikut ilustrasi penggunaan algoritma Asimetris :

Gambar 2.4 Ilustrsi Algoritma Kriptografi Asimetris

Kelebihan Algoritma Asimetris:

1. Masalah keamanan pada distribusi kunci dapat lebih baik

2. Masalah manajemen kunci yang lebih baik karena jumlah kunci

yang lebih sedikit.

Kelemahan Algoritma Asimetris:

1. Kecepatan yang lebih rendah bila dibandingkan dengan algoritma

simetris.

2. Untuk tingkat keamanan sama, kunci yang digunakan lebih panjang

dibandingkan dengan algoritma simetris.

c. Hybrid Algoritma

Algoritma Hybrid adalah algoritma yang memanfaatkan dua tingkatan

kunci, yaitu kunci rahasia (simetri) untuk enkripsi dan pasangan kunci

private-kunci publik untuk memberikan tanda tangan digital serta

melindungi kunci simetri.

Berdasarkan besar data yang diolah dalam satu kali proses, maka algoritma

kriptografi dapat dibedakan menjadi dua jenis yaitu :

a. Algoritma block cipher

Informasi/data yang hendak dikirim dalam bentuk blok-blok besar (misal

64-bit) dimana blok-blok ini dioperasikan dengan fungsi enkripsi yang

(31)

sama dan akan menghasilkan informasi rahasia dalam blok-blok yang

berukuran sama.

b. Algoritma stream cipher

Informasi/data yang hendak dikirim dioperasikan dalam bentuk blok-blok

yang lebih kecil (byte atau bit), biasanya satu karakter persatuan waktu proses, menggunakan tranformasi enkripsi yang berubah setiap waktu.

2.5 RSA

2.5.1 Sejarah Singkat RSA

Algortima RSA dijabarkan pada tahun 1977 oleh tiga orang : Ron Rivest, Adi Shamir

dan Len Adleman dari Massachusetts Institute of Technology. Huruf RSA itu sendiri berasal dari inisial nama mereka (Rivest-Shamir-Adleman).

Clifford Cocks, seorang matematikawan Inggris yang bekerja untuk GCHQ,

menjabarkan tentang sistem equivalen pada dokumen internal di tahun 1973.

Penemuan Clifford Cocks tidak terungkap hingga tahun 1997 karena alasan top-secret classification. Algoritma tersebut dipatenkan oleh Massachusetts Institute of Technology pada tahun 1983 di Amerika Serikat sebagai U.S. Patent 4405829. Paten tersebut berlaku hingga 21 September 2000.

Semenjak Algoritma RSA dipublikasikan sebagai aplikasi paten, regulasi di

sebagian besar negara-negara lain tidak memungkinkan penggunaan paten. Hal ini

(32)

2.5.2 Cara Kerja Algoritma RSA

RSA juga dikenal sebagai Algoritma cryptography asymetric. Algoritma cryptography asymetric adalah algoritma yang menggunakan kunci yang berbeda untuk proses enkripsi dan dekripsinya. Algoritma ini disebut juga algoritma kunci umum (public key algorithm) karena kunci untuk enkripsi dibuat umum (public key) atau dapat diketahui oleh setiap orang, tapi kunci untuk dekripsi hanya diketahui oleh orang yang

berwenang mengetahui data yang disandikan atau sering disebut kunci pribadi (private key).

RSA merupakan algoritma pertama yang cocok untuk digital signature seperti

halnya enkripsi, dan salah satu yang paling maju dalam bidang kriptografi public key. RSA masih digunakan secara luas dalam protokol electronic commerce, dan dipercaya dalam mengamankan dengan menggunakan kunci yang cukup panjang sehingga akan

sulit untuk memecahkan kode sandinya.

RSA merupakan algoritma yang melibatkan ekspresi dengan fungsi

eksponensial. Plaintext dienkripsi dalam blok blok, dimana setiap blok tersebut mempunyai nilai biner yang kurang dari angka tertentu (n). Proses enkripsi dan

dekripsi untuk plaintext blok M dan ciphertext blok C dapat digambarkan sebagai berikut :

C = Me mod n

M = Cd mod n = (Me)d mod n = Med mod n (2.6) Kedua belah pihak (pengirim dan penerima) harus mengetahui nilai dari n.

Pengirim mengetahui nilai e dan hanya penerima yang tahu nilai d. Jadi, dapat

disimpulkan bahwa kunci publik dari algoritma ini adalah e, n dan kunci pribadinya

adalah d, n. Untuk penentuan kunci ini juga tidaklah bebas, harus melalui rumus

(33)

Keamanan algoritma RSA terletak pada sulitnya memfaktorkan bilangan yang

besar menjadi faktor-faktor prima.

2.5.3 Pembangkitan Kunci Pada RSA

Pembangkitan pasangan kunci pada RSA mengikuti algoritma sebagai berikut :

a. Pilih dua bilangan prima, a dan b (rahasia)

b. Hitung n = ab. Besaran n tidak perlu dirahasiakan. c. Hitung m = (a – 1)(b – 1).

d. Pilih sebuah bilangan bulat untuk kunci publik, sebut namanya e, yang relatif prima terhadap m.

e. Hitung kunci dekripsi, d, melalui ed 1 (modm) atau (de) mod m = 1.

2.5.4 Proses Enkripsi pada RSA

Proses selanjutnya setelah pembangkitan kunci pada RSA adalah proses Enkripsi.

Enkripsi adalah proses mengubah pesan asli (plaintext) menjadi pesan rahasia (chipertext).

Pada proses ini pesan asli terlebih dahulu diubah kedalam bentuk desimal,

kemudian pesan yang sudah berbentuk desimal kemuadian di bagi-bagi menjadi

beberapa blok desimal secara teratur. Setiap blok desimal akan memiliki nilai yang

harus lebih kecil dari nilai n yang disebut P.

Rumus yang digunakan untuk melakukan proses Enkripsi pada RSA adalah :

C = Pe (mod n). (2.7)

(34)

2.5.5 Proses Dekripsi Pada RSA

Proses dekripsi pada RSA mirip dengan proses enkripsinya, hanya saja pada proses

dekripsinya menggunakan kunci private d. Rumus untuk proses dekripsi pada RSA

adalah sebagai berikut :

P = Cd (mod n), (2.8)

Dimana P = Plainteks (pesan asli)

C = cipertext

d = kuci private (kunci dekripsi)

n = kunci publik (ab)

2.5.6 Kelebihan dan Kelemahan RSA

Kekuatan algoritma RSA terletak pada tingkat kesulitan dalam memfaktorkan bilangan

menjadi faktor primanya, dalam hal ini memfaktorkan n menjadi p dan q. Karena jika n

berhasil difaktorkan, maka menghitung nilai m adalah perkara mudah. Selanjutnya,

walau nilai e diumumkan, perhitungan kunci d tidaklah mudah pula karena nilai m

yang tidak diketahui.

Kelebihan lain algoritma RSA terletak pada ketahanannya terhadap berbagai

bentuk serangan, terutama serangan brute force. Hal ini dikarenakan kompleksitas dekripsinya yang dapat ditentukan secara dinamis dengan cara menentukan nilai p dan

q yang besar pada saat proses pembangitkan pasangan kunci, sehingga dihasilkan

sebuah key space yang cukup besar, sehingga tahan terhadap serangan.

Namun demikian, kelebihan tersebut sekaligus menjadi kelemahan dari sistem

ini. Ukuran kunci privat yang terlalu besar akan mengakibatkan proses dekripsi yang

(35)

umumnya digunakan untuk meng-enkripsi pesan berukuran kecil seperti kata kunci

dari enkripsi simetris seperti DES dan AES yang kemudian kunci tersebut dikirim

secara bersamaan dengan pesan utama.

2.6 Teori Bilangan

2.6.1 Sifat Habis Dibagi Pada Bilangan Bulat

Suatu bilangan bulat b dikatakan habis dibagi (divisible ) oleh suatu bilangan bulat tak nol a jika ada suatu bilangan bulat q sedemikian sehingga b = aq. Atau dapat juga dikatakan a membagi habis b dan ditulis dengan a | b.

Sifat – sifat hasil bagi :

a. jika a | b maka a | bc untuk sebarang c bilangan bulat.

b. jika a | b dan b | c maka a | c.

c. jika a | b dan a | c maka a | bx+cy untuk sebarang x,y bilangan bulat.

d. jika a | b dan b | a maka a = b.

e. jika a b dan b 0, maka |a|b|

f. jika m 0, maka a | b jika hanya jika ma | mb

Jika a | b maka a disebut faktor dari b. Kemudian jika suatu bilangan bulat d

membagi dua bilangan bulat a dan b maka d disebut faktor persekutuan dari a dan b.

Bilangan bulat terbesar di antara semua faktor persekutuan bagi a dan b dinamakan

faktor persekutuan terbesar (greatest common divisor) bagi a dan b dan dilambangkan dengan GCD(a,b) atau sering juga sering dilambangkan dengan FPB(a,b).

Contoh :

Faktor pembagi 45 adalah : 1, 3, 5, 9, 15, 45

Faktor pembagi 36 adalah : 1, 2, 3, 4, 6, 9, 12, 18, 36

(36)

Untuk menentukan faktor persekutuan terbesar dapat pula digunakan

teorema algoritma euclide berikut :

Diberikan dua bilangan bulat a dan b dengan a > b > 0, maka GCD(a,b) dapat dicari dengan mengulang algoritma pembagian.

a = q1.b + r1 ... (0 < r1 < b)

Maka, rn, sisa terakhir dari pembagian diatas yang bukan nol merupakan

GCD(a,b).

Akibat selanjutnya dari teorema euclide yaitu persamaan linear Diophantine sebagai berikut :

Suatu persamaan linear Diophantine ax + by = c dengan a,b dan c bilangan bulat mempunyai penyelesaian bilangan bulat jika dan hanya jika GCD(a,b) membagi habis c.

Bukti :

Dari akibat sebelumnya diketahui bahwa untuk setiap GCD(a,b) maka terdapat

bilangan bulat m dan n sedemikian hingga GCD(a,b) = am + bn. Selanjutnya karena

GCD(a,b) membagi habis c maka terdapat bilangan k sedemikian hingga

c = k. GCD(a,b)

c = k. (am +bn)

c = a(km) + b(kn)

(37)

2.6.2 Kongruensi

Misalkan m adalah suatu bilangan bulat positif. Dua buah bilangan a dan b dikatakan

kongruen modulo m jika dan hanya jika m | a-b, dan ditulis dengan a b (mod m).

Misalkan a, b, c, d, x, dan y adalah bilangan bulat, maka :

a. a b (mod m), dan b a (mod m), dan a-b 0 (mod m) adalah

pernyataan-pernyataan setara.

b. Jika a b (mod m) dan b c (mod m) maka a c (mod m).

c. Jika a b (mod m) dan d membagi habis m maka a b (mod d)

Jika a b (mod m) dan c d (mod m) maka ax + cy bx + dy (mod m).

2.6.3 Kekongruenan Lanjar

Kekongruenan lanjar adalah kongruen yang berbentuk axb (mod m) dengan m

adalah bilangan bulat positif, a dan b sembarang bilangan bulat, dan x adalah peubah bilangan bulat.

Nilai-nilai x dicari sebagai berikut :

ax = b + km

yang dapat disusun menjadi

a km b x 

dengan k adalah sembarang bilangan bulat. Cobakan untuk k = 0, 1, 2, … dan k = –1,

(38)

2.6.4 Bilangan Prima dan Relatif Prima

Bilangan prima adalah bilangan asli yang lebih besar dari 1, yang faktor pembaginya

adalah 1 dan bilangan itu sendiri. 2 dan 3 adalah bilangan prima. 4 bukan bilangan

prima karena 4 bisa dibagi 2. Sepuluh bilangan prima yang pertama adalah 2, 3, 5, 7,

11, 13, 17, 19, 23 dan 29.

Dua buah bilangan bulat a dan b dikatakan relatif prima jika PBB(a, b) = 1. Contoh : 20 dan 3 relatif prima sebab PBB(20, 3) = 1. Begitu juga 7 dan 11 relatif

prima karena PBB(7, 11) = 1. Tetapi 20 dan 5 tidak relatif prima sebab PBB(20, 5) = 5

≠ 1

. Jika a dan b relatif prima, maka terdapat bilangan bulat m dan n sedemikian sehingga ma + nb = 1.

Bilangan 20 dan 3 adalah relatif prima karena PBB(20, 3) =1, atau dapat ditulis 2 . 20

+ (–13) . 3 = 1 dengan m = 2 dan n = –13. Tetapi 20 dan 5 tidak relatif prima karena PBB(20, 5) = 5 ≠ 1 sehingga 20 dan 5 tidak dapat dinyatakan dalam m . 20 + n . 5 = 1.

2.6.5 Remainder Theorem

Teorema sisa (Remainder Theorem) adalah suatu cara untuk menentukan sisa pembagian suatu sukubanyak jika dibagi faktor linear (x - c) atau secara umum oleh faktor linear (ax + b). Jika sukubanyak P dibagi oleh faktor linear (x - c), maka sisanya adalah P(c), jika sukubanyak P dibagi oleh faktor linear (ax+b), a ≠0, maka sisanya adalah P(-b/a).

Tentukan sisanya jika 2x3– x2 + 7x + 6 dibagi x + 1 atau dibagi x – (-1). Jawab:

sisanya adalah P(-1) = 2.(-1)3– (-1)2 + 7(-1) + 6

(39)

2.7Chinese Remainder Theorem

Chinese remainder theorem adalah teorema mengenai kekongruenan lanjar dalam teori bilangan bulat yaitu aritmetika modulo. Teorema ini pertama kali ditemukan oleh Sun

Tze pada abad pertama.

Misalkan m1, m2, ...,mn adalah bilangan bulat positif sedemikian sehingga

FPB(mi, mj) = 1 untuk i ≠ j. Maka sistem kongruen lanjar x ≡ ak (mod mk) mempunyai

sebuah solusi unik modulo m = m1.m2. ... .mn.

Sebagai contoh, Sun Tze mengajukan pertanyaan sebagai berikut : Tentukan sebuah bilangan bulat yang bila dibagi dengan 5menyisakan 3, bila dibagi 7 menyisakan 5, dan bila dibagi 11 menyisakan 7.(Putri, 2007)

Pertanyaan Sun Tze di atas dapat dirumuskan kedalam system kongruen lanjar:

x 3 (mod 5)

x 5 (mod 7)

x 7 (mod 11) Penyelesaian :

Kongruen pertama, x 3 (mod 5), memberikan x = 3 + 5k1 untuk beberapa nilai k. Subsitusikan ke dalam kongruen kedua menjadi 3 + 5k1 5 (mod 7), dari sini diperoleh k1 6 (mod 7), atau k1 = 6 + 7k2 untuk beberapa nilai k2. Jadi didapatkan x

(40)

Solusi unik ini mudah dibuktikan sebagai berikut. Solusi tersebut modulo m =

m1 m2 m3 = 5 7 11 = 5 77 = 11 35. Karena 77 3 1 (mod 5), 55 6 1 (mod 7), dan 35 6 1 (mod 11), solusi unik dari sistem kongruen tersebut adalah

x 3 77 3 + 5 55 6 + 7 35 6 (mod 385)

(41)

BAB 3 PEMBAHASAN

3.1 Proses Pada RSA

3.1.1 Pembentukan kunci

Proses pembangkitan kunci pada kriptografi RSA adalah sebagai berikut :

a. Pilih dua buah bilangan prima sembarang p dan q. Jaga kerahasiaan p dan q. b. Hitung n = p * q. Besaran n ini tidak perlu dirahasiakan.

c. Hitung m = (p-1) * (q-1). Sekali m telah dihitung, p dan q dapat dihapus untuk mencegah diketahuinya oleh pihak lain.

d. Pilih sebuah bilangan bulat untuk kunci publik, sebut namanya e, yang relatif prima terhadap m (relatif prima berarti GCD(e, m) = 1) dengan syarat e (p-1), e (q-1), dan e < n.

e. Hitung kunci dekripsi, d, dengan kekongruenan ed ≡1 (mod m).

Contoh penerapan pembangkitan kunci algoritma RSA :

a. Menentukan bilangan acak p dan q p = 13, q = 5

b. Hitung n dan m

n = 13 * 5 = 65 dan m = 12 * 4 = 48

c. Cari nilai e

GCD(e, 48) = 1 Misalnya, e = 2 maka GCD(2, 48) = 2 e = 3 maka GCD(3, 48) = 3 e = 4 maka GCD(4, 48) = 4

(42)

d. Lalu cari nilai d

Misalnya

k = 1 maka d = 9,8 k = 2 maka d = 19,4

k = 3 maka d = 29 , jadi digunakan d = 29

Dari contoh penerapan di atas didapat kunci Publik e = 5, n = 65, dan kunci privat d = 29, n = 65.

3.1.2 Proses Enkripsi

Setelah proses proses pembangkitan kunci selesai, kemudian lanjut ke proses enkripsi

pesan menggunakan kunci publik dari hasil pembangkitan kunci dengan menggunakan

rumus :

C = Pe mod n.

Menggunakan kunci yang diperoleh di atas kita akan mencoba untuk malakukan

enkripsi pesan sederhana. Misalnya P = 48, maka akan diperoleh C sebagai berikut :

C = Pe mod n = 485 mon 65

= 254803968 mod 65 = 3

Jadi hasil enkripsi 48 menggunakan kunci yang diperoleh di atas adalah 3.

3.1.3 Proses Dekripsi

Untuk mengembalikan pesan ciphertext menjadi plaintext (pesan asli) adalah dengan menggunakan rumus dekripsi RSA sebagai berikut :

(43)

Dengan menggunakan pesan hasil enkripsi dan kunci yang diperoleh di atas

dapat dilakukan dekripsi pesan sebagai berikut :

P = Cd mod n = 329 mod 65

= 68630377364883 mod 65 = 48

Dari hasil dekripsi di atas dapat dibuktikan bahwa hasil enkripsi pesan dapat

didekripsi kembali ke pesan asli.

3.2 Proses Pada RSA-CRT

3.2.1 Pembentukan kunci (Key Generation)

Pembentukan kunci pada RSA-CRT berbeda dengan pembentukan kunci pada RSA

standart. Pembentukan kunci pada RSA-CRT adalah sebagai berikut :

a) Misalkan p dan q adalah dua bilangan prima yang sangat besar dengan ukuran yang hampir sama dimana p > q.

b) Hitung n = p*q dan m = (p-1)(q-1).

c) Pilih sebuah bilangan bulat untuk kunci publik, sebut namanya e, yang relatif prima terhadap m (relatif prima berarti GCD(e, m) = 1) dengan syarat e (p-1), e (q-1), dan e < n.

d) Hitung nilai

e) Hitung nilai dp = d mod (p-1) dan dq = d mod (q-1)

(44)

3.2.2 Poses Dekripsi pada RSA-CRT

Karena enkripsi RSA-CRT sama dengan prosedur enkripsi RSA standar, saat ini

perhatian difokuskan pada dekripsi RSA-CRT.

Pada deskripsi RSA standart kita mendekripsi pesan dengan menggunakan

rumus P = Cd mod n, sehingga perhitungan tersebut tergantung pada nilai d dan n. Jika nilai d besar, maka perhitungannya akan lebih lama karna nilai eksponen yang besar d.

Sedangkan pada RSA-CRT kita menggunakan d hanya untuk membangkitkan kunci dp

dan dq dimana dp dan dq akan lebih kecil nilainya dari d karna perhitungannya menggunakan d modulus p dan q. Rumus untuk menghitung dp dan dq adalah sebagai berikut [PKCS1] :

d mod (p-1) = e-1 mod (p-1)

d mod (q-1) = e-1 mod (q-1)

dp = e-1 mod (p-1) = d mod (p-1)

dq = e-1 mod (q-1) = d mod (q-1)

Dari hasil perhitungan di atas akan didapatkan nilai dp dan dq yang lebih kecil dari d.

Selanjutnya kita menghitung representasi pesan m1 dan m2 yang akan digunakan untuk perhitungan akhir proses dekripsi menggunakan rumus sebagai

berikut :

m1 = cdP mod p

m2 = cdQ mod q

m1 dan m2 dari hasil perhitungan di atas kita subsitusikan ke dalam rumus

Garner’s untuk menghitung solusi akhir dekripsi sebagai berikut :

(45)

h = qInv.(m1 - m2) mod p

m = m2 + h.q

Hasil perhitungan m di atas adalah solusi akhir dari proses dekripsi dimana m

akan bernilai sama dengan pesan sebelum di enkripsi.

Untuk lebih memahami proses dekripsi RSA-CRT, berikut contoh

implementasi RSA-CRT.

Contoh :

Pilih p = 11, q = 7, P = 8; N = 11*7 = 77, m = 10*6 =60.

e : FPB(e,60)=1; e = 7;

d =

dp = d mod (p-1) = 43 mod (11-1)=3; dq = d mod(q-1) = 43 mod (7-1)=1.

Plainteks kita enkripsi dengan menggunakan rumus enkripsi sebagai berikut :

C = Pe mod n = 87 mod 77 =2097152 mod 77 =57.

Pesan asli P = 8 setelah dienkripsi menghasilkan C = 57. Jika kita dekripsi menggunakan RSA-CRT sebagai berikut :

=

M1 = Cdp mod p=573 mod 11=54 mod 11 =8

M2 = Cdq mod q=571 mod 7 =57 mod 7 =1

h=qInv*(m1-m2) mod p = 8*(8-1) mod 11 = 40 mod 11 = 1

P = m2+h*q = 1 +1*7 =8

Dari perhitungan di atas diperoleh nilai P = 8. Dengan demikian hasil akhir adalah 8

(46)

Dari contoh di atas dapat dilihat perbedaan nilai eksponen d dengan eksponen

dp dan dq. dp < d, dq < d (3 < 43, 1 < 43) sehingga perhitungan dekripsi pada RSA-CRT lebih cepat dibandingkan RSA biasa karna memiliki nilai eksponen dp, dq lebih kecil dibandingkan d.

3.3 Perbedaan RSA dengan RSA-CRT

Perbedaan antara RSA dengan RSA-CRT terletak pada proses pembangkitan kunci dan

proses dekripsinya. Perbedaan pada dekripsi RSA dengan dekripsi RSA-CRT tersebut

dikarenakan pada RSA-CRT ditambahkan teorema CRT dimana penambahan teorema

ini diharapkan bisa menambah kecepatan proses perhitungan dekripsinya.

Secara teori dapat dilihat dekripsi pada RSA-CRT lebih cepat perhitungannya

dibandingkan dengan dekripsi RSA. Hal ini dapat dilihat dari kompleksitas dekripsi

RSA (P = Cd mod n) bergantung langsung pada ukuran d dan n. Eksponen dekripsi d

menspesifikasikan bilangan perkalian modulo yang dibutuhkan untuk melakukan

eksponensiasi, dan modulo n menentukan ukuran dari hasil sementaranya. Cara untuk mengurangi ukuran d dan n adalah dengan menggunakan teori Chinese Remainder Theorem (CRT).

Berikut perbandingan antara dekripsi RSA dengan RSA-CRT. Misalkan kita

menggunakan contoh di atas, dimana p = 11 dan q = 7, n = 77, m = 60, e = 7, d = 43,

dp = 3, dq = 1, dan Plainteks M = 8. Jika di enkripsi maha dihasilkan ciperteks C = 57.

Jika ciperteks didekripsi dengan menggunakan RSA-CRT maka akan

menghasilkan pergitungan seperti di bawah ini :

=

M1 = Cdp mod p=573 mod 11=54 mod 11 =8

M2 = Cdq mod q=571 mod 7 =57 mod 7 =1

(47)

P = m2+h*q = 1 +1*7 =8

Jika ciperteks didekripsi dengan RSA adalah sebagai berikut :

M = Cd mod n = 5743 mod 77 = 8

Dari perhitungan di atas dapat dilihat penurunan nilai eksponen d dan modulo n

sehingga dapat disimpulkan bahwa proses dekripsi pada RSA-CRT lebih cepat

dibandingkan dengan RSA standart.

Untuk lebih memperjelas perbedaan kecepatan perhitungan deskripsi pada RSA

dengan RSA-CRT berikut dibuat bagan perbadingan proses pada RSA dan RSA-CRT

(48)

Gambar 3.1 Bagan perbandingan RSA dengan RSA-CRT

RSA RSA-CRT

p, q, n=(p*q), m = (p-1)(q-1) e : FPB(e, m) = 1

p, q, (q > p)

n = p*q, m = (p-1)(q-1) e: FPB(e,m)=1

dp = d mod (p-1) dq = d mod (q-1)

Pembangkitan Kuci Pembangkitan Kuci

Kunci Publik : e, n

Kunci Rahasia : d, n

Kunci Publik : e, n

Kunci Rahasia : p, q, d, dp, dq

Enkripsi

Enkripsi Deskripsi

M1 = Cdp mod p

M2 = Cdq mod q

h=qInv*(m1-m2) mod p

P = m2+h*q

(49)

Gambar 3.2 Bagan Contoh perbandingan RSA dengan RSA-CRT

Pembangkitan Kuci Pembangkitan Kuci

Kunci Publik : e=3, n=17947

Kunci Rahasia : d=11787, n=17947

Kunci Publik : e=3, n=17680 Catatan : kita menambahkan p pada (m1-m2)untuk menghindari nilai negatip.

Deskripsi

Jika diketahui p = 137, q=131, dan pesan P = 513. Berikut perbandingan perhitungan RSA dengan RSA-CRT :

Contoh :

(50)

3.4 Flowchart Algoritma RSA

(51)

3.5 Flowchart Algoritma RSA-CRT

(52)

3.6 Pengujian Pada Program

Pengujian program yang dilakukan pada penelitian ini adalah dengan menggunakan

pesan berupa bilangan integer. Hal ini dilakukan agar bisa diimplementasikan pada

program yang lebih sederhana sehingga dengan mudah diketahui perbedaan kecepatan

pada RSA dan RSA dengan CRT.

Bahasa pemrograman yang digunakan dalam pengujian ini adalah bahasa

pemograman Java.

3.6.1 Pengujian Algoritma RSA

Pengujian program dilakukan dengan nilai m sebagai berikut :

“123456789098765432101234567890987654321012345678909876543210123456789

098765432101234567890987654321012345678909876543210123456789098765432

101234567890987654321012345678909876543210123456789098765432101234567

890987654321012345678909876543210"

(53)

3.6.2 Pengujian Algoritma RSA-CRT

Pengujian program dilakukan dengan nilai m yang sama dengan RSA yaitu sebagai

berikut :

“123456789098765432101234567890987654321012345678909876543210123456789

098765432101234567890987654321012345678909876543210123456789098765432

101234567890987654321012345678909876543210123456789098765432101234567

890987654321012345678909876543210"

Gambar 3.6 Proses Enkripsi dan Dekripsi RSA-CRT dengan Java

3.6.3 Pebandingan Hasil Pengujian

Untuk melihat perbandingan waktu proses RSA dan RSA-CRT dilakukan percobaan

menggunakan pesan dan komputer yang sama. Percobaan dilakukan sebanyak 10

(54)

Tabel 4.1 Perbandingan Waktu Proses Pada RSA dan RSA-CRT

PERCOBAAN RSA RSA-CRT

I 3,234 3,136

II 2,394 2,129

III 2,934 1,513

IV 2,355 1,139

V 5,044 3,282

VI 4,283 1,844

VII 3,482 1,398

VIII 3,835 2,566

IX 3,625 1,734

X 5,486 2,093

JUMLAH 36,672 20,834

Berdasarkan percobaan di atas didapat perbedaan waktu proses pada RSA dan

RSA-CRT. Proses RSA membutuhkan rata-rata waktu proses 3,667 detik, sementara

untuk RSA-CRT membutuhkan waktu rata-rata 2,083 detik. Dengan demikian

diperoleh perbedaan waktu proses dimana RSA membutukan waktu 1,584 detik lebih

lama sehingga dapat disimpulkan proses pada RSA-CRT lebih cepat dibandingkan

(55)

BAB 4

KESIMPULAN DAN SARAN

4.1 Kesimpulan

Adapun kesimpulan yang diperoleh dari penelitian ini adalah :

1. Pada RSA standar, baik enkripsi maupun dekripsi merupakan pemangkatan

modular (modular exponentiation) yang dapat dilakukan dengan serangkaian perkalian modular. Proses ini memerlukan waktu komputasi yang relatif lama.

2. Waktu komputasi dapat direduksi dengan mengimplementasikan Chinese

Remainder Theorem (CRT) pada RSA.

3. RSA-CRT berbeda dari RSA standar dalam hal pembangkitan kunci dan

dekripsi.

4. Waktu komputasi pada RSA-CRT lebih cepat jika dibandingkan dengan RSA

standart.

(56)

4.2 Saran

Beberapa saran dalam penelitian ini adalah :

1. Penigkatan kecepatan komputasi RSA-CRT pada penelitian ini masih bisa

ditingkatkan lagi dengan menggunakan algoritma Rebalance RSA atau dengan menggunakan algoritma lainnya.

2. Aplikasi pemrograman yang dibuat dalam penelitian ini bisa dibilang masih

sederhana sehingga dalam hal ini masih bisa ditingkatkan dengan program

yang lebih komplit.

3. Pembuatan aplikasi pemrograman yang dibuat pada penelitian ini adalah

dengan menggunakan bahasa Java dan tidak ditutup kemungkinan jika

menggunakan bahasa pemrograman yang lain seperti Visual Basic dan

(57)

DAFTAR PUSTAKA

Artikel non-personal. 2002. Egyptian Hieroglyphs.

http://en.wikipedia.org/wiki/Egyptian_hieroglyphs (diakses tanggal 20 September 2012).

Ariyus, Dony. 2009. Keamanan Multimedia. Yogyakarta : Andi.

Denning, Dorothy Elizabeth R. 1982. Cryptography and Data Security. Purdue University.

Erivani, Putri. 2007. Implementasi Chinese Remainder Theorem Dalam

Membentuk Varian RSA (Rivest-Shamir-Adleman) Untuk Pengamanan Data Digital. Institut Teknologi Bandung.

Munawar. 2012. Perancangan Algoritma Sistem Keamanan Data Menggunakan

Metode Kriptografi Asimetris. Komputa Edisi. 1 Volume. 1. Munir, Rinaldi. 2006. Kriftografi. Bandung : Informatika.

Shinde, G.N dan HS Fadewar. 2008. Faster RSA Algorithm for Decryption Using Chinese Remainder Theorem. ICCES Volume 5 No.4, pp.255-261.

Rahajoeningroem, Tri., dan Muhammad Aria. 2009. Jurnal Studi dan

Implementasi Algoritma RSA untuk Pengamanan Data Transkrip Akademik Mahasiswa. Universitas Komputer Indonesia.

Prabawa, Aditya Eka. 2010. Analisis Perbandingan dan Pengujian Algoritma Kunci Publik RSA dan Paillier. Institut Teknologi Bandung.

Saputra, Dimas Gilang. 2010. Aplikasi Chinese Remainder Theorem dalam Secret Sharing. Institut Teknologi Bandung.

Wagner, Neal R. 2003. The Laws of Cryptography with Java Code.

(58)

LISTING PROGRAM

// RSAPublicKey: RSA public key

import java.math.*; // for BigInteger public class RSAPublicKey {

public BigInteger n; // public modulus

public BigInteger e = new BigInteger("3"); // encryption exponent

public String userName; // attach name to each public/private key pair

public RSAPublicKey(String name) { userName = name;

}

// setN: to give n a value in case only have public key public void setN(BigInteger newN) {

n = newN; public BigInteger RSAEncrypt(BigInteger m) { return m.modPow(e, n);

}

// RSAVerify: same as encryption, since RSA is symmetric

public BigInteger RSAVerify(BigInteger s) { return s.modPow(e, n);

} }

// RSAPrivateKey: RSA private key import java.math.*; // for BigInteger import java.util.*; // for Random

public class RSAPrivateKey extends RSAPublicKey{

private final BigInteger TWO = new BigInteger("2"); private final BigInteger THREE = new BigInteger("3"); private BigInteger p; // first prime

private BigInteger q; // second prime

private BigInteger d; // decryption exponent

public RSAPrivateKey(int size, Random rnd, String name) {

(59)

public void generateKeyPair(int size, Random rnd) { //

public BigInteger nextPrime(BigInteger x) {

if ((x.remainder(TWO)).equals(BigInteger.ZERO)) x = x.add(BigInteger.ONE);

// RSADecrypt: decryption function

public BigInteger RSADecrypt(BigInteger c) { return c.modPow(d, n);

}

(60)

public BigInteger RSASign(BigInteger m) { return m.modPow(d, n);

}

public BigInteger RSASignAndEncrypt(BigInteger m, RSAPublicKey other) {

public BigInteger RSADecryptAndVerify(BigInteger c, RSAPrivateKey

// RSATest: Test RSA Implementation import java.math.*; // for BigInteger import java.util.*; // for Random public class RSATest {

public static void main(String[] args) { long start;

long end;

start = System.currentTimeMillis();//menghitung waktu proses dalam detik

Random rnd = new Random();

BigInteger m, m1, m2, m3, c, s, s1;

RSAPrivateKey alice = new RSAPrivateKey(1024, rnd, "Alice");

RSAPrivateKey bob = new RSAPrivateKey(1024, rnd, "Bob ");

m = new BigInteger(

(61)

"1234567890987654321012345678909876543210" + "1234567890987654321012345678909876543210"); System.out.println("Pesan Asli m:\n" + m + "\n");

c = bob.RSAEncrypt(m); // Using Bob's public key System.out.println("Pesan Hasil Enkripsi:\n" + c + "\n");

m1 = bob.RSADecrypt(c); // Using Bob's private key System.out.println("Pesan Asli Setelah di

Dekripsi:\n" + m1 + "\n");

end = System.currentTimeMillis();

// RSAPublicKey: RSA public key

import java.math.*; // for BigInteger public class RSAPublicKey {

public BigInteger n; // public modulus

public BigInteger e = new BigInteger("3"); // encryption exponent

public String userName; // attach name to each public/private key pair

public RSAPublicKey(String name) { userName = name;

}

// setN: to give n a value in case only have public key public void setN(BigInteger newN) {

n = newN; public BigInteger RSAEncrypt(BigInteger m) { return m.modPow(e, n);

}

// RSAVerify: same as encryption, since RSA is symmetric

(62)

return s.modPow(e, n); }

}

// RSAPrivateKeyFast: RSA private key, using fast CRT algorithm

import java.math.*; // for BigInteger import java.util.*; // for Random

public class RSAPrivateKeyFast extends RSAPublicKey{ private final BigInteger TWO = new BigInteger("2"); private final BigInteger THREE = new BigInteger("3");

private BigInteger p; // first prime private BigInteger q; // second prime

private BigInteger d; // decryption exponent

private BigInteger p1, pM1, q1, qM1, phiN; // for key generation

private BigInteger dp, dq, c2; // for fast decryption

public RSAPrivateKeyFast(int size, Random rnd, String name) {

super(name); generateKeyPair(size, rnd); }

(63)

// remaining stuff needed for fast CRT decryption

public BigInteger nextPrime(BigInteger x) {

if ((x.remainder(TWO)).equals(BigInteger.ZERO)) x = x.add(BigInteger.ONE);

// RSADecrypt: decryption function, fast CRT version public BigInteger RSADecrypt(BigInteger c) {

// See 14.71 and 14.75 in Handbook of Applied

public BigInteger RSASign(BigInteger m) { // return m.modPow(d, n);

return RSADecrypt(m); // use fast CRT version }

(64)

return other.RSAEncrypt(RSASign(m)); }

public BigInteger RSADecryptAndVerify(BigInteger c, RSAPrivateKeyFast

// RSATestFast: Test Fast RSA Implementation import java.math.*; // for BigInteger

import java.util.*; // for Random public class RSATestFast {

public static void main(String[] args) { long start;

long end;

start = System.currentTimeMillis();//menghitung waktu proses dalam detik RSAPrivateKeyFast(1024, rnd, "Bob "); m = new BigInteger(

"1234567890987654321012345678909876543210" + "1234567890987654321012345678909876543210" + "1234567890987654321012345678909876543210" + "1234567890987654321012345678909876543210" + "1234567890987654321012345678909876543210" + "1234567890987654321012345678909876543210"); System.out.println("Pesan Asli m:\n" + m + "\n"); c = bob.RSAEncrypt(m); // Using Bob's public key System.out.println("Pesan setelah Di Enkripsi :\n" + c + "\n");

m1 = bob.RSADecrypt(c); // Using Bob's private key System.out.println("Pesan Asli setelah di

Dekripsi:\n" + m1 + "\n");

(65)

System.out.println("\nTime : " + ((end - start) / 1000.0) + " detik");

Gambar

Gambar 2.1 Egyptian Hieroglyphs
Gambar 2.2 Proses enkripsi/dekripsi Sederhana
Gambar 2.3 Ilustrasi Algoritma Kriptografi Simetris
Gambar 2.4 Ilustrsi Algoritma Kriptografi Asimetris
+7

Referensi

Dokumen terkait

Berdasarkan kesimpulan di atas, perlu kiranya diketahui beberapa saran sebagai berikut: (1) Sebagai pengambil kebijakan perlu kiranya mengapresiasi guru- guru

Dengan analisa SWOT dan IE-Matrix, disarankan beberapa hal, yaitu: strategi market intensive dilakukan melalui penetrasi pasar dan pengembangan pasar; mengembangkan

[r]

Landasan pendidikan NU ini berikutnya diturunkan menjadi Anggaran Dasar NU sebagaimana terdapat pada Pasal IX Anggaran Dasar NU sebagai berikut “Di bidang pendidikan, pengajaran

karona cuaoh untuk nondapatkan aurat porlntah darl hakin dongas oogoro, codon^can koadaaa aangat mcndcoak untuk cogara ncnboolah curat-aurat yang borada dl Kaator Poa* naka Jalan

Demikian atas perhatian dan kehadirannya disampaikan terima kasih. ASTON

Namun demikian Pemerintah Kota Depok terus berupaya mengatasi keterbatasan-keterbatasan keuangan daerah dengan menyempurnakan manajemen keuangan, melakukan efisiensi dan

Tujuan penelitian ini adalah membandingkan pemeriksaan dokter gigi dan bukan dokter gigi dan untuk mendapatkan ketepatan pemeriksaan agar hasil survei kesehatan