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
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
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
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
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
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.
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.
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
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
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
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
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.
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.
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.
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
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
(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
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.
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
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.
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
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
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
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
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
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.
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
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
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
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
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
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
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)
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
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
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)
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 ax b (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,
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
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
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)
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
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 :
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)
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 :
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
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
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
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
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 :
3.4 Flowchart Algoritma RSA
3.5 Flowchart Algoritma RSA-CRT
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"
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
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
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.
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
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.
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) {
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);
}
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(
"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
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); }
// 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 }
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");
System.out.println("\nTime : " + ((end - start) / 1000.0) + " detik");