kuis KSK Desi rose algoritma


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 kontekskonteks yang dibatasi. Dalam dunia belakangan ini, komunikasi berkembang dengan sangat cepatdengan adanya   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
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 informasiinformasi lainnya.
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, pihakpihak yang ingin berkomunikasi secara privat harus punya akses ke sebuah kunci DES bersama. Walaupun bisaanya pihak-pihak yang terkait sudah saling percaya, skema ini memungkinkan satu pihak untuk memalsukan pernyataan dari pihak lainnya. Contoh, Agus dan Fatma menggunakan DES untuk melindungi komunikasi privat mereka. Untuk itu mereka menyetujui sebuah kunci DES yang dipakai bersama. Suatu saat Agus mengirim sebuah pesan tersandi untuk Fatma bahwa ia akan menjamin semua hutang Fatma.  Seminggu kemudian Fatma betul-betul membutuhkan jaminan Agus. Akan tetapi Agus mungkir dan bahkan menuduh Fatma melakukan pemalsuan. Fatma tidak bisa berbuat apa-apa karena tidak bisa membuktikan bahwa Agus berbohong (dan sebaliknya Agus juga tidak bisa membuktikan pemalsuan Fatma, kalau itu yang terjadi). Ini terjadi karena Fatma dan Agus berbagi kunci yang sama. Jadi, keduanya sama-sama bisa ‘merekayasa’ surat jaminan Agus tadi. Kalau kita lihat dalam dunia nonelektronis, dokumen-dokumen sering ada tanda tangannya, atau cap organisasi. Tanda tangan dan cap tersebut ditujukan untuk meyakinkan penerima dokumen bahwa dokumen tersebut memang asli berasal dari individu atau organisasi yang tandatangan/capnya tertera di dokumen tersebut.  Mekanisme serupa tentunya juga dibutuhkan oleh dokumen-dokumen elektronis (disebut sertifikat/tanda-tangan digital). Dari cerita Fatma dan Agus diatas kita lihat bahwa yang dibutuhkan adalah mekanisme tanda tangan digital. Sekarang Fatma hanya akan mempercayai pernyataan Agus kalau pernyataan tersebut dilengkapi oleh tanda-tangan digital Agus, karena dengan itu Agus nantinya tidak bisa mungkir lagi. 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 publicdomain-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 computer 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 makalah ini penulis 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 penerapanpenerapannya 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 (Rivest—Shamir— Adleman). Clifford Cocks, seorang matematikawan Inggris yang bekerja untuk GCHQ, menjabarkan tentang sistem equivalen pada dokumen internal di tahun 1973. Penemuan Clifford Cocks tidak terungkap hingga tahun 1997 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 (Private Key) dan Kunci Publik (Public Key) Berikut ini langkah-langkahnya adalah: 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 ci = pie mod n, yang dalam hal ini pi adalah blok plainteks, ci adalah chiperteks yang diperoleh, dan e adalah kunci enkripsi (kunci publik). Harus dipenuhi persyaratan bahwa nilai pi 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 pi = cid mod n, yang dalam hal ini d adalah kunci dekripsi (kunci privat). Perhatikan pada langkah 4, kekongruenan ed ≡ 1(mod m) sama dengan ed mod m = 1. Menurut persamaan Chinese RemainderTheorem (CRT) yang menyatakan bahwa a ≡ b (mod m) ekivalen dengan a = b + km, maka ed ≡ 1(mod m) ekivalen dengan ed = 1 + km, sehingga d dapat dihitung dengan:

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. 

