Algoritma Kriptografi Modern (RSA)





          Kriptografi bertujuan menjaga kerahasiaan informasi yang terkandung dalam data sehingga informasi tersebut tidak dapat diketahui oleh pihak yang tidak sah. Dalam menjaga kerahasiaan data, kriptografi mentransformasikan data jelas (plaintext) ke dalam bentuk data sandi (ciphertext) yang tidak dapat dikenali. Ciphertext inilah yang kemudian dikirimkan oleh pengirim (sender) kepada penerima (receiver). Setelah sampai di penerima, ciphertext tersebut ditransformasikan kembali ke dalam bentuk plaintext agar dapat dikenali.

            Proses tranformasi dari plaintext menjadi ciphertext disebut proses Encipherment atau enkripsi (encryption), sedangkan proses mentransformasikan kembali ciphertext menjadi plaintext disebut proses dekripsi (decryption). Kriptografi menggunakan suatu algoritma (cipher) dan kunci (key). Cipher adalah fungsi matematika yang digunakan untuk mengenkripsi dan mendekripsi. Sedangkan kunci merupakan sederetan bit yang diperlukan untuk mengenkripsi dan mendekripsi data. Secara sederhana istilahistilah di atas dapat digambarkan sebagai berikut.

            Proses Enkripsi/Dekripsi Sederhana Berdasarkan kunci yang digunakan, algoritma kriptografi dapat dibedakan atas dua golongan, yaitu :
  • Symmetric Algorithms Algoritma kriptografi simetris atau disebut juga algoritma   kriptografi konvensional adalah algoritma yang menggunakan kunci untuk proses enkripsi sama dengan kunci untuk proses dekripsi.
  • Asymmetric Algorithms Algoritma kriptografi nirsimetris adalah algoritma yang menggunakan kunci yang berbeda untuk proses enkripsi dan dekripsinya. Algoritma ini disebut juga algoritma kunci umum (public key algorithm) karena kunci untuk enkripsi dibuat umum (public key) atau dapat diketahui oleh setiap orang, tapi kunci untuk dekripsi hanya diketahui oleh orang yang berwenang mengetahui data yang disandikan atau sering disebut kunci pribadi (private key).Contoh : algoritma terkenal yang menggunakan kunci asimetris adalah RSA dan ECC.

RSA Enkripsi Deskripsi


          RSA adalah salah satu teknik kriptografi dimana kunci untuk melakukan enkripsi berbeda dengan kunci untuk melakukan dekripsi. Data transkrip akademik mahasiswa merupakan salah satu data yang harus dijaga keamanannya sehingga perlu diterapkan suatu teknik pengamanan dalam penyimpanannya. Pada makalah ini akan dibahas proses enkripsi (penyandian data) nilai transkrip akademik mahasiswa menggunakan algoritma RSA, lalu akan dibahas proses melakukan dekripsi (pengembalian data asli), serta akan dibahas pula proses pembangkitan kunci pada algoritma RSA ini. Kinerja yang diukur dari algoritma RSA ini waktu komputasi serta kompleksitas memori yang dibutuhkan dalam melakukan enkripsi dan dekripsi data. Sebuah perangkat lunak berbasis LabVIEW dibangun untuk implementasi algoritma RSA ini. Hasil pengujian menunjukkan bahwa algoritma RSA berhasil diimplementasikan untuk pengamanan data transkrip akademik mahasiswa. Berdasarkan pengujian diperoleh waktu komputasi algoritma RSA adalah sebesar 15625 mikrodetik. Sedangkan kompleksitas memori yang dibutuhkan algoritma RSA sebesar 3908 bytes.

            Nama RSA dinamai sesuai dengan nama-nama penciptanya yaitu Ron Rivest, Adi Shamir, and Len Adleman. Cryptosystem RSA telah digunakan untuk e-commerce, berbagai bentuk otentikasi, dan jaringan pribadi virtual. Pentingnya keamanan yang tinggi dan implementasi yang lebih cepat membuka jalan untuk RSA crypto-akselerator, implementasi perangkat keras dari algoritma RSA. Pekerjaan ini terdiri dari penjelasan berbagai pendekatan untuk menerapkan RSA crypto-akselerator berdasarkan versi “textbox” dari cryptosystem RSA dan membandingkan kebutuhan area mereka. Banyak teknik yang dijelaskan di sini memiliki aplikasi di tempat lain seperti dalam pemrosesan sinyal digital dan kode kesalahan mengoreksi.


