Inilah Pengertian dan Contoh Enkripsi dalam Algoritma RSA (Rivest-Shamir-Adleman)

Assalamu‘alaikum wr. wb.

Hello guys! Dalam Keamanan Digital dan Cybersecurity, RSA Algorithm sudah tidak asing lagi. Algoritma RSA merupakan salah satu Jenis Algoritma Enkripsi Public Key sangat banyak digunakan dalam Keamanan Data Digital. Kali ini, kita akan membahas tentang Pengertian dan Contoh (Rumus) Enkripsi dalam Algoritma RSA.

Pengertian dan Contoh Enkripsi dalam Algoritma RSA

Sumber Artikel : Techtarget.com, Javatpoint.comSimplilearn.comGeeksforgeeks.org, Komputerkata.com, dan Payahtidur.com


A. Pengertian Algoritma RSA

Algoritma RSA (Rivest-Shamir-Adleman) adalah dasar dari kriptosistem -- serangkaian algoritma kriptografi yang digunakan untuk layanan keamanan atau tujuan tertentu -- yang memungkinkan enkripsi kunci publik dan banyak digunakan untuk mengamankan data sensitif, terutama ketika dikirim melalui jaringan yang tidak aman seperti internet.

RSA pertama kali dijelaskan secara publik pada Tahun 1977 oleh Ron Rivest, Adi Shamir, dan Leonard Adleman dari Massachusetts Institute of Technology, meskipun penciptaan algoritma kunci publik pada tahun 1973 oleh matematikawan Inggris Clifford Cocks tetap diklasifikasikan oleh GCHQ Inggris sampai tahun 1997.

Kriptografi kunci publik, juga dikenal sebagai kriptografi asimetris, menggunakan dua kunci yang berbeda tetapi terhubung secara matematis -- satu kunci publik dan satu kunci pribadi. Kunci publik dapat dibagikan dengan semua orang, sedangkan kunci pribadi harus tetap rahasia.

Dalam kriptografi RSA, baik kunci publik maupun kunci pribadi dapat mengenkripsi pesan. Kunci yang berlawanan dengan yang digunakan untuk mengenkripsi pesan digunakan untuk mendekripsi. Ini adalah salah satu alasan mengapa RSA telah menjadi algoritma asimetris yang paling banyak digunakan: Ini menyediakan metode untuk menjamin kerahasiaan, integritas, otentikasi, dan non-repudiasi komunikasi elektronik dan penyimpanan data.

Banyak Protokol, termasuk Secure Shell (SSH), OpenPGP, S/MIME, dan SSL/TLS, bergantung pada RSA untuk fungsi enkripsi dan tanda tangan digital. Ini juga digunakan dalam program perangkat lunak -- browser adalah contoh yang jelas, karena mereka perlu membentuk koneksi aman melalui jaringan yang tidak aman, seperti internet, atau memvalidasi tanda tangan digital. Verifikasi tanda tangan RSA adalah salah satu operasi yang paling sering dilakukan dalam sistem yang terhubung ke jaringan.

B. Alasan Kegunaan Algoritma RSA

RSA mendapatkan keamanannya dari kesulitan memfaktorkan bilangan bulat besar yang merupakan hasil dari dua bilangan prima besar. Mengalikan kedua bilangan ini mudah, tetapi menentukan bilangan prima asli dari total -- atau faktorisasi -- dianggap tidak mungkin dilakukan karena waktu yang dibutuhkan bahkan dengan menggunakan superkomputer saat ini.

Algoritma pembangkitan kunci publik dan privat adalah bagian paling kompleks dari kriptografi RSA. Dua bilangan prima besar, p dan q, dihasilkan menggunakan algoritma uji primalitas Rabin-Miller. Modulus, n, dihitung dengan mengalikan p dan q. Angka ini digunakan oleh kunci publik dan privat dan menyediakan kaitan antara keduanya. Panjangnya, biasanya diungkapkan dalam bit, disebut panjang kunci.