e x d ≡1 (mod m)

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 deskripsi yang harus dirahasiakan Misalkan plainteks yang akan dienkripsikan adalah p = “HARI INI” (atau dalam decimal ASCII-nya adalah 7265827332737873). Pecah p menjadi blok-blok yang lebih kecil, misalnya p dipecah menjadi enam blok yang berukuran 3 digit : p1 = 726, p2 = 582, p3 = 733, p4 = 273, p5 = 787, dan p6 = 003. Nilai-nilai pi ini masih terletak dalam rentang 0 sampai 3337 – 1. Blok pertama dienkripsikan sebagai 72679 mod 3337 = 215 = c1. Blok kedua dienkripsikan sebagai 58279 mod 3337 = 776 = c2. 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 c1 didekripsikan sebagai 2151019 mod 3337 = 726 = p1 , blok c2 didekripsikan sebagai 7761019 mod 3337 = 582 = p2. 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 (ci = pie mod n) dan dekripsi (pi = cid mod n) membutuhkan bilangan yang sangat besar. Untuk menghindari penggunaan bilangan yang sangat besar, maka dapat digunakan penyederhanaan
dengan persamaan berikut : ab mod m = [(a mod m) (b mod m)] mod m. 

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 faktorfaktor 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 O(k2) langkah, operasi kunci privat membutuhkan O(k3) langkah, pembangitan kunci membutuhkan O(k4) 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 bdaripada 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 tahuntahun 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, kirakira 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 RSA155 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.  Bisaanya 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 membisaakan 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 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. 

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 faktor 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 = me 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 mtode 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.  Contoh Kasus Algoritma RSA Untuk Pribadi Dalam Praktiknya Pada praktiknya, sistem RSA sering digunakan bersama-sama dengan sistem kriptografi dengan kunci rahasia, seperti DES, untuk mengenkripsi sebuah pesan dengan jenis sebuah amplop digital RSA. Umpamanya Fatma hendak mengirimkan sebuah pesan yang terenkripsi kepada Agus. Pertama dia mengenkripsi pesan tersebut dengan DES, menggunakan kunci acak DES yang
telah dipilih. Kemudian Fatma menggunakan kunci public RSA Agus untuk mengenkripsi kunci DES. Pesan DES yang telah terenkripsi dan kunci DES yang telah terenkripsi dengan RSA disatukan dalam bentuk amplop digital RSA dan dikirimkan kepada Agus. Setelah menerima amplop digital, Agus mengdekripsikan kunci DES dengan kunci privat miliknya, barulah menggunakan kuci DES untuk mengdekripsikan pesan itu sendiri. Contoh seperti ini mengkombinasikan kecepatan tinggi DES dengan kepercayaan pengelolaan kunci dengan sistem RSA. 

7. Contoh Kasus Algoritma RSA Untuk Pembuktian dan Penandaan Digital dalam praktiknya Sistem kriptografi kunci publik RSA bisa digunakan untuk membuktikan dan mengenali orang lain atau sesuatu yang memang ada. Alasan mengapa RSA bisa digunakan adalah setiap hal yang memang benar memiiki kunci privat yang berhubungan yang (secara teori) tidak ada orang lain yang dapat menembusnya. Hal ini berguna untuk identifikasi positif dan unik. Contohnya, umpamanya Fatma hendak mengirimkan pesan kepada Agus. Dia menggunakan fungsi hash terhadap pesan untuk menciptakan inti dari pesan, yang disediakan sebagai ”cap jari digital ” dari pesan tersebut.  Kemudian Fatma mengenkripsikan inti dari pesan tersebut dengan kunci privat miliknya, membuat tanda digital untuk kemudian dikirim kepada Agus bersamaan dengan pesannnya sendiri. Agus, setelah menerima pesan dan tanda, mengdekripsikan tanda dengan kunci public milik Fatma untuk medapatkan kembali inti dari pesan tersebut. Kemudian Agus mengubah kembali pesan dengan fungsi hash yang sama dengan yang dipakai oleh Fatma dan membandingkan hasilnya dengan inti dari pesan yang telah didekripsikan dari tanda.  Jika keduanya secara tepat sama, tanda tadi telah berhasi diverifikasi dan Agus dapat meyakini bahwa pesan tersebut benar-benar dari Fatma. Jika ternyata keduanya tidak tepat sama, entah pesan tersebut memang seperti itu atau telah diubah setelah ditandai, Agus dapat menolak pesan tersebut. Siapapun yang membaca pesan ini dapat menguji tandanya. Hal ini tidak dapat memuaskan keadaan dimana Fatma hendak mempertahankan kerahasiaan dokumen tersebut. Dalam keadaan seperti ini dia mungkin hendak menandai dokumen tersebut kemudian mengenkripsinya dengan kunci publik milik Agus. Agus kemudian harus mengdekripsikan dokumen tersebut dengan kunci publiknya dan memeriksa tanda pada pesan yang telah didapatkan kembali menggunakan kunci public milik Fatma.  Cara lain, jika dibutuhkan untuk memiliki pihak ketiga untuk mensahkan kesahan dari pesan tanpa dapat mengdekripsikan pesan, daripada dalam bentuk plainteks. Dalam praktiknya, eksponen publik dalam algoritma RSA bisaanya jauh lebih kecil dari
eksponen privat. Hal ini bermakna bahwa pembuktian tanda lebih cepat daripada penandaan. Hal seperti ini diinginkan karena sebuah pesan akan ditandai oleh seseorang hanya untuk satu kali, tetapi tanda yang terdapat pada pesan tersebut mungkin akan diuji beberapa kali oleh beberapa orang. Haruslah menjadi suatu hal yang tidak mungkin bagi seseorang baik untuk mendapatkan sebuah pesan yang diubah dengan suatu fungsi hash menjadi sebuah nilai yang telah diberikan maupun untuk mendapatkan dua buah pesan yang diubah menjadi nilai yang sama. Jika memang mungkin terjadi, seorang pengacau bisa melampirkan sebuah pesan yang salah pada tanda yang telah diberikan oleh Fatma.  Fungsi-fungsi hash seperti MD5 dan SHA telah dirancang secara khusus untuk mempunyai suatu sifat bahwa suatu kesamaan adalah hal yang tidak mungkin terjadi, dan oleh karena itu benarbenar dipertimbangkan sesuai dengan penggunaan dalam kriptografi. Satu atau lebih sertifikat bisa menyertai sebuah tanda digital. Sebuah sertifikat adalah sebuah dokumen yang telah ditandai yang mengikat kunci publik pada suatu identitas dari sebuah kelompok. Tujuannya adalah untuk menghalangi seseorang menirukan seseorang yang lain. Jika sebuah sertifikat adalah kata-kata, orang yang menerima (atau suatu pihak ketiga) bisa memeriksa bahwa kunci publik tersebut merupakan milik dari suatu kelompok yang telah dinamai, anggap orang yang menandai kunci publik sudah dapat dipercayai. 

