ALGORITMA RSA

PENDAHULUAN

Sebagai media komunikasi umum, suatu jaringan sangat rawan terhadap penyadapan, pencurian, dan pemalsuan informasi. Proses pengiriman data pada suatu jaringan harus menjamin keamanan dan keutuhan, jika tidak, akan terjadi kemungkinan-kemungkinan seperti yang dijelaskan sebelumnya, sehingga data yang dikirim dapat sampai di tujuannya. Untuk itu salah satu cara untuk mengamankan data dari kejadian-kejadian tersbut, diperlukan penyandian terhadap data yang akan dikirim.
Penyandian ini sangat penting, apalagi dalam sektor-sektor strategis seperti bisnis, perbankan, atau pemerintahan sangat memerlukan teknologi penyandian informasi. Ilmu menyandi (kriptografi) sebetulnya adalah ilmu yang sudah dikenal bahkan semenjak jaman Julius Caesar (sebelum masehi). Ilmu ini tidak hanya mencakup teknik-teknik menyandikan informasi, tetapi juga teknik untuk membongkar sandi.
Enkripsi adalah suatu proses mengubah sebuah teks murni (plaintext) menjadi sebuah runtutan karakter atau data yang terlihat tidak berarti dan mempunyai urutan bit yang tidak beraturan, disebut ciphertext. Proses pengubahan kembali ciphertext menjadi plaintext disebut dekripsi.
Terdapat banyak algoritma penyandian di dunia ini, yang paling banyak dipakai di dunia adalah DES dan RSA. Di samping DES dan RSA, masih ada banyak sandi lain seperti MD2 (dipakai GSM), IDEA, RC2, dll. Akan tetapi, DES dan RSA adalah yang paling populer dan paling banyak dipakai. DES (Data Standard) adalah hasil inovasi IBM di tahun 1972 yang kemudian diangkat menjadi standar oleh dewan standar AS (ANSI).
RSA merupakan algoritma pertama yang cocok untuk digital signature seperti halnya ekripsi, dan salah satu yang paling maju dalam bidang kriptografi public key. RSA masih digunakan secara luas dalam protokol electronic commerce, dan dipercaya dalam mengamnkan dengan menggunakan kunci yang cukup panjang.


RSA


Algortima RSA dijabarkan pada tahun 1977 oleh tiga orang yaitu Ron Rivest, Adi Shamir dan Len Adleman dari Massachusetts Institute of Technology. Huruf RSA itu sendiri berasal dari inisial nama mereka (RivestShamirAdleman).
Clifford Cocks, seorang matematikawan Inggris yang bekerja untuk GCHQ, menjabarkan tentang sistem equivalen pada dokumen internal di tahun 1973. Penemuan Clifford Cocks tidak terungkap hingga tahun 1997 karena alasan top-secret classification.
Algoritma tersebut dipatenkan oleh Massachusetts Institute of Technology pada tahun 1983 di Amerika Serikat sebagai U.S. Patent 4405829. Paten tersebut berlaku hingga 21 September 2000. Semenjak Algoritma RSA dipublikasikan sebagai aplikasi paten, regulasi di sebagian besar negara-negara lain tidak memungkinkan penggunaan paten. Hal ini menyebabkan hasil temuan Clifford Cocks dikenal secara umum, paten di Amerika Serikat tidak dapat mematenkannya.
RSA adalah salah satu algoritma penyandian yang paling banyak mengundang kontroversi, selain DES. Sejauh ini belum seorang pun yang berhasil menemukan lubang sekuriti pada DES dan RSA, tetapi tak seorang pun juga yang berhasil memberikan pembuktian ilmiah yang memuaskan dari keamanan kedua teknik sandi ini.
Untuk menyandi informasi dan untuk menerjemahkan pesan tersandi sebuah algoritma penyandian memerlukan sebuah data biner 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 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.
RSA yang menggunakan algoritma asimetrik mempunyai dua kunci yang berbeda, disebut pasangan kunci (key pair) untuk proses enkripsi dan dekripsi. Kunci-kunci yang ada pada pasangan kunci mempunyai hubungan secara matematis, tetapi tidak dapat dilihat secara komputasi untuk mendeduksi kunci yang satu ke pasangannya. Algoritma ini disebut kunci publik, karena kunci enkripsi dapat disebarkan. Orang-orang dapat menggunakan kunci publik ini, tapi hanya orang yang mempunyai kunci privat sajalah yang bisa mendekripsi data tersebut.

A.    Mekanisme dasar kerja RSA
Tingkat keamanan algoritma penyandian RSA sangat bergantung pada ukuran kunci sandi tersebut (dalam bit), karena makin besar ukuran kunci, maka makin besar juga kemungkinan kombinasi kunci yang bisa dijebol dengan metode mengencek kombinasi satu persatu kunci atau lebih dikenal dengan istilah brute force attack. Jika dibuat suatu sandi RSA dengan panjang 256 bit, maka metode brute force attack akan menjadi tidak ekonomis dan sia-sia dimana para hacker pun tidak mau/sanggup untuk menjebol sandi tersebut.

Besaran-besaran yang digunakan pada algoritma RSA:
1.      p dan q bilangan prima (rahasia)
2.      r = p q (tidak rahasia)
3.      m = (p – 1)(q – 1) (rahasia)
4.      PK (kunci enkripsi) (tidakrahasia)
5.      SK (kunci dekripsi) (rahasia)
6.      X (plainteks) (rahasia)
7.      Y (cipherteks) (tidak rahasia)
Algoritma RSA didasarkan pada teorema Euler yang menyatakan bahwa
            af(r) º 1 (mod r)                                                                       (1)
