ASIMETRIS KRIPTOGRAFI

Algoritma kriptografi Modern dibuat sedemikian kompleks sehingga kriptanalis sangat sulit untuk memecahkan cipherteks tanpa mengetahui kunci. Algoritma kriptografi modern umumnya beroperasi dalam mode bit. Algoritma ini dapat dikelompokkan menjadi dua kategori yaitu cipher aliran (stream cipher – beroperasi dalam bentuk bit tunggal) dan cipher blok (block cipher – beroperasi dalam bentuk blok bit). Pengelompokan algoritma juga dilakukan berdasarkan kunci enkripsi – dekripsi yang digunakan, yaitu simetris (menggunakan kunci yang sama untuk proses enkripsi – dekripsi) dan asimetris atau kunci – publik (menggunakan kunci yang berbeda untuk proses enkripsi – dekripsi).

  1. RSA
RSA merupakan algoritma kriptografi asimetris. Ditemukan pertama kali pada tahun 1977 oleh Ron Rivest, Adi Shamir, dan Leonard Adleman. Nama RSA sendiri diambil dari inisial nama  depan ketiga penemunya tersebut. Sebagai algoritma kunci publik, RSA mempunyai dua kunci, yaitu kunci publik dan kunci pribadi. Kunci publik boleh diketahui oleh siapa saja, dan digunakan  untuk proses enkripsi. Sedangkan kunci pribadi hanya pihak – pihak tertentu saja yang boleh  mengetahuinya, dan digunakan untuk proses dekripsi. Algoritma RSA masih digunakan hingga  pada saat ini seperti yang diuraikan M. Zaki Riyanto dan Ardhi Ardhian: Keamanan sandi RSA terletak pada sulitnya memfaktorkan bilangan yang besar. Sampai  saat ini RSA masih dipercaya dan digunakan secara luas di internet. (Kriptografi Kunci Publik:  Sandi RSA, 2008).
kriptografi public key sering disebut dengan kriptografi asimetris. berbeda dengan kriptografi secret key, kunci yang digunakan pada proses enkripsi dan proses dekripsi pada kriptografi public key ini berbeda satu sama lain. jadi dalam kriptografi public key, suatu key generator akan menghasilkan dua kunci berbeda dimana satu kunci digunakan untuk melakukan proses enkripsi dan kunci yang lain digunakan untuk melakukan proses dekripsi.
Kunci yang digunakan untuk melakukan enkripsi akan dipublikasikan kepada umum untuk dipergunakan secara bebas. Oleh sebab itu, kunci yang digunakan untuk melakukan enkripsi disebut juga sebagai public key. Sedangkan kunci yang digunakan untuk melakukan dekripsi akan disimpan oleh pembuat kunci dan tidak akan dipublikasikan kepada umum. Kunci untuk melakukan dekripsi ini disebut private key.





Dengan cara demikian, semua orang yang akan mengirimkan pesan kepada pembuat kunci dapat melakukan proses enkripsi terhadap pesan tersebut, sedangkan proses dekripsi hanya dapat dilakukan oleh pembuat atau pemilik kunci dekripsi. Dalam kenyataannya, kriptografi asimetris ini dipakai dalam ssh, suatu layanan untuk mengakses suatu server.
  1. A. Penyandian Blok
Penyandian blok pada dasarnya adalah proses penyandian terhadap blok data yang jumlahnya sudah ditentukan. Untuk sistem penyandian blok terdapat empat jenis mode operasi, yaitu Electronic Code Book (ECB), Cipher Block Chaining (CBC), Cipher Feedback (CFB), Output Feedback (OFB).
  1. 1. Electronic Code Book (ECB)
Mode ECB adalah mode yang paling umum dan paling mudah untuk diimplementasikan. Cara yang digunakan adalah dengan membagi data ke dalam blok-blok data terlebih dahulu yang besarnya sudah ditentukan. Blok-blok data inilah yang disebut plaintext karena blok data ini belum disandikan. Proses enkripsi akan langsung mengolah plaintext menjadi ciphertext tanpa melakukan operasi tambahan. Suatu blok plaintextciphertext yang sama. yang dienkripsi dengan menggunakan kunci yang sama akan menghasilkan










Keuntungan dari mode OBC ini adalah kemudahan dalam implementasi dan pengurangan resiko salahnya semua plaintext akibat kesalahan pada satu plaintext. Namun mode ini memiliki kelemahan pada aspek keamanannya. Dengan mengetahui pasangan plaintext dan ciphertext, seorang kriptanalis dapat menyusun suatu code book tanpa perlu mengetahui kuncinya.
  1. 1. Cipher Block Chaining (CBC)
