Implementasi Algoritma RSA

Unduh sebagai pdf atau txt
Unduh sebagai pdf atau txt
Anda di halaman 1dari 26

Implementasi Gabungan Algoritma RSA dan

algoritma Caesar
Oleh:
Noverio Joe 1072171
Kevin Lizandy 1072057
Delly Mellas Nyman 1072131
Reynata 1072003
Ester Herliana 1072027
Abdul Aziis - 1072110

JURUSAN S1 TEKNIK INFORMATIKA


FAKULTAS TEKNOLOGI INFORMASI
UNIVERSITAS KRISTEN MARANATHA
BANDUNG
2012

Abstrak
Salah satu algoritma dalam kriptografi yang secara luas sekarang digunakan secara luas
dalam dunia komputer adalah algoritma RSA. Algoritma ini adalah algoritma kriptografi yang
diciptakan oleh tiga peneliti dari Massachussets Institute of Technology (MIT), yaitu Ron
Rivest, Adi Shamir, dan Len Adleman pada tahun 1976.
RSA mendasarkan proses enkripsi dan dekripsinya pada konsep bilangan prima dan
aritmetika modulo. Baik kunci enkripsi maupun dekripsi keduanya merupakan bilangan
bulat. Kunci enkripsi tidak dirahasiakan dan diberikan kepada umum (sehingga disebut
dengan kunci publik), namun kunci untuk dekripsi bersifat rahasia (kunci privat). Kunci
privat dibangkitkan dari beberapa buah bilangan prima bersama-sama dengan kunci
enkripsi. Untuk menemukan kunci dekripsi, orang harus memfaktorkan suatu bilangan non
prima menjadi faktor primanya. Kenyataannya, memfaktorkan bilangan non prima
menjadi faktor primanya bukanlah pekerjaan yang mudah. Belum ada algoritma yang
efisien yang ditemukan untuk pemfaktoran itu. Semakin besar bilangan non primanya,
tentu semakin sulit pula pemfaktorannya. Semakin sulit pemfaktorannya, semakin kuat pula
algoritma RSA.
Sistem RSA sekarang digunakan oleh berbagai macam jenis produk, platform, dan industri
di seluruh bagian dunia. Algoritma RSA digunakan dalam banyak perangkat lunak yang dijual
secara komersial dan direncanakan akan digunakan pada banyak perangkat lunak lainnya.
Algoritma RSA terpasang dalam sistem operasi pada hari ini oleh Microsoft, Apple, Sun, dan
Novell. Tentang perangkat keras, algoritma RSA juga dapat ditemukan pemanfaatannya dalam
telefon yang aman, dalam kartu-kartu jaringan Ethernet, dan dalam kartu-kartu cerdas (smart
cards). Sebagai tambahan, algoritma RSA tergabung ke dalam semua protokol-protokol utama
untuk komunikasi internet yang koko, termasuk S/MIME, SSL, dan S/WAN. Algoritma RSA
juga dimanfaatkan secara internal oleh banyak lembaga, termasuk cabang-cabang dari
Pemerintah Amerika Serikat (AS), badan-badan hukum utama, perpustakaan-perpustakaan
nasional dan universitas-universitas.

1.

Pendahuluan