yang dalam hal ini,
1.      a harus relatif prima terhadap r
2.      f(r) = r(1 – 1/p1)(1 – 1/p2) … (1 – 1/pn), yang dalam hal ini p1, p2, …, pn adalah faktor prima dari r.
·         f(r) adalah fungsi yang menentukan berapa banyak dari bilangan-bilangan 1, 2, 3, …, r yang relatif prima terhadap r.

·         Berdasarkan sifat am º bm (mod r) untuk m bilangan bulat ³ 1, maka persamaan (1) dapat ditulis menjadi

a mf(r) º 1m (mod r)     
atau
                        amf(r) º 1 (mod r)                                                                     (2)
  • Bila a diganti dengan X, maka persamaan (2) menjadi
Xmf(r) º 1 (mod r)                                                                     (3)
·         Berdasarkan sifat ac º bc (mod r), maka bila persamaan (3) dikali dengan X menjadi:
Xmf(r) + 1 º X (mod r)                                                                (4)
yang dalam hal ini X relatif prima terhadap r.
·         Misalkan SK dan PK dipilih sedemikian sehingga
SK × PK º 1 (mod f(r))                                                           (5)
atau
SK × PK = mf(r) + 1                                                                (6)
·         Sulihkan (6) ke dalam persamaan (4) menjadi:
X SK × PK º X (mod r)                                                                (7)
·         Persamaan (7) dapat ditulis kembali menjadi
(X PK)SK º X (mod r)                                                                (8)
yang artinya, perpangkatan X dengan PK diikuti dengan perpangkatan dengan SK menghasilkan kembali X semula.
·         Berdasarkan persamaan (8), maka enkripsi dan dekripsi dirumuskan sebagai berikut:
EPK(X) = Y º XPK mod r                                                          (8)
DSK(Y) = X º YSK mod r                                                          (9)
·         Karena SK × PK = PK × SK, maka enkripsi diikuti dengan dekripsi ekivalen dengan dekripsi diikuti enkripsi:
ESK(DSK(X)) = DSK(EPK(X)) º XPK mod r                                 (10)
·         Oleh karena XPK mod r º (X + mr)PK mod r untuk sembarang bilangan bulat m, maka tiap plainteks X, X + r, X + 2r, …, menghasilkan cipherteks yang sama. Dengan kata lain, transformasinya dari banyak ke satu. Agar transformasinya satu-ke-satu, maka X harus dibatasi dalam himpunan {0, 1, 2, …, r – 1} sehingga enkripsi dan dekripsi tetap benar seperti pada persamaan (8) dan (9).

B.     Prosedur Membuat Pasangan Kunci
Dalam membuat suatu sandi, RSA mempunyai cara kerja dalam membuat kunci publik dan kunci privat adalah sebagai berikut:
1.      Pilih dua bilangan prima p dan q secara acak , . Bilangan ini harus cukup besar (minimal 100 digit).
2.      Hitung N = pq. Bilangan N disebut parameter sekuriti.
3.      Hitung .
4.      Pilih bilangan bulat (integer) antara satu dan  yang tidak mempunyai faktor pembagi dari .
5.      Hitung d hingga
Keterangan:
·         Langkah 3 dan 4 dapat dihasilkan dengan cara algoritma Euclidean
·         Langkah 4 dapat dihasilkan dengan menemukan integer x sehingga  menghasilkan bilangan bulat, kemudian menggunakan nilai dari  
Setelah melalu cara ini, maka kita akan mendapatkan kunci publik dan kunci privat. Kunci publik terdiri dari dua elemen, yaitu:
·         N, merupakan modulus yang digunakan
·         e, eksponen publik atau eksponen enkripsi
dan kunci privat, yang terdiri dari:
·         N, merupakan modulus yang digunakan, sama seperti pada kunci publik
·         d, eksponen pribadi atau eksponen deskripsi, yang harus dijaga kerahasiaanya
Nilai p dan q sebaiknya dibuang atau dijaga kerahasiaannya, karena terdapat N dimana p dan q adalah faktor pembagi dari N. Walaupun bentuk ini memperbolehkan dekripsi secara cepat dan signing menggunakan Chinese Remainder Theorem (CRT), hal ini mejadi lebih tidak aman karena bentuk ini memperbolehkan side channel attacks. Side channel attacks adalah sebuah serangan yang berdasarkan informasi yang dikumpulkan dari implementasi fisik (atau kelemahan secara fisik) dari sebuah sistem kriptografi, dibanding dengan kelemahan teoritis dari algoritmanya sendiri. Sebagai contohnya, faktor-faktor kurun waktu dari informasi, konsumsi tenaga, bahkan suara yang ditimbulkan dapat membantu mempermudah informasi yang bisa diambil untuk menjebol sistem tersebut.

C.    Proses Enkripsi Pesan
Misalkan pada suatu kasus si A ingin mengirim pesan m kepada si B. A mengubah m menjadi angka n < N, menggunakan protocol yang sebelumnya telah disepakati dan dikenal sebagai padding scheme. Padding scheme harus dibangun secara hati-hati sehingga tidak ada nilai dari m yang menyebabkan masalah keamanan. Contohnya, jika kita ambil contoh sederhana dari penampilan ASCII dari m dan menggabungkan bit-bit secara bersama-sama akan menghasilkan n, kemudian pesan yang berisi ASCII tunggal karakter NUL (nilai numeris 0) akan menghasilkan n = 0, yang akan menghasilkan ciphertext 0 apapun itu nilai dari e dan N yang digunakan.
Maka A mempunyai nilai n dan mengetahui N dan e, yang telah diumumkan oleh B. A kemudian menghitung ciphertext c yang terkait pada n:
Perhitungan tersebut dapat diselesaikan dengan menggunakan metode exponentation by squaring, yaitu sebuah algoritma yang dipakai untuk komputasi terhadap sejumlah nilai integer yang besar dengan cepat. Kemudian A mengirimkan nilai kepada B.