Pada CBC digunakan operasi umpan balik atau dikenal dengan operasi berantai (chaining). Pada CBC, hasil enkripsi dari blok sebelumnya adalah feedback untuk enkripsi dan dekripsi pada blok berikutnya. Dengan kata lain, setiap blok ciphertext dipakai untuk memodifikasi proses enkripsi dan dekripsi pada blok berikutnya.









Pada CBC diperlukan data acak sebagai blok pertama. Blok data acak ini sering disebut initialization vector atau IV. IV digunakan hanya untuk membuat suatu pesan menjadi unik dan IV tidak mempunyai arti yang penting sehingga IV tidak perlu dirahasiakan.
Algoritma Pembentukan Kunci:
1. Tentukan p dan q bernilai dua bilangan Prima besar, acak dan dirahasiakan.
p ≠ q, p dan q memiliki ukuran sama.
2. Hitung n = pq
Dan hitung (n) = (p-1)(q-1).
Bilangan integer n disebut (RSA) modulus.
3. Tentukan e bilangan Prima acak, yang memiliki syarat:
1 < e < (n)
GCD(e, (n)) = 1, disebut e relatif prima terhadap (n),
Bilangan integer e disebut (RSA) enciphering exponent.
4. Memakai algoritma Euclid yang diperluas (Extended Eucledian Algorithm).
Menghitung bilangan khusus d,
syarat 1 < d < (n)
d ≡ e-1 mod (n)
ed ≡ 1 (mod (n))
ed ≡ 1 + k. (n) untuk nilai k integer.
Bilangan integer d disebut (RSA) deciphering exponent.
5. Nilai (n,e) adalah nilai yang boleh dipublikasi.
Nilai d, p, q, (n) adalah nilai yang harus dirahasiakan.
Pasangan (n,e) merupakan kunci publik.
Pasangan (n,d) merupakan kunci rahasia.

Keterangan
  1. Fungsi (n) Phi-Euler merupakan fungsi terhadap bilangan bulat positif n yang meyatakan banyaknya elemen Zn yang mempunyai invers terhadap operasi pergandaan. Zn belum tentu merupakan grup terhadap operasi pergandaan, dengan kata lain, (n) adalah banyaknya elemen {x, 0 ≤ x < n | gcd(x,n) = 1}
  2. Algoritma Euclid digunakan untuk mencari nilai GCD (Greatest Common Divisor) atau sering disebut FPB (Pembagi Persekutuan terbesar) dari dua bilangan bulat. Algoritma ini didasarkan pada pernyataan gcd (r0, r1) = gcd(r1, r2) … gcd(rn-1, rn) = gcd(rn, 0) = rn
Contoh:
Akan dihitung gcd(40,24)
Jawab:
40 = 1.24 + 16
40 mod 24 = 16
24 = 1.16 + 8
24 mod16 = 8
16 = 2.8
16 mod 8 = 0, stop
Jadi gcd(40,24) = 8.
Dua buah bilangan bulat a dan b akan dapat dikatakan relatif prima jika gcd(a,b) = 1.
• Enkripsi: c = me mod n
• Dekripsi: m = cd mod n

Contoh Enkripsi
Untuk mengenkripsi, dilakukan langkah – langkah sebagai berikut ini:
Ubah tiap karakter teks terang menjadi bilangan bulat 01 – 26 (A = 01, B = 02, … , Z = 26), dan bagi teks menjadi beberapa blok b yang besar tiap bloknya lebih kecil dari n. Untuk tiap blok, hitung c = be (mod n). c menjadi blok teks sandi yang dikirimkan. Untuk mendekripkan kembali teks sandi, dilakukan langkah-langkah sebagai berikut :

Hitung bilangan bulat d sedemikian hingga de = 1 (mod (p-1)(q-1)). Pasangan (n, d) merupakan kunci rahasia. Untuk setiap blok sandi c yang diterima, hitung b = cd (mod n). Bagi pembuat sandi, dengan memilih 2 buah bilangan prima p dan q, tidaklah sulit untuk menghitung kunci publik n = pq, serta mendekripkannya kembali.

Implementasi Proses Enkripsi Dekripsi
Karakter : tugasakhir
Kunci yang digunakan : ivankey
Pasangan Kunci Publik
(n, e) : (39917, 27017)
Pasangan Kunci Rahasia
(n, d) : (39917, 30689)
  1. a. Proses mengubah karakter ke ASCII
Proses merubah karakter teks terang ke dalam bentuk ASCII menggunakan fungsi fn_to_ascii.
tugasakhir = 116 117 103 97 115 97 107 104 105 114

  1. b. Proses Perhitungan Enkripsi
