Kelebihan kriptografi kunci simetris, diantaranya adalah:
1. Algoritma kriptografi kunci simetris dirancang sehingga proses enkripsi/dekripsi membutuhkan waktu yang singkat.
2. Ukuran kunci simetris relatif pendek. Algoritma kriptografi kunci simetris dapat digunakan untuk membangkitkan bilangan acak.
3. Algoritma kriptografi kunci simetris dapat disusun untuk menghasilkan cipher yang lebih kuat.
4. Otentikasi pengirim pesan langsung diketahui dari cipherteks yang diterima, karena kunci hanya diketahui oleh pengirim dan penerima pesan saja.
2.6.2 Kelemahan Kriptografi Kunci Simetris DES Encryption DES Encryption DES Encryption Plaintext Ciphertext Key 1 Key 2 Key 3
Kelemahan kriptografi kunci simetris, diantaranya adalah:
1. Kunci simetris harus dikirim melalui saluran yang aman. Kedua entitas yang berkomunikasi harus menjaga kerahasiaan kunci ini.
2. Kunci harus sering diubah, mungkin pada setiap sesi komunikasi. 2.6.3 Kelebihan Kriptografi Kunci Asimetris
Kelebihan kriptografi kunci asimetris, diantaranya adalah:
1. Hanya kunci privat yang perlu dijaga kerahasiaannya oleh setiap entitas yang berkomunikasi (tetapi, otentikasi kunci publik tetap harus terjamin). Tidak ada kebutuhan mengirim kunci privat sebagaimana pada sistem simetris.
2. Pasangan kunci publik/kunci privat tidak perlu diubah, bahkan dalam periode waktu yang panjang.
3. Dapat digunakan untuk mengamankan pengiriman kunci simetris.
4. Beberapa algoritma kunci publik dapat digunakan untuk memberi tanda tangan digital pada pesan.
2.6.4 Kelemahan Kriptografi Kunci Asimetris
Kelemahan kriptografi kunci asimetris, diantaranya adalah:
1. Enkripsi dan dekripsi data umumnya lebih lambat daripada sistem simetris, karena enkripsi dan dekripsi menggunakan bilangan yang besar dan melibatkan operasi perpangkatan yang besar.
2. Ukuran cipherteks lebih besar daripada plainteks (bisa dua sampai empat kali ukuran plainteks).
3. Ukuran kunci relatif lebih besar daripada ukuran kunci simetris.
4. Karena kunci publik diketahui secara luas dan dapat digunakan setiap orang, maka cipherteks tidak memberikan mengenai otentikasi pengirim.
5. Tidak ada algoritma kunci publik yang terbukti aman. Kebanyakan algoritma mendasarkan keamanannya pada sulitnya memecahkan persoalan-persoalan aritmetik yang menjadi dasar pembangkit kunci. Kriptografi kunci publik juga tidak aman dari
serangan man-in-the-middle attack. Orang di ”tengah” mengintersepsi komunikasi lalu berpura-pura sebagai salah satu pihak yang berkomunikasi untuk mengetahui informasi rahasia.
2. 7 Bilangan Prima
Bilangan bulat positif p (p > 1) disebut bilangan prima jika pembaginya hanya 1 dan p. Contoh 23 adalah bilangan prima karena ia hanya habis dibagi oleh 1 dan 23. Karena bilangan prima harus lebih besar 1, maka barisan bilangan prima dimulai dari 2, yaitu 2, 3, 5, 7, 11, 13, .... Seluruh bilangan prima adalah bilangan ganjil, kecuali 2 yang merupakan bilangan genap.
Bilangan selain prima disebut bilangan komposit (composite). Misalnya 20 adalah bilangan komposit karena 20 dapat dibagi oleh 2, 4, 5, dan 10, selain 1 dan 20 sendiri.
Teorema The Fundamental Theorem of Arithmetic. “Setiap bilangan bulat positif yang lebih besar atau sama dengan 2 dapat dinyatakan sebagai perkalian satu atau lebih bilangan prima”.
2.7.1 Teorema Fermat
Terdapat metode lain yang dapat digunakan untuk menguji keprimaan suatu bilangan bulat, yang terkenal dengan Teorema Fermat. Fermat (dibaca “Fair-ma”) adalah seorang matematikawan Perancis pada tahun 1640.
Teorema Fermat. “Jika p adalah bilangan prima dan a adalah bilangan bulat yang tidak habis dibagi dengan p, yaitu PBB (a,p) = 1, maka a p-1≡ 1 (mod p)
Contoh:
Kita akan menguji apakah 17 dan 21 bilangan prima atau bukan. Disini kita mengambil nilai a = 2 karena PBB (17,2) = 1 dan PBB (21,2) = 1.
Untuk 17,
Karena 17 tidak membagi 65536 -1 = 65535 (65535 ÷ 17 = 3855). Untuk 21,
221-1 = 1048576 ≡ 1 (mod 21)
karena 21 tidak habis membagi 1048576 – 1 = 1048575.
Kelemahan Teorema Fermat: terdapat bilangan komposit n sedemikian sehingga 2n-1 ≡ 1
(mod n). Bilangan bulat seperti ini disebut bilangan prima semu (pseudoprisme). Misalnya komposit 341 (yaitu 341 = 11 . 31) adalah bilangan prima semu karena menurut teorema Fermat, 2340 ≡ 1 (mod 341).
Untunglah bilangan prima semu relatif jarang terdapat.
2.7.2 Fungsi Totient Euler φ
Fungsi Totient Euler φ mendefenisikan φ (n) untuk n ≥ 1 yang menyatakan jumlah bilangan
bulat positif < n yang relatif prima dengan n. Contoh 1:
φ(20) = 8; Perhitungannya adalah sebagai berikut: bilangan bulat positif yang lebih
kecil dari 20 adalah 1 sampai 19. Diantara bilangan-bilangan tersebut, terdapat φ(20)
= 8 buah yang relatif prima dengan 20, yaitu 1, 3, 7, 9, 11, 13, 17, 19. Untuk n = 1, 2, ..., 10, fungsi euler adalah
φ(1) = 0 φ(6) = 2
φ(2) = 1 φ(7) = 6
φ(3) = 2 φ(8) = 4
φ(4) = 2 φ(9) = 6
φ(5) = 4 φ(10) = 4
Jika n prima, maka setiap bilangan bulat yang lebih kecil dari n relatif prima terhadap n.
Dengan kata lain, φ(n) = n – 1 hanya jika n prima. Contoh 2:
Teorema. Jika n = pq adalah bilangan komposit dengan p dan q prima, maka φ(n) = φ(p)
φ(q) = (p – 1)(q – 1).
Contoh 3:
Tentukan φ(21).
Penyelesaian: Karena 21 = 7 . 3, φ(21) = φ(7) φ(3) = 6 . 2 = 12 buah bilangan bulat yang
relatif prima terhadap 21, yaitu: 1, 2, 4, 5, 8, 10, 11, 13, 16, 17, 19, 20.
Teorema. Jika p bilangan prima dan k > 0, maka φ(pk) = pk – pk-1= pk-1(p – 1).
Contoh: Tentukan φ(16).
Penyelesaian: Karena φ(16) = φ(24
) = 24 – 23 = 16 – 8 = 8, maka ada delapan buah bilangan bulat yang relatif prima terhadap 16, yaitu: 1, 3, 5, 7, 9, 11, 13, 15.
Teorema. (Euler’s generalization of Fermat theorem). Jika PBB(a, n) = 1, maka a φ(n)mod n = 1 (atau a φ(n)≡ 1 (mod n)).
BAB 3 PEMBAHASAN 3.1 Implementasi Algoritma RSA
Implementasi Algoritma RSA dirancang dalam bahasa pemograman visual basic 6.0. Berikut beberapa tahap proses implementasi algoritma RSA.
1. Pembentukan Kunci 2. Proses Enkripsi 3. Proses Dekripsi
3.1.1 Pembentukan Kunci
Dalam membuat suatu sandi, RSA mempunyai cara kerja dalam membuat kunci publik dan kunci privat adalah sebagai berikut:
6. Pilih dua bilangan prima sembarang, p dan q..
7. Hitung n = p . q (sebaiknya p ≠ q, sebab jika p = q maka n = p2 sehingga p dapat diperoleh dengan menarik akar pangkat dua dari n).
8. Hitung φ(n) = (p - 1) (q - 1).
9. Pilih kunci publik e, yang relatif prima terhadap φ(n).
10. Bangkitkan kunci privat dengan menggunakan persamaan e . d ≡ 1 (mod φ(n)). Perhatikan bahwa e . d ≡ 1 (mod φ(n)).
Hitung d hingga d e≡ 1 (mod φ) ekivalen dengan e . d = 1 + k φ(n), sehingga secara sederhana d dapat dihitung dengan
� =1 + ��(�)
�
Hasil dari algoritma di atas:
- Kunci publik adalah pasangan (e, n) - Kunci privat adalah pasangan ( d, n)
3. p dan q bilangan prima (rahasia)
4. n = p . q (tidak rahasia)
3. φ(n) = (p - 1) (q - 1) (rahasia)
4. e = kunci enkripsi (tidak rahasia)
5. d = kunci dekripsi (rahasia)
6. m = plainteks (rahasia) 7. c = cipherteks (tidak rahasia)
3.1.2 Proses Enkripsi
Implementasi proses enkripsi ke dalam algoritma bahasa pemograman adalah sebagai berikut :
Algoritma untuk enkripi adalah sebagai berikut :
Public Function enc(ByVal tIp As String, eE As Double, eN As Double) As String On Error Resume Next
Dim encSt As String encSt = ""
e2st = ""
If tIp = "" Then Exit Function For I = 1 To Len(tIp)
encSt = encSt & Mult(CLng(Asc(Mid(tIp, I, 1))), eE, eN) & "+" Next I
enc = encSt End Function
Algoritma untuk fungsi mult adalah sebagai berikut :
Public Function Mult(ByVal x As Double, ByVal pg As Double, ByVal m As Double) As Double
On Error GoTo error1 y = 1
Do While pg > 0
x = nMod((x * x), m) pg = pg / 2 Loop y = nMod((x * y), m) pg = pg - 1 Loop Mult = y Exit Function error1: y = 0 End Function
Algoritma untuk fungsi nMod adalah sebagai berikut : Private Function nMod(x As Double, y As Double) As Double On Error Resume Next
Dim z#
z = x - (Int(x / y) * y) nMod = z
End Function
3.1.3 Proses Dekripsi
Implementasi proses enkripsi ke dalam algoritma bahasa pemograman adalah sebagai berikut :
Algoritma untuk dekripsi adalah sebagai berikut :
Public Function dec(ByVal tIp As String, dD As Double, dN As Double) As String On Error Resume Next
Dim decSt As String decSt = ""
For z = 1 To Len(tIp) ptr = InStr(z, tIp, "+") tok = Val(Mid(tIp, z, ptr))
z = ptr Next z dec = decSt End Function