D.    Proses Dekripsi Pesan
B sudah menerima dari A, dan mengetahui kunci privat yang digunakan B. B kemudian mengembalikan nilai n dari dengan langkahlangkah
sebagai berikut:
Perhitungan diatas akan menghasilkan n, dengan begitu B dapat mengembalikan pesan semula m. Prosedur dekripsi bekerja karena
Kemudian, karena ed _ 1 (mod p-1) dan ed _ 1 (mod q-1), hasil dari Fermat's little theorem
        dan     

Karena p dan q merupakan bilangan prima yang berbeda, mengaplikasikan Chinese remainder theorem akan menghasilkan dua macam kongruen
serta

E.     Contoh Kasus
·         Kasus 1
Misalkan
p = 3
q = 11 (keduanya prima).
Selanjutnya, hitung nilai
n = p q = 33
dan
m = (p – 1) (q – 1) = 20.
Pilih d yang relatively prime terhadap m
→ gcd (e,m) = 1
→ gcd (e,20) = 1
e = 2 → gcd (e, 20) = 2 (tidak)
e = 3 → gcd (e, 20) = 1 (ya)
e = 5 → gcd (5,20) =1 (tidak)
e = 7 → gcd (7,20) =1 (ya)
Asumsi dipilih e =3
Cari nilai d
e * d = 1 mod (m)
3 * d = 1 mod 20
3 * d mod 20 = 1 􀃆 21 mod 20 =1
81 mod 20 =1
misal dipilih d=7
Public key : (3, 33)
Private key : (7, 33)
Enkripsi
B mengenkripsi message M untuk A Yang harus dilakukan B :
1.      Ambil kunci publik A yg otentik (n, e)
2.      Representasikan message sbg integer M dalam interval [0, n-1]
3.      Hitung C = M ^ e (mod n)
4.      Kirim C ke A
Dekripsi
Untuk mendekripsi, A melakukan :
Gunakan kunci pribadi d untuk menghasilkan
M = C^(d) (mod n)
Message "2"
Enkripsi
C = 2 ^ 3 (mod 33) = 8
   = 8 mod 33 = 0 sisa 8
Dekripsi
M = 8 ^ 7 (mod 33)
    = 2097152 (mod 33)
    = 2
·         Kasus 2
Misalkan
p = 47
dan q = 71 (keduanya prima).
n = p q = 3337
m = (p – 1) (q – 1) = 3220
mencari d
gcd(e,3337)
misal dipilih = 79
Hitung d
e * d = 1 mod (m)
79 * d = 1 mod 3220
79 * d mod 3220 = 1
→ 1019
Kunci publik : e, n Kunci private : d, n
Private key : (1019, 3337 )
Public key : (79, 3337 )
Misalkan plainteks yang akan dienkripsikan adalah
X = HARI INI
Dalam sistem desimal (pengkodean ASCII) adalah
H  A   R   I (SPASI)  I   N   I
72 65 82 73     32     73 78  73
Pecah X menjadi blok yang lebih kecil, misalnya X dipecah menjadi enam blok yang berukuran 3 digit:
        x1 = 726 x4 = 273
        x2 = 582 x5 = 787
        x3 = 733 x6 = 003 (ditambah 0)
Proses pemecahan melihat dalam interval
[0,n-1] interval [0, 3336]
Blok-blok plainteks dienkripsikan sebagai berikut:
726^79 mod 3337 = 215   = y1
582^79 mod 3337 = 776   = y2
733^79 mod 3337 = 1743 = y3
273^79 mod 3337 = 933   = y4
787^79 mod 3337 = 1731 = y5
003^79 mod 3337 = 158   = y6
Jadi, cipherteks yang dihasilkan adalah
Y = 215 776 1743 933 1731 158.
72 65 82 73 32 73 78 73 ASLI
215 776 1743 933 1731 15.
cf62b7c1b3169329d516ee6a13d3016c          hash asli
cf64ec4a3febd3642a29107c99e8e993           hash naskah
hash
72 65 82 73 32 73 78 73 dekripsi
H A R I
Dekripsi dilakukan dengan menggunakan kunci rahasia
Blok-blok cipherteks didekripsikan sebagai berikut:
215^1019 mod 3337 = 726 = x1
776^1019 mod 3337 = 582 = x2
1743^1019 mod 3337 = 733 = x3
Blok plainteks yang lain dikembalikan dengan cara yang serupa. Akhirnya kita memperoleh kembali plainteks semula
P = 7265827332737873
yang dalam karakter ASCII adalah
P = HARI INI.