Kunci publik terdiri dari modulus n dan eksponen publik, e, yang biasanya diatur pada 65537, karena itu adalah bilangan prima yang tidak terlalu besar. Angka e tidak perlu menjadi bilangan prima yang dipilih secara rahasia, karena kunci publik dibagikan kepada semua orang.

Kunci privat terdiri dari modulus n dan eksponen privat, d, yang dihitung menggunakan algoritma Euclidean Extended untuk menemukan inversi perkalian terhadap totien dari n.

C. Tingkat Keamanan oleh RSA

Keamanan RSA bergantung pada kesulitan komputasional dalam memfaktorkan bilangan bulat besar. Seiring dengan peningkatan daya komputasi dan penemuan algoritma faktorisasi yang lebih efisien, kemampuan untuk memfaktorkan bilangan yang lebih besar juga meningkat.

Kekuatan enkripsi langsung terkait dengan panjang kunci. Melipatgandakan panjang kunci dapat memberikan peningkatan kekuatan secara eksponensial, meskipun ini dapat merugikan kinerja. Panjang kunci RSA biasanya 1024 atau 2048 bit, tetapi para ahli meyakini bahwa kunci 1024 bit tidak lagi sepenuhnya aman terhadap semua serangan. Oleh karena itu, pemerintah dan beberapa industri beralih ke panjang kunci minimum 2048 bit.

Kecuali ada kemajuan tak terduga dalam komputasi kuantum, akan memakan waktu bertahun-tahun sebelum kunci yang lebih panjang diperlukan. Namun, kriptografi kurva eliptis (ECC) semakin mendapat dukungan dari banyak ahli keamanan sebagai alternatif untuk menerapkan kriptografi kunci publik. Ini dapat membuat kunci kriptografis lebih cepat, lebih kecil, dan lebih efisien.

Perangkat keras dan perangkat lunak modern sudah siap untuk ECC, dan popularitasnya kemungkinan akan tumbuh. Ini dapat memberikan keamanan yang setara dengan penggunaan daya komputasi dan baterai yang lebih rendah, membuatnya lebih cocok untuk aplikasi seluler daripada RSA.

Sebuah tim peneliti, yang melibatkan Adi Shamir, salah satu penemu RSA, berhasil membuat kunci RSA 4096 bit menggunakan kriptoanalisis akustik. Namun, perlu dicatat bahwa setiap algoritma enkripsi rentan terhadap serangan.

D. Cara Kerja 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.

Algoritma enkripsi kunci publik juga disebut sebagai algoritma Asimetris. Algoritma Asimetris adalah algoritma di mana pengirim dan penerima menggunakan kunci yang berbeda untuk enkripsi dan dekripsi. Setiap pengirim diberikan sepasang kunci:

  • Kunci Publik (Public Key)
  • Kunci Privat (Private Key)

Kunci publik digunakan untuk enkripsi, dan Kunci Privat digunakan untuk dekripsi. Dekripsi tidak dapat dilakukan menggunakan kunci publik. Kedua kunci terhubung, tetapi kunci privat tidak dapat diperoleh dari kunci publik. Kunci publik dikenal luas, tetapi kunci privat bersifat rahasia dan hanya diketahui oleh pengguna yang memiliki kunci tersebut. Ini berarti bahwa siapa pun dapat mengirim pesan kepada pengguna menggunakan kunci publik pengguna. Tetapi hanya pengguna yang dapat mendekripsi pesan tersebut menggunakan kunci privatnya.

Algoritma kunci publik beroperasi sebagai berikut :

  • Data yang akan dikirim dienkripsi oleh pengirim A menggunakan kunci publik penerima yang dituju.
  • B mendekripsi sandi terenkripsi yang diterima menggunakan kunci privatnya, yang hanya diketahui oleh B. B membalas A dengan mengenkripsi pesannya menggunakan kunci publik A.
  • A mendekripsi sandi terenkripsi yang diterima menggunakan kunci privatnya, yang hanya diketahui olehnya.

