4
Makalah IF3058 Kriptografi Sem. II Tahun 2011/2012 Perbandingan Algoritma Kunci Public RSA dan ElGamal Wico Chandra - 13509094 Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, Jl. Ganesha 10 Bandung 40132, Indonesia [email protected] AbstractAlgortima kunci publik merupakan teknik kriptografi asimertris, yang kunci untuk dekripsi dan enkripsi berbeda. Pada makalah ini, dibahas perbandingan antara algoritma RSA dan ElGamal. Dari hasil percobaan yang didapatkan RSA memiliki keunggulan dalam hal kecepatan Enkripsi dan dekripsi serta dalam aplikasi enkripsi halaman web yang lebih efisien, ukuran hasil enkripsi memiliki ukuran yang sama dengan halaman sebenarnya. Untuk ElGamal memiliki keunggulan dalam hal kecepatan pembangkitan kunci publik dan kunci privat serta keefektifan aplikasi dalam dunia tanda tangan digital yang selalu menghasilkan tanda yang berbeda-beda. Index TermsRSA, ElGamal, Tanda Tangan Digital I. PENDAHULUAN Kriptografi adalah kata serapan dari bahasa asing, dalam hal ini bahasa inggris, yaitu cryptography. Cryptography atau cryptology berasal dari bahasa Yunani, yaitu κρσπτός, kryptos, "hidden, secret" atau “tersembunyi, rahasia”, dan γράφω, gráphō, "I write" atau “aku menulis”, dan -λογία, -logia atau “ilmu”. Kriptografi adalah ilmu atau seni untuk menyembunyikan informasi. Proses menyembunyikan informasi ini dilakukan dengan teknik penyandian, atau mengubah pesan atau informasi menjadi sandi-sandi yang tidak dimengerti oleh orang lain, selain pembuat dan penerimanya. Pada kriptografi dikenal istilah-istilah seperti plain text, cipher text, enkripsi, dan dekripsi. Plain text adalah pesan asli yang ingin dikirimkan. Cipher text adalah pesan yang telah disandikan dengan metode enkripsi tertentu. Enkripsi adalah proses mengubah sebuah plain text menjadi cipher text, dan dekripsi adalah proses mengubah sebuah cipher text menjadi plain text. Transaksi data banyak dilakukan dalam kehidupan sehari-hari. Beberapa informasi yang dikirimkan tersebut adalah informasi-informasi yang bersifat rahasia dan pribadi. Karena itu data-data yang dikirimkan perlu dirahasiakan sehingga pihak lain yang mencoba mendapatkan informasi tersebut tanpa izin tidak akan dapat mengetahuinya. Pada masa lalu, informasi yang dianggap rahasia adalah seperti pada masa peperangan. Informasi mengenai operasi militer, kekuatan militer, dan sebagainya adalah informasi yang tidak boleh sampai ketahuan oleh pihak musuh. Karena itu informasi- informasi ini perlu disandikan ketika ingin dikirimkan ke tempat lain, sehingga jika informasi yang dikirim jatuh ke tangan pihak musuh, mereka tetap tidak mengerti. Sementara pada era modern ini, kita sering melakukan transaksi secara elektronik. Transaksi- transaksi ini juga perlu dilindungi karena mengandung informasi yang bersifat pribadi, misalnya nomor kartu kredit. Karena itu kriptografi menjadi sebuah cabang ilmu yang terus diteliti dan dikembangkan untuk melindungi kerahasiaan data. Perkembangan teknologi dan ditemukannya komputer membuat penggunaan algoritma kriptografi yang lebih kompleks lagi menjadi terbuka kemungkinannya. Banyak penelitian mengenai algoritma kriptografi telah dilakukan sehingga muncul metode baru dalam sistem penyandian pesan. Metode-metode enkripsi yang selama ini dikenal adalah dengan menggunakan sebuah kunci atau kode khusus yang digunakan untuk menyandikan dan membaca pesan. Misalnya dalam Caesar Cipher digunakan 3 huruf setelah huruf yang digunakan untuk menyandikan pesan. Dan hal itu berarti untuk membaca pesan, kita cukup menggeser setiap huruf yang muncul dengan 3 huruf sebelumnya. Metode ini dikenal dengan symmetric- key cryptography, dimana untuk membaca dan menyandikan sebuah pesan digunakan sebuah key atau kunci yang sama. Di tahun 1976, sebuah sistem kriptografi yang asymmetric-key dipublikasikan oleh Whitfield Diffie dan Martin Hellman yang dipengaruhi oleh metode distribusi kunci publik (public-key) yang dikembangkan oleh Ralph Merkle. Sistem pertukaran kunci ini dikenal dengan nama Diffie-Hellman key exchage (pada tahun 2002, Hellman menyarankan agar nama ini diubah menjadi Diffie-Hellman-Merkle key exchage atas jasa Merkle dalam penemuan metode public-key). Sistem ini juga disebut public-key cryptography. Dalam public-key cryptography, kedua pihak yang ingin mengirimkan dan menerima pesan akan saling bertukar kunci yang digunakan untuk mengenkripsi data, sedangkan kunci untuk melakukan dekripsi tetap dirahasiakan. Salah satu public-key cryptography adalah kriptografi RSA. Oleh karena banyaknya algoritma kriptogarfi kunci publik maka pada makalah ini akan dibahas mengenai perbandingan dua algoritma kunci publik yaitu RSA dan