F.     Keamanan RSA
Keamanan dari sistem kriptografi RSA adalah didasari oleh dua problem matematika:
·         Problem dalam faktorisasi bilangan berjumlah banyak
·         Problem RSA, yaitu mencari modulo akar  dari sebuah bilangan komposit N yang faktor-faktornya tidak diketahui
Proses dekripsi penuh dari sebuah ciphertext RSA dianggap sesuatu hal yang tidak mudah karena kedua problem ini diasumsikan sulit. Belum ada algoritma yang mangkus untuk menyelesaikannya. Problem RSA didefinisikan sebagai tugas untuk mencari suatu akar modulo   (e pangkat ke n) dari bilangan komposit N.
Mengembalikan suatu nilai m dimana , (e, n ) adalah kunci publik RSA dan c adalah ciphertext RSA. Metode pendekatan yang diyakini dapat menyelesaikan problem RSA saat ini adalah memfaktor dari modulus n. Dengan kemampuan untuk mengembalikan faktor yang merupakan bilangan prima, sebuah serangan dapat menghitung eksponen rahasia dari d dan dari kunci publik (e, n), lalu mendekripsi c menggunakan prosedur standar. Untuk menyelesaikannya, penyerang (bisa penyadap, penguping, dll.) memfaktor nilai n menjadi p dan q, lalu menghitung (p-1)(q-1) yang dapat menghasilkan nilai d dan e.
Penyerangan yang paling umum pada RSA ialah pada penanganan masalah faktorisasi pada bilangan yang sangat besar. Apabila terdapat faktorisasi metode yang baru dan cepat telah dikembangkan, maka ada kemungkinan untuk membongkar RSA.
Pada tahun 2005, bilangan faktorisasi terbesar yang digunakan secara umum ialah sepanjang 663 bit, menggunakan metode distribusi mutakhir. Kunci RSA pada umumnya sepanjang 1024 – 2048 bit. Beberapa pakar meyakini bahwa kunci 1024-bit ada kemungkinan dipecahkan pada waktu dekat, tetapi tidak ada seorangpun yang berpendapat kunci 2048-bit akan pecah pada masa depan yang terprediksi.
Jika N sepanjang 256-bit atau lebih pendek, maka kunci RSA akan dapat ditemukan dalam beberapa jam hanya dengan menggunakan PC, dengan menggunakan perangkat lunak yang tersedia. Jika N sepanjang 512-bit atau lebih pendek, N akan dapat difaktorisasi dalam hitungan ratusan jam seperti pada tahun 1999 dengan menggunakan ratusan komputer. Secara teori, perangkat keras bernama TWIRL dan penjelasan dari Shamir dan Tromer pada tahun 2003 mengundang berbagai pertanyaan akan keamanan dari kunci 1024-bit. Saat ini disarankan bahwa N setidaknya sepanjang 2048-bit.
Pada tahun 1993, Peter Shor, yang menerbitkan Algoritma Shor, menunjukkan
bahwa sebuah komputer quantum secara prinsip dapat melakukan faktorisasi dalam waktu polinomial, mengurai RSA dan algoritma lainnya.

G.    Membuat RSA Sukar Dijebol
Jika nilai N berjumlah kecil, maka nilai factor p dan q akan mudah diterka oleh para hacker. Maka untuk membuat nilai N sukar untuk dijebol oleh para hacker kita perlu nilai factor p dan q yang besar. Misalkan, dibandingkan kita memilih nilai 5 dan 11, lebih baik kita pilih bilangan prima yang besar, seperti 673 dan 24971, yang akan menghasilkan nilai d = 16805483 dan nilai e = 16779840.
Tetapi jika dihitung dengan suatu perangkat lunak ataupun suatu program yang kita buat yang dapat menghitung faktor-faktor dari suatu nilai. Angka-angka di atas dapat dengan mudahnya didapatkan faktor-faktornya. Sehingga hal ini menyimpulkan bahwa kita membutuhkan nilai p dan q yang sangat besar.

H.     Ancaman yang Mungkin Menyerang RSA
Sistem pengenkripsian RSA mempunyai kemungkinan – kemungkinan  kelemahan yang bisa diserang oleh para eavesdropper (penyadap, penguping), berikut adalah kelemahan - kelemahan dalam RSA yang sebaiknya dihindari:
·         Nilai n terlalu kecil, sehingga mudah untuk difaktorisasi
·         Jumlah nilai eksponen en yang terlalu kecil
·         Ukuran kunci yang terlalu kecil, sehingga sandi dapat dijebol dengan brute force attack
·         Nilai d terlalu kecil
·         Pengunaan nilai modulus yang familiar, hal ini memudahkan para hacker untuk menjebol sandi yang ada