Proses perhitungan enkripsi dilakukan dengan fungsi fn_enkrip. Hasil deretan ASCII diatas kemudian dibagi per blok 4 digit untuk dilakukan perhitungan dengan metode RSA menggunakan pasangan nilai kunci publik, menjadi : 1161, 1710, 3971, 1597, 1071, 0410, 5114

Masing-masing angka ini kemudian dihitung menggunakan pasangan kunci publik. Pasangan nilai kunci publik (n, e) : (39917, 27017)
Perhitungan enkripsi RSA:
116127017 mod 39917 = 36583
171027017 mod 39917 = 10233
397127017 mod 39917 = 30047
159727017 mod 39917 = 21583
107127017 mod 39917 = 26887

041027017 mod 39917 = 4285 = 04285
5114 = 5114

Agar pada saat proses perhitungan enkripsi dapat dijaga konsistensinya, maka setiap hasil tersebut harus dijadikan lima digit karakter dengan menambahkan karakter “0” didepannya. Pada hasil diatas 4285 menjadi 04285. Pada blok terakhir tidak dilakukan perhitungan, ini hanya algortima tambahan agar proses dekripsi dapat dilakukan dengan tepat. Kemudian hasil tersebut disatukan menjadi satu deretan karakter agar dapat diproses kebentuk karakter kembali.
Hasil deret: 3658310233300472158326887042855114

Dengan hasil perhitungan tersebut maka karakter “tugasakhir” berhasil dienkripsi.
Enkripsi “tugasakhir” = 3658310233300472158326887042855114

  1. c. Proses Perhitungan Deskripsi
Proses perhitungan dekripsi dilakukan menggunakan fungsi fn_dekrip. Mengingat proses perhitungan enkripsi selalu dipaksa agar konsisten per blok memiliki lima digit angka, maka pada proses dekripsi ini, deret angka diatas dikelompokan per-blok lima digit, kecuali pada blok terakhir dibiarkan apa adanya, menjadi: 36583, 10233, 30047, 21583, 26887, 04285, 5114. Masing-masing angka ini kemudian dihitung menggunakan pasangan kunci pribadi.
Pasangan nilai kunci pribadi (n, d) : (39917, 30689)
Perhitungan dekripsi RSA:
3658339917 mod 30689 = 1161
1023339917 mod 30689 = 1710
3004739917 mod 30689 = 3971
2158339917 mod 30689 = 1597
2688739917 mod 30689 = 1071
0428539917 mod 30689 = 410 = 0410
5114 = 5114

Untuk menjaga konsistensi proses dekripsi maka semua hasil per blok dijadikan empat digit dengan menambahkan karakter “0” didepannya, untuk nilai 410 menjadi 0410. Untuk blok terakhir tidak dilakukan proses perhitungan, karena pada proses enkripsi tidak dikenakan perhitungan. Kemudian hasil tersebut disatukan menjadi satu deretan karakter agar dapat diproses kebentuk karakter kembali.
Hasil deret: 1161171039711597107104105114
  1. d. Proses Mengubah Deretan ASCII ke Karakter
Proses ini menggunakan fungsi fn_to_teks. Hasil deret karakter diatas setelah proses perhitungan dekripsi RSA hasilnya adalah deretan ASCII yang akan diproses menjadi karakter kembali. Karena pada karakter yang digunakan untuk penelitian adalah “tugasakhir” dan semuanya adalah karakter pada keyboard yang tidak lebih dari ASCII 127 maka ada dua kemungkinan nilai ASCII, pertama ASCII yang lebih dari 100 dan ASCII yang kurang dari 100. Deretan tersebut dicek perbagiannya, jika ASCII lebih dari 100 dengan karakter awal “1” maka diambil per-blok tiga digit karakter dan jika ASCII kurang dari 100 diawali dengan karakter yang bukan “1” maka diambil per-blok dua digit. Sehingga deretan karakter diatas setelah dipotong- potong menjadi:
Deret : 116, 117, 103, 97, 115, 97, 107, 104, 105, 114

Kemudian dari potongan ASCII tersebut, masing-masing diproses ke karakter:
116 = t
117 = u
103 = g
97 = a
115 = s
97 = a
107 = k
104 = h
105 = i
14 = r
Hasil : tugasakhir
Karena hasil pengubahan ke karakter adalah “tugasakhir” maka hasil proses dekripsi adalah karakter “tugasakhir”.
Dekripsi 3658310233300472158326887
042855114 = “tugasakhir”

0 Response to "ASIMETRIS KRIPTOGRAFI"

Posting Komentar