Tabel ASCII
Pembangkitan pasangan kunci
1.    Pilih dua bilangan prima, a dan b (rahasia)
2.    Hitung n = a.b Besaran n tidak perlu dirahasiakan.
3.    Hitung φ (n) = (a – 1)(b – 1).
4.    Pilih sebuah bilangan bulat untuk kunci publik, sebut namanya e, yang
relatif prima terhadap 
φ (n) .
5.    Hitung kunci dekripsi, d, melalui ed 1 (mod m) atau d e-1 mod (φ(n) )


Hasil dari algoritma di atas:

Kunci publik adalah pasangan (en)
Kunci privat adalah pasangan (dn)

Catatan: n tidak bersifat rahasia, namun ia diperlukan pada perhitungan enkripsi / dekripsi


Kunci Publik
1. Misalkan = 47 dan = 71 (keduanya prima), maka dapat dihitung:
= 3337 φ(n) = (– 1) x (– 1) = 46 x 70 = 3220.
2.    Pilih kunci publik = 79 (yang relatif prima dengan 3220 karena pembagi bersama terbesarnya adalah 1).
3.    Hapus a dan b dan kunci publiknya adalah n=3337 dan e=79


Kunci Privat
Selanjutnya akan dihitung kunci privat d dengan kekongruenan:


                e 1 (mod m) = => d = 1 + (k x 3220)
                                                            79


Dengan mencoba nilai-nilai k = 1, 2, 3, …, diperoleh nilai d yang bulat adalah
1019. 1019 Ini adalah kunci privat (untuk dekripsi).



Contoh
Misalkan plainteks M = HARI INI atau dalam ASCII: 7265827332737873
Pecah menjadi blok yang lebih kecil (misal 3 digit):

               m1 = 726        m4 = 273
               m2 = 582        m5 = 787
               m3 = 733        m6 = 003

(Perhatikan, 
i masih terletak di dalam antara 0 sampai – 1)


Enkripsi setiap blok:

c1
 = 726^79 mod 3337 = 215
c2 = 582^79 mod 3337 = 776, dst


Chiperteks = 215 776 1743 933 1731 158.


Dekripsi (menggunakan kunci privat d = 1019)
m= 215^1019 mod 3337 = 726
m2 = 776^1019 mod 3337 = 582 dst untuk sisi blok lainnya


Plainteks = 7265827332737873 yang dalam ASCII karakternya adalah HARI INI.


Kekuatan dan Keamanan RSA

  • Kekuatan algoritma RSA terletak pada tingkat kesulitan dalam memfaktorkan bilangan non prima menjadi faktor primanya, yang dalam hal ini a x b.
  • Sekali berhasil difaktorkan menjadi dan b, maka φ (n) = (– 1)x(– 1) dapat dihitung. Selanjutnya, karena kunci enkripsi diumumkan (tidak rahasia), maka kunci dekripsi dapat dihitung dari persamaan ed = 1 (mod n).
  • Penemu algoritma RSA menyarankan nilai a dan b panjangnya lebih dari 100 digit. Dengan demikian hasil kali n = a x b 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 milidetik).


Referensi
https://jurnal.unikom.ac.id/_s/data/jurnal/v08-n01/volume-81-artikel-9.pdf/pdf/volume-81-artikel-9.pdf
http://dinus.ac.id/repository/docs/ajar/Kriptografi_-_Week12_-_RSA.pdf

Tidak ada komentar:

Posting Komentar

Pages