I.        Pertimbangan Teknis dalam Enkripsi RSA
Jika kita berniat untuk mengenkripsi suatu data untuk dikirim ke suatu tujuan, ada beberapa faktor yang sebaiknya diperhatikan agar data yang kita kirim tidak mudah dijebol di tengah jalan.
1.      Dalam pembuatan kunci, sebaiknya memilih nilai p dan q yang jumlahnya tidak saling berdekatan dan besar, karena jika nilai N kecil, faktor dari N akan sangat mudah didapat. Seseorang seharusnya tidak melakukan metode pencarian bilangan prima yang hanya akan memberikan informasi penting tentang bilangan prima tersebut kepada penyerang. Biasanya, pembangkit bilangan acak yang baik akan memulai nilai bilangan yang digunakan. Harap diingat, bahwa kebutuhan disini ialah acak dan tidak terduga. Berikut ini mungkin tidak memenuhi kriteria, sebuah bilangan
2.      Mungkin dapat dipilah dari proses acak (misal, tidak dari pola apapun), tetapi jika bilangan itu mudah untuk ditebak atau diduga (atau mirip dengan bilangan yang mudah ditebak), maka metode tersebut akan kehilangan kemampuan keamanannya. Misalnya, tabel bilangan acak yang diterbitkan oleh Rand Corp pada tahun 1950-an mungkin memang benar-benar teracak, tetapi dikarenakan diterbitkan secara umum, hal ini akan mempermudah para penyerang dalam mendapatkan bilangan tersebut. Jika penyerang dapat menebak separuh dari digit p atau q, para penyerang dapat dengan cepat menghitung separuh yang lainnya. RSA memiliki kecepatan yang lebih lambat dibanding DES dan algoritma simetrik lainnya. Contohnya si A membuat sandi dari sebuah pesan menggunakan algoritma simetrik, membuat sandi kunci simetrik menggunakan RSA dan juga mengirimkan pesan yang dienkripsi secara simetrik kepada B. Prosedur ini menambah permasalahan akan keamanan. Singkatnya, sangatlah penting untuk menggunakan pembangkit bilangan acak yang kuat untuk kunci simetrik yang digunakan, karena eavesdropper dapat melakukan bypass terhadap RSA dengan menebak kunci simetrik yang digunakan.
3.      Sebagaimana halnya cipher, bagaimana public key RSA didistribusi menjadi hal penting dalam keamanan. Distribusi kunci harus aman dari man in the middle attack (penghadang ditengah jalan). Anggap eavesdropper dengan suatu cara mampu memberikan kunci arbitari kepada A dan membuat A percaya bahwa kunci tersebut milik B. Anggap eavesdropper dapat menghadang sepenuhnya transmisi antara A dan B. Eavesdropper mengirim A kunci publik milik B, dimana A percaya bahwa kunci publik tersebut milik B. Eavesdropper dapat menghadap seluruh ciphertext yang dikirim oleh A, melakukan dekripsi dengan kunci rahasia milik Eavesdropper sendiri, menyimpan salinan dari pesan tersebut, melakukan enkripsi menggunakan kunci publik milik B, dan mengirimkan ciphertext yang baru kepada B. Secara prinsip, baik A atau B tidak menyadari kehadiran eavesdropper diantara transmisi mereka. Pengamanan terhadap serangan semacam ini yaitu menggunakan sertifikat digital atau kompnen lain dari infrastuktur kunci publik
4.      Paul Kocher, kriptograf berkebangsaan Amerika Serikat, pemimpin perusahaan Cryptoghrapy Research Inc., menjelaskan sebuah serangan baru yang cerdas pada RSA di tahun 1995, jika penyerang, eavesdropper, mengetahui perangkat keras yang dimiliki oleh B secara terperinci dan mampu untuk mengukur waktu yang dibutuhkan untuk melakukan dekripsi untuk beberapa ciphertext, eavesdropper dapat menyimpulkan kunci dekripsi d secara cepat. Penyerangan ini dapat juga diaplikasikan pada skema "tanda tangan" RSA. Salah satu cara untuk mencegah penyerangan ini yaitu dengan memastikan bahwa operasi dekripsi menggunakan waktu yang konstan untuk setiap ciphertext yang diproses. Cara yang lainnya, yaitu dengan menggunakan properti multipikatif dari RSA. Sebagai ganti dari menghitung , B pertama-tama memilih nilai bilangan acak r dan menghitung . Hasil dari penghitungan tersebut ialah rm mod N kemudian efek dari r dapat dihilangkan dengan perkalian dengan inversenya. Nilai baru dari r dipilih pada tiap ciphertext. Dengan teknik ini, dikenal sebagai message blinding (pembutaan pesan), waktu yang diperlukan untuk proses dekripsi tidak lagi berhubungan dengan nilai dari ciphertext sehingga penyerangan waktu akan gagal.
5.      Pada tahun 1998, Daniel Bleichenbacher menjelaskan penggunaan penyerangan ciphertext adaptif, terhadap pesan yang terenkripsi menggunakan RSA dan menggunakan PKCS #1 v1 padding scheme. Dikarenakan kecacatan pada skema PKCS #1, Bleichenbacher mampu untuk melakukan serangkaian serangan terhadap implementasi RSA pada protocol Secure Socket Layer, dan secara potensial mengungkap kunci-kunci yang digunakan. Sebagai hasilnya, para pengguna kriptografi menganjurkan untuk menggunakan padding scheme yang relative terbukti aman seperti Optimal Asymmetric Encryption Padding, dan Laboratorium RSA telah merilis versi terbaru dari PKCS #1 yang tidak lemah terdapat serangan ini.
6.      Banyak prosesor yang memakai sebuah branch predictor, branch predicto adalah r sebuah arsitektur komputer yang merupakan bagian dari prosesor yang memutuskan apakah sebuah percabangan kondisional dari sebuah instruksi dari program sebaiknya diambil atau tidak. Biasanya prosesor ini juga mengimplementasikan Simulteneous Multithreading (SMT). Branch Prediction Analysis menyerang menggunakan suatu proses memata-matai untuk mencari kunci privat yang dipakai oleh prosesor ini.
Penyerangan seperti ini membutuhkan proses memata-matai untuk menjalankan mesin yang sama dengan mesin yang digunakan dalam memroses kunci privat tetapi proses ini tidak memerlukan kelebihan apapun dari sistem yang diserang.

J.      Pemakaian Fungsi Hash Satu Arah untuk Menjamin Keamanan Data
Pada suatu ilustrasi diberikan misalkan Andi ingin mengirimkan surat bukti pembayaran kepada Budi sebesar 1 juta rupiah, namun entah bagaimana caranya Joni dapat membobol sandi dan menambahkan satu angka nol di belakang nominal 1.000.000, yang akan mejadikan nominal tersebut menjadi 10 juta rupiah. Di mata Budi yang menjadi penerima surat, pesan tersebut haruslah utuh dan tidak diubah-ubah oleh siapapun, termasuk Joni, Budi dan Andi, juga dari gangguan pada transmisi sekalipun. Hal ini dapat dilakukan dengan menggunakan fungsi hash satu arah (one-way hash function), yang terkadang disebut juga sebagai sidik jari (fingerprint), message integrity check, atau manipulation detection code.
Saat Andi ingin mengirimkan pesannya, dia harus membuat sidik jari dari pesan yang akan dikirim untuk Bobi. Pesan yang akan di-hash disebut pre-image, sedangkan keluarannya yang memiliki nilai tetap, disebut hash-value (nilai hash). Kemudian melalui saluran komunikasi yang aman, dia mengirimkan sidik jarinya kepada Bobi. Setelah Bobi menerima pesan Andi (tidak peduli melalui jalur komunikasi manapun) Bobi kemudian juga membuat sidik jari dari pesan yang telah diterimanya dari Andi. Kemudian Bobi membandingkan sidik jari yang dibuatnya dari
Andi. Jika kedua sidik jari itu identik, maka Bobi dapat yakin bahwa pesan itu utuh dan tidak diubah-ubah sejak dibuatkan sidik jari yang diterima Bobi. Jika pesan pembayaran 1 juta rupiah diubah menjadi 10 juta rupiah, maka akan menghasilkan nilai hash yang berbeda. Fungsi hash untuk membuat sidik jari tersebut dapat diketahui oleh siapapun, tidak terkecuali, sehingga siapapun dapat memeriksa keutuhan dokumen atau suatu pesan tertentu. Tidak ada algoritma rahasia dan umumnya tidak ada pula kunci rahasia.
Jaminan keamanan dari sidik jari berasal dari pernyataan bahwa hampir tidak ada dua preimage yang memiliki hash-value yang sama. Hal inilah yang disebut dengan sifat collision free dari suatu fungsi hash yang baik. Selain itu sangat sulit untuk membuat suatu preimage jika hanya diketahui hash-value-nya saja.
Contoh algoritma fungsi hash satu arah adalah MD-5 dan SHA. Message authentication code (MAC) adalah salah satu variasi dari fungsi hash satu arah, hanya saja selain pre-image, sebuah kunci rahasia juga menjadi input bagi fungsi MAC.

