SlideShare a Scribd company logo
Mengenal Algoritma Enkripsi RSA
Oleh: Iwan Ariawan (2097200608)
Sebagai tugas mata kuliah Sistem Keamanan Komputer
Sejarah RSA
Algortima RSA dijabarkan pada tahun [[1977]] oleh tiga orang : [[Ron Rivest]], [[Adi Shamir]]
dan [[Len Adleman]] dari [[Massachusetts Institute of Technology]]. Huruf '''RSA''' itu sendiri
berasal dari inisial nama mereka ('''R'''ivest—'''S'''hamir—'''A'''dleman).
[[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 {{US 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.
Introduction
RSA adalah sebuah algoritma berdasarkan skema public-key cryptography. Diberi nama RSA
sebagai inisial para penemunya: Ron Rivest, Adi Shamir, dan Leonard Adleman. SA dibuat di
MIT pada tahun 1977 dan dipatenkan oleh MIT pada tahun 1983. Setelah bulan September
tahun 2000, paten tersebut berakhir, sehingga saat ini semua orang dapat menggunakannya
dengan bebas.
Lebih jauh, RSA adalah algoritma yang mudah untuk diimplementasikan dan dimengerti.
algoritma RSA adalah sebuah aplikasi dari sekian banyak teori seperti extended Euclid
algorithm, euler's function sampai fermat theorem.
Artikel ini menjelaskan algoritma RSA dari dasar. Saya akan menggunakan nilai-nilai yang
kecil untuk menjelaskan bagaimana cara kerja algoritma RSA.
Public-Key Cryptography
Konsep fundamental dari Public-Key Cryptography ditemukan oleh Whitfield Diffie dan Martin
Hellman, dan secara terpisah oleh Ralph Merkle. Sedangkan konsep dasar Public-Key
Cryptography terletak pada pemahaman bahwa keys selalu berpasangan: encryption key dan
decryption key. Juga perlu diingat bahwa sebuah key tidak dapat digenerate dari key lainnya.
Pemahaman encryption dan decryption key sering disebut sebagai public dan private key.
Seseorang harus memberikan public key-nya agar pihak lain dapat meng-encrypt sebuah pesan.
Decryption hanya terjadi jika seseorang mempunyai private key.
Scenario
Bagian ini menjelaskan skenario bagaimana public-key cryptosystem bekerja. Saya akan
menggunakan partisipan klasik Alice dan Bob sebagai orang-orang yang melakukan pertukaran
informasi.
1. Alice dan Bob setuju untuk menggunakan public-key cryptosystem.
2. Bob mengirimkan public key-nya kepada Alice.
3. Alice meng-encrypt pesan yang dibuatkan dengan menggunakan public key milik Bob dan
mengirimkan pesan yang sudah di-encrypt kepada Bob.
4. Bob men-decrypt pesan dari Alice menggunakan private key miliknya.
Mathematical Notation
Untuk memahami algoritma RSA, seseorang harus memahami beberapa notasi matematika
dasar, teori dan formula. Hal tersebut dibutuhkan untuk mendukung semua kalkulasi yang
dilakukan dalam algoritma RSA.
1. Modulo (didenotasikan dengan 'x mod m' atau 'x % m' dalam beberapa bahasa komputer)
- x % m = x mod m = pembagian x dengan m dan mengambil sisanya.
- Contoh: 25 mod 5 = 0 karena 5 habis membagi 25
25 mod 4 = 1 karena 25 / ( 4 * 6 ) menyisakan 1
x mod m = x jika dan hanya jika x < m
2. Z/mZ
- Z/7Z : { 0,1,2,3,4,5,6 } dimana [7]=[0], [8]=[1], [9]=[2] dan seterusnya.
- Operasi yang didukung dalam Z/mZ aalah penjumlahan, pengurangan, pembagian dan
perkalian.
- Inverse: Sebuah elemen dalam Z/mZ seperti A, memiliki sebuah inverse B jika dan hanya
jika [A]x[B] = [1]
- Units: Setiap elemen dalam Z/mZ yang memiliki inverse adalah sebuah unit.
- Contoh: Z/7Z
Penjumlahan: [2]+[3] = [5] ; [5]+[5] = [10] ... [10-7] = [3]
Pengurangan: [2]-[3] = [-1] = [6] ; [6]-[4] = [2]
Pembagian : [6]/[2] = [3] ; [6]/[4] = [5] ([4]x[5] = [20] = [6])
Perkalian : [2]x[6] = [12] = [5] ;
Soal: [6]/[4]
a. Tempatkan dalam formula [6] = [X][4]
b. Cari inverse dari [4], yaitu [2] ... [4]x[2] = [8] = [1]
c. Kali inverse dengan [6] ... [2]x[6] = [12] = [5]
d. Sehingga [4]x[5] = [20] = [13] = [6]
3. GCD(A,B)
GCD = greatest common divisor.
GCD(A,B) = D
GCD(78,32) = 2, karena tidak ada bilangan yang lebih besar dari dua yang
membagi 78 dan 32.
GCD(A,B) dapat ditemukan dengan menggunakan algoritma extended euclid.
Jika GCD(A,B) = 1 maka A and B dalah coprime satu sama lainnya (dengan kata lain, A
dan B adalah relatively prime).
4. Memecahkan 8x mod 13 = 1, dimana x adalah bilangan yang belum diketahui.
- Cari gcd(8,13) yang berarti 1 ... yang berarti persamaan dapat diselesaikan.
- Membuat sebuah matriks dan menggunakan operasi gaussian dalam matriks.
8 | 1 0 r2=r2-r1 8 | 1 0 r1=r1-r2
13 | 0 1 ---------> 5 | -1 1 --------->
3 | 2 -1 r2=r2-r1 3 | 2 -1
5 | -1 1 ---------> 2 |-3 2
lakukan sampai kita mendapatkan format : 1 | s t
0 | s' t'
s, t, s', t' dapat berupa bilangan apa saja.
Jika hasil akhir yang di dapat sbb: 0 | s' t' , kita harus
1 | s t
rotasi atas-bawah hasil nya menjadi format: 1 | s t
0 | s' t'
sehingga sekarang kita mendapatkan d = 1, s = 5, t = -3, sehingga
x = s = 5.
5. Euler's phi function (jangan sampai keliru dengan phi = 3.14)
- Euler's phi function adalah sebuah total bilangan unit dalam Z/mZ
- Theorem
a. Jika p adalah sebuah bilangan prima, maka phi(p) = p - 1
p dan phi(p) adalah (contoh: gcd(p,phi(p)) = 1)
ii): phi(m*n) = phi(m) * phi (n)
phi(p^a) = (p^a) - p^(a-1)
b. Contoh:
-- phi(7) = 6
-- phi(840) = phi(8) * phi(105) = phi(2^3) * phi(3*5*7)
= [(2^3) - (2^2)] * phi(3) * phi(5) * phi(7)
6. Pangkat. pow(a,b)
Saya akan menggunakan notasi '^' seperti pada a^b
Key Generation
Misalkan Alice ingin Bob mengirimnya sebuah pesan melalui jalur yang aman. Alice akan
memberikan public keynya kepada Bob dan menyimpan private key untuk dirinya.
a. Pilih 2 bilangan prima besar seperti p,q dimana p tidak sama dengan q.
b. Hitung M = p x q
c. Hitung phi(M) = phi(p) * phi(q)
d. Pilih sebuah integer 'e' dimana 1 < e < phi(M) dan 'e' serta phi(M) adalah coprime.
e. Hitung 'd' integer sehingga (d * e) mod M = 1
f. (M,e) adalah public key dimana M adalah modulo dan e adalah eksponen encryption.
g. (M,d) adalah private key dimana M adalah modulo dan d adalah eksponen decryption.
Encrypting Message
Misalkan Bob ingin mengirim sebuah pesan 'H' kepada Alice.
a. Alice harus membuat keynya; sehingga ia memiliki private dan public keys.
private key = (M,d)
public key = (M,e)
b. Mengubah 'H' menjadi sebuah bilangan yang menggunakan alphabet yang valid dengan tabel
bilangan. Sebuah contoh mudah adalah mapping A = 1, B = 2 ... Z = 26.
sehingga H = 8
c. C = 8^e (mod M)
C adalah sebuah bilangan ter-encrypt.
d. Bob mengirimkan bilangan tersebut kepada Alice sehingga Alice dapat melakukan decode
ulang menggunakan private keynya.
Decrypting Message
Misalkan Alice menerima sebuah pesan ter-encrypt, ia akan men-decrypt-nya menggunakan
tahapan-tahapan berikut:
a. Alice mempunyai private key dari langkah-langkah di atas (M,d)
b. N = C^d (mod M)
c. N adalah bilangan. Gunakan konversi table alphabet untuk mengubah
N menjadi karakter yang direpresentasikannya.
Example
a. Generate Key (kita dapat melewati langkah ini untuk menemukan p dan q)
1. M = 101 , sebuah bilangan prima --> phi(M) = 100
2) a] Misalkan e = 13
b] Cari d (e*d) mod M = 1
Gunakan persamaan (a*x) mod M = 1
d = 77
b. Kata "HELLO" digunakan sebagai pesan, dan diubah menurut numerical representationnya.
HELLO = 08 05 12 12 15
c. Encoding pesan.
8^13 mod 101 = 18
5^13 mod 101 = 56
12^13 mod 101 = 53
15^13 mod 101 = 7
Sehingga pesan ter-encrypt atau ciphertext adalah 18,56,53,53,07.
d. Decoding pesan.
18^77 mod 101 = x1
56^77 mod 101 = x2
53^77 mod 101 = x3 = x4
07^77 mod 101 = x5
Closure
RSA merupakan contoh yang powerful dan cukup aman dari Public-Key Cryptography.
Berdasarkan matematika, proses yang digunakan berdasarkan fungsi-fungsi trap-door satu arah.
Sehingga melakukan encryption dengan menggunakan public key sangat mudah bagi semua
orang, namun proses decryption menjadi sangat sulit.
Proses decryption sengaja dibuat sulit agar seseorang, walaupun menggunakan Cray
supercomputers dan ribuan tahun, tidak dapat men-decrypt pesan tanpa mempunyai private key.
Perlu diingat juga bahwa pemilihan p*q = M haruslah sebuah bilangan yang sangat besar
sehingga sulit dicari eksponen decoding-nya karena sulit melakukan pemfaktoran bilangan
prima.
''Padding schemes''
''[[Padding Scheme]]'' harus dibangun secara hati-hati sehingga tidak ada nilai dari ''m'' yang
menyebabkan masalah keamanan. Sebagai contoh, jika kita ambil contoh sederhana dari
penampilan [[ASCII]] dari ''m'' dan menggabungkan [[bit|bit-bit]] secara bersama-sama akan
menghasilkan ''n'', kemudian pessan yang berisi ASCII tunggal karakter <code>NUL</code>
(nilai numeris 0) akan menghasilkan ''n''= 0, yang akan menghasilkan ''ciphertext'' 0 apapun itu
nilai dari ''e'' dan ''N'' yang digunakan. Sama halnya dengan karakter ASCII tunggal
<code>SOH</code> (nilai numeris 1) akan selalu menghasilkan ''chiphertext'' 1. Pada
kenyataannya, untuk sistem yang menggunakan nilai ''e'' yang kecil, seperti 3, seluruh karakter
tunggal ASCII pada pesan akan disandikan menggunakan skema yang tidak aman, dikarenakan
nilai terbesar ''n'' adalah nilai 255, dan 255<sup>3</sup> menghasilkan nilai yang lebih kecil
dari modulus yang sewajarnya, maka proses dekripsi akan menjadi masalah sederhana untuk
mengambil pola dasar dari ''ciphertext'' tanpa perlu menggunakan modulus ''N''. Sebagai
konsekuensinya, standar seperti [[PKCS]] didesain dengan sangat hati-hati sehingga membuat
pesan asal-asalan dapat terenkripsi secara aman. Dan juga berdasar pada bagian [[#Kecepatan|
Kecepatan]], akan dijelaskan kenapa ''m'' hampir bukanlah pesan itu sendiri tetapi lebih pada
''message key'' yang dipilh secara acak.
Pengesahan pesan
RSA dapat juga digunakan untuk mengesahkan sebuah pesan. Misalkan Alice ingin mengirim
pesan kepada Bob. Alice 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 Bob menerima pesan yang telah
"ditandatangani", Bob 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 Bob dapat mengetahui
bahwa pemilik dari pesan tersebut adalah Alice, dan pesan pun tidak pernah diubah sepanjang
pengiriman.
Harap dicatat bahwa ''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.
Keamanan
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 (hal ini masih dalam perdebatan), tetapi tidak ada seorangpun yang berpendapat
kunci 2048-bit akan pecah pada masa depan yang terprediksi.
Semisal Eve, seorang ''eavesdropper'' (pencuri dengar—penguping), mendapatkan ''public key''
''N'' dan ''e'', dan ciphertext ''c''. Bagimanapun juga, Eve tidak mampu untuk secara langsung
memperoleh ''d'' yang dijaga kerahasiannya oleh Alice. Masalah untuk menemukan ''n'' seperti
pada ''n<sup>e</sup>=c'' mod N di kenal sebagai permasalahan RSA.
Cara paling efektif yang ditempuh oleh Eve untuk memperoleh ''n'' dari ''c'' ialah dengan
melakukan faktorisasi ''N'' kedalam ''p'' dan ''q'', dengan tujuan untuk menghitung (''p''-1)(''q''-1)
yang dapat menghasilkan ''d'' dari ''e''. Tidak ada metode waktu polinomial untuk melakukan
faktorisasi pada bilangan bulat berukuran besar di komputer saat ini, tapi hal tersebut pun masih
belum terbukti.
Masih belum ada bukti pula bahwa melakukan faktorisasi ''N'' adalah satu-satunya cara untuk
memperoleh ''n'' dari ''c'', tetapi tidak ditemukan adanya metode yang lebih mudah (setidaknya
dari sepengatahuan publik).
Bagaimanapun juga, secara umum dianggap bahwa Eve telah kalah jika ''N'' berukuran sangat
besar.
Jika ''N'' sepanjang 256-bit atau lebih pendek, ''N'' akan dapat difaktorisasi dalam beberapa jam
pada [[Personal Computer]], dengan menggunakan [[perangkat lunak]] yang tersedia secara
bebas.
Jika ''N'' sepanjang 512-bit atau lebih pendek, ''N'' akan dapat difaktorisasi dalam hitungan
ratusan jam seperti pada tahun [[1999]]. Secara teori, [[perangkat keras]] bernama [[TWIRL]]
dan penjelasan dari Shamir dan Tromer pada tahun [[2003]] mengundang berbagai pertanyaan
akan keamanan dari kunci 1024-bit. Santa disarankan bahwa ''N'' setidaknya sepanjang 2048-
bit.
Pada thaun [[1993]], [[Peter Shor]] menerbitkan [[Algoritma Shor]], menunjukkan bahwa
sebuah [[komputer quantum]] secara prinsip dapat melakukan faktorisasi dalam waktu
polinomial, mengurai RSA dan algoritma lainnya. Bagaimanapun juga, masih terdapat
pedebatan dalam pembangunan komputer quantum secara prinsip.
Pertimbangan praktis
Pembangkitan kunci
Menemukan bilangan prima besar ''p'' dan ''q'' pada biasanya didapat dengan mencoba
serangkaian bilangan acak dengan ukuran yang tepat menggunakan probabilitas bilangan prima
yang dapat dengan cepat menghapus hampir semua bilangan bukan prima.
''p'' dan ''q'' seharusnya tidak "saling-berdekatan", agar [[faktorisasi fermat]] pada ''N'' berhasil.
Selain itu pula, jika ''p''-1 atau ''q''-1 memeiliki faktorisasi bilangan prima yang kecil, ''N'' dapat
difaktorkan secara mudah dan nilai-nilai dari ''p'' atau ''q'' dapat diacuhkan.
Seseorang seharusnya tidak melakukan metoda 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 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 (ditunjukkan oleh [[Donald Coppersmith]] pada tahun
[[1997]]).
Sangatlah penting bahwa kunci rahasia ''d'' bernilai cukup besar, Wiener menunjukkan pada
tahun [[1990]] bahwa jika ''p'' diantara ''q'' dan 2''q'' (yang sangat mirip) dan ''d'' lebih kecil
daripada ''N''<sup>1/4</sup>/3, maka ''d'' akan dapat dihitung secara effisien dari ''N'' dan ''e''.
Kunci enkripsi ''e'' = 2 sebaiknya tidak digunakan.
Kecepatan
RSA memiliki kecepatan yang lebih lambat dibandingkan dengan [[DES]] dan [[algoritma
simetrik]] lainnya. Pada prakteknya, Bob menyandikan pesan rahasia menggunakan algoritma
simetrik, menyandikan kunci simetrik menggunakan RSA, dan mengirimkan kunci simetrik
yang dienkripsi menggunakan RSA dan juga mengirimkan pesan yang dienkripasi secara
simetrik kepada Alice.
Prosedur ini menambah permasalahan akan keamanan. Singkatnya, Sangatlah penting untuk
menggunakan pembangkit bilangan acak yang kuat untuk kunci simetrik yang digunakan,
karena Eve dapat melakukan ''bypass'' terhadap RSA dengan menebak kunci simterik yang
digunakan.
Distribusi kunci
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 Eve dengan suatu cara mampu memberikan kunci
arbitari kepada Bob dan membuat Bob percaya bahwa kunci tersebut milik Alice. Anggap Eve
dapan "menghadang" sepenuhnya transmisi antara Alice dan Bob. Eve mengirim Bob ''public
key'' milik Eve, dimana Bob percaya bahwa ''public key'' tersebut milik Alice. Eve dapat
menghadap seluruh ''ciphertext'' yang dikirim oleh Bob, melakukan dekripsi dengan kunci
rahasia milik Eve sendiri, menyimpan salinan dari pesan tersebut, melakukan enkripsi
menggunakan ''public key'' milik Alice, dan mengirimkan ''ciphertext'' yang baru kepada Alice.
Secara prinsip, baik Alice atau Bob tidak menyadari kehadiran Eve diantara transmisi mereka.
Pengamanan terhadap serangan semacam ini yaitu menggunakan [[sertifikat digital]] atau
komponen lain dari infrastuktur ''public key''.
Penyerangan waktu
Kocher menjelaskan sebuah serangan baru yang cerdas pada RSA di tahun [[1995]]: jika
penyerang, Eve, mengetahui perangkat keras yang dimiliki oleh Alice secara terperinci dan
mampu untuk mengukur waktu yang dibutuhkan untuk melakukan dekripsi untuk beberapa
''ciphertext'', Eve 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 ''c<sup>d</sup> mod N'', Alice
pertama-tama memilih nilai bilangan acak ''r'' dan menghitung ''(r<sup>e</sup>c)<sup>d</sup>
mod N''. 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.
Penyerangan ''ciphertext'' adaptive
Pada tahun [[1998]], [[Daniel Bleichenbacher]] menjelaskan penggunaan penyerangan
''ciphertext'' adaptive, 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 [[protokol]]
[[Secure Socket Layer]], dan secara potensial mengungkap kunci-kunci yang digunakan.
Sebagai hasilnya, para pengguna kriptografi menganjurkan untuk menggunakan ''padding
scheme'' yang relatif terbukti aman seperti ''[[Optimal Asymmetric Encryption Padding]]'', dan
Laboratorium RSA telah merilis versi terbaru dari PKCS #1 yang tidak lemah terdapat serangan
ini.
Penyerangan waktu
Kocher menjelaskan sebuah serangan baru yang cerdas pada RSA di tahun [[1995]]: jika
penyerang, Eve, mengetahui perangkat keras yang dimiliki oleh Alice secara terperinci dan
mampu untuk mengukur waktu yang dibutuhkan untuk melakukan dekripsi untuk beberapa
''ciphertext'', Eve 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 ''c<sup>d</sup> mod N'', Alice
pertama-tama memilih nilai bilangan acak ''r'' dan menghitung ''(r<sup>e</sup>c)<sup>d</sup>
mod N''. 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.
Penyerangan ''ciphertext'' adaptive
Pada tahun [[1998]], [[Daniel Bleichenbacher]] menjelaskan penggunaan penyerangan
''ciphertext'' adaptive, 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 [[protokol]]
[[Secure Socket Layer]], dan secara potensial mengungkap kunci-kunci yang digunakan.
Sebagai hasilnya, para pengguna kriptografi menganjurkan untuk menggunakan ''padding
scheme'' yang relatif terbukti aman seperti ''[[Optimal Asymmetric Encryption Padding]]'', dan
Laboratorium RSA telah merilis versi terbaru dari PKCS #1 yang tidak lemah terdapat serangan
ini.

