Skip to main content

Dekripsi dan Enkripsi dengan Metode RSA

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.
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 :

  1. Pilih dua bilangan prima p dan q secara acak , p q. Bilangan ini harus cukup besar (minimal 100 digit).
  2. Hitung N = pq. Bilangan N disebut parameter security.
  3. Hitung φ = (p-1)(q-1).
  4. Pilih bilangan bulat (integer) antara satu dan φ (1 < e < φ) yang tidak mempunyai faktor pembagi dari φ.
  5. 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 :

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.

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

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 :
  1. Kita pilih p = 3 dan q = 5
  2. Hitung N = pq = 3*5 = 15
  3. 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
  4. 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.
  5. 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
  6. 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
  7. Yang akan menghasilkan nilai digit masukan adalah 0x836967826984 yang akan dikirim sebagai 0x2c696d286924
  8. 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

Popular posts from this blog

Apa Itu Text Mining ?

Text mining  adalah satu langkah dari analisis teks yang dilakukan secara otomatis oleh komputer untuk menggali informasi yang berkualitas dari suatu rangkaian teks yang terangkum dalam sebuah dokumen (Han & Kamber, 2006) .   Text mining  (penggalian teks) merupakan penggalian teks data yang bersifat tekstual. Text   mining  juga merupakan bidang yang sedang berkembang dan berpotensi besar bagi dunia bisnis. Text mining bekerja menggunakan data numerik (Sungkono, 2007) . Pada tahun 1996, Dow Chemical Company memulai proses text mining dengan mengakses ratusan ribu dokumen dari berbagai sumber, termasuk internet. Tujuan mereka adalah mendapatkan pengetahuan dan pola-pola informasi yang tidak dapat ditemukan menggunakan perangkat basis data atau mesin pencarian konvensional. Dow  kemudian mampu mencari pelanggan-pelanggan baru, teknologi baru, dan mitra bisnis baru melalui text mining . Dow juga mampu mengidentifikasi tren pasar yang tidak dapat dideteksi...

Penetration Testing dengan Tools OWASP ZAP

OWASP Zed Attack Proxy (ZAP) adalah salah satu alat keamanan gratis paling populer di dunia dan dikelola secara aktif oleh tim sukarelawan internasional yang berdedikasi. OWASP ZAP dapat membantu Anda secara otomatis menemukan kerentanan keamanan dalam aplikasi web Anda saat Anda mengembangkan dan menguji aplikasi Anda. OWASP ZAP juga merupakan alat yang hebat untuk pentester berpengalaman untuk digunakan untuk pengujian keamanan manual atau audit suatu website.   Cara penggunaan aplikasi OWASP ZAP sangat mudah, berikut langkah langkah penggunaan aplikasi OWASP ZAP : 1.  Buka tampilan tools/ aplikasi OWASP ZAP 2.  Selanjutnya pilih “Yes, I want persist this session with name based on the current timestamp” -> lalu klik start 3.  Lalu pilih Automated Scan setelah itu sediakan url atau IP yang akan dilakukan pentest 4.  Masukkan alamat yang akan anda lakukan pentest, seperti gambar dibawah ini, lalu klik attack. 5.  Hasil pentest terlihat seperti gambar di...

Pengetahuan Dasar Cyber Security (Keamanan Sistem Informasi)

Haiii mina. Penulis mau update lagi nih. Ini soal Keamanan Sistem Komputer yang dibahas pada pertemuan pertama. Tapi sayangnya Penulis tidak dapat hadir dalam perkuliahan hari itu karena ada urusan dari kampus, eh sok sibuk. Hehehe.. Yuk kita kembali ke topik aja.          Keamanan Sistem Komputer merupakan sebuah upaya yang dilakukan untuk mengamankan kinerja,fungsi atau proses komputer. Keamanan komputer memberikan persyaratan terhadap komputer yang berbeda dari kebanyakan persyaratan sistem karena sering kali berbentuk pembatasan terhadap apa yang tidak boleh dilakukan komputer. Ini membuat keamanan komputer menjadi lebih menantang karena sudah cukup sulit untuk membuat program komputer melakukan segala apa yang sudah dirancang untuk dilakukan dengan benar. Persyaratan negatif juga sukar untuk dipenuhi dan membutuhkan pengujian mendalam untuk verifikasinya, yang tidak praktis bagi kebanyakan program komputer. Keamanan komputer memberikan strategi te...