Haii, kali
ini penulis membahas tentang RSA dan contohnya, semoga apa yang penuliis bahas
dapat bermanfaat ^^
RSA adalah metode yang menggunakan
perhitungan matematika yang rumit dandisertai dengan kunci pengaman awal
(dengan private key maupun dengan public key)sehingga amat sulit untuk ditembus
oleh hacker. Adapun prinsip pengamanan metodeini adalah bagaimana
sistem dapat mengamankan proses penyimpanan dan pengirimandokumen.
Mula-mula dokumen dalam bentuk teks dienkripsi dengan metode RSA.Sehingga
dokumen tidak dapat dibaca oleh siapapun, karena teks telah berubah menjadisusunan
huruf yang teracak. Dokumen yang susunan hurufnya telah teracak
tersebut jika ingin dibaca oleh pemilik dokumen, maka dokumen tersebut
harus dibuka dengandekripsi RSA kembali (Supriyono, 2008).
Algoritma
RSA merupakan salah satu algoritma public key yang populer dipakai dan bahkan
masih dipakai hingga saat ini. Kekuatan algoritma ini terletak pada proses
eksponensial, dan pemfaktoran bilangan menjadi 2 bilangan prima yang hingga
kini perlu waktu yang lama untuk melakukan pemfaktorannya.
Algoritma
ini dinamakan sesuai dengan nama penemunya, Ron Rivest, Adi Shamir dan
Adleman(Rivest-Shamir-Adleman) yang dipublikasikan pada tahun 1977 di MIT,
menjawab tantangan yang diberikan algoritma pertukaran kunci Diffie Hellman.
Skema RSA
sendiri mengadopsi dari skema block cipher, dimana sebelum dilakukan enkripsi,
plainteks yang ada dibagi – bagi menjadi blok – blok dengan panjang yang sama,
dimana plainteks dan cipherteksnya berupa integer(bilangan bulat) antara 1
hingga n, dimana n berukuran biasanya sebesar 1024 bit, dan panjang bloknya
sendiri berukuran lebih kecil atau sama dengan log(n) +1 dengan basis 2.
Fungsi enkripsi dan
dekripsinya dijabarkan dalam fungsi berikut :
C = Me mod
n ( fungsi enkripsi )
M = Cd mod
n (fungsi dekripsi)
C = Cipherteks
M = Message / Plainteks
e = kunci publik
d= kunci privat
n = modulo pembagi(akan
dijelaskan lebih lanjut )
Kedua pihak harus
mengetahui nilai e dan nilai n ini, dan salah satu pihak harus memilki d untuk
melakukan dekripsi terhadap hasil enkripsi dengan menggunakan public key e.
Penggunaan algoritma ini harus memenuhi kriteria berikut :
1. Memungkinkan untuk mencari nilai e, d, n sedemikian rupa
sehingga Med mod n = M untuk semua M < n.
2. Relatif mudah untuk menghitung nilai Me mod n dan Cd mod n
untuk semua nilai M < n.
3. Tidak memungkinkan mencari nilai d jika diberikan nilai n dan e.
3. Tidak memungkinkan mencari nilai d jika diberikan nilai n dan e.
Syarat nilai e dan d
ini, gcd(d,e)=1
sebelum memulai
penggunaan RSA ini, terlebih dahulu kita harus memiliki bahan – bahan dasar
sebagai berikut :
1. p, q = 2 bilangan
prima yang dirahasiakan
2. n, dari hasil p.q
3. e, dengan ketentuan
gcd (Φ(n), e) =1
4. d, e-1 (mod Φ(n))
Enkripsi Menggunakan Algoritma RSA
Sebagai media komunikasi umum, suatu jaringan sangat
rawan terhadap penyadapan, pencurian, dan pemalsuan informasi. Proses pengiriman data padasuatu jaringan harus menjamin
keamanan dan keutuhan, jika tidak, akan terjadi kemungkinan-kemungkinan seperti
yang dijelaskan sebelumnya. Untuk itu salah satu cara untuk mengamankan data dari kejadian-kejadian tersebut,
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 disebutdekripsi.
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.
RSA banyak dipakai oleh banyak
perangkat lunak di dunia, contohnya adalah pada program browser internet MS Internet Explorer dan Netscape. Salah satu sistem penyandian
yang juga banyak dipakai adalah DES (Data
Encryption Standard). Mekanisme kerja RSA cukup sederhana dan mudah
mengerti, tetapi kokoh. Sampai saat ini satu-satunya cara untuk mendobraknya
adalah dengan cara mencoba satu persatu kombinasi kunci yang mungkin atau yang
biasa disebut brute force
attack. Sehingga penentuan tingkat keamanan suatu sandi dari kemungkinan
dibongkar adalah seberapa panjang dari sandi (ukuran kunci) terebut. Karena
jika semakin panjang suatu kode, maka semakin banyak pula kombinasi kunci yang
mungkin ada.
RSA sendiri dibuat pada tahun 1978.
RSA adalah singkatan dari nama para penemunya, yaitu Ron Rivest, Adi Shamir,
dan Leonard Adleman. 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.
MEKA ISME 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.
Proses Pembuatan Kunci
Dalam membuat suatu sandi, RSA
mempunyai cara kerja dalam membuat kunci publik dan kunci privat adalah sebagai
berikut :
- Pilih dua bilangan prima p dan q secara acak , p ≠q. Bilangan ini harus
cukup besar (minimal 100 digit).
- Hitung N = pq. Bilangan N disebut parameter security.
- Hitung φ = (p-1)(q-1).
- Pilih bilangan bulat (integer)
antara satu dan φ (1 < e < φ) yang tidak mempunyai
faktor pembagi dari φ.
- Hitung d hingga d e ≡ 1 (mod φ).
Keterangan :
- Langkah 3 dan 4 dapat dihasilkan
dengan cara algoritma Euclidean
- Langkah 4 dapat dihasilkan
dengan menemukan integer x sehingga d = (x(p-1)(q-1)
+1)/e menghasilkan
bilangan bulat, kemudian menggunakan nilai dari d (mod (p-1)(q-1))
Setelah
melalui 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 menggunakanChinese 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.
Proses Enkripsi Pesan
Misalkan pada suatu kasus si A ingin
mengirim pesan m kepada
si B. A mengubah m menjadi angka n < N,
menggunakan protokol 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 pessan 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 :
menghitung ciphertext c yang terkait pada n :
c = ne mod
N (1)
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 c kepada B.
yaitu sebuah algoritma yang dipakai untuk komputasi terhadap sejumlah nilai integer yang besar dengan cepat. Kemudian A mengirimkan nilai c kepada B.
Proses Dekripsi Pesan
B sudah menerima c dari A, dan mengetahui kunci privat
yang digunakan B. B kemudian mengembalikan nilai n dari c dengan langkah-langkah sebagai berikut
:
n = cd mod
N (2)
Perhitungan diatas akan menghasilkan n, dengan begitu B dapat
mengembalikan pesan semula m.
Prosedur dekripsi bekerja karena
Prosedur dekripsi bekerja karena
cd ≡
(n)d ≡
(mod N) (3)
Kemudian,
karena ed ≡ 1 (mod p-1) dan ed ≡ 1 (mod q-1), hasil dari Fermat's little theorem.
ned ≡ n (mod p) (4)
dan
ned ≡ n (mod q) (5)
Karena p dan q merupakan bilangan prima yang berbeda,
mengaplikasikan Chinese
remainder theorem akan
menghasilkan dua macam kongruen
ned ≡ n (mod pq) (6)
Serta
cd ≡ n (mod N) (7)
1.
Contoh Penghitungan RSA
Sekarang kita mencoba suatu contoh untuk mengenal lebih dalam sistem kerja enkripisi RSA. Misalnya kita mau mengenkripsi kata “SECRET” dengan RSA, lalu kita dekripsi kembali ke dalam plaintext.
Karena p dan q berjumlah minimal 100 digit atau
lebih, nilai d dan e bisa berjumlah sama dengan 100 digit
dan nilai N akan berjumlah 200 digit. Untuk itu di
contoh pemakaian berikut, kita akan memakai angka-angka yang kecil agar mudah
dalam penghitungan. Cara pengerjaannya adalah :
- Kita pilih p = 3 dan q = 5
- Hitung N = pq = 3*5 = 15
- Nilai e harus merupakan bilangan prima
yang lebih besar dan relatif dekat dengan (p-1)(q-1) = (2)(4) = 8,
sehingga kita pilih e = 11. Angka 11 adalah bilangan
prima terdekat dan lebih besar daripada 8
- Nilai d harus dipilih sehingga (ed - 1)(p-1)(q-1)
adalah sebuah integer. Lalu nilai (11d - 1) / [(2)(4)] = (11d - 1) / 8
juga merupakan integer. Setelah melalui proses
penghitungan, salah satu nilai yang mungkin adalah d = 3. - Lalu kita masukkan kata yang
akan dienkripsi, “SECRET”. Kita akan mengkonversi string ini ke
representasi desimal menggunakan nilai karakter ASCII, yang akan
menghasilkan nilai ASCII 8369 67 82 69 84
- Pengirim akan mengenkripsi
setiap digit angka pada saat yang bersamaan menggunakan nilai kunci publik
(e, n) =
(11,15). Lalu setiap karakter ciphertext akan masuk ke persamaan
Ci = Mid mod 15 - Yang akan menghasilkan nilai
digit masukan adalah 0x836967826984 yang akan dikirim sebagai
0x2c696d286924
- Penerima akan mendekripsi setiap
digit angka menggunakan nilai kunci privat (d, n) = (3, 15). Lalu,
setiap karakter plaintext akan masuk persamaan Mi = Ci3 mod 15
. String masukan yang bernilai 0x2c696d286924, akan dikonversi kembail
menjadi 0x836967826984, dan akhirnya angka-angka tersebut akan diubah
kembali menjadi bentuk string plaintext yang bernilai “SECRET”
Dari contoh di atas kita dapat
menangkap suatu kelemahan dari pemakaian p dan q yang bernilai kecil yaitu bisa kita
lihat di digit ke-4, ke-6 dan ke-9 tidak berubah saat dienkripsi, dan nilai 2
dan 8 dienkripsi menjadi 8 dan 2, yang berarti dienkripsi menjadi kebalikannya.
Tapi kesimpulan yang bisa diambil dari contoh yang sederhana ini adalah RSA
dapat digunakan dalam penyandian dalam pengiriman informasi.
Kunci RSA yang mempunyai ukuran 512
dan 768 bit dianggap masih lemah dan mudah dijebol. Ukuran kunci yang
dianjurkan adalah 1024 bit. Ukuran 2048 dan 3072 bit merupakan suatu ukuran
yang lebih baik.
2. Contoh perhitungan RSA :
1. Pilih 2 bilangan prima, misalnya p = 17 dan q = 11.
2. Hitung n = pq = 17 × 11 = 187.
3. Hitung Φ(n) = (p – 1)(q – 1) = 16 × 10 = 160.
4. Pilih nilai e sedemikian sehingga relatif prima terhadap
Φ(n) = 160 dan kurang dari Φ(n); kita pilih e = 7.
5. Hitung d sedemikian sehingga de ≡ 1 (mod 160) dan d
< 160.Nilai yang didapatkan d = 23,karena 23 × 7 = 161 = (1 × 160) +
1; d dapat dihitung dengan Extended Euclidean Algorithm.
Nah, nilai e dan d
inilah yang kita sebut sebagai Public Key(e) dan Private Key(d). Pasangan
Kunci Publiknya ={7,187} dan Kunci Privatnya = {23, 187}
Sekarang kita
aplikasikan dalam proses enkripsi.
Misalnya kita punya M 88. Untuk proses enkripsi, kita akan
menghitung C = 887 mod
187.
= 887 mod
187.
=894,432 mod 187
=11
Nah, kita mendapatkan
nilai C =11.
Selanjutnya, nilai C ini
dikirimkan kepada penerima untuk didekripsi dengan kunci privat miliknya.
M = Cd mod
n
= 1123 mod
187
=79,720,245 mod187
= 88
3. Contoh lain perhitungan RSA
Misalkan
p = 3
q = 7
n = p.q
= 3 x 7
= 21
m = (p-1)
(q-1)
= (3 -1)(7 – 1)
= 12
e * d mod 12
= 1
e = 5
d = 17
public key
= (e,n) = (5,21)
private key
= (d,n) = (17,21)
T
O
M I
84
79
77 73
Proses
Enkripsi dan Deskripsi
T = 84
Enkripsi
|
Deskripsi
|
C = M ^ e mod n
|
M = C ^ d mod n
|
8 ^ 5 mod 21 = 8
|
8 ^ 17 mod 21 = 8
|
4 ^ 5 mod 21 = 16
|
16 ^ 17 mod 21 = 4
|
O = 79
Enkripsi
|
Deskripsi
|
C = M ^ e mod n
|
M = C ^ d mod n
|
7 ^ 5 mod 21 = 7
|
7 ^ 17 mod 21 = 7
|
9 ^ 5 mod 21 = 18
|
18 ^ 17 mod 21 = 9
|
M = 77
Enkripsi
|
Deskripsi
|
C = M ^ e mod n
|
M = C ^ d mod n
|
7 ^ 5 mod 21 = 7
|
7 ^ 17 mod 21 = 7
|
7 ^ 5 mod 21 = 7
|
7 ^ 5 mod 21 = 7
|
I = 73
Enkripsi
|
Deskripsi
|
C = M ^ e mod n
|
M = C ^ d mod n
|
7 ^ 5 mod 21 = 7
|
7 ^ 17 mod 21 = 7
|
3 ^ 5 mod 21 = 12
|
12 ^ 17 mod 21 = 3
|
Comments
Post a Comment