More Related Content

PDF
Pergeseran Bit-sns
PDF
Self Dual Codes and Binary Golay Code Presentation
PDF
Bch codes
PDF
Write up idsecconf2015 online ctf
PDF
Modul 2 - Tipe Data_ pusitell
PDF
Muhammad Abrar Istiadi - How to hack #idsecconf2016 Online CTF
PDF
Muhammad Abrar Istiadi - “How to hack #IDSECCONF2016 ctf online challenge"
PDF
Presentasi Coding versi Beta(belum final)
Pergeseran Bit-sns
Self Dual Codes and Binary Golay Code Presentation
Bch codes
Write up idsecconf2015 online ctf
Modul 2 - Tipe Data_ pusitell
Muhammad Abrar Istiadi - How to hack #idsecconf2016 Online CTF
Muhammad Abrar Istiadi - “How to hack #IDSECCONF2016 ctf online challenge"
Presentasi Coding versi Beta(belum final)

What's hot (19)

PDF
Teori himpunan
PDF
76110863 matlab
PDF
Algoritma Symboolon
PDF
Algoritma Garis
PPTX
4 Menggambar Grafik Fungsi Dengan Matlab
PPT
Struktur data 03 (stack)
PDF
Bab ii keg pembel 6 array
PDF
Asyiknya Belajar Struktur Data di Planet C++
PPTX
Reed solomon code
PDF
Algoritma rsa
PPT
Pp 4(bab4)
DOCX
maksimum dan minimum
PDF
Reed Solomon Code
PPS
Aplikasi turunan-stt
PPTX
Bahan ajar integral tak-tentu
PDF
[PUBLIC] quiz-01-midterm-solutions.pdf
PPSX
Penerapan turunan
PPTX
INTEGRAL
Teori himpunan
76110863 matlab
Algoritma Symboolon
Algoritma Garis
4 Menggambar Grafik Fungsi Dengan Matlab
Struktur data 03 (stack)
Bab ii keg pembel 6 array
Asyiknya Belajar Struktur Data di Planet C++
Reed solomon code
Algoritma rsa
Pp 4(bab4)
maksimum dan minimum
Reed Solomon Code
Aplikasi turunan-stt
Bahan ajar integral tak-tentu
[PUBLIC] quiz-01-midterm-solutions.pdf
Penerapan turunan
INTEGRAL
Ad

