Ditulisan kali ini kita akan membicarakan Algoritma RSA. Algoritma ini lumayan populer untuk mahasiswa atau beberapa penggelut bidang IT. Jelas aja karena algoritma ini sangat banyak digunakan dalam keamanan data digital. Oiya, jangan langsung merasa seram dengan judul kita ya, perhitungan yang kita lakukan kali ini cukup mudah dan jelas kok hehe…
Algoritma RSA dan Cyber Security
Menurut wikipedia RSA di bidang kriptografi adalah sebuah algoritme pada enkripsipublic key. 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.
Algoritma RSA merupakan salah satu algoritma kunci asimetris. “RSA (dari Rivest-Shamir-Adleman) adalah sebuah kriptografi kunci publik yang berdasarkan pada eksponensial terbatas pada modulo bilangan bulat N(ZN) di mana N adalah sebuah bilangan bulat gabungan dari dua faktor besar (yaitu semi-prime).”(Kiviharju, 2017).
Pada umumnya algoritma yang satu ini digunakan untuk kepentingan autentikasi. Merupakan aspek dimana si penerima informasi dapat memastikan keaslian pesan, yakni dengan kata lain data dan informasi benar-benar berasal dari sumber yang benar. Oleh karena itulah kunci pada algoritma ini berbeda saat enkripsi dan dekripsinya.Karena teknologi semakin canggih, sekarang algoritma ini dipakai untuk kepentingan tanda tangan digital, autentikasi TV berbayar, protokol SSL, hingga keamanan kartu elektronik.
Kekuatan algoritma ini terletak pada proses eksponensial, dan pemfaktoran bilangan menjadi 2 bilangan prima yang hingga kini perlu waktu yang lama untuk melakukan pemfaktorannya. Bahkan beberapa ilmuan melakukan kombinasi dengan beberapa fungsi matematika agar bisa memecahkan pemfaktorannya.
Langkah-langkah Dalam Algoritma RSA
Dalam mengamankan pesan dengan algoritma RSA, ada beberapa tahapan yang harus dilakukan. Ekspansi kunci disini adalah hal yang paling mendasar, hal ini disebabkan kunci yang digunakan ada dua buah kunci, yaitu kunci public (kunci yang digunakan untuk mengenkripsi/menyandikan pesan) dan kunci privat (kunci yang digunakan untuk mengembalikan pesan asi). Proses ekspansi kunci ini akan menghasilkan dua buah kunci yang saling berkaitan satu sama lain.
Setelah proses ekspansi kunci dan kedua buah kunci didapat, barulah kita dapat melakukan proses enkripsi atau dekripsi.
Mari kita praktekkan ya…
Ekspansi Kunci
Tahapan Ekspansi Kunci :
1 . Memilih dua buah bilangan prima berukuran besar p dan q. Kedua bilangan ini tidak boleh sama. Untuk memperoleh tingkat keamanan yang tinggi pilih p dan q yang berukuran hingga misalnya 1024 bit.
2 . Hitung n = p x q
3 . Hitung m = (p-1) x (q-1)
4 . Memilih e yang relatif prima terhadap m. Untuk menghasilkan e kita perlu mencari gcd(e,m)=1, artinya faktor pembagi terbesar e dan m adalah 1, mencarinya dengan algoritma euclidean :
\[\]$$ r_{0}=q_{1}r_{1}+r_{2} , dimana, 0 <r_{2} <r_{1} $$ \[\]$$ r_{1}=q_{2}r_{2}+r_{3} , dimana, 0 <r_{3} <r_{2} $$ \[\]$$ r_{n} = …. $$ Perhitungan ini dilakukan dengan cara memilih nilai e secara acak sebagain nilai percobaan. Perhitungan akan berhenti jika nilai r berahir pada angka 0. Jika nilai sebelum r terahir adalah 1 maka angka yang menjadi percobaan benar sebagai e. Tetapi jika nilai sebelum r terahir tidak 1, maka angka tersebut bukanlan e yang diharapkan, maka coba angka lain.
5 . Mencari d dengan rumus : e x d mod m = 1, disini kita menebak nilai d yang jika dikalikan dengan e dan di mod kan dengan m maka hasilnya adalah 1.
6 . Kemudian didapatlah sepasang kunci : kunci public = (e,n) dan kunci private = (d,n).
Baiklah, mari kita coba implementasinya…
Kemudian tahap selanjutnya adalah :
Dari perhitungan di atas, kita dapat melihat bahwa nilai r sebelum 0 adalah 2. ini berarti e yang kita coba bukanlah gcd(e,m)=1. Itu artinya kita harus mencoba nilai lain, misalnya kita mencoba e = 7 sebagai berikut :
Dari hasil di atas di dapatlah nilai e, yaitu 7.
5 . Mencari d dengan rumus : e x d mod m = 1 :
Keterangan : Nilai d adalah nilai yang kita tebak dan coba cocokkan, karena 7 x 3 = 21 dan jika 21 mod 20 maka hasilnya 1, maka 3 adalah angka yang tepat untuk niali d.
6 . Dengan didapat nilai d yaitu 3, maka pasangan kunci adalah :
- Kunci Public = (e,n) yaitu (7,33)
- Kunci Private = (d,n) yaitu (3,33)
Enkripsi
Enkripsi, mengubah pesan asli menjadi sandi adalah inti dari kriptografi. Oleh karena itu, tujuan dari ekspansi kunci adalah untuk dapat mengenkripsi pesan dengan kunci public yang telah didapat. Berikut adalah rumus dan proses enkripsi :
Misal pesan yang ingin kita enkripsi adalah 14, angka ini hanya contoh, jika pesan berupa huruf maka conversikan ke dalam bentuk angka dengan ASCII code. Kemudian enkripsi dengan rumus :
\[\]$$ C=M^{e}\left( mod n\right) $$
Keterangan : C = Cipherteks, M = Message (Pesan), maka :
\[\]$$ C=14^{7}\left( mod 33\right), C=20 $$
Dekrispi
Untuk mengembalikan pesan asli, kita ambil pesan sandi yang tadi sudah didapat yaitu 20, maka dekripsikan dengan rumus berikut :
\[\]$$ M=C^{d}\left( mod n\right) $$
Keterangan : C = Cipherteks, M = Message (Pesan), maka :
\[\]$$ M=20^{3}\left( mod 33\right), C=14 $$
Terimakasih banyak !
Akhirnya paham juga proses algoritma rsa
Tetap semangat
min, itu kenapa e nya diambil angka 7?
kalau pakai angka 3, hasil gcd(3,20) = 1
apa ini memang bisa sesuka hati selama hasil gcd nya adalah 1?
Iyap, bener.. boleh berapa aja asalkan hasil gcd nya 1.
Iyap, bener.. boleh berapa aja asalkan hasil gcd nya 1.
[…] RSA-CRT merupakan bentuk kombinasi dari algoritma RSA. Seperti yang sudah kita bahas pada contoh perhitungan algoritma RSA bahwa algoritma kunci-public yang satu ini termasuk ke dalam kategori algoritma kriptografi yang […]