Kriptografi secara cepat telah menjadi sebuah bagian yang sangat krusial dalam dunia
ekonomi. Sebelum tahun 1980-an, kriptografi digunakan utamanya untuk bidang militer
dan komunikasi diplomatik, dan hampir dalam konteks-konteks yang dibatasi. Dalam dunia
belakangan ini, komunikasi berkembang dengan sangat cepat dengan adanya teknologi
internet, akibatnya seorang hacker dengan siap sedia bisa mengintip transmisi data komputer
untuk informasi yang berharga.
Sekarang kita harus bisa melindungi cara akses kita ke komputer (melalui sandi lewat
(password) dan akses jarak jauh yang terenkripsi), transaksi komersial kita (nomor-nomor
kartu kredit dan data bank), data medis kita (yang sebentar lagi akan disimpan dalam
sebuah kartu cerdas (smart card), dan informasi-informasi lainnya. Faktanya, kriptologi
telah sangat bertambah luas, dari studi tentang sandi rahasia menjadi studi tentang
kemanan informasi.
Algoritma penyandian data yang telah dijadikan standar sejak tahun 1977 adalah Data
Encryption Standard (DES). Kekuatan DES ini terletak pada panjang kuncinya yaitu 56-bit.
Perkembangan kecepatan perangkat keras dan meluasnya penggunaan jaringan komputer
terdistribusi mengakibatkan penggunaan DES, dalam beberapa hal, terbukti sudah tidak
aman dan tidak mencukupi lagi terutama dalam hal yang pengiriman data melalui jaringan
internet. Perangkat keras khusus yang bertujuan untuk menentukan kunci 56-bit DES
hanya dalam waktu beberapa jam sudah dapat dibangun. Beberapa pertimbangan tersebut
telah manandakan bahwa diperlukan sebuah standar algoritma baru dan kunci yang lebih
panjang.
Untuk menyandi informasi dan untuk menterjemahkan pesan tersandi sebuah algoritma
penyandian memerlukan sebuah data binar yang disebut kunci. Tanpa kunci yang cocok
orang tidak bisa mendapatkan kembali pesan asli dari pesan tersandi. Pada DES digunakan
kunci yang sama untuk menyandi (enkripsi) maupun untuk menterjemahan (dekripsi),
sedangkan RSA (algoritma kriptografi yang diciptakan Ron Rivest, Adi Sharmir, dan Len
Adleman) menggunakan dua kunci yang berbeda. Isitilahnya, DES disebut sistem sandi
simetris sementara RSA disebut sistem sandi asimetris.
Kedua sistem ini memiliki keuntungan dan kerugiannya sendiri. Sistem sandi simetris
cenderung jauh lebih cepat sehingga lebih disukai oleh sementara kalangan industri.
Kejelekannya, pihak-pihak yang ingin berkomunikasi secara privat harus punya akses ke
sebuah kunci DES bersama. Walaupun biasanya pihak-pihak yang terkait sudah saling

percaya, skema ini memungkinkan satu pihak untuk memalsukan pernyataan dari pihak
lainnya.
Sistem sandi asimetris seperti RSA bisa juga digunakan sebagai tanda tangan digital. Ini
membuat aplikasi yang bisa dibuat menggunakan sistem sandi asimetris jauh lebih banyak.
Sebagai contoh uang digital tidak bisa dibuat tanpa menggunakan sistem sandi asimetris.
Protokol e-commerce seperti SET juga tidak bisa dibuat tanpa sistem sandi ini. Untuk
mendapatkan keuntungan yang optimal orang pada prakteknya menggabungkan sistem
sandi asimetris dengan yang simetris, seperti yang dilakukan Zimmermann dalam sandi
public-domain-nya yaitu PGP (Prety Good Privacy).
Saat ini satu-satunya cara yang diketahui untuk mendobrak sandi DES dan RSA adalah
dengan mencoba satu per satu berbagai kombinasi kunci (istilahnya: brute force attack).
Karena itu keamanan dari DES dan RSA banyak bergantung dari ukuran kunci yang digunakan
(dalam bit). Ukuran tersebut menentukan jumlah kombinasi kunci yang mungkin. DES
menggunakan ukuran kunci 56 bit sehingga total banyaknya kombinasi kunci yang mungkin
adalah 256.
Jumlah ini sangat besar. Untuk membongkar sandi tersebut dengan menggunakan PC
Pentium yang berkemampuan mengerjakan 200 juta operasi per detik kita masih
membutuhkan 5 tahun. Dengan mesin yang lebih baik orang bisa melakukannya lebih cepat,
tetapi biayanya juga menjadi mahal. Ini membuat usaha pembongkaran seperti itu menjadi
tidak ekonomis.
Standar industri saat ini bahkan menggunakan Triple DES yang ukuran kuncinya 112 bit.
Ini membuat usaha untuk mendobrak sandi ini dengan brute force menjadi 1016 kali lebih
sulit! Untuk RSA, panjang kuncinya bisa diatur. Misalnya ukuran kunci RSA yang digunakan
oleh modul sekuriti browser Netscape Anda ukurannya 48 bit. Ukuran ini sudah tidak
aman lagi sekarang, tetapi pemerintah AS memang melarang ekspor produk-produk RSA
yang menggunakan kunci lebih besar dari 48 bit.
Standar saat ini merekomendasikan ukuran 512 bit (walaupun hukum Termodinamika
menunjukkan bahwa 256 bit saja sudah terlalu sulit untuk dibrute-force-attack oleh
komputer apapun selama komputer itu terbuat dari materi). Saat ini juga, seperti telah
menjadi suatu kesepakatan profesi yang tidak tertulis, yaitu tugas para ahli kriptografi
adalah menemukan suatu sistem sandi yang sulit dipecahkan, sedangkan tugas para hacker
adalah menemukan kelemahan pada sistem sandi itu.

Secara khusus, dalam paper ini kami akan mencoba membahas tentang algoritma RSA dan
perkembangannya. RSA telah menjadi bahan pembicaraan yang sangat populer dalam
dunia keamanan informasi saat ini. Dalam situs resmi RSA (http://www.rsasecurity.com)
bahkan telah dilombakan beberapa kode RSA yang jika bisa ditebak dengan benar, maka
akan dihadiahkan sejumlah uang. RSA sejauh ini merupakan algoritma kriptografi yang
paling sering digunakan karena sangat sulit untuk dipecahkan. Sejauh ini belum seorang pun
yang berhasil menemukan lubang sekuriti pada RSA, tetapi tak seorang pun juga berhasil
memberikan pembuktian ilmiah yang memuaskan dari keamanan teknik sandi ini. Padahal,
pemakaiannya sudah sangat meluas dan mencakup sektor-sektor strategis seperti
perbankan dan pemerintahan.

2.

Algoritma RSA

Dalam kriptografi, RSA adalah algoritma untuk enkripsi kunci publik (public-key
encryption).
Algoritma ini adalah algoritma pertama yang diketahui paling cocok untuk menandai
(signing) dan untuk enkripsi (encryption) dan salah satu penemuan besar pertama dalam
kriptografi kunci publik. RSA masih digunakan secara luas dalam protokol-protokol
perdagangan elektronik, dan dipercayai sangat aman karena diberikan kunci-kunci yang
cukup panjang dan penerapan-penerapannya yang sangat up-to-date (mutakhir).
2.1

Sejarah RSA

Algortima RSA dijabarkan pada tahun 1977 oleh Ron Rivest, Adi Shamir dan Len Adleman
dari MIT. Huruf RSA itu sendiri juga berasal dari inisial nama mereka (RivestShamir
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 dikarenan 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 menyebabkan hasil
temuan Clifford Cocks di kenal secara umum, paten di Amerika Serikat tidak dapat
mematenkannya.

2.2

Membuat Kunci Privat dan Kunci Publik


1. Pilih dua buah bilangan prima sembarang, sebut a dan b. Jaga kerahasiaan a dan b ini.
2. Hitung n = a x b. Besaran n tidak dirahasiakan.
3. Hitung m = (a - 1) x (b 1). Sekali m dapat dihitung, a dan b dapat dihapus untuk
mencegah
diketahuinya oleh orang lain.
4. Pilih sebuah bilangan bulat untuk kunci publik, sebut namanya e, yang relatif prima
terhadap m.
5. Bangkitkan kunci dekripsi, d, dengan kekongruenan ed
1(mod m). Lakukan enkripsi
terhadap isi pesan dengan persamaan
=
mod n, yang dalam hal ini adalah
blok plainteks, adalah chiperteks yang diperoleh, dan e adalah kunci enkripsi (kunci
publik). Harus dipenuhi persyaratan bahwa nilai harus terletak dalam himpunan nilai
0, 1, 2, ..., n 1 untuk menjamin hasil perhitungan tidak berada di luar himpunan.
6. Proses dekripsi dilakukan dengan menggunakan persamaan
=
mod n, yang
dalam hal ini d adalah kunci dekripsi (kunci privat). Perhatikan pada langkah 4,
kekongruenan ed 1(mod m) sama dengen ed mod m = 1. Menurut persamaan Chinese
RemainderTheorem (CRT) yang menyatakan bahwa a b (mod m) ekivalen dengan a =
b + km, sehingga d dapat dihitung dengan:
(1.1)
Akan terdapat bilangan bulat k yang menyebabkan (1.1) memberikan bilangan bulat d.
Berikut ini adalah contoh untuk kasus dengan nilai a dan b yang kecil. Sebagai
ilustrasi, marilah kita mengambil a = 47 dan b = 71 (keduanya prima), maka dapat
dihitung nilai n = a x b = 3337 dan m = (a - 1)x(b - 1) = 3220. Pilih kunci publik e =
79 (relatif prima terhadap 3220 karena pembagi terbesarnya adalah 1). Nilai e dan
m dapat dipublikasikan ke umum. Selanjutnya akan dihitung kunci dekripsi d seperti
yang dituliskan pada langkah instruksi 4.

Dengan menggunakan (1.1) kita menghitung kunci dekripsi d sebagai berikut:

Dengan mencoba nilai-nilai k = 1, 2, 3, ..., diperoleh nilai d yang bulat adalah


1019. Ini adalah kunci dkripsi yang harus dirahasiakan
Misalkan plainteks yang akan dienkripsikan adalah P = HARI INI (atau dalam
desimal ASCII-nya adalah 7265827332737873). Pecah P menjadi blok-blok yang lebih
kecil, misalnya P dipecah menjadi enam blok yang berukuran 3 digit :

Nilai-nilai ini masih terletak dalam rentang 0 sampai 3337 1. Blok pertama
dienkripsikan sebagai
. Blok kedua dienkripsikan sebagai
. Dengan melakukan proses yang sama untuk sisa blok
lainnya, dihasilkan chiperteks C 215 776 1743 933 1731 158.
Proses dekripsi dilakukan dengan menggunakan kunci privat d = 1019, jadi blok
didekripsikan sebagai
, blok
didekripsikan sebagai
. Blok plainteks yang lain dikembalikan dengan cara
yang serupa. Akhirnya kita memperoleh kembali plainteks semula P =
7265827332737873 yang karakternya adalah P = HARI INI.
Perhitungan perpangkatan pada proses enkripsi
dan dekripsi
membutuhkan bilangan yang sangat besar. Untuk menghindari
penggunaan bilangan yang sangat besar maka dapat digunakan penyederhanaan
dengen persamaan berikut:
[
]
Contoh rumus di atas bisa di misalkan dengan contoh kasus seperti ini:

2.3

Perhitungan Cepat Sebuah Pangkat


[
]
Sering kali kendala yang di hadapi oleh para developer yang membuat sendiri source
code algoritma RSA berkendala dengan tipe data.karena algoritma RSA mempunyai kekuatan
pada besaran sebuah bilangan maka sering kali tipe data yang umum tidak dapat menampung
hasil perhitungan algoritma ini.
Dibutuhkan sebuah tipe data khusus / sebuah trik perhitungan khusus untuk melakukan
komputasi algoritma RSA.terutama pada saat kita melakukan perhitungan pemangkatan dalam
jumlah besar.
Contoh penggunaan algoritma di atas:
Missal kita mempunyai p=3,q=11 dan n=33 juga m=20 e=3 d=7.
Dengan public key(3,33) dan private key(7,33)
Lalu kita mempunyai messege(m)=15.
Enkripsi data menjadi :
(ChiperText)
Dekripsi data menjadi :
(Plain Text)
Perhatikan bahwa bilangan dapat dinyatakan sebagai jumlah dari pangkat 2. Jadi pertama
menghitung nilai-nilai
, , ,.. dengan berulang kali mengkuadratkan nilai-nilai yang yang
setiap hasil pangkat nya di mod 33.
Lalu perhatikan bahwa d pada private key bernilai 7 yang di mana 7
Yang berarti
Dengan cara ini kita tidak memaksa komputer untuk melakukan komputasi manual dengan
melakukan dengan manual.akan tetapi kita membagi perhitungan ke dalam beberapa
bagian agar kita dapat menghitung dengan memory yang seminimal mungkin atau dengan kata
lain kita dapat menghemat memory komputer saat melakukan komputasi dengan cara
memakai type data dengan memory paling sedikit.sedikit disini bersifat relative tergantung dari
pemakaian kunci enkripsi.

3.

Kecepatan Algoritma RSA

Sebuah operasi RSA, baik enkripsi, dekripsi, penandaan, atau verifikasi intinya adalah sebuah
eksponensial terhadap modul. Proses perhitungan ini ditunjukkan oleh sebuah rangkaian dari
multiplikasi terhadap modul. Dalam aplikasi praktikal, adalah umum untuk menentukan sebuah
eksponen kecil yang umum sebagai kunci public. Faktanya, keseluruhan kelompok dari user
(pemakai) bisa memakai eksponen yang sama, dengan berbeda modulus. (Terdapat beberapa
pembatasan pada factor - faktor prima dari eksponen publik ketika diputuskan.) Hal ini
menyebabkan proses enkripsi lebih cepat daripada proses dekripsi dan verifikasi lebih cepat
dari pada penandaan.
Dengan algoritma eksponensial modular (modular exponentiation) yang khas yang digunakan
untuk mengimplementasikan algoritma RSA, operasi kunci public membutuhkan
langkah, operasi kunci privat membutuhkan
langkah, pembangitan kunci
membutuhkan
langkah, di mana k adalah jumlah bit dari modulus. Teknik multiplikasi
cepat, seperti metode pada Fast Fourier Transform (FFT), membutuhkan langkah-langkah yang
lebih sedikit secara asimtotik. Dalam praktiknya, hal di atas tidaklah umum melihat pada
kompleksitas perangkat lunak yang lebih besar dan kenyataan bahwa mungkin akan lebih
lambat untuk beberapa ukuran kunci yang khas.
Sebagai perbandingan, algoritma DES dan beberapa chiper blok yang lain jauh lebih cepat
daripada algoritma RSA. DES secara umum 100 kali lebih cepat pada perangkat lunak dan
antara 1.000 dan 10.000 kali lebih cepat pada perangkat keras, tergantung dari
implementasinya. Implementasi dari algoritma RSA mungkin akan mempersempit celah
beberapa bit dalam tahun tahun mendatang, melihat tingginya permintaan, tapi bagaimana
pun juga, chiper blok akan bertambah lebih cepat.

4.

Panjang Kunci yang Aman

Ukuran kunci dalam algoritma RSA menunjuk kepada ukuran dari modulus n. Dua bilangan
prima, p dan q, yang membentuk modulus, kira - kira harus memiliki panjang yang sama hal ini
menyebabkan modulus ini akan lebih sulit untuk difaktorkan dibandingkan apabila salah satu
dari bilangan prima tersebut jauh lebih kecil dari yang lainnya. Jika seseorang memilih untuk
menggunakan modulus 768 bit, bilangan primanya harus memiliki panjang kira-kira 384 bit. Jika
kedua bilangan prima tersebut sangat dekat atau perbedaannya dekat dengan suatu bilangan
yang telah ditentukan sebelumnya. Selalu ada potensi resiko keamanan, tetapi kemungkinan
bahwa kedua bilangan prima acak yang dipilih sangat dekat dapat diabaikan. Ukuran terbaik
untuk untuk sebuah modulus tergantung pada kebutuhan keamanannya sendiri. Semakin besar
modulus, semakin besar tingkat keamanannya, tetapi juga semakin lambat operasi alogoritma
RSA-nya. Seseorang ketika memilih suatu kunci harus dengan pertimbangan, pertama, nilai dari
data yang dilindungi dan berapa lama data tersebut butuh dilindungi, dan, kedua, seberapa
kuat suatu potensi ancaman mungkin terjadi.
Pada tahun 1997, sebuah taksiran terhadap keamanan kunci RSA 512 bit menunjukkan bahwa
untuk memfaktorkannya dibutuhkan dana lebih dari $1,000,000 dan waktu lebih dari delapan
bulan. Kenyataannya, angka RSA-155 512 bit difaktorkan dalam tujuh bulan selama 1999. Hal ini
berarti kunci 512 bit tidak lagi menyediakan keamanan yang cukup untuk keamanan yang lebih
dari kebutuhan keamanan jangka pendek.
Lebih dianjurkan untuk menggunakan ukuran kunci 1024 bit untuk hal yang berhubungan
dengan hukum dan 2048 bit untuk kunci-kunci yang ekstrem, seperti kunci yang digunakan oleh
alat untuk verfikasi wewenang. Beberapa standar pada saat ini lebih menganjurkan 1024 bit
untuk penggunaan dalam bidang hukum. Informasi yang lebih tidak terlalu penting sudah cukup
dienkripsi dengan kunci 768 bit.
Biasanya harus dipastikan bahwa sebuah kunci untuk perseorangan habis masa berlakunya
setelah jangka waktu yang pasti, katakanlah, dua tahun. Hal ini memberikan kesempatan agar
kunci dapat diubah secara teratur dan mempertahankan level keamanan yang diberikan.
Setelah habis masa berlakunya, seorang user harus membangkitkan kuncinya yang baru untuk
menegaskan apakah terdapat perubahan dalam panjang kunci yang dibutuhkan. Tentu saja,
mengganti kunci bukanlah bertahan dari serangan yang berusaha untuk mendapatkan kembali
pesan yang dienkripsi dengan kunci lama, jadi ukuran kunci selalu harus dipilih merujuk pada
waktu penggunaan data yang diinginkan. Kesempatan untuk mengubah kunci kunci
memperbolehkan seseorang untuk membiasakan diri dengan rekomendasi panjang kunci yang
baru.
User harus selalu berpendapat bahwa waktu yang diperlukan untuk memecahkan sistem RSA
hanyalah rata-rata. Suatu usaha penyerangan yang besar, menyerang ribuan modul, mungkin
berhasil minimal satu modul dalam waktu yang layak. Walaupun keamanan dari suatu kunci
perseoarangan masih kuat, dengan beberapa metode pemfaktoran selalu ada kemungkinan

kecil seorang penyerang mungkin beruntung dan dapat memfaktorkan suatu kunci dengan
cepat.
Melipatduakan panjang dari modulus akan, secara rata-rata, meningkatkan waktu yang
dibutuhkan untuk operasi kunci publik (enkripsi dan verifikasi tanda) dengan kelipatan empat,
dan meningkatkan waktu untuk operasi kunci privat (dekripsi dan penandaan) dengan kelipatan
delapan. Kunci publik lebih sedikit dipengaruhi daripada kunci privat karena eksponen public
bisa tetap ketika modulus ditingkatkan, sedangkan panjang eksponen privat meningkat per
bagian. Waktu untuk pembangkitan kunci akan meningkat dengan kelipatan 16 untuk setiap pelipatdua-an modulus, tetapi hal ini merupakan operasi yang relatif jarang bagi user.
Juga harus diperhatikan ukuran kunci untuk sistem RSA (dan teknik kunci publik lainnya) jauh
lebih besar daripada ukuran kunci untuk chiper blok seperti DES, tetapi keamanan dari kunci
RSA tidak bisa dibandingkan dengan tingkat keamanan kunci dari sistem yang lainnya dalam
beberapa jangka waktu.
Keamanan RSA titentukan oleh besarnya n yang didapat dari perkalian p dan q. Semakin besar
bilangan n, maka kemungkinan dari p dan q akan semakin banyak. Jika kita menggunakan p dan
q yang kecil, maka n juga hasilnya tidak akan terlalu besar, dan akan lebih mudah untuk
diketahui nilai p dan q nya. Jadi kita harus menggunakan nilai p dan q yang besar. Jika kita
menggunakan 16 bit maka kemungkinan n yang bisa didapatkan yaitu antara 0 sampai 2 16 1
atau sama dengan 0 sampai 65535. Harus dipastikan juga bahwa n lebih besar dari bilangan yang akan di
enkripsi.

Contohnya kita memiliki string berupa : abc


Kita rubah ke dalam ASCII menjadi : 97 98 99
Jika kita menggunakan 16 bit dan kita menentukan p = 131 dan q = 251
Maka kita mendapatkan n = p.q = 131 * 251 = 32881
n bisa digunakan karena lebih besar dari bilangan-bilangan yang akan di enkripsi
setelah itu kita menentukan e = 3
kita memilih e = 3 karena jika semakin besar n dan semakin kecil e maka akan semakin sulit bagi
orang lain untuk mengetahui nilai p dan q nya. Jadi kita menggunakan e terkecil yang
memungkinkan.
Maka didapat publiv key yaitu (e, n) = (3, 32881)
Inilah kekuatan dari enkripsi data RSA, intinya semakin besar n dan semakin kecil nilai e maka
hacker akan semakin sulit untuk mendapatkan nilai p dan q. Semua itu juga tergantung dari
performa software dan hardware yang dimiliki. Performa dari hardware tentu dibutuhkan, tapi
kita juga harus bisa memanfaatkan kemampuan hardware semaksimal mungkin dengan
penggunaan algoritma-algoritma yang efisien dan tidak menggunakan sumber daya yang
berlebih. Hal ini berkaitan dengan kinerja yang akan dihasilkan, jika kita menggunakan bit yang
begitu besar dan kita menggunakan n yang besar tentu saja akan membutuhkan kinerja dari
hardware yang bagus. Dengan penggunaan algoritma yang efisien tentu saja kita bisa
menghemat waktu dari pemrosesan enkripsi data. Seperti algoritma untuk mencari angka

prima, pemfaktoran, dan perpangkatan. Kita bisa saja menggunakan method perpangkatan
yang sudah disediakan oleh compiler, tapi kita juga bisa menggunakan method rekursif yang
relatif lebih cepat. Kita telah membandingkan method yang disediakan compiler dengan
method yang kita buat sendiri yang menggunakan prinsip rekursif. Kita mendapati bahwa
kecepatannya cukup signifikan, bisa menghemat waktu hamper setengah dari waktu yang
menggunakan method perpangkatan dari compilernya sendiri. Jika kita mengenkripsi string
yang pendek mungkin tidak begitu terasa perbedaannya, tapi jika kita menggunakan p dan q
yang besar dan kita juga memiliki string yang panjang maka perbedaannya akan sangat terasa
dalam segi waktu dan sumber daya yang dibutuhkan.

5.

Memecahkan Kode RSA

Ada beberapa interpretasi yang mungkin dari memecahkan sistem RSA. Yang paling
merusakkan adalah seorang penyerang yang menemukan kunci privat yang berkorespondensi
dengan sebuah kunci publik yang disebarluaskan. Hal ini akan membuat sang penyerang bisa
membaca semua pesan yang terenksripsi dengan kunci public dan memalsukan tanda.
Cara yang paling jelas untuk melakukan serangan jenis ini adalah dengan memfaktorkan
modulus publik, n , ke dalam dua buah factor prima, p dan q. Dari p, q, dan e, publik eksponen,
sang penyerang bisa secara mudah mendapatkan d, eksponen privat. Hal yang paling sulit
adalah memfaktorkan n. Keamanan RSA tergantung pada kesulitan dalam memfaktorkan n.
Dalam dunia nyata, pekerjaan memperoleh kunci privat sama dengan pekerjaan mencari faktor
dari modulus, yaitu menggunakan d untuk memfaktorkan n, sama dengan menggunakan
faktorisasi dari n untuk mendapatkan d. Hal yang harus dicatat lainnya, perkembangan
perangkat lunak saja tidak akan membuat algoritma RSA menjadi lemah, selama digunakan
panjang kunci yang sesuai. Faktanya, perkembangan perangkat keras menaikkan keamanan dari
suatu sistem kriptografi.
Cara lain untuk memcahkan algoritma RSA adalah dengan menemukan sebuah teknik untuk
menghitung akar ke-e mod n. Karena c =
mod n , akar ke-e dari c mod n adalah pesan m.
Serangan ini akan memperbolehkan seseorang memperoleh kembali pesan-pesan yang telah
terenkipsi dan memalsukan tanda, bahkan tanpa mengetahui kunci privat. Serangan jenis ini
tidak sama dengan memfaktorkan. Tidak ada metode umum yang sekarang sekarang dikenali
mencoba untuk memcahkan sistem RSA dengan cara ini. Bagaimanapun juga, dalam beberapa
kasus khusus di mana pesan-pesan yang saling berhubungan dan diperbanyak dienkripsi dengan
eksponen kecil yang sama, mungkin terjadi pesan diperoleh kembali.
Hanya beberapa serangan yang baru saja disebutkan di ataslah cara untuk memecahkan sistem
RSA untuk mendapatkan kembali pesan terenkripsi tanpa kunci privat. Terdapat beberapa
metode lain, bagaimanapun juga, yang bertujuan untuk mendapatkan kembali pesan-pesan
tunggal. Beberapa orang bahkan mempelajari secara khusus apakah bagian dari pesan bisa
diperoleh kembali dari sebuah pesan terenkripsi.
Cara menyerang pesan tunggal yang paling sederhana adalah dengan serangan menebak
plainteks. Seorang penyerang mengamati sebuah chiperteks dan menebak apa sebenarnya
pesan tersebut, sebagai contoh, Serang pada fajar, dan mengenkripsi tebakan ini dengan
suatu kunci publik dari sang penerima dan dengan membandingkan dengan chiperteks, sang
penyerang akan bisa mengetahui apakah tebakannya benar. Menambahkan beberapa bit acak
pada pesan dapat menghalangi serangan jenis ini. Serangan pesan tunggal yang lainnya bisa
terjadi jika seseorang mengirimkan m pesan yang sama kepada tiga orang lain, dimana setiap
orang memiliki kunci publik e = 3. Seorang penyerang yang mengetahui tentang hal ini dan
melihat ketiga pesan akan dapat mendapatkan kembali pesan m. Sayangnya, serangan jenis ini
juga bisa dikalahkan dengan melapisi pesan sebelum enkripsi dengan beberapa bit acak.
Terdapat juga beberapa serangan chiperteks yang dipilih (atau serangan pesan yang dipilih

untuk mengubah pesan), di mana sang penyerang menciptakan suatu chiperteks dan melihat
pada plainteks yang berkorespondensi, barangkali dengan menipu user yang sah untuk
mendekripsi sebuah pesan yang palsu.
Tentu saja, terdapat juga beberapa serangan yang tujuannya bukan sistem kriptografi tetapi
pada implementasi sistem yang tidak kokoh. Serangan jenis ini tidak digolongkan sebagai
pemecahan sistem RSA, karena bukan kelemahan dari algoritma RSA yang dimanfaatkan, tetapi
lebih kepada kelemahan dalam implementasi yang spesifik. Contohnya, bila seseorang
menyimpan kunci privat dengan tidak aman, seorang penyerang mungkin menermukannya.
Sistem RSA membutuhkan sebuah implementasi yang aman. Ukuran matematika untuk
keamanan, seperti memilih ukuran kunci yang panjang, tidaklah cukup. Pada kenyataannya,
beberapa serangan yang berhasil menyerang implementasi yang tidak aman dan tingkatan
pengelolaan kunci dari sebuah sistem RSA.

6.

Implementasi Algoritma RSA dan Algoritma Caesar Chipper

6.1

Gambaran umum perangkat percobaan:


Pada percobaan ini perangkat lunak yang di buat menggunakan bahasa c# dan
mengadopsi design RSA dan Caesar chipper untuk meng enkripsikan pesan atau plain text
menjadi chipper text dengan cara merubah setiap karakter yang ada pada plaintext menjadi
kode ASCII(American Standard Code for Information Interchange).
Setelah karakter tersebut berubah menjadi code ASCII perangkat lunak akan
menggeserkan nilai ASCII yang ada menggunakan algoritma Caesar chipper text.Setelah di
lakukan pergeseran pada angka ASCII,perangkat lunak akan melakukan perhitungan enkripsi
menggunakan algoritma RSA 16 bit.
Setelah dilakukan enkripsi data menggunakan algoritma RSA 16bit lalu nilai tersebut di
rubah ke dalam bentuk hexa decimal.Hexa decimal ini lah yang menjadi Chipper text pada
perangkat ini. Lalu pada saat enkripsi data hexa decimal akan di rubah menjadi bilangan integer
lalu di lakukan proses dekripsi dengan algoritma dekripsi RSA 16bit lalu di lakukan lagi algoritma
dekripsi Caesar chipper yang akan menghasilkan nilai ASCII awal setelah itu kode ASCII tersebut
di ubah kembali menjadi plain text. Inilah gambaran umum dari perangkat lunak untuk
implementasi algoritma RSA 16 bit dan algoritma Caesar Chipper text.

6.2

Proses Enkripsi
Setelah gambaran umum di atas.di sini kami akan menjelaskan bagaimana proses
enkripsi pada perangkat lunak berjalan secara lengkap.pertama-tama perangkat lunak akan
menerima nilai p dan q yang di butuhkan . nilai p dan q yang di masukan oleh pengguna harus
berupa bilangan prima dimana saat nilai p dan q di kalikan akan lebih besar dari nilai pesan
maximum yang akan di enkripsi . atau di mana dalam perangkat ini nilai maximum tersebut
beruba nilai maximum dari sebuah ASCII yaitu 255.
Nilai maximum ASCII = 255.
Nilai n=p x q dan nilai n bersyarat (n>255).
Contoh kasus:
Diberikan nilai p=113 dan q = 293 maka nilai n=33109 (berukuran 16bit) dan m =32704
dan mempunyai pesan=aku.
Pada program ini nilai e akan di cari menggunakan algoritma Euclid dan menghasilkan nilai
e=3.sehingga di dapatkan publicKey(3,33109) dan privateKey(21803,33109)
Lalu setelah di dapat publicKey dan privateKey perangkat akan mulai merubah pesan(aku)
menjadi ascii.
a=97,k=107,u=117
setelah di dapatkan ASCII dari setiap karakter proses enkripsi di lakukan per karakter.sehingga
proses nya akan menjadi :
= 6730.lalu nilai 6730 ini akan di
rubah menjadi bilangan hexa dengan menggunakan notasi
chiper_encrypt_rtb.Text += Int16.Parse(big.ToString()).ToString("X") + " ";

proses ini akan di lakukan kepada setiap karakter pada plain text.operasi ini di lakukan karena
dengan asumsi plain text yang akan di enkripsi berupa password yang tidak memiliki panjang
karakter yang terlalu panjang.
Algoritma enkripsi nya :
ascii_rtb.Clear();
string plain = plain_encrypt_rtb.Text;
byte[] ascii = Encoding.ASCII.GetBytes(plain);
for (int i = 0; i < ascii.Length; i++)
{
ascii_rtb.Text += ascii[i].ToString() + " ";
}
int c = 0;

for (int i = 0; i < ascii_rtb.Text.Length; i++)


{
if (c != 0 && ascii_rtb.Text.Substring(i, 1) == " ")
{
string asd = ascii_rtb.Text.Substring(i - c, c);
string caesar = ((int.Parse(asd) + 3) % 255).ToString();
if (caesar == "256")
caesar = "1";
else if (caesar == "257")
caesar = "2";
else if (caesar == "258")
caesar = "3";
big = (pangkat((BigInteger)(int.Parse(caesar)), (BigInteger)en)) % n;
chiper_encrypt_rtb.Text += big.ToString() + " ";
c = 0;
}
else
{
c++;
}

6.3

Proses Dekripsi
Proses dekripsi di lakukan dengan cara merubah chipper
dengan menggunakan cara

text menjadi bilangan integer

(int.Parse(chiper_encrypt_rtb.Text.Substring(i - c, c),
System.Globalization.NumberStyles.HexNumber)).ToString();
(i-c,c) => mengambil chipper text dari rich text box
System.Globalization.NumberStyles.HexNumber => memberikan pernyataan bahwa chipper text

masih bertipe hexa decimal.


Setelah chipper text berubah menjadi integer.maka di lakukan proses dekripsi dengan algoritma
RSA dan sebelum menggunakan algoritma RSA untuk melakukan dekripsi . setelah di dekripsi
menggunakan algoritma RSA lalu di lakukan juga dekripsi menggunakan algoritma
Caesar.sehingga notasi Dekripsi nya menjadi:
(

Dengan algoritma nya :


int c = 0;
for (int i = 0; i < chiper_encrypt_rtb.Text.Length; i++)
{
if (c != 0 && chiper_encrypt_rtb.Text.Substring(i, 1) == " ")
{
string asd = (int.Parse(chiper_encrypt_rtb.Text.Substring(i - c, c),
System.Globalization.NumberStyles.HexNumber)).ToString();
BigInteger
int caesar
if (caesar
caesar

dek = pangkatDekrip(int.Parse(asd), d, n);


= ((int)dek - 3) % 255;
== -2)
= 253;

else if (caesar == -1)


caesar = 254;
else if (caesar == 0)
caesar = 255;
plain_decrypt_rtb.Text += Convert.ToChar(caesar);
c = 0;
}
else
{
c++;
}
}

6.4

Fungsi Pendukung
Kekuatan utama dari algoritma enkripsi RSA ada pada sulit nya melakukan komputasi
dengan nilai yang sangat besar.sehingga di butuhkan teknik-teknik khusus untuk melakukan
komputasi nya.fungsi pendukung yang di gunakan pada perangkat ini adalah sebuah fungsi
dimana saat computer harus melakukan fungsi perpangkatan computer tidak perlu melakukan
nya dengan cara manual dengan menghitung nya satu per satu.akan tetapi menggunakan cara
memisahkan nya atau memotong-potong proses perhitungan.
Fungsi ini mengimplementasikan algoritma :
ab mod m=(a mod m)(b mod m) mod m (ada pada halaman 8) dengan source code:
public BigInteger pangkatDekrip(BigInteger a, BigInteger n, BigInteger m)
{
if (n == 0)
{
return 1;
}
else
{
if (n % 2 != 0)
return pangkat(pangkatDekrip(a, n / 2, m), 2) * a % m;
else
return pangkat(pangkatDekrip(a, n / 2, m), 2) % m;
}
}
Fungsi ini akan menerima angka yang akan di pangkat,angka pemangkat,dan modulus.

7.

Penggunaan RSA

Sistem RSA sekarang digunakan oleh berbagai macam jenis produk, platform, dan industri di
seluruh bagian dunia. Algoritma RSA digunakan dalam banyak perangkat lunak yang dijual
secara komersial dan direncanakan akan digunakan pada banyak perangkat lunak lainnya.
Algoritma RSA terpasang dalam sistem operasi pada hari ini oleh Microsoft, Apple, Sun, dan
Novell. Berbicara tentang perangkat keras, algoritma RSA juga dapat ditemukan
pemanfaatannya dalam telefon yang aman, dalam kartu-kartu jaringan Ethernet, dan dalam
kartu-kartu cerdas (smart cards). Sebagai tambahan, algoritma RSA tergabung ke dalam semua
protokol-protokol utama untuk komunikasi internet yang koko, termasuk S/MIME, SSL, dan
S/WAN. Algoritma RSA juga dimanfaatkan secara internal oleh banyak lembaga, termasuk
cabang-cabang dari Pemerintah Amerika Serikat (AS), badan-badan hukum utama,
perpustakaan-perpustakaan nasional dan universitas-universitas.
Pada saat penerbitan algoritma RSA, teknologi yang menggunakan algoritma RSA didaftarkan
lebih dari 700 perusahaan. Teknologi enkripsi berbasis RSA BSAFE yang dipasang diperkirakan
mencapai angka 500 juta.Kebanyakan dari penerapan-penerapan ini mencakup penggunaan
algoritma RSA, membuat algoritma RSA secara signifikan merupakan sistem kriptografi yang
penggunaannya paling luas di dunia. Hal ini diperkirakan akan semakin bertambah besar
dengan sangat cepat karena penggunaan Internet dan World Wide Web semakin bertambah
luas.

8.

RSA sebagai standar resmi

Sistem kriptografi dengan menggunakan algoritma RSA merupakan bagian dari banyak standar
resmi di seluruh dunia. Standar ISO (International Standards Organization) 9796
mencantumkan RSA sebagai algoritma kriptografi yang cocok, begitu juga dengan standar
keamanan ITU-TX.509. Sistem RSA adalah bagian dari standar Society for Worldwide Interbank
Financial Telecommunications (SWIFT), standar rench financial industry's ETEBAC 5, standar
ANSI X9.31 rDSA dan naskah standar X9.44 untuk industri perbankan Amerika Serikat. RSA juga
dicantumkan dalam standar pengelolaan kunci Australia, AS2805.6.5.3.
Algoritma RSA dapat ditemukan dalam standarstandar internet dan protokol-protokol yang
dianjurkan, termasuk S/MIME, IPSec, dan TLS (penerus dari standar internet SSL), demikian juga
dalam standar PKCS untuk penggunaan dalam perangkat lunak. OSI Implementers' Workshop
(OIW) mengeluarkan perjanjian pemakai berkenaan dengan PKCS, yang mencakup
penggaunaan RSA.
Sejumlah standar-standar lainnya sekarang sedang dikembangkan dan akan diumumkan dalam
beberapa tahun mendatang. Beberapa di antaranya kemungkinan besar akan mencakup
penggunaan algoritma RSA baik sebagai sistem yang sah atau yang dianjurkan dalam
kerahasiaan dan/atau penandaan. Sebagai contoh, IEEE P1363 dan WAP WTLS mencakup
penggunaan sistem RSA.

9.

RSA sebagai standar yang de facto

Sistem RSA sudah digunakan begitu luas dalam sistem kriptografi kunci publik belakangan ini
dan sering disebut sebagai standar yang de facto.Tanpa memperhatikan standar-standar resmi,
keberadaan standar de facto sangat penting untuk pengembangan ekonomi digital. Jika satu
sistem kunci publik digunakan dimana saja untuk pembuktian keaslian, kemudian dokumen
digital yang telah ditandai dapat ditukarkan antara user user yang berada pada negara-negara
yang berbeda menggunakan perangkat lunak yang berbeda pada platform-platform yang
berbeda, kemampuan antar operator ini penting untuk sebuah perkembangan bagi ekonomi
digital yang nyata.
Pemakaian sistem RSA telah berkembang begitu luas sehingga dibutuhkan standar untuk
memfasilitasinya. Ketika sebuah penjaja (vendor) industri perbankan AS yang maju
mengembangkan standar-standar untuk penandaan digital, perusahaan ini mengembangkan
ANSI X9.30 pada tahun 1997 untuk mendukung syarat negara untuk penggunaan standar
penandaan digital (Digital Signature Standard). Satu tahun kemudian perusahaan ini
menambahkan ANSI X9.31, yang menekankan penandaan digital RSA untuk mendukung standar
de facto dalam lembaga perbankan.
Kurangnya keamanan dalam membuktikan keaslian telah menjadi penghalang utama dalam
usaha untuk mewujudkan impian bahwa komputer akan dapat menggantikan kertas. Kertas
tetap menjadi sangat penting dimanapun untuk kontrak-kontrak, cek, surat resmi, dokumen
legal dan pengenalan.Dengan berinti pada kebutuhan akan transaksi kertas ini, masih
merupakan hal yang tidak mungkin untuk berkembang secara keseluruhan menuju masyarakat
yang berbasis pada transaksi elektronik. Tanda-tanda digital memungkinkan passport, transkrip
kuliah, surat wasiat, kontrak sewa, cek, dan pendaftaran pemilih dalam bentuk elektronik.
Bentuk kertas hanya sebuah salinan dari aslinya berupa dokumen elektronik. Standar yang telah
diterima untuk penandaan digital memungkinkan semua hal ini terjadi.

10.

Kesimpulan

Kesimpulan yang dapat diambil dari studi mengenai algoritma RSA dan penggunaannya adalah :
1. RSA merupakan salah satu solusi yang baik untuk mengatasi masalah keamanan dan
kerahasiaan data yang pada umumnya diterapkan dalam pengiriman dan penyimpanan
data melalui media elektronik.
2. RSA dianggap sebagai algoritma kriptografi yang paling aman saat ini. Hal ini
dikarenakan belum ditemukannya algoritma yang efisien untuk memecahkan sistem
keamanan yang diberikan oleh sistem RSA.
3. RSA dapat digunakan untuk enkripsi suatu dokumen dan penandaan (signing) suatu
dokumen.
4. RSA telah digunakan secara luas sebagai algoritma keamanan dalam perancangan
perangkat lunak dan sistem operasi. Selain itu, RSA juga digunakan untuk perancangan
perangkat keras yang aman.
5. Semakin panjang suatu kunci publik, maka usaha yang harus dikeluarkan untuk
memecahkan kunci tersebut akan lebih lama. Pada saat ini dianjurkan untuk
menggunakan sistem RSA dengan kunci publik 1024 bit.
6. Melipatduakan panjang dari modulus akan, secara rata-rata, meningkatkan waktu yang
dibutuhkan untuk operasi kunci publik (enkripsi dan verifikasi tanda) dengan kelipatan
empat, dan meningkatkan waktu untuk operasi kunci privat (dekripsi dan penandaan)
dengan kelipatan delapan. Kunci publik lebih sedikit dipengaruhi daripada kunci privat
karena eksponen publik bisa tetap ketika modulus ditingkatkan, sedangkan panjang
eksponen privat meningkat perbagian
7. Sistem kriptografi dengan menggunakan algoritma RSA merupakan bagian dari banyak
standar resmi di seluruh dunia.

11.

Algoritma Caesar Cipher

Sekitar 50 SM, Julius Caesar, kaisar Roma, menggunakan cipher substitusi untuk mengirim
pesan ke Marcus Tullius Cicero. Pada cipher ini, huruf-huruf alfabet disubstitusi dengan hurufhuruf yang lain pada alfabet yang sama. Karena hanya satu alfabet yang digunakan, cipher ini
merupakan substitusi monoalfabetik. Cipher semacam ini mencakup penggeseran alfabet
dengan 3 huruf dan mensubstitusikan huruf tersebut. Substitusi ini kadang dikenal dengan C3
(untuk Caesar menggeser 3 tempat).
Misalnya, tiap huruf disubstitusi dengan huruf ketiga berikutnya dari susunan abjad. Dalam hal
ini kuncinya adalah jumlah pergeseran huruf (yaitu k = 3)
Tabel substitusi:
pi : A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
ci : D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

Contoh 1. Pesan
AWASI ASTERIX DAN TEMANNYA OBELIX
disamarkan (enskripsi) menjadi:
DZDVL DVWHULA GDQ WHPDQQBA REHOLA
Penerima pesan men-dekripsi chiperteks dengan menggunakan tabel substitusi, sehingga
chiperteks:
DZDVL DVWHULA GDQ WHPDQQBA REHOLA
dapat dikembalikan menjadi plainteks semula:
AWASI ASTERIX DAN TEMANNYA OBELIX
Dengan mengkodekan setiap huruf abjad dengan integer sebagai berikut: A = 0, B = 1, , Z = 25,
maka secara matematis caesar chiper menyandikan plainteks pi menjadi ci dengan aturan:
ci = E(pi) = (pi + 3) mod 26

(1)

dan dekripsi chiperteks ci menjadi pi dengan aturan:


pi = D(ci) = (ci 3) mod 26

(2)

Karena hanya ada 26 huruf abjad, maka pergeseran huruf yang mungkin dilakukan adalah dari 0
sampai 25. Secara umum, untuk pergeseran huruf sejauh k (dalam hal ini k adalah kunci enkripsi
dan deksripsi), fungsi enkripsi adalah:
ci = E(pi) = (pi + k) mod 26

(3)

dan fungsi dekripsi adalah:


pi = D(ci) = (ci k) mod 26

(4)

Catatan:
1. Pergeseran 0 sama dengan pergeseran 26 (susunan huruf tidak berubah)
2. Pergeseran lain untuk k > 25 dapat juga dilakukan namun hasilnya akan kongruen
dengan bilangan bulat dalam modulo 26. Misalnya k = 37 kongruen dengan 11 dalam
modulo 26, atau 37 11 (mod 26).
3. Karena ada operasi penjumlahan dalam persamaan (3) dan (4), maka caesar chiper
kadang-kadang dinamakan juga additive chiper.
11.1

Kriptanalisis Terhadap Caesar Chiper

Caesar chiper mudah dipecahkan dengan metode exhaustive key search karena jumlah
kuncinya sangat sedikit (hanya ada 26 kunci).
Contoh 2. Misalkan kriptanalis menemukan potongan chiperteks (disebut juga cryptogram)
XMZVH. Diandaikan kriptanalis mengetahui bahwa plainteks disusun dalam Bahasa Inggris dan
algoritma kriptografi yang digunakan adalah caesar chiper. Untuk memperoleh plainteks,
lakukan dekripsi mulai dari kunci yang terbesar, 25, sampai kunci yang terkecil, 1. Periksa
apakah dekripsi menghasilkan pesan yang mempunyai makna (lihat Tabel 1).

Tabel 1. Contoh exhaustive key search terhadap chiperteks XMZVH


Kunci (k)
chipering
0
25
24
23
22
21
20
19
18

Pesan hasil
dekripsi
XMZVH
YNAWI
ZOBXJ
APCYK
BQDZL
CREAM
DSFBN
ETGCO
FUHDP

Kunci (k)
chipering
17
16
15
14
13
12
11
10
9

Pesan hasil
dekripsi
GVIEQ
HWJFR
IXKGS
JYLHT
KZMIU
LANJV
MBOKW
NCPLX
ODQMY

Kunci (k)
chipering
8
7
6
5
4
3
2
1

Pesan hasil
dekripsi
PERNZ
QFSOA
RGTPB
SHUQC
TIVRD
UJWSE
VKXTF
WLYUG

Dari Tabel 1, kata dalam Bahasa Inggris yang potensial menjadi plainteks adalah CREAM dengan
menggunakan k = 21. Kunci ini digunakan untuk mendekripsikan chiperteks lainnya.
Kadang-kadang satu kunci yang potensial menghasilkan pesan yang bermakna tidak selalu satu
buah. Untuk itu, kita membutuhkan informasi lainnya, misalnya konteks pesan tersebut atau
mencoba mendekripsi potongan chiperteks lain untuk memperoleh kunci yang benar.
Contoh 3. Misalkan potongan chiperteks HSPPW menghasilkan dua kemungkinan kunci yang
potensial, yaitu k = 4 menghasilkan pesan DOLLS dan k = 11 menghasilkan WHEEL. Lakukan
deksripsi terhadap potongan chiperteks lain tetapi hanya menggunakan k = 4 dan k = 11 (tidak
perlu exhaustive key search) agar dapat disimpulkan kunci yang benar.
Cara lain yang digunakan untuk memecahkan chiperteks adalah dengan statistik, yaitu dengan
menggunakan tabel kemunculan karakter, yang membantu mengidentifikasi karakter plainteks
yang berkoresponden dengan karakter di dalam chiperteks (akan dijelaskan kemudian).

Jenis-jenis Chiper Subsbtitusi


a. Chiper abjad-tunggal (monoalphabetic chiper atau chiper substitusi sederhana - simple
substitution chiper)
Satu karakter di plainteks diganti dengan satu karakter yang bersesuaian. Jadi, fungsi
chipering-nya adalah fungsi satu-ke-satu.
Jika plainteks terdiri dari huruf-huruf abjad, maka jumlah kemungkinan susunan huruf-huruf
chiperteks yang dapat dibuat adalah sebanyak
26! = 403.291.461.126.605.635.584.000.000
Caesar chiper adalah kasus khusus dari chiper abjad tunggal di mana susunan huruf
chiperteks diperoleh dengan menggeser huruf-huruf alfabet sejauh 3 karakter.
ROT13 adalah program enkripsi sederhana yang ditemukan pada sistem UNIX. ROT13
menggunakan chiper abjad-tunggal dengan pergeseran k = 13 (jadi, huruf A diganti dengan
N, B diganti dengan O, dan seterusnya).
Enkripsi arsip dua kali dengan ROT13 menghasilkan arsip semula:
P = ROT13(ROT13(P))

b. Chiper substitusi homofonik (Homophonic substitution chiper)

Seperti chiper abjad-tunggal, kecuali bahwa setiap karakter di dalam plainteks dapat
dipetakan ke dalam salah satu dari karakter chiperteks yang mungkin. Misalnya huruf A
dapat berkoresponden dengan 7, 9, atau 16, huruf B dapat berkoresponden dengan 5, 10,
atau 23 dan seterusnya.
Fungsi chipering-nya memetakan satu-ke-banyak (one-to-many).
Chiper substitusi homofonik digunakan pertama kali pada tahun 1401 oleh wanita
bangsawan Mantua.
Chiper substitusi homofonik lebih sulit dipecahkan daripada chiper abjad-tunggal. Namun,
dengan known-plaintext attack, chiper ini dapat dipecahkan, sedangkan dengan chipertextonly attack lebih sulit.
c.

Chiper abjad-majemuk (Polyalpabetic substitution chiper )


Merupakan chiper substitusi-ganda (multiple-substitution chiper) yang melibatkan
penggunaan kunci berbeda.
Chiper abjad-majemuk dibuat dari sejumlah chiper abjad-tunggal, masing-masing dengan
kunci yang berbeda.
Kebanyakan chiper abjad-majemuk adalah chiper substitusi periodik yang didasarkan pada
periode m.
Misalkan plainteks P adalah
P = p1p2 pmpm+1 p2m
maka chiperteks hasil enkripsi adalah
Ek(P) = f1(p1) f2(p2) fm(pm) fm+1(pm+1) f2m(p2m)
yang dalam hal ini pi adalah huruf-huruf di dalam plainteks.
Untuk m = 1, chiper-nya ekivalen dengan chiper abjad-tunggal.
Contoh chiper substitusi periodik adalah chiper Vigenere yang ditemukan oleh kriptologi
Perancis, Blaise de Vigenere pada abad 16. Misalkan K adalah deretan kunci
K = k1 k2 km
yang dalam hal ini ki untuk 1 i m menyatakan jumlah pergeseran pada huruf ke-i.
Maka, karakter chiperteks yi(p) adalah

yi(p) = (p + ki) mod n

(5)

Misalkan periode m = 20, maka 20 karakter pertama dienkripsi dengan persamaan (5),
dimana setiap karakter ke-i menggunakan kunci ki. Untuk 20 karakter berikutnya, kembali
menggunakan pola enkripsi yang sama.
Chiper abjad-majemuk ditemukan pertama kali oleh Leon Battista pada tahun 1568.
Metode ini digunakan oleh tentara AS selama Perang Sipil Amerika.
Meskipun chiper abjad-majemuk dapat dipecahkan dengan mudah (dengan bantuan
komputer), namun anehnya banyak program keamanan komputer (computer security)
yang menggunakan chiper jenis ini.

d.

Chiper substitusi poligram (Polygram substitution chiper )


Blok karakter disubstitusi dengan blok chiperteks. Misalnya ABA diganti dengan RTQ, ABB
diganti dengan SLL, dan lain-lain.
Playfair chiper, ditemukan pada tahun 1854, termasuk ke dalam chiper substitusi poligram
dan digunakan oleh negara Inggris selama Perang Dunia I.

12.

Daftar Pustaka

[1] Mengupas Rahasia Penyandian Informasi Sains-Inreligion. (2006).


http://agorsiloku.wordpress.com/2006/06/26/mengupas-rahasia-penyandian-informasi.
[2] Munir, Rinaldi. (2006). Bahan Kuliah IF2153 Matematika Diskrit. Departemen Teknik
Informatika, Institut Teknologi Bandung
[3] RSA Security - 3_1 RSA. (2006). http://www.rsasecurity.com/rsalabs/node.as
p?id=2213.
[4] RSA - Wikipedia Indonesia, ensiklopedia bebas berbahasa Indonesia. (2006).
http://id.wikipedia.org/wiki/RSA.
[5] RSA - Wikipedia, the free encyclopedia. (2006). http://en.wikipedia.org/wiki/RSA.

Anda mungkin juga menyukai