Viewers also liked (19)

PPT
Бражников А.У. «Актуальность противодействия внешнему вмешательству и предо...
PPT
Ps102 CA Politics Statistics. ppt
PPTX
Sunum glücklich
PPSX
Presentation course tef5402 show
PPTX
Course Presentation Slide Show TEFf5402 UNAD Florida Prof. Flor Lepervanche
PPSX
Presentation course tef5401 slide show
DOCX
Analisis graficas
PPTX
Wendy sanchez (1)
PPTX
Presentacion Leidivic Toro
PPT
Studenten en social media
PDF
DC10 Pim den Hertog - Innovatiebeleid en kennisontwikkeling - managing servic...
PPTX
PDF
Presentatie Waternet - Green Water meets Green IT, 10 maart 2011 - water en d...
DOCX
PDF
Serebro Lab. Прототипы сайта мебельной фабрики "Мегаэлатон".
PPTX
Seguridad 2
PPTX
Presentación_diego_ortiz
PPT
Reshape Healthcare
PPTX
Бражников А.У. «Актуальность противодействия внешнему вмешательству и предо...
Ps102 CA Politics Statistics. ppt
Sunum glücklich
Presentation course tef5402 show
Course Presentation Slide Show TEFf5402 UNAD Florida Prof. Flor Lepervanche
Presentation course tef5401 slide show
Analisis graficas
Wendy sanchez (1)
Presentacion Leidivic Toro
Studenten en social media
DC10 Pim den Hertog - Innovatiebeleid en kennisontwikkeling - managing servic...
Presentatie Waternet - Green Water meets Green IT, 10 maart 2011 - water en d...
Serebro Lab. Прототипы сайта мебельной фабрики "Мегаэлатон".
Seguridad 2
Presentación_diego_ortiz
Reshape Healthcare
Ad