Perbandingan Algoritma Kunci Public RSA dan ElGamalinformatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/2011-2012/... · dengan nama Diffie-Hellman key exchage (pada tahun 2002,

Embed Size (px)

Citation preview

Makalah IF3058 Kriptografi – Sem. II Tahun 2011/2012

Perbandingan Algoritma Kunci Public RSA dan ElGamal

Wico Chandra - 13509094

Program Studi Teknik Informatika

Sekolah Teknik Elektro dan Informatika

Institut Teknologi Bandung, Jl. Ganesha 10 Bandung 40132, Indonesia

[email protected]

Abstract—Algortima kunci publik merupakan teknik

kriptografi asimertris, yang kunci untuk dekripsi dan enkripsi

berbeda. Pada makalah ini, dibahas perbandingan antara

algoritma RSA dan ElGamal. Dari hasil percobaan yang

didapatkan RSA memiliki keunggulan dalam hal kecepatan

Enkripsi dan dekripsi serta dalam aplikasi enkripsi halaman

web yang lebih efisien, ukuran hasil enkripsi memiliki ukuran

yang sama dengan halaman sebenarnya. Untuk ElGamal

memiliki keunggulan dalam hal kecepatan pembangkitan

kunci publik dan kunci privat serta keefektifan aplikasi dalam

dunia tanda tangan digital yang selalu menghasilkan tanda

yang berbeda-beda.

Index Terms—RSA, ElGamal, Tanda Tangan Digital

I. PENDAHULUAN

Kriptografi adalah kata serapan dari bahasa

asing, dalam hal ini bahasa inggris, yaitu

cryptography. Cryptography atau cryptology berasal

dari bahasa Yunani, yaitu κρσπτός, kryptos, "hidden,

secret" atau “tersembunyi, rahasia”, dan γράφω, gráphō,

"I write" atau “aku menulis”, dan -λογία, -logia atau

“ilmu”. Kriptografi adalah ilmu atau seni untuk

menyembunyikan informasi. Proses menyembunyikan

informasi ini dilakukan dengan teknik penyandian, atau

mengubah pesan atau informasi menjadi sandi-sandi

yang tidak dimengerti oleh orang lain, selain

pembuat dan penerimanya.

Pada kriptografi dikenal istilah-istilah seperti plain

text, cipher text, enkripsi, dan dekripsi. Plain text adalah

pesan asli yang ingin dikirimkan. Cipher text adalah

pesan yang telah disandikan dengan metode enkripsi

tertentu. Enkripsi adalah proses mengubah sebuah

plain text menjadi cipher text, dan dekripsi adalah proses

mengubah sebuah cipher text menjadi plain text.

Transaksi data banyak dilakukan dalam

kehidupan sehari-hari. Beberapa informasi yang

dikirimkan tersebut adalah informasi-informasi yang

bersifat rahasia dan pribadi. Karena itu data-data yang

dikirimkan perlu dirahasiakan sehingga pihak lain yang

mencoba mendapatkan informasi tersebut tanpa izin tidak

akan dapat mengetahuinya.

Pada masa lalu, informasi yang dianggap

rahasia adalah seperti pada masa peperangan.

Informasi mengenai operasi militer, kekuatan militer, dan

sebagainya adalah informasi yang tidak boleh sampai

ketahuan oleh pihak musuh. Karena itu informasi-

informasi ini perlu disandikan ketika ingin dikirimkan

ke tempat lain, sehingga jika informasi yang dikirim jatuh

ke tangan pihak musuh, mereka tetap tidak mengerti.

Sementara pada era modern ini, kita sering

melakukan transaksi secara elektronik. Transaksi-

transaksi ini juga perlu dilindungi karena mengandung

informasi yang bersifat pribadi, misalnya nomor kartu

kredit. Karena itu kriptografi menjadi sebuah cabang ilmu

yang terus diteliti dan dikembangkan untuk melindungi

kerahasiaan data.

Perkembangan teknologi dan ditemukannya

komputer membuat penggunaan algoritma kriptografi

yang lebih kompleks lagi menjadi terbuka

kemungkinannya. Banyak penelitian mengenai algoritma

kriptografi telah dilakukan sehingga muncul metode baru

dalam sistem penyandian pesan. Metode-metode

enkripsi yang selama ini dikenal adalah dengan

menggunakan sebuah kunci atau kode khusus yang

digunakan untuk menyandikan dan membaca pesan.

Misalnya dalam Caesar Cipher digunakan 3 huruf

setelah huruf yang digunakan untuk menyandikan

pesan. Dan hal itu berarti untuk membaca pesan, kita

cukup menggeser setiap huruf yang muncul dengan 3

huruf sebelumnya. Metode ini dikenal dengan symmetric-

key cryptography, dimana untuk membaca dan

menyandikan sebuah pesan digunakan sebuah key atau

kunci yang sama.

Di tahun 1976, sebuah sistem kriptografi yang

asymmetric-key dipublikasikan oleh Whitfield Diffie dan

Martin Hellman yang dipengaruhi oleh metode distribusi

kunci publik (public-key) yang dikembangkan oleh

Ralph Merkle. Sistem pertukaran kunci ini dikenal

dengan nama Diffie-Hellman key exchage (pada tahun

2002, Hellman menyarankan agar nama ini diubah

menjadi Diffie-Hellman-Merkle key exchage atas jasa

Merkle dalam penemuan metode public-key). Sistem ini

juga disebut public-key cryptography. Dalam public-key

cryptography, kedua pihak yang ingin mengirimkan dan

menerima pesan akan saling bertukar kunci yang

digunakan untuk mengenkripsi data, sedangkan

kunci untuk melakukan dekripsi tetap dirahasiakan. Salah

satu public-key cryptography adalah kriptografi RSA.

Oleh karena banyaknya algoritma kriptogarfi kunci

publik maka pada makalah ini akan dibahas mengenai

perbandingan dua algoritma kunci publik yaitu RSA dan

Makalah IF3058 Kriptografi – Sem. II Tahun 2011/2012

ElGamal. Hal yang dibandingkan adalah masalah

performasi dalam melakukan enkripsi dan dekripsi suatu

pesan, dan aplikasinya dalam kehidupan sehari-hari.

Sumber: http://clean-clouds.com/2011/03/08/encryptionhybrid-approach/

Gambar 1 Skema Kunci Publik

II. RSA

RSA adalah salah satu contoh kriptografi yang

menerapkan konsep public key. Algoritma ini pertama

kali dipublikasikan di tahun 1977 oleh Ron Rivest, Adi

Shamir, dan Leonard Adleman dari Massachusetts

Institute of Technology (MIT). Nama RSA sendiri

adalah singkatan dari nama belakang mereka bertiga.

Clifford Cocks, seorang matematikawan Inggris

sebenarnya juga telah mengembangkan algoritma

yang hampir sama dengan RSA ini pada tahun 1973.

Namun algoritma buatannya tidak begitu dikenal oleh

publik, dan baru dipublikasi pada tahun 1997 karena

merupakan proyek rahasia. Walau begitu algoritma

yang dikembangkan Rivest, Shamir, dan Adleman

tidak berhubungan dengan pekerjaan Cocks.

Pada algoritma RSA terdapat 3 langkah utama yaitu

key generation (pembangkitan kunci), enkripsi, dan

dekripsi.

Kunci pada RSA mencakup dua buah kunci, yaitu

public key dan private key. Public key digunakan untuk

melakukan enkripsi, dan dapat diketahui oleh orang lain.

Sedangkan private key tetap dirahasiakan dan digunakan

untuk melakukan dekripsi.

Pembangkitan kunci atau key generation dari RSA

adalah sebagai berikut :

1. Pilih dua buah bilangan prima sembarang a dan b.

Kedua bilangan ini tidak boleh diketahui oleh orang

lain

2. Hitung . Hasil dari perkalian ini tidak perlu

dirahasiakan dari pihak luar

3. Hitung . Setelah m dihitung

maka kedua bilangan, a dan b, sudah dapat dibuang

(dihapus) untuk menjaga kerahasian dari bilangan

tersebut

4. Pilih sebuah bilangan bulat untuk kunci publik, sebut

namanya e, yang relatif prima terhadap m (relatif

prima berarti ) dengan syarat

5. Hitung kunci dekripsi, d, dengan kekongruenan

Dari hasil pembangkitan kunci didapat kunci publik,

e, dan kunci privat, d. Seperti yang sudah dijelaskan

sebelumnya kunci publik digunakan untuk mengenkripsi

suatu pesan dengan menggunakan rumus

Sedangkan untuk proses dekripsi menggunakan

rumus

Blok-blok plainteks dinyatakan dengan , ...

, pn (harus dipenuhi persyaratan bahwa nilai pn harus

terletak dalam himpunan nilai 0, 1, 2, ..., n-1 untuk

menjamin hasil perhitungan tidak berada di luar

himpunan). Pada langkah kelima pembangkitan kunci

atau key generation, kekongruenan

sama dengan . Sehingga dapat pula

dikatakan bahwa ekivalen dengan . Maka d dapat dihitung dengan cara yang

sederhana dengan persamaan

Dengan mencoba nilai k = 1, 2, 3, ..., diperoleh nilai d

yang bulat. Nilai d inilah yang dirahasiakan sebagai kunci

privat, yang digunakan untuk mendekripsi suatu pesan

yang sudah dienkripsi menggunakan kunci publik e .

Dalam implementasi besar dari nilai a dan b adalah

suatu bilangan prima yang lebih besar dari 100 digit. Hal

ini diperlukan agar untuk menfaktorkan hasil perkalian

dibutuhkan waktu yang sangat lama untuk menemukan

kedua bilangan tersebut.

Kekuatan algoritma RSA terletak pada tingkat

kesulitan dalam memfaktorkan bilangan menjadi

faktor primanya, dalam hal ini memfaktorkan n menjadi a

dan b. Karena sekali n berhasil difaktorkan, maka

menghitung nilai m adalah perkara mudah. Meskipun

nilai e diumumkan, perhitungan kunci d tidaklah mudah

pula karena nilai m yang tidak diketahui.

III. ELGAMAL

Algoritma Elgamal merupakan salah satu algoritma

kriptografi kunci-publik yang dibuat oleh Taher ElGamal

pada tahun 1984. Algoritma in pada umumnya digunakan

untuk digital signature, namun kemudian dimodifikasi

sehingga juga bisa digunakan untuk enkripsi dan

deskripsi. ElGamal digunakan dalam perangkat lunak

sekuriti yang dikembangkan oleh GNU, program PGP,

dan pada sistem sekuriti lainnya. Kekuatan algoritma ini

terletak pada sulitnya menghitung logaritma diskrit.

Makalah IF3058 Kriptografi – Sem. II Tahun 2011/2012

Algoritma Elgamal tidak dipatenkan. Tetapi,

algoritma ini didasarkan pada algoritma Diffie – Hellman,

sehingga hak paten algoritma Diffie – Hellman juga

mencakup algoritma ElGamal. Karena hak paten

algoritma Diffie – Hellman berakhir pada bulan April

1997, maka algoritma ElGamal dapat diimplementasikan

untuk aplikasi komersil.

Besaran-besaran yang digunakan dalam

pembangkitan kunci publik algoritma ElGamal:

1. Bilangan prima, p (tidak rahasia)

2. Bilangan acak, g ( g < p) (tidak rahasia)

3. Bilangan acak, x (x < p) (rahasia)

4. Blok plainteks M (plainteks) (rahasia)

5. a dan b (cipherteks) (tidak rahasia)

Setelah bilangan p, g, dan x diketahui pada untuk

membangkitkan kunci publik dapat dilakukan dengan

rumus

Maka didapat kunci publik y dan kunci privat x, bilangan

p dan g harus diberikan kepada pihak luar agar dapat

menenkripsi pesan yang akan dikirim.

Sebelum melakukan enkripsi pesan dibagi menjadi

. Dengan syarat besar dari mn harus

lebih kecil dari p dan tidak boleh negatif. Untuk

melakukan enkripsi maka dilakukan tahap-tahap sebagai

berikut :

1. Pilih bilangan acak k, yang lebih kecil dari p – 1, dan

relatif prima dengan p – 1.

2. Hitung bilangan a dan b dengan menggunakan rumus

Untuk melakukan proses dekripsi maka dilakukan tahap-

tahap sebagai berikut:

1. Hitung nilai s, dengan rumus

2. Melakukan dekripsi pada pesan dengan

menggunakan rumus

IV. PERBANDINGAN PERFORMANSI

Pada percobaan digunakan bilangan prima yang

besarnya adalah 300 digit. Pesan yang digunakan untuk

menenkripsi memiliki panjang yang sedimikian sehingga

hanya diperlukan sekali operasi enkripsi. Hasil dari

percobaan dapat dilihat pada Tabel 1.

Tabel 1. Hasil percobaan kecepatan

RSA ElGamal

Pembangkitan Kunci 0.0005 s 0.0002 s

Enkripsi 0.016 s 0.041 s

Dekripsi 0.015 s 0.026 s

Untuk membangkitkan bilangan prima, Algoritma

RSA memiliki kecepatan yang lebih lambat 0.0003 detik

jika dibandingan dengan menggunakan algoritma

ElGamal. Hal ini disebabkan karena pada algoritma RSA

diperlukan operasi mod yang lebih banyak dibandingan

dengan algoritma Elgamal.

Pada Enkripsi, Algoritma RSA memiliki kecepatan

yang lebih cepat 0.025 detik jika dibandingkan dengan

algoritma Elgamal. Pada Dekripsi , Algoritma RSA

memiliki kecepata yang lebih cepat 0.011 detik jika

dibandingkan dengan algoritma ElGamal. Kecepatan

enkripsi dan dekripsi kedua algoritma dipengaruhi oleh

jumlah operasi mod.

V. APLIKASI DALAM KEHIDUPAN SEHARI-HARI

Kedua Algoritma ini, diaplikasikan pada halaman

web yang secure dan pada tanda tangan digital. Pada

halaman web, hasil enkripsi dengan algoritma Elgamal

menjadi dua kali lebih besar dari ukuran web sebelumnya.

Hal ini disebabkan karena adanya nilai a dan b yang

dihasil pada enkripsinya. Sedangkan pada algoritma RSA

hasil enkripsinya memiliki ukuran yang hampir sama

dengan ukuran yang semula. Hasil enkripsi pada pada

halaman web yang memiliki ukuran 59,232 bytes dapat

dilihat pada Tabel 2.

Tabel 2. Hasil percobaan enkripsi halaman web

Hasil Enkripsi Waktu

RSA 60,562 6 detik

ElGamal 119,502 13 detik

Untuk Tanda tangan digital, hasil signatur dari

algoritma elgmal berbeda-beda untuk tiap pesan yang

sama, sedangkan untuk algoritma RSA selalu sama untuk

pesan yang sama dan kunci yang sama. Pada Algoritma

Elgamal selalu berbeda disebabkan karena adanya

bilangan acak yang dibangkitkan pada saat enkripsi.

Sedangkan untuk RSA tidak ada. Apabila menggunakan

algoritma RSA untuk tanda tangan digital maka dapat

mengakbatkan orang lain dapat mengimitasi hasil dari

enkripsi RSA. Oleh karena itu, dapat disimpulkan bahwa

algoritma ElGamal lebih efektif bila digunakan untuk

tanda tangan digitial.

VI. KESIMPULAN

Berdasarkan hasil eksperimen yang dilakukan, dapat

diambil kesimpulan bahwa algoritma RSA memiliki

kecepatan yang lebih cepat dibandingan dengan algoritma

ElGamal dalam hal melakukan enkripsi dan dekripsi

pesan. Hal ini dapat dijelaskan dengan melihat rumus

Makalah IF3058 Kriptografi – Sem. II Tahun 2011/2012

yang digunakan untuk melakukan enkripsi dan dekripsi.

Pada algoritma RSA hanya melakukan operasi mod sekali

saja untuk tiap message sedangan pada algoritma elGamal

diperlukan sebanyak dua operasi mod dengan besar

bilangan yang sama yaitu 100 digit bilangan prima. Tetapi

dalam hal pembangkitan pasangan kunci publik dan kunci

privat algoritma ElGamal lebih cepat jika dibandingan

dengan algoritma RSA. Hal ini disebabkan karena jumlah

operasi mod yang digunakan dalam algoritma RSA lebih

banyak jika dibandingkan dengan algoritma Elgamal.

Algoritma RSA memiliki keunggulan yang lebih

cepat jika dibandingkan dengan algoritma ElGamal, tetapi

dalam hal kerumitan algoritma Elgamal memiliki

kerumitan yang lebih tinggi jika dibandingkan dengan

algoritma RSA. Hal ini mengakibatkan algoritma

ElGamal lebih susah untuk dipecahkan.

Dalam kehidupan sehari-hari, terutama dalam

keamanan pengiriman halaman web, algoritma RSA lebih

efisian jika dibandingankan dengan algoritma ElGamal

karena pada ElGamal hasil dari enkripsi merupakan dua

kali dari pesan semula. Hal ini mengakibatkan diperlukan

usaha lebih untuk mendownload ataupun meng-upload

halaman web yang mengakibatkan menjadi menjadi

lambat. Bukan karena ukuran saja, melainkan karena

kecepatan yang lebih lambat jika dibandingan dengan

algoritma RSA. Akan tetapi Algoritma ElGamal memiliki

keunggulan yaitu pada tanda tangan digital, yang selalu

menghasilkan hasil enkripsi yang berbeda-beda untuk

kunci dan pesan yang sama, sedangkan algoritma RSA

selalu mengahasil nilai yang sama.

VII. UCAPAN TERIMA KASIH

Saya mengucapakan terima kasih kepada Tuhan

Yang Maha Esa atas berkat-Nya sehingga saya dapat

menyelesaikan makalah ini, saya juga mengucapkan

terima kasih kepada dosen IF3058-Kriptografi karena

sudah memberi kesempatan sehingga saya dapat menulis

makalah ini. Saya berterima kasih kepada teman-teman

saya yang membantu saya dalam proses penyelesaian

makalah ini, sehingga makalah ini dapat selesai dengan

tepat waktu.

REFERENCES

[1] Munir, Rinaldi. 2006. Kriptografi. Bandung:

Informatika.

[2] A. J. Menezes, P. C. van Oorschot, and S. A.

Vanstone. "Chapter 8 Public Key Encryption".

Handbook of Applied Cryptography. CRC Press.

[3] http://agcrypt.wordpress.com/2008/02/25/elgamal-

algorithm/

Diakses tanggal 12 mei 2012 pukul 21.00 WIB

[4] http://clean-

clouds.com/2011/03/08/encryptionhybrid-approach/

Diakses tanggal 13 mei 2012 pukul 10.00 WIB

PERNYATAAN

Dengan ini saya menyatakan bahwa makalah yang saya

tulis ini adalah tulisan saya sendiri, bukan saduran, atau

terjemahan dari makalah orang lain, dan bukan plagiasi.

Bandung, 14 Mei 2012

Wico Chandra – 13509094