8. 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 cabangcabang dari Pemerintah Amerika Serikat (AS), badanbadan 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 system
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. 

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

10. 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 useruser 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 yand telah diterima untuk penandaan digital memungkinkan semua hal ini terjadi. 
Algoritma RSA


CODINGAN ALGORITMA RSA

package ksl;
import java.math.BigInteger;
import java.util.Random;
public class ksk {
    private BigInteger p;
    private BigInteger q;
    private BigInteger n;
    private BigInteger eulertot;
    private BigInteger e;
    private BigInteger d;
    private int panjangbit = 1024;
    private int ukuran_kunci_sandi = 256;
    private Random random;
   
    public ksk (){
        random = new Random();
        p = BigInteger.probablePrime(panjangbit, random);
        q = BigInteger.probablePrime(panjangbit, random);
        n = p.multiply(q);
        eulertot = p.subtract(BigInteger.ONE).multiply(q.subtract(BigInteger.ONE));
        e = BigInteger.probablePrime(panjangbit/2, random);
        while (eulertot.gcd(e).compareTo(BigInteger.ONE)>0&& e.compareTo(eulertot)<0){
            e.add(BigInteger.ONE);
        }
        d = e.modInverse(eulertot);
    }
    public byte [] enkripsi (byte [] data){
       return (new BigInteger(data)).modPow(e, n).toByteArray();
    }
    public byte [] deskrip(byte [] data){
        return (new BigInteger(data)).modPow(d, n).toByteArray();
    }
    private static String byte_ke_String(byte [] data){
        String hasil = "";
        for (byte b : data){
            hasil += Byte.toString(b);
        }
        return hasil;
    }
    public static void main(String[] args){
        String pesan = "dicky fajar NIM 201631149";
        ksk rsa = new ksk();
        System.out.println("pesan asli = "+pesan);
        byte[] hasilRSA = rsa.enkripsi(pesan.getBytes());
       
        System.out.println("hasil enkripsi = "+byte_ke_String(hasilRSA));
        byte[] hasilDe = rsa.deskrip(hasilRSA);
        System.out.println("hasil dekrip RSA string byte = "+byte_ke_String(hasilDe));
        Syst
em.out.println("hasil  = "+new String(hasilDe));
        }
       

    }

Comments

Popular Posts