Similar to Algoritma rsa (20)

DOCX
Makalah Kumpulan remaja
PDF
PUBLIC-KEY CRYPTOGRAPHY PRINCIPLES
PDF
Kriptografi - Algoritma RSA
PPTX
Algoritma RSA - Bahasa indonesia. .......
PDF
MK Keamanan komputer - Sesi 8 & 9 : Kriptografi (Metode El Gammal)
PPTX
TEOREMA BILANGAN. Tugas mahasiswa matematika
PPT
PRESENTASI KRIPTOGRAFI KUNCI PUBLIK..ppt
DOCX
Penerapan teori bilangan pada kriptografi rsa
PPTX
Keamanan__Multimedia [Autosaved].pptx
DOC
Algoritma elgama1
PDF
J2 a006004 arif
PPTX
KRIPTOGRAFI ASIMETRIS.pptx
PPT
Matkul Kriptografi: Algoritma RSA (2015).ppt
PDF
6. security system
PDF
ikh323-03
PPTX
3-Kriptografi .pptx
PPTX
Enkripsi 102
PDF
Kriptografi - Algoritma ElGamak
PPT
About Cryptography Encryption Decryption technology
DOCX
KRIPTOGRAFI MODERN SIMESTIS.docx
Makalah Kumpulan remaja
PUBLIC-KEY CRYPTOGRAPHY PRINCIPLES
Kriptografi - Algoritma RSA
Algoritma RSA - Bahasa indonesia. .......
MK Keamanan komputer - Sesi 8 & 9 : Kriptografi (Metode El Gammal)
TEOREMA BILANGAN. Tugas mahasiswa matematika
PRESENTASI KRIPTOGRAFI KUNCI PUBLIK..ppt
Penerapan teori bilangan pada kriptografi rsa
Keamanan__Multimedia [Autosaved].pptx
Algoritma elgama1
J2 a006004 arif
KRIPTOGRAFI ASIMETRIS.pptx
Matkul Kriptografi: Algoritma RSA (2015).ppt
6. security system
ikh323-03
3-Kriptografi .pptx
Enkripsi 102
Kriptografi - Algoritma ElGamak
About Cryptography Encryption Decryption technology
KRIPTOGRAFI MODERN SIMESTIS.docx