E. Kelebihan/Keuntungan Algoritma RSA

Sumber : Simplilearn.com

Berikut ini adalah Kelebihan/Keuntungan dari Algoritma RSA :

1. Tidak Ada Berbagi Kunci

Enkripsi RSA bergantung pada penggunaan kunci publik penerima, sehingga Anda tidak perlu berbagi kunci rahasia apa pun untuk menerima pesan dari orang lain.

2. Bukti Keaslian

Karena pasangan kunci saling terkait, penerima tidak dapat menyadap pesan karena mereka tidak akan memiliki kunci privat yang benar untuk mendekripsi informasi tersebut.

3. Enkripsi Lebih Cepat

Proses enkripsi lebih cepat dibandingkan dengan algoritma DSA.

4. Data Tidak Dapat Dimodifikasi

Data akan aman dari pemalsuan selama pengiriman karena merusak data akan mengubah penggunaan kunci. Dan kunci privat tidak akan dapat mendekripsi informasi, sehingga memberi tahu penerima tentang manipulasi.

F. Rumus Umum dan Langkah-langkah Algoritma RSA

Algoritma RSA menggunakan prosedur berikut untuk menghasilkan Public Key dan Private Key :

1. Pilih dua bilangan prima besar, p dan q.

2. Kalikan kedua bilangan tersebut untuk menemukan n = p x q, di mana n disebut modulus untuk enkripsi dan dekripsi.

3. Pilih suatu angka e yang kurang dari n, sehingga n relatif prima dengan (p - 1) x (q -1). Ini berarti bahwa e dan (p - 1) x (q - 1) tidak memiliki faktor bersama kecuali 1. Pilih "e" sedemikian rupa sehingga 1 < e < φ (n), e prima terhadap φ (n), dan gcd (e, φ (n)) = 1.

4. Jika n = p x q, maka kunci publiknya adalah <e, n>. Pesan teks biasa m dienkripsi menggunakan kunci publik <e, n>. Untuk mendapatkan sandi dari teks biasa, rumus berikut digunakan untuk mendapatkan sandi C.

C = me mod n

Di sini, m harus kurang dari n. Pesan yang lebih besar (>n) dianggap sebagai penggabungan pesan, masing-masing dienkripsi secara terpisah.

5. Untuk menentukan kunci privat, kita menggunakan rumus berikut untuk menghitung d sehingga :

De mod {(p - 1) x (q - 1)} = 1

Atau

De mod φ (n) = 1

6. Kunci privatnya adalah <d, n>. Pesan sandi c didekripsi (ciphertext) menggunakan kunci privat <d, n>. Untuk menghitung teks biasa m dari sandi c, rumus berikut digunakan untuk mendapatkan teks biasa m.

m = cd mod n

Dan inilah Penerapan Algoritma RSA (Pseudocode)  :

Membuat Public Key :

Select two prime no's. Suppose P = 53 and Q = 59.
Now First part of the Public key  : n = P*Q = 3127.
 We also need a small exponent say e : 
But e Must be 
An integer.
Not be a factor of Φ(n). 
1 < e < Φ(n) [Φ(n) is discussed below], 
Let us now consider it to be equal to 3.
    Our Public Key is made of n and e

Membuat Private Key :

We need to calculate Φ(n) :
Such that Φ(n) = (P-1)(Q-1)     
      so,  Φ(n) = 3016
    Now calculate Private Key, d : 
d = (k*Φ(n) + 1) / e for some integer k
For k = 2, value of d is 2011.

Sekarang kita siap dengan – Public Key (n = 3127 dan e = 3) dan Private Key (d = 2011) Sekarang kita akan mengenkripsi “HI”:

Convert letters to numbers : H  = 8 and I = 9
    Thus Encrypted Data c = (89e)mod n 
Thus our Encrypted Data comes out to be 1394
Now we will decrypt 1394 : 
    Decrypted Data = (cd)mod n
