Minggu, 15 Januari 2017

KRIPTOGRAFI RSA

Algoritma RSA dibuat oleh 3 orang peneliti dari MIT (Massachussets Institute of Technology) pada tahun 1976, yaitu: Ron (R)ivest, Adi (S)hamir, dan Leonard (A)dleman. RSA adalah salah satu teknik kriptografi dimana kunci untuk melakukan enkripsi berbeda dengan kunci untuk melakukan dekripsi. Kunci untuk melakukan enkripsi disebut sebagai kunci publik, sedangkan kunci untuk melakukan dekripsi disebut sebagai kunci privat. Orang yang mempunyai kunci publik dapat melakukan enkripsi tetapi yang dalam melakukan dekripsi hanyalah orang yang memiliki kunci privat. Kunci publik dapat dimiliki oleh sembarang orang, tetapi kunci privat hanya dimiliki oleh orang tertentu saja.

Besaran-besaran yang digunakan pada algoritma RSA:

1.  p dan q bilangan prima                            (rahasia)
2.  n = p × q                                                   (tidak rahasia)
3.  m = (p – 1)(q – 1)                                     (rahasia)
4.  e     (kunci enkripsi)                                 (tidak rahasia)
5.  d     (kunci dekripsi)                                 (rahasia)
6.  P     (plainteks)                                         (rahasia)
7.  C    (cipherteks)                                        (tidak rahasia)    


Untuk pembangkitan pasangan kunci RSA, digunakan algoritma sebagai berikut: 


1. Dipilih dua buah bilangan prima sembarang yang besar, p dan q.
2. Dihitung n = p x q.. 
3. Dihitung m = (p – 1)(q – 1).
4. Dipilih sebuah bilangan bulat sebagai kunci publik, disebut namanya e, e relatif prima terhadap m artinya faktor pembagi terbesar keduanya adalah 1,
secara matematis disebut FPB (e,m) = 1. Untuk mencarinya dapat digunakan algoritma Euclid.
5. Dihitung kunci privat, disebut namanya d sedemikian agar (d x e) mod m = 1.
Untuk mencari nilai d yang sesuai dapat juga digunakan algoritma Extended Euclid.

Maka hasil dari algoritma tersebut diperoleh : 

  • Kunci publik adalah pasangan (e,n). Bersifat tidak rahasia. 
  • Kunci private adalah pasangan (d,n). Bersifat rahasia.


Algoritma Enkripsi/Dekripsi 


Enkripsi 

1.  Ambil kunci publik penerima pesan, e, dan n
2.  Nyatakan plainteks P menjadi blok-blok P1, P2, …, sedemikian sehingga setiap blok merepresentasikan nilai di dalam selang [0, n – 1]

Setiap blok Mi dienkripsi menjadi blok Ci dengan rumus Ci = Pi ^ e mod n

Dekripsi 

Setiap blok cipherteks Ci didekripsi kembali menjadi blok Pi dengan rumus Pi = Ci ^ d mod n


Algoritma Euclid

Algoritma ini mencari FPB dengan cara melakukan pembagian berulang-ulang dimulai dari kedua bilangan yang hendak kita cari FPBnya sampai kita mendapatkan sisa 0 dari hasil pembagian.
Marilah kita lihat contoh yang lain, cari FPB dari 40 dan 64 :
  • 64 ÷ 40 = 1 dengan sisa 24 
  • 40 ÷ 24 = 1 dengan sisa 16 
  • 24 ÷ 16 = 1 dengan sisa 8 
  • 16 ÷ 8 = 2 dengan sisa 0.
Kita berhenti di sini sebab kita sudah mendapat sisa 0. Bilangan terakhir yang kita gunakan untuk membagi adalah 8, jadi FPB dari 40 dan 64 adalah 8 

Contoh RSA Sederhana 
  1.  p = 47 dan q = 71 (keduanya prima). 
  2. n = p q = 3337 
  3. m = (p – 1)(q – 1) = 3220 
  4. Pilih e yg relativ prime terhadap m,
    FPB (e,m) = 1.
    e = 79 => FPB (79, 3337) = 1 
  5. Cari nilai d
    d*e = 1 mod (m) 

    d*79 = 1 mod 3220

    d*79 mod 3220 = 1
    d = 1019
Sehingga didapatkan : 
Public key : (79, 3337) 
Private key : (1019, 3337) 

Proses Enkripsi

Setelah didapat perhitungan di atas, maka akan dilakukan enkripsi plaintext P = AKU. Pertama-tama plaintext tersebut diubah menjadi format ASCII sebagai berikut : 

Karakter          A                K           U 
ASCII             65               75          85 

P1 = 657 P2 = 585

Setelah dibagi perblock, maka akan dihitung menggunakan rumus  Ci  = Pi ^ e mod n
  • C1 = 657 ^ 79 mod 3337 = 2349 
  • C2 = 585 ^ 79 mod 3337 = 685 
Maka, chipertext yang didapatkan adalah C = 320328

Proses Dekripsi

Setelah chipertext dari kata AKU didapat, untuk mengubahnya kembali jadi plaintext menggunakan dekripsi dengan rumus   Pi = Ci ^ d mod n
  • P1 = 2349 ^ 1019 mod 3337 = 657 
  • P2 = 685 ^ 1019 mod 3337 = 585   

Maka, setelah di dekripsi hasilnya akan sama. Yaitu 657585.

Kekuatan dan Keamanan RSA

Keamanan algoritma RSA terletak pada sulitnya memfaktorkan bilangan yang besar menjadi faktor-faktor prima. Pemfaktoran dilakukan untuk memperoleh kunci pribadi. Selama pemfaktoran bilangan besar menjadi faktor-faktor prima belum ditemukan algoritma yang mangkus, maka selama itu pula keamanan algoritma RSA tetap terjamin

Kekuatan algoritma RSA terletak pada tingkat kesulitan dalam memfaktorkan bilangan menjadi faktor primanya, dalam hal ini memfaktorkan n menjadi p dan q. Karena sekali n berhasil difaktorkan, maka menghitung nilai m adalah perkara mudah. Selanjutnya, walau nilai e diumumkan, perhitungan kunci d tidaklah mudah pula karena nilai m yang tidak diketahui. Kelebihan lain algoritma RSA terletak pada ketahanannya terhadap berbagai bentuk serangan, terutama serangan brute force. Hal ini dikarenakan kompleksitas dekripsinya yang dapat ditentukan secara dinamis dengan cara menentukan nilai p dan q yang besar pada saat proses pembangitkan pasangan kunci, sehingga dihasilakan sebuah key space yang cukup besar, sehingga tahan terhadap serangan.


SEMOGA BERMANFAAT :):):)
Categories:

1 komentar:

  1. FPB (e,m) = 1.
    e = 79 => FPB (79, 3337) = 1

    itu yang diambil nilai m
    m = 3220
    tapi kok 3337

    BalasHapus