Algoritma rsa

  • 1. Mengenal Algoritma Enkripsi RSA Oleh: Iwan Ariawan (2097200608) Sebagai tugas mata kuliah Sistem Keamanan Komputer Sejarah RSA Algortima RSA dijabarkan pada tahun [[1977]] oleh tiga orang : [[Ron Rivest]], [[Adi Shamir]] dan [[Len Adleman]] dari [[Massachusetts Institute of Technology]]. Huruf '''RSA''' itu sendiri berasal dari inisial nama mereka ('''R'''ivest—'''S'''hamir—'''A'''dleman). [[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 {{US 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. Introduction RSA adalah sebuah algoritma berdasarkan skema public-key cryptography. Diberi nama RSA sebagai inisial para penemunya: Ron Rivest, Adi Shamir, dan Leonard Adleman. SA dibuat di MIT pada tahun 1977 dan dipatenkan oleh MIT pada tahun 1983. Setelah bulan September tahun 2000, paten tersebut berakhir, sehingga saat ini semua orang dapat menggunakannya dengan bebas. Lebih jauh, RSA adalah algoritma yang mudah untuk diimplementasikan dan dimengerti. algoritma RSA adalah sebuah aplikasi dari sekian banyak teori seperti extended Euclid algorithm, euler's function sampai fermat theorem. Artikel ini menjelaskan algoritma RSA dari dasar. Saya akan menggunakan nilai-nilai yang kecil untuk menjelaskan bagaimana cara kerja algoritma RSA. Public-Key Cryptography Konsep fundamental dari Public-Key Cryptography ditemukan oleh Whitfield Diffie dan Martin Hellman, dan secara terpisah oleh Ralph Merkle. Sedangkan konsep dasar Public-Key Cryptography terletak pada pemahaman bahwa keys selalu berpasangan: encryption key dan decryption key. Juga perlu diingat bahwa sebuah key tidak dapat digenerate dari key lainnya. Pemahaman encryption dan decryption key sering disebut sebagai public dan private key.
  • 2. Seseorang harus memberikan public key-nya agar pihak lain dapat meng-encrypt sebuah pesan. Decryption hanya terjadi jika seseorang mempunyai private key. Scenario Bagian ini menjelaskan skenario bagaimana public-key cryptosystem bekerja. Saya akan menggunakan partisipan klasik Alice dan Bob sebagai orang-orang yang melakukan pertukaran informasi. 1. Alice dan Bob setuju untuk menggunakan public-key cryptosystem. 2. Bob mengirimkan public key-nya kepada Alice. 3. Alice meng-encrypt pesan yang dibuatkan dengan menggunakan public key milik Bob dan mengirimkan pesan yang sudah di-encrypt kepada Bob. 4. Bob men-decrypt pesan dari Alice menggunakan private key miliknya. Mathematical Notation Untuk memahami algoritma RSA, seseorang harus memahami beberapa notasi matematika dasar, teori dan formula. Hal tersebut dibutuhkan untuk mendukung semua kalkulasi yang dilakukan dalam algoritma RSA. 1. Modulo (didenotasikan dengan 'x mod m' atau 'x % m' dalam beberapa bahasa komputer) - x % m = x mod m = pembagian x dengan m dan mengambil sisanya. - Contoh: 25 mod 5 = 0 karena 5 habis membagi 25 25 mod 4 = 1 karena 25 / ( 4 * 6 ) menyisakan 1 x mod m = x jika dan hanya jika x < m 2. Z/mZ - Z/7Z : { 0,1,2,3,4,5,6 } dimana [7]=[0], [8]=[1], [9]=[2] dan seterusnya. - Operasi yang didukung dalam Z/mZ aalah penjumlahan, pengurangan, pembagian dan perkalian. - Inverse: Sebuah elemen dalam Z/mZ seperti A, memiliki sebuah inverse B jika dan hanya jika [A]x[B] = [1] - Units: Setiap elemen dalam Z/mZ yang memiliki inverse adalah sebuah unit. - Contoh: Z/7Z Penjumlahan: [2]+[3] = [5] ; [5]+[5] = [10] ... [10-7] = [3] Pengurangan: [2]-[3] = [-1] = [6] ; [6]-[4] = [2] Pembagian : [6]/[2] = [3] ; [6]/[4] = [5] ([4]x[5] = [20] = [6]) Perkalian : [2]x[6] = [12] = [5] ; Soal: [6]/[4] a. Tempatkan dalam formula [6] = [X][4] b. Cari inverse dari [4], yaitu [2] ... [4]x[2] = [8] = [1] c. Kali inverse dengan [6] ... [2]x[6] = [12] = [5]
  • 3. d. Sehingga [4]x[5] = [20] = [13] = [6] 3. GCD(A,B) GCD = greatest common divisor. GCD(A,B) = D GCD(78,32) = 2, karena tidak ada bilangan yang lebih besar dari dua yang membagi 78 dan 32. GCD(A,B) dapat ditemukan dengan menggunakan algoritma extended euclid. Jika GCD(A,B) = 1 maka A and B dalah coprime satu sama lainnya (dengan kata lain, A dan B adalah relatively prime). 4. Memecahkan 8x mod 13 = 1, dimana x adalah bilangan yang belum diketahui. - Cari gcd(8,13) yang berarti 1 ... yang berarti persamaan dapat diselesaikan. - Membuat sebuah matriks dan menggunakan operasi gaussian dalam matriks. 8 | 1 0 r2=r2-r1 8 | 1 0 r1=r1-r2 13 | 0 1 ---------> 5 | -1 1 ---------> 3 | 2 -1 r2=r2-r1 3 | 2 -1 5 | -1 1 ---------> 2 |-3 2 lakukan sampai kita mendapatkan format : 1 | s t 0 | s' t' s, t, s', t' dapat berupa bilangan apa saja. Jika hasil akhir yang di dapat sbb: 0 | s' t' , kita harus 1 | s t rotasi atas-bawah hasil nya menjadi format: 1 | s t 0 | s' t' sehingga sekarang kita mendapatkan d = 1, s = 5, t = -3, sehingga x = s = 5. 5. Euler's phi function (jangan sampai keliru dengan phi = 3.14) - Euler's phi function adalah sebuah total bilangan unit dalam Z/mZ - Theorem a. Jika p adalah sebuah bilangan prima, maka phi(p) = p - 1 p dan phi(p) adalah (contoh: gcd(p,phi(p)) = 1) ii): phi(m*n) = phi(m) * phi (n) phi(p^a) = (p^a) - p^(a-1)
  • 4. b. Contoh: -- phi(7) = 6 -- phi(840) = phi(8) * phi(105) = phi(2^3) * phi(3*5*7) = [(2^3) - (2^2)] * phi(3) * phi(5) * phi(7) 6. Pangkat. pow(a,b) Saya akan menggunakan notasi '^' seperti pada a^b Key Generation Misalkan Alice ingin Bob mengirimnya sebuah pesan melalui jalur yang aman. Alice akan memberikan public keynya kepada Bob dan menyimpan private key untuk dirinya. a. Pilih 2 bilangan prima besar seperti p,q dimana p tidak sama dengan q. b. Hitung M = p x q c. Hitung phi(M) = phi(p) * phi(q) d. Pilih sebuah integer 'e' dimana 1 < e < phi(M) dan 'e' serta phi(M) adalah coprime. e. Hitung 'd' integer sehingga (d * e) mod M = 1 f. (M,e) adalah public key dimana M adalah modulo dan e adalah eksponen encryption. g. (M,d) adalah private key dimana M adalah modulo dan d adalah eksponen decryption. Encrypting Message Misalkan Bob ingin mengirim sebuah pesan 'H' kepada Alice. a. Alice harus membuat keynya; sehingga ia memiliki private dan public keys. private key = (M,d) public key = (M,e) b. Mengubah 'H' menjadi sebuah bilangan yang menggunakan alphabet yang valid dengan tabel bilangan. Sebuah contoh mudah adalah mapping A = 1, B = 2 ... Z = 26. sehingga H = 8 c. C = 8^e (mod M) C adalah sebuah bilangan ter-encrypt. d. Bob mengirimkan bilangan tersebut kepada Alice sehingga Alice dapat melakukan decode ulang menggunakan private keynya. Decrypting Message Misalkan Alice menerima sebuah pesan ter-encrypt, ia akan men-decrypt-nya menggunakan tahapan-tahapan berikut: a. Alice mempunyai private key dari langkah-langkah di atas (M,d) b. N = C^d (mod M) c. N adalah bilangan. Gunakan konversi table alphabet untuk mengubah N menjadi karakter yang direpresentasikannya.
  • 5. Example a. Generate Key (kita dapat melewati langkah ini untuk menemukan p dan q) 1. M = 101 , sebuah bilangan prima --> phi(M) = 100 2) a] Misalkan e = 13 b] Cari d (e*d) mod M = 1 Gunakan persamaan (a*x) mod M = 1 d = 77 b. Kata "HELLO" digunakan sebagai pesan, dan diubah menurut numerical representationnya. HELLO = 08 05 12 12 15 c. Encoding pesan. 8^13 mod 101 = 18 5^13 mod 101 = 56 12^13 mod 101 = 53 15^13 mod 101 = 7 Sehingga pesan ter-encrypt atau ciphertext adalah 18,56,53,53,07. d. Decoding pesan. 18^77 mod 101 = x1 56^77 mod 101 = x2 53^77 mod 101 = x3 = x4 07^77 mod 101 = x5 Closure RSA merupakan contoh yang powerful dan cukup aman dari Public-Key Cryptography. Berdasarkan matematika, proses yang digunakan berdasarkan fungsi-fungsi trap-door satu arah. Sehingga melakukan encryption dengan menggunakan public key sangat mudah bagi semua orang, namun proses decryption menjadi sangat sulit. Proses decryption sengaja dibuat sulit agar seseorang, walaupun menggunakan Cray supercomputers dan ribuan tahun, tidak dapat men-decrypt pesan tanpa mempunyai private key. Perlu diingat juga bahwa pemilihan p*q = M haruslah sebuah bilangan yang sangat besar sehingga sulit dicari eksponen decoding-nya karena sulit melakukan pemfaktoran bilangan prima. ''Padding schemes'' ''[[Padding Scheme]]'' harus dibangun secara hati-hati sehingga tidak ada nilai dari ''m'' yang menyebabkan masalah keamanan. Sebagai contoh, jika kita ambil contoh sederhana dari penampilan [[ASCII]] dari ''m'' dan menggabungkan [[bit|bit-bit]] secara bersama-sama akan menghasilkan ''n'', kemudian pessan yang berisi ASCII tunggal karakter <code>NUL</code> (nilai numeris 0) akan menghasilkan ''n''= 0, yang akan menghasilkan ''ciphertext'' 0 apapun itu
  • 6. nilai dari ''e'' dan ''N'' yang digunakan. Sama halnya dengan karakter ASCII tunggal <code>SOH</code> (nilai numeris 1) akan selalu menghasilkan ''chiphertext'' 1. Pada kenyataannya, untuk sistem yang menggunakan nilai ''e'' yang kecil, seperti 3, seluruh karakter tunggal ASCII pada pesan akan disandikan menggunakan skema yang tidak aman, dikarenakan nilai terbesar ''n'' adalah nilai 255, dan 255<sup>3</sup> menghasilkan nilai yang lebih kecil dari modulus yang sewajarnya, maka proses dekripsi akan menjadi masalah sederhana untuk mengambil pola dasar dari ''ciphertext'' tanpa perlu menggunakan modulus ''N''. Sebagai konsekuensinya, standar seperti [[PKCS]] didesain dengan sangat hati-hati sehingga membuat pesan asal-asalan dapat terenkripsi secara aman. Dan juga berdasar pada bagian [[#Kecepatan| Kecepatan]], akan dijelaskan kenapa ''m'' hampir bukanlah pesan itu sendiri tetapi lebih pada ''message key'' yang dipilh secara acak. Pengesahan pesan RSA dapat juga digunakan untuk mengesahkan sebuah pesan. Misalkan Alice ingin mengirim pesan kepada Bob. Alice 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 Bob menerima pesan yang telah "ditandatangani", Bob 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 Bob dapat mengetahui bahwa pemilik dari pesan tersebut adalah Alice, dan pesan pun tidak pernah diubah sepanjang pengiriman. Harap dicatat bahwa ''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. Keamanan 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 (hal ini masih dalam perdebatan), tetapi tidak ada seorangpun yang berpendapat kunci 2048-bit akan pecah pada masa depan yang terprediksi. Semisal Eve, seorang ''eavesdropper'' (pencuri dengar—penguping), mendapatkan ''public key'' ''N'' dan ''e'', dan ciphertext ''c''. Bagimanapun juga, Eve tidak mampu untuk secara langsung
  • 7. memperoleh ''d'' yang dijaga kerahasiannya oleh Alice. Masalah untuk menemukan ''n'' seperti pada ''n<sup>e</sup>=c'' mod N di kenal sebagai permasalahan RSA. Cara paling efektif yang ditempuh oleh Eve untuk memperoleh ''n'' dari ''c'' ialah dengan melakukan faktorisasi ''N'' kedalam ''p'' dan ''q'', dengan tujuan untuk menghitung (''p''-1)(''q''-1) yang dapat menghasilkan ''d'' dari ''e''. Tidak ada metode waktu polinomial untuk melakukan faktorisasi pada bilangan bulat berukuran besar di komputer saat ini, tapi hal tersebut pun masih belum terbukti. Masih belum ada bukti pula bahwa melakukan faktorisasi ''N'' adalah satu-satunya cara untuk memperoleh ''n'' dari ''c'', tetapi tidak ditemukan adanya metode yang lebih mudah (setidaknya dari sepengatahuan publik). Bagaimanapun juga, secara umum dianggap bahwa Eve telah kalah jika ''N'' berukuran sangat besar. Jika ''N'' sepanjang 256-bit atau lebih pendek, ''N'' akan dapat difaktorisasi dalam beberapa jam pada [[Personal Computer]], dengan menggunakan [[perangkat lunak]] yang tersedia secara bebas. Jika ''N'' sepanjang 512-bit atau lebih pendek, ''N'' akan dapat difaktorisasi dalam hitungan ratusan jam seperti pada tahun [[1999]]. Secara teori, [[perangkat keras]] bernama [[TWIRL]] dan penjelasan dari Shamir dan Tromer pada tahun [[2003]] mengundang berbagai pertanyaan akan keamanan dari kunci 1024-bit. Santa disarankan bahwa ''N'' setidaknya sepanjang 2048- bit. Pada thaun [[1993]], [[Peter Shor]] menerbitkan [[Algoritma Shor]], menunjukkan bahwa sebuah [[komputer quantum]] secara prinsip dapat melakukan faktorisasi dalam waktu polinomial, mengurai RSA dan algoritma lainnya. Bagaimanapun juga, masih terdapat pedebatan dalam pembangunan komputer quantum secara prinsip. Pertimbangan praktis Pembangkitan kunci Menemukan bilangan prima besar ''p'' dan ''q'' pada biasanya didapat dengan mencoba serangkaian bilangan acak dengan ukuran yang tepat menggunakan probabilitas bilangan prima yang dapat dengan cepat menghapus hampir semua bilangan bukan prima. ''p'' dan ''q'' seharusnya tidak "saling-berdekatan", agar [[faktorisasi fermat]] pada ''N'' berhasil. Selain itu pula, jika ''p''-1 atau ''q''-1 memeiliki faktorisasi bilangan prima yang kecil, ''N'' dapat difaktorkan secara mudah dan nilai-nilai dari ''p'' atau ''q'' dapat diacuhkan. Seseorang seharusnya tidak melakukan metoda 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
  • 8. tidak memenuhi kriteria, sebuah bilangan 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 (ditunjukkan oleh [[Donald Coppersmith]] pada tahun [[1997]]). Sangatlah penting bahwa kunci rahasia ''d'' bernilai cukup besar, Wiener menunjukkan pada tahun [[1990]] bahwa jika ''p'' diantara ''q'' dan 2''q'' (yang sangat mirip) dan ''d'' lebih kecil daripada ''N''<sup>1/4</sup>/3, maka ''d'' akan dapat dihitung secara effisien dari ''N'' dan ''e''. Kunci enkripsi ''e'' = 2 sebaiknya tidak digunakan. Kecepatan RSA memiliki kecepatan yang lebih lambat dibandingkan dengan [[DES]] dan [[algoritma simetrik]] lainnya. Pada prakteknya, Bob menyandikan pesan rahasia menggunakan algoritma simetrik, menyandikan kunci simetrik menggunakan RSA, dan mengirimkan kunci simetrik yang dienkripsi menggunakan RSA dan juga mengirimkan pesan yang dienkripasi secara simetrik kepada Alice. Prosedur ini menambah permasalahan akan keamanan. Singkatnya, Sangatlah penting untuk menggunakan pembangkit bilangan acak yang kuat untuk kunci simetrik yang digunakan, karena Eve dapat melakukan ''bypass'' terhadap RSA dengan menebak kunci simterik yang digunakan. Distribusi kunci 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 Eve dengan suatu cara mampu memberikan kunci arbitari kepada Bob dan membuat Bob percaya bahwa kunci tersebut milik Alice. Anggap Eve dapan "menghadang" sepenuhnya transmisi antara Alice dan Bob. Eve mengirim Bob ''public key'' milik Eve, dimana Bob percaya bahwa ''public key'' tersebut milik Alice. Eve dapat menghadap seluruh ''ciphertext'' yang dikirim oleh Bob, melakukan dekripsi dengan kunci rahasia milik Eve sendiri, menyimpan salinan dari pesan tersebut, melakukan enkripsi menggunakan ''public key'' milik Alice, dan mengirimkan ''ciphertext'' yang baru kepada Alice. Secara prinsip, baik Alice atau Bob tidak menyadari kehadiran Eve diantara transmisi mereka. Pengamanan terhadap serangan semacam ini yaitu menggunakan [[sertifikat digital]] atau komponen lain dari infrastuktur ''public key''.
  • 9. Penyerangan waktu Kocher menjelaskan sebuah serangan baru yang cerdas pada RSA di tahun [[1995]]: jika penyerang, Eve, mengetahui perangkat keras yang dimiliki oleh Alice secara terperinci dan mampu untuk mengukur waktu yang dibutuhkan untuk melakukan dekripsi untuk beberapa ''ciphertext'', Eve 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 ''c<sup>d</sup> mod N'', Alice pertama-tama memilih nilai bilangan acak ''r'' dan menghitung ''(r<sup>e</sup>c)<sup>d</sup> mod N''. 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. Penyerangan ''ciphertext'' adaptive Pada tahun [[1998]], [[Daniel Bleichenbacher]] menjelaskan penggunaan penyerangan ''ciphertext'' adaptive, 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 [[protokol]] [[Secure Socket Layer]], dan secara potensial mengungkap kunci-kunci yang digunakan. Sebagai hasilnya, para pengguna kriptografi menganjurkan untuk menggunakan ''padding scheme'' yang relatif terbukti aman seperti ''[[Optimal Asymmetric Encryption Padding]]'', dan Laboratorium RSA telah merilis versi terbaru dari PKCS #1 yang tidak lemah terdapat serangan ini.
  • 10. Penyerangan waktu Kocher menjelaskan sebuah serangan baru yang cerdas pada RSA di tahun [[1995]]: jika penyerang, Eve, mengetahui perangkat keras yang dimiliki oleh Alice secara terperinci dan mampu untuk mengukur waktu yang dibutuhkan untuk melakukan dekripsi untuk beberapa ''ciphertext'', Eve 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 ''c<sup>d</sup> mod N'', Alice pertama-tama memilih nilai bilangan acak ''r'' dan menghitung ''(r<sup>e</sup>c)<sup>d</sup> mod N''. 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. Penyerangan ''ciphertext'' adaptive Pada tahun [[1998]], [[Daniel Bleichenbacher]] menjelaskan penggunaan penyerangan ''ciphertext'' adaptive, 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 [[protokol]] [[Secure Socket Layer]], dan secara potensial mengungkap kunci-kunci yang digunakan. Sebagai hasilnya, para pengguna kriptografi menganjurkan untuk menggunakan ''padding scheme'' yang relatif terbukti aman seperti ''[[Optimal Asymmetric Encryption Padding]]'', dan Laboratorium RSA telah merilis versi terbaru dari PKCS #1 yang tidak lemah terdapat serangan ini.