K.     Contoh Nyata Pemakaian RSA
Salah satu contoh nyata pemakaian sistem penyandian RSA dalam kehidupan sehari-hari adalah dalam pemakaian signature atau tanda tangan digital dalam surat elektronik dam untuk autentikasi sebuah data. Untuk meyakinkan penerima surat elektronik yang ditandatangani, diperlukan pembuktian bahwa surat elektronik tersebut memang berasal dari si pengirim.
Untuk mencegah penyalahgunaan dalam surat elektronik, maka tanda tangan elektronik sangat dibutuhkan. Tanda tangan elektronik ini pun sebaiknya mempunyai sifat-sifat sebagai berikut:
·         Tanda tangan itu asli (otentik), tidak mudah ditulis/ditiru oleh orang lain. Pesan dan tanda tangan pesan tersebut juga dapat menjadi barang bukti, sehingga penandatangan tak bisa menyangkal bahwa dulu ia tidak pernah menandatanganinya.
·         Tanda tangan itu hanya sah untuk dokumen (pesan) itu saja. Tanda tangan itu tidak bisa dipindahkan dari suatu dokumen ke dokumen lainnya. Ini juga berarti bahwa jika dokumen itu diubah, maka tanda tangan digital dari pesan tersebut tidak lagi sah.
·         Tanda tangan itu dapat diperiksa dengan mudah.
·         Tanda tangan itu dapat diperiksa oleh pihak-pihak yang belum pernah bertemu dengan penandatangan.
·         Tanda tangan itu juga sah untuk kopi dari dokumen yang sama persis.
Sebuah tanda tangan elektronik harus bersifat message-dependent, juga signer-dependent. Maksudnya di sini adalah menyatu dengan surat elektroniknya. Jika tidak si penerima dapat memodifikasi pesan yang terkirim. Atau bisa saja si penerima melampirkan ke surat manapun, apalagi sangat tidak mungkin untuk mendeteksi “copy - paste” secara elektronik. Untuk mengimplementasikan tanda tangan elektronik kepada kunci publik, system kriptografi harus diimplemetasikan dengan trap-door one-way permutations, karena algoritma dekripsi dapat diaplikasikan untuk
surat yang tidak terdapat ciphertext.
Misalnya pada satu kasus, Andi ingin mengirim sebuah surat elektronik yang dilengkapi dengan tanda tangan elektronik kepada Bobi. Pertama-tama Andi mengkomputasi tanda tangan elektroniknya, S, untuk surat elektronik M, dengan menggunakan kunci DB. Sedemikian rupa sehingga sesuai dengan persamaan
S = DB (M)
Kemudian dia mengenkripsi S menggunakan EA (untuk privasi), lalu mengirimkannya kepada Bobi dalam bentuk EA (S). Andi tidak perlu mengirimkan M kepada Bobi, karena surat dapat dikomputasi dari S. Kemudian Bobi mendekripsi ciphertext dengan menggunakan DA mengubah S. Bobi tahu siapa pengirim surat elektronik dari tanda tangan elektronik Andi. Diasumsikan Bobi sudah tahu seperti apa tanda tangan elektronik Bobi. Kemudian dia membuka (mendekripsi) paket surat yang dikirim ke Bobi sama dengan prosedur enkripsi pengiriman tetapi kebalikannya:
M =EB (S)
Setelah itu mengecek kemiripan tanda tangan elektronik dari 2 surat elektronik yang ada (M, S). Andi yang telah mengirim surat elektronik kepada Bobi tidak dapat menyangkal lagi bahwa dia telah mengirimkan sebuah surat elektronik kepada Bobi. Karena tidak ada orang lain yang dapat membuat S = DB (M). Dan Bobi pun dapat membuktikan bahwa memang surat elektronik tersebut asli dari Andi karena tanda tangan elektroniknya asli, karena dia dapat membuktikan EB (S) = M.
Atau jika diimplementasikan dalam RSA, proses enkripsi-dekripsi data saat pengecekan keaslian dari pesan yang dikirim adalah sebagai berikut. Misalkan Andi ingin mengirim pesan kepada Bobi. Andi membuat sebuah hash value dari pesan tersebut, di pangkatkan dengan bilangan d dibagi N (seperti halnya pada deskripsi pesan), dan melampirkannya sebagai "tanda tangan" pada pesan tersebut. Saat Bobi menerima pesan yang telah "ditandatangani", Bobi memangkatkan "tanda tangan" tersebut dengan bilangan e dibagi N (seperti halnya pada enkripsi pesan), dan membandingkannya dengan nilai hasil dari hash value dengan hash value pada pesan tersebut. Jika kedua cocok, maka Bobi dapat mengetahui bahwa pemilik dari pesan tersebut adalah Andi, dan pesan pun tidak pernah diubah sepanjang pengiriman. Sehingga pada akhirnya Bobi dapat mengecek keaslian tanda tangan elektronik dari sebuah surat elektronik, tetapi dia tidak bisa mengubah-ubah tanda tangan yang sudah ada di surat elektronik tersebut.
Sistem enkripsi RSA dapat diaplikasikan dalam pengiriman data, apalagi data-data yang bersifat rahasia dan memerlukan autentikasi, seperti dalam mengirimkan nomor kartu kredit atau nomor rekening pada saat transaksi di internet. Sebuah sistem pengecekan online sebaiknya mengikuti sistem tanda tangan elektronik serperti di atas. Dan jika semua hal di internet yang membutuhkan autentikasi pengirim data menggunakan metode enkripsi, maka pengguna komputer akan dengan mudahnya membuat suatu transaksi di internet. Seperti yang telah terjadi sekarang, semuanya sudah online. Untuk membayarnya pun cukup memasukkan nomor kartu kredit dan beberapa nomor pengaman dari kartu kredit tersebut.
Pada sistem RSA, padding scheme merupakan hal yang esensial untuk mengamankan pengesahan pesan seperti halnya pada enkripsi pesan, oleh karena itu kunci yang sama tidak digunakan pada proses enkripsi dan pengesahan.