Thus our Encrypted Data comes out to be 89
8 = H and I = 9 i.e. "HI".

G. Penerapan Program Algoritma RSA

Sumber : Geeksforgeeks.org

Berikut ini merupakan Contoh Penerapan dari Kode Program Algoritma RSA dalam beberapa Bahasa Pemrograman

1. Mengenkripsi dan Mendekripsi Nilai Angka Kecil

a. C++




b. C#




c. Java




d. Python




Hasil Output :

Message data = 12.000000
Encrypted data = 3.000000
Original Message Sent = 12.000000

2. Mengenkripsi dan mendekripsi pesan teks biasa yang berisi huruf dan angka menggunakan nilai ASCII-nya

a. C++




b. C#




c. Java




d. Python




Hasil Output :

Initial message:
Test Message

The encoded message(encrypted by public key)
863312887135951593413927434912887135951359583051879012887

The decoded message(decrypted by private key)
Test Message


H. Contoh Soal Algoritma RSA

Berikut ini adalah contoh perhitungan manual enkripsi dan dekripsi menggunakkan algoritma RSA.

Soal Nomor 1

Dimana sebelum-nya kita harus menentukkan dulu Public Key Dan Private Key-nya. Dan berikut langkah-langkah algoritma RSA mendapatkan Public Key Dan Private Key :

1. Pertama, menentukan 2 buah bilangan prima untuk p dan q :

2. Selanjutnya mendapatkan nilai n dimana rumus-nya :

n = p *q

dan akan menjadi seperti ini :

n = 11 * 13
n = 143

3. Mendapatkan nilai m dimana rumus-nya :

m = (p - 1) * (q - 1)

dan akan menjadi seperti ini :

m = (11-1) * (13 - 1)
m = (10) * (12)
m = 120

4. Menentukan nilai e dengan syarat :

e = e > 1 and GCD(m,e) = 1

Dimana "17" adalah nilai yang memenuhi syarat untuk nilai e

e = GCD(120,17) = 1

5. Menentukan nilai d dengan syarat :

d = (d *e) mod m = 1

Dimana "473" adalah nilai yang memenuhi syarat untuk nilai d

d = (473 *17) mod 120 = 1

6. Dari proses diatas, maka akan mendapatkan kunci public dan kunci privat dimana :

  • public key = (e,n)
  • private key = (d,n)

Dan kunci akan menjadi seperti ini :

  • public key = (17,143)
  • private key = (473,143)

Soal Nomor 2

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.

Hitung n = p x q

Hitung m = (p-1) x (q-1)

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 :

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.

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.

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)

7. Kunci Publik (Public Key)

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 = me mod n

Keterangan :

  • C = Cipher Text
  • M = Message (Pesan)

Maka :

C = 147 mod 33 = 20

Jadi : C = 20

8. Kunci Privat (Private Key)

Untuk mengembalikan pesan asli, kita ambil pesan sandi yang tadi sudah didapat yaitu 20, maka dekripsikan dengan rumus berikut :

m = cd mod n

Keterangan :

  • C = Cipher Text
  • M = Message (Pesan)

Maka :

m = 203 mod 33 = 14

Jadi : m = 14

Soal Nomor 3

Dan inilah Foto untuk Penyelesaian Enkripsi dari Algoritma RSA :

Untuk yang diketahui :

  • p = 13
  • q = 17
  • e = 35
  • m = 2

Hasil dari Penyelesaian di atas :

  • Public Key : (e, n) = (35, 221)
  • Private Key : (d, n) = (11, 221)
  • Encrypt Key : c = 59
  • Decrypt Key : m = 2


Itulah Pengertian dan Contoh Enkripsi dalam Algoritma RSA dalam Sistem Terdistribusi. Mohon maaf apabila ada kesalahan sedikit pun.

Terima Kasih 😄😘👌👍 :)

Wassalamu‘alaikum wr. wb.

Post a Comment

Previous Post Next Post