implementasi algoritma rsa

Upload: -

Post on 15-Feb-2018

257 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/23/2019 Implementasi Algoritma RSA

    1/26

    Implementasi Gabungan Algoritma RSA dan

    algoritma Caesar

    Oleh:

    Noverio Joe1072171

    Kevin Lizandy1072057

    Delly Mellas Nyman1072131

    Reynata

    1072003

    Ester Herliana1072027

    Abdul Aziis - 1072110

    JURUSAN S1 TEKNIK INFORMATIKA

    FAKULTAS TEKNOLOGI INFORMASI

    UNIVERSITAS KRISTEN MARANATHA

    BANDUNG

    2012

  • 7/23/2019 Implementasi Algoritma RSA

    2/26

    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 dalamtelefon 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.

  • 7/23/2019 Implementasi Algoritma RSA

    3/26

    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 duniabelakangan ini, komunikasi berkembang dengan sangat cepat dengan adanya teknologi

    internet, akibatnya seorang hackerdengan 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 tentangkemanan 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 dalamwaktu beberapa jam sudah dapat dibangun. Beberapa pertimbangan tersebuttelah 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

  • 7/23/2019 Implementasi Algoritma RSA

    4/26

    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.

  • 7/23/2019 Implementasi Algoritma RSA

    5/26

    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 yangpaling 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.

  • 7/23/2019 Implementasi Algoritma RSA

    6/26

    2.2 Membuat Kunci Privat dan Kunci Publik

    1. Pilih dua buah bilangan prima sembarang, sebut adan b. Jaga kerahasiaan adan bini.

    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 untukmencegah

    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 enkripsiterhadap isi pesan dengan persamaan =

    mod n, yang dalam hal ini adalahblok plainteks, adalah chiperteks yang diperoleh, dan eadalah kunci enkripsi (kuncipublik). Harus dipenuhi persyaratan bahwa nilai harus terletak dalam himpunan nilai0, 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 ed1(mod m) sama dengen edmod m= 1. Menurut persamaan ChineseRemainderTheorem (CRT) yang menyatakan bahwa ab(mod m) ekivalen dengan a=b + km, sehingga ddapat dihitung dengan:

    (1.1)

    Akan terdapat bilangan bulat kyang 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= ax 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 dseperti

    yang dituliskan pada langkah instruksi 4.

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

  • 7/23/2019 Implementasi Algoritma RSA

    7/26

    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 lebihkecil, misalnya P dipecah menjadi enam blok yang berukuran 3 digit :

    Nilai-nilai ini masih terletak dalam rentang 0 sampai 3337 1. Blok pertamadienkripsikan sebagai . Blok kedua dienkripsikan sebagai . Dengan melakukan proses yang sama untuk sisa bloklainnya, 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 carayang 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 menghindaripenggunaan bilangan yang sangat besar maka dapat digunakan penyederhanaan

    dengen persamaan berikut:

    [ ] Contoh rumus di atas bisa di misalkan dengan contoh kasus seperti ini:

  • 7/23/2019 Implementasi Algoritma RSA

    8/26

    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 yangsetiap hasil pangkat nya di mod 33.

    Lalu perhatikan bahwa dpada 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 beberapabagian 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.

  • 7/23/2019 Implementasi Algoritma RSA

    9/26

    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 kuncimembutuhkan langkah, di mana k adalah jumlah bit dari modulus. Teknik multiplikasi

    cepat, seperti metode pada Fast Fourier Transform(FFT), membutuhkan langkah-langkah yanglebih 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.

  • 7/23/2019 Implementasi Algoritma RSA

    10/26

    4. Panjang Kunci yang Aman

    Ukuran kunci dalam algoritma RSA menunjuk kepada ukuran dari modulus n. Dua bilangan

    prima,pdan 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 untukmenggunakan 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 yangbaru.

    Userharus 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

  • 7/23/2019 Implementasi Algoritma RSA

    11/26

    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 kelipatandelapan. 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 pe-

    lipatdua-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 pdan 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 2161atau 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 = 251Maka 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

  • 7/23/2019 Implementasi Algoritma RSA

    12/26

    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 stringyang 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.

  • 7/23/2019 Implementasi Algoritma RSA

    13/26

    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, pdan q. Darip, 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 darisuatu sistem kriptografi.

    Cara lain untuk memcahkan algoritma RSA adalah dengan menemukan sebuah teknik untuk

    menghitung akar ke-emod n. Karena c= mod n , akar ke-edari cmod nadalah 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, sangpenyerang 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

  • 7/23/2019 Implementasi Algoritma RSA

    14/26

    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 sebagaipemecahan 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.

  • 7/23/2019 Implementasi Algoritma RSA

    15/26

    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 pesanmaximum 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 dirubah 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();stringplain = plain_encrypt_rtb.Text;byte[] ascii = Encoding.ASCII.GetBytes(plain);

    for(inti = 0; i < ascii.Length; i++){

    ascii_rtb.Text += ascii[i].ToString() + " ";}

    intc = 0;

  • 7/23/2019 Implementasi Algoritma RSA

    16/26

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

    if(c != 0 && ascii_rtb.Text.Substring(i, 1) == " "){

    stringasd = ascii_rtb.Text.Substring(i - c, c);stringcaesar = ((int.Parse(asd) + 3) % 255).ToString();if(caesar == "256")

    caesar = "1";elseif(caesar == "257")

    caesar = "2";elseif(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 text menjadi bilangan integer

    dengan menggunakan cara

    (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 :intc = 0;

    for(inti = 0; i < chiper_encrypt_rtb.Text.Length; i++)

    {if(c != 0 && chiper_encrypt_rtb.Text.Substring(i, 1) == " "){

    stringasd = (int.Parse(chiper_encrypt_rtb.Text.Substring(i - c, c),System.Globalization.NumberStyles.HexNumber)).ToString();

    BigIntegerdek = pangkatDekrip(int.Parse(asd), d, n);intcaesar = ((int)dek - 3) % 255;if(caesar == -2)

    caesar = 253;

  • 7/23/2019 Implementasi Algoritma RSA

    17/26

    elseif(caesar == -1)caesar = 254;

    elseif(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 melakukannya 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:

    publicBigIntegerpangkatDekrip(BigIntegera, BigIntegern, BigIntegerm)

    {if(n == 0)

    {

    return1;}else{

    if(n % 2 != 0)returnpangkat(pangkatDekrip(a, n / 2, m), 2) * a % m;

    elsereturnpangkat(pangkatDekrip(a, n / 2, m), 2) % m;

    }}Fungsi ini akan menerima angka yang akan di pangkat,angka pemangkat,dan modulus.

  • 7/23/2019 Implementasi Algoritma RSA

    18/26

    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 didaftarkanlebih 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.

  • 7/23/2019 Implementasi Algoritma RSA

    19/26

    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 standarkeamanan 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.

  • 7/23/2019 Implementasi Algoritma RSA

    20/26

    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 dokumendigital yang telah ditandai dapat ditukarkan antara user useryang 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 inimenambahkan ANSI X9.31, yang menekankan penandaan digital RSA untuk mendukung standar

    de factodalam 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.

  • 7/23/2019 Implementasi Algoritma RSA

    21/26

    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 penyimpanandata 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 perancanganperangkat 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.

  • 7/23/2019 Implementasi Algoritma RSA

    22/26

    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 huruf-

    huruf 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 integersebagai berikut:A= 0, B= 1, ,Z= 25,

    maka secara matematis caesar chipermenyandikan plaintekspimenjadi cidengan aturan:

    ci= E(pi) = (pi+ 3) mod 26 (1)

    dan dekripsi chiperteks cimenjadipidengan aturan:

    pi= D(ci) = (ci3) mod 26 (2)

  • 7/23/2019 Implementasi Algoritma RSA

    23/26

    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 kadalah kunci enkripsi

    dan deksripsi), fungsi enkripsi adalah:

    ci= E(pi) = (pi+ k) mod 26 (3)

    dan fungsi dekripsi adalah:

    pi= D(ci) = (cik) 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 searchterhadap chiperteks XMZVH

    Kunci (k)

    chipering

    Pesan hasil

    dekripsi

    Kunci (k)

    chipering

    Pesan hasil

    dekripsi

    Kunci (k)

    chipering

    Pesan hasil

    dekripsi

    0

    2524

    23

    22

    21

    20

    19

    18

    XMZVH

    YNAWIZOBXJ

    APCYK

    BQDZL

    CREAM

    DSFBN

    ETGCO

    FUHDP

    17

    1615

    14

    13

    12

    11

    10

    9

    GVIEQ

    HWJFRIXKGS

    JYLHT

    KZMIU

    LANJV

    MBOKW

    NCPLX

    ODQMY

    8

    76

    5

    4

    3

    2

    1

    PERNZ

    QFSOARGTPB

    SHUQC

    TIVRD

    UJWSE

    VKXTF

    WLYUG

  • 7/23/2019 Implementasi Algoritma RSA

    24/26

    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 satubuah. 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 HSPPWmenghasilkan 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-hurufchiperteks 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 chiperabjad-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)

  • 7/23/2019 Implementasi Algoritma RSA

    25/26

    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 23dan 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 chiperabjad-tunggal. Namun,

    dengan known-plaintext attack, chiper ini dapat dipecahkan, sedangkan dengan chipertext-

    only attacklebih sulit.

    c. Chiperabjad-majemuk(Polyalpabetic substitution chiper)

    Merupakan chiper substitusi-ganda (multiple-substitution chiper) yang melibatkan

    penggunaan kunci berbeda.

    Chiperabjad-majemuk dibuat dari sejumlah chiperabjad-tunggal, masing-masing dengan

    kunci yang berbeda.

    Kebanyakan chiperabjad-majemuk adalah chipersubstitusi periodik yang didasarkan pada

    periode m.

    Misalkan plainteks Padalah

    P=p1p2pmpm+1p2m

    maka chiperteks hasil enkripsi adalah

    Ek(P) =f1(p1)f2(p2) fm(pm)fm+1(pm+1) f2m(p2m)

    yang dalam hal inipiadalah huruf-huruf di dalam plainteks.

    Untuk m= 1, chiper-nya ekivalen dengan chiperabjad-tunggal.

    Contoh chipersubstitusi periodik adalah chiper Vigenere yang ditemukan oleh kriptologiPerancis, Blaise de Vigenere pada abad 16. Misalkan Kadalah deretan kunci

    K= k1k2 km

    yang dalam hal ini ki untuk 1 i m menyatakan jumlah pergeseran pada huruf ke-i.

    Maka, karakter chiperteks yi(p) adalah

  • 7/23/2019 Implementasi Algoritma RSA

    26/26

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

    Misalkan periode m = 20, maka 20 karakter pertama dienkripsi dengan persamaan (5),

    dimana setiap karakter ke-imenggunakan 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 chiperjenis 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 chipersubstitusi 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.