L.     Kekuatan RSA
         Keamanan algoritma RSA terletak pada tingkat kesulitan dalam memfaktorkan bilangan non prima menjadi faktor primanya, yang dalam hal ini r = p × q.
         Sekali r berhasil difaktorkan menjadi p dan q, maka  dapat dihitung. Selanjutnya, karena kunci enkrispi PK diumumkan (tidak rahasia), maka kunci dekripsi SK dapat dihitung dari persamaan
         Penemu algoritma RSA menyarankan nilai p dan q panjangnya lebih dari 100 digit. Dengan demikian hasil kali r = p × q akan berukuran lebih dari 200 digit. Menurut Rivest dan kawan kawan, usaha untuk mencari faktor bilangan 200 digit membutuhkan waktu komputasi selama 4 milyar tahun (dengan asumsi bahwa algoritma pemfaktoran yang digunakan adalah algoritma yang tercepat saat ini dan komputer yang dipakai mempunyai kecepatan 1 mili detik).
         Untunglah algoritma yang paling mangkus untuk memfaktorkan bilangan yang besar belum ditemukan. Inilah yang membuat algoritma RSA tetap dipakai hingga saat ini. Selagi belum ditemukan algoritma yang mangkus untuk memfaktorkan bilangan bulat menjadi faktor primanya, maka algoritma RSA tetap direkomendasikan untuk menyandikan pesan.

M.    Keuntungan dan Kerugian Memakai RSA
Dalam pemakaiannya, RSA tentu mempunyai beberapa keuntungan dan kerugian. Keuntungan utama dari RSA yang merupakan kriptografi kunci publik adalah menambah keamanan dan kenyamanan. Kunci privat tidak pernah diperlukan untuk dikirim atau diberi tahu ke orang lain. Pada sebuah sistem kunci rahasia, secara terang-terangan kunci rahasia ini harus dikirim (bisa secara manual atau melalui sebuah saluran komunikasi), dan akan terjadi suatu kemungkinan dimana penyerang dapat mencari tahu kunci rahasia tersebut saat proses pengiriman. Keuntungan utama lainnya adalah sistem RSA yang merupakan sistem kunci publik ini dapat menyediakan sebuah metode untuk tanda tangan digital atau tanda tangan elektronik. Autentikasi melalui kunci rahasia memerlukan pembagian dari beberapa rahasia dan terkadang juga memerlukan rasa kepercayaan terhadap pihak ketiga. Sebagai hasilnya, pengirim dapat menolak pesan autentikasi sebelumnya dengan cara membuktikan bahwa rahasia yang dibagikan bagaimanapun caranya disetujui oleh pihak lain yang berbagi rahasia tersebut. Contohnya, sistem autentikasi kunci rahasia Cerberus melibatkan sebuah basis data pusat yang menyimpan salinan dari kunci kunci rahasai dari semua user. Sebuah serangan ke basis data tersebut dapat menyebabkan data tersebut tersalin banyak.
Autentikasi kunci publik, di lain sisi, mencegah kejadian penolakan seperti ini. Setiap user mempunyai tanggung jawab sendiri untuk menjaga kunci privatnya masing-masing. Jenis autentikasi yang seperti ini sering disebut non-repudation. Kekurangan dari pemakaian kriptografi kunci publik, dalam hal ini RSA, adalah dalam masalah kecepatan. Banyak metode enkripsi kunci rahasia yang populer yang memiliki kecepatan enkripsi-dekripsi yang lebih cepat dibandingkan dengan metode enkripsi kunci publik yang ada sekarang. Namun kriptografi kunci publik dapat digunakan dengan kriptografi kunci rahasia untuk mendapatkan metode enkripsi yang terbaik di dunia. Untuk enkripsi, solusi terbaik adalah dengan cara mengkombinasi sistem kunci publik dan sistem kunci rahasia untk mendapatkan kedua keuntungan yang dimiliki oleh kedua metode enkripsi ini, keuntungan keamanan dari segi sistem kunci publik, dan keuntungan kecepatan dari segi sistem kunci rahasia. Sistem kunci publik dapat digunakan untuk mengenkripsi sebuat kunci rahasia, yang bisa digunakan untuk mengenkripsi file atau pesan yang berukuran besar sekalipun. Kriptografi kunci publik dapat menjadi lemah terhadap pemalsuan identitas user, bagaimana pun juga, walupun jika kunci privat dari pemakai tidak tersedia. Sebuah serangan yang sukses pada sebuah otoritas sertifikasi akan memperbolehkan lawan untuk menyelinap siapapun yang lawan pilih dengan cara memilih sertifikat kunci publik dari sebuah otoritas yang memilikinya untuk menggabungkan kunci tersebut ke nama user yang lain.
Di beberapa situasi, kriptografi kunci public tidak perlu dan kriptografi rahasia saja sudah cukup. Situasi ini termasuk lingkungan dimana persetujuan kunci rahasia mempunyai sebuah tempat penting, sebagai contoh oleh beberapa user yang melakukan pertemuan dengan sifat pribadi. Hal lain yang mempengaruhi adalah lingkungan dimana sebuah otoritas mengetahui dan mengatur semua kunci, misalkan sebuah sistem perbankan tertutup. Karena otoritas sudah mengetahui kunci setiap orang, tidak terdapat keuntungan berarti untuk menggunakan sesuatu yang bersifat publik dan yang lainnya pribadi. Dan juga kriptografi kunci publik seringkali tidak diperlukan di sebuah lingkungan yang hanya terdapat satu user. Sebagai contoh, jika kita ingin menyimpan file-file secara terenkripsi, kita bias melakukannya dengan menggunakan algoritma enkripsi kunci rahasia yang menggunakan, bisa dikatakan, sandi lewat pribadi kita. Pada pemakaian biasanya, kriptografi kunci public sangat tepat untuk digunakan pada suatu lingkungan dengan banyak user yang bersifat terbuka.
Kriptografi kunci publik tidak diciptakan untuk menggantikan kriptografi kunci privat, tetapi lebih untuk menutupi kekurangan yang ada, untuk membuat suatu sistem enkripsi menjadi aman. Kegunaan awal dari teknik kunci public ini adalah untuk penukaran kunci pengaman di dalam suatu sistem kunci rahasia. Ini masih menjadi salah satu dari kegunaan utamanya. Kriptografi kunci rahasia tetap menjadi sangat penting dan menjadi sebuah bahan pembelajaran dan riset yang sedang diadakan.

N.     Pemakaian RSA Pada Saat Ini
Pada saat ini RSA pada dunia nyata dipakai di segala bidang. RSA dewasa ini dipakai di berbagai macam produk, industri dan standar di seluruh dunia. RSA ditemukan di berbagai perangkat lunak komersil dan direncanakan agar penggunaan lebih ditingkatkan. RSA dibangun ke dalam sistem operasi yang dipakai pada saat ini oleh Microsoft, Apple, Sun, dan Novell. Pada skala perangkat keras, RSA dapat digunakan pada secure telephone (telepon yang dilengkapi piranti keamanan), kartu jaringan Ethernet, dan pada kartu cerdas (smart cards). RSA juga digabungkan ke dalam internet protokol berskala besar untuk digunakan pada komunikasi internet yang aman, seperti SSL, S-HTTP, SEPP, S/MIME, S/WAN, STT and PCT. RSA juga digunakan di banyak institusi, termasuk cabang-cabang dari pemerintah Amerika Serikat, perusahaanperusahaan besar, laboratorium besar dan universitas.



KESIMPULAN

Kesimpulan yang dapat diambil dari studi pemakaian RSA dalam penyandian adalah:
1.      RSA merupakan metode penyandian yang masih kokoh untuk mengatasi masalah keamanan dalam pengiriman data pada suatu jaringan pada media elektronik
2.      Dari segi teknis penghitungan, system RSA mempunyai cara enkripsi yang mudah, tetapi jika sudah dienkripsi, data yang terenkripsi sulit untuk dibobol jika hanya mempunyai kunci publiknya saja
3.      Belum ada teknik pembobolan lain yang lebih efektif daripada brute force attack, jadi untuk ukuran kunci yang panjang, sistem penyandian dengan RSA masih sangat baik dan sulit untuk dibobol
4.      Dalam proses pembuatan kunci publik dan kunci privat, terdapat beberapa factor yang menjadi pertimbangan, yaitu ukuran dari kunci, penentuan nilai p dan q agar sulit untuk dibobol, dan kemungkinan-kemungkinan kelemahan yang dapat diketahui saat data selesai dienkripsi
5.      Pada kehidupan sehari-hari, aplikasi sisten RSA dapat ditemukan pada system autentikasi data dan pembuatan tanda tangan digital pada komputer, pada tingkat perangkat keras, RSA banyak digunakan pada telepon yang mempunyai system pengaman dari penyadapan, kartu jaringan ethernet, dan pada kartu cerdas. RSA juga dimasukkan ke dalam protokol internet yang mempunyai sistem pengaman, seperti S-HTTP, S/MIME dan lain-lain.

Referensi
        http://id.wikipedia.org/wiki/RSA diunduh tanggal 9 April 2011.
        Wicaksono, Prasetyo Andy. Studi Pemakaian Algoritma RSA dalam Proses Enkripsi dan Aplikasinya. Makalah0607-80.pdf diunduh tanggal 9 April 2011.
        Muhash. Algoritma RSA. 7757_Algoritma_RSA.pdf diunduh tanggal 18 Maret 2011.

Comments :

2 komentar to “ALGORITMA RSA”

Mr_Jaim mengatakan... on 

bisa ngga gan jelasin model matematika pda saat proses deskripsi & enkripsinya......di bagian 726^79 mod 3337 = 215 ....... kok bisa hasilnya 215... sedangkan untuk 726^79 nilainya tdk bisa di tampung di memori komputer krn nilainya besar sekali.....

nurul aini mengatakan... on 

Terima kasih atas share ilmunya , saya mulai memahami perbedaan Cryptography RSA untuk pesan rahasia dan RSA untuk digital signature.

Poskan Komentar

Daily Categories