7
BAB 2
LANDASAN TEORI
2.1
Kriptografi
2.1.1
Pengertian kriptografi
Kriptografi (Cryptography) berasal dari Bahasa Yunani. Menurut bahasanya, istilah tersebut terdiri dari kata kripto dan graphia. Kripto berarti secret (rahasia) dan graphia berarti writing (tulisan). Menurut terminologinya, kriprografi adalah ilmu dan seni untuk menjaga keamanan pesan ketika pesan dikirim dari suatu tempat ke tempat yang lain. Dalam kamus bahasa Inggris Oxford, pengertian kriptografi adalah ”Sebuah teknik rahasia dalam penulisan, dengan karakter khusus, dengan menggunakan huruf dan karakter di luar bentuk aslinya, atau dengan metode-metode lain yang hanya dapat dipahami oleh pihak-pihak yang memproses kunci, juga semua hal yang ditulis dengan cara seperti ini ”(Dony ariyus, ”Keamanan Multimedia”, 2007, hal : 19).
2.1.2
Komponen kriptografi
Pada dasarnya, kriptografi terdiri dari beberapa komponen penting seperti (Dony Aryus, ”keamanan Multimedia”, 2007, hal :19-20) :
a. Enkripsi, merupakan hal yang sangat penting dalam kriptografi sebagai pengamanan atas data yang dikirimkan agar rahasianya terjaga. Pesan asalnya disebut plaintext yang diubah menjadi kode-kode yang tidak dimengerti menggunakan sebuah algoritma tertentu. Enkripsi bisa diartikan sebagai cipher atau kode.
Universitas Sumatera Utara
8
b. Dekripsi, merupakan kebalikan dari enkirpsi yakni pesan yang telah dienkripsi dikembalikan ke bentuk asalnya (plaintext), yang disebut dekripsi pesan. Algoritma yang digunakan untuk dekripsi berbeda dengan yang digunakan untuk enkripsi. c. Key (kunci), kunci yang dimaksud disini adalah kunci yang dipakai untuk melakukan proses enkripsi dan dekripsi. Kunci terbagi menjadi dua bagian, yakni kunci pribadi (private key) dan kunci umum (public key). d. Ciphertext, merupakan suaut pesan yang sudah melalui proses enkripsi. Pesan yang ada pada ciphertext tidak bisa dibaca karena berisi karakter-karakter yang tidak memiliki makna (arti). e. Plaintext (atau cleartext) merupakan suatu pesan bermakna yang ditulis atau diketik dan plaintext itulah yang akan diproses menggunakan algoritma kriptografi agar menjadi chipertext. f. Pesan, dapat berupa data atau informasi yang dikirim (melalui media tertentu) atau disimpan dalam media perekaman. g. Kriptanalisis, bisa diartikan sebagai analisis sandi atau suatu ilmu untuk mendapatkan plaintext tanpa harus mengetahui kunci secara wajar.
2.1.3
Tujuan kriptografi
Kriptografi memiliki tujuan untuk memberi layanan keamanan yakni sebagai berikut (Munir, 2006, hal : 9) :
a. Kerahasiaan (confidentiality), adalah layanan yang ditujukan untuk menjaga agar pesan tidak dapat dibaca oleh pihak-pihak yang tidak berhak. b. Integritas Data (data integrity), adalah layanan yang menjamin bahwa pesan masih asli/utuh atau belum pernah dimanipulasi selama pengiriminan. c. Otentikasi (authentication), adalah layanan yang berhubungan dengan identifikasi, baik mengidentifikasi kebenaran pihak-pihak yang berkomunikasi maupun mengidentifikasi kebenaran sumber pesan. d. Nirpenyangkalan (non-repudiation), adalah layanan untuk mencegah entitas yang berkomunikasi melakukan penyangkalan, yaitu pengirim pesan
Universitas Sumatera Utara
9
menyangkal melakukan pengiriman atau penerima pesan menyangkal telah menerima pesan.
2.1.4
Terminologi dan Konsep Dasar Kriptografi
Dalam bidang kriptografi akan ditemukan beberapa istilah atau teminologi. Istilah-istilah tersebut sangat penting untuk diketahui dalam memahami ilmu kriptografi. Oleh karena itu penulis akan menjelaskan beberapa istilah penting dalam bidang kriptografi yang akan sering penulis gunakan dalam tulisan ini. Berikut merupakan istilah-istilah tersebut.
a. Plainteks dan Cipherteks
Pesan merupakan data atau informasi yang dimengerti maknanya secara langsung. Nama latin dari pesan adalah plainteks (plaintext). Pesan tersebut dapat dikirim (melalui kurir, saluran telekomunikasi, dan lain-lain) dan dapat juga disimpan dalam media penyimpanan (kertas, perangkat storage, dan lain-lain). Pesan dapat berupa teks, video, gambar, dan lain-lain. Agar pesan tersebut tidak dapat dimengerti makanya bagi pihak lain, maka pesan perlu disandikan ke bentuk lain yang tidak dipahami. Bentuk pesan yang telah tersandikan tersebut dinamakan dengan cipherteks. Perbandingan antara plainteks dan cipherteks dapat kita lihat pada gambar 2.1 berikut.
Gambar 2.1 Perbandingan bentuk plainteks dan cipherteks
Universitas Sumatera Utara
10
b. Peserta Komunikasi
Komunikasi data melibatkan pertukaran pesan antara dua entitas. Entitas yang pertama adalah pengirim, yang berfungsi mengirim pesan kepada entitas lain. Entitas kedua ada penerima, yang berfungsi menerima pesan yang dikirimkan. Entitas-entitas ini dapat berupa orang, mesin komputer, sebuah kartu kredit, dan sebagainya. Pengirim ingin mengirimkan pesan dengan aman sampai ke penerima. Jadi solusinya adalah dilakukan penyandian terhadap pesan tersebut agar tidak diketahui pihak-pihak yagn tidak berkepentingan terhadap pesan tersebut.
c. Enkripsi dan Dekripsi
Proses penyandian pesan, dari plainteks ke cipherteks dinamakan dengan enkripsi (encryption) dan enchipering (standar nama menurut ISO 7498-2). Sedangkan proses mengembalikan pesan dari cipherteks ke plainteks dinamakan dengan dekripsi (decryption) dan dechipering (standar nama menurut ISO 7498-2). Proses enkripsi dan dekripsi dapat diterapkan pada pesan yagn dikirim ataupun pesan yang disimpan. (M Yuli Andri, 2009, hal 13)
d. Kriptanalis dan Kriptologi
Kriptografi selalu memiliki perkembangan, karena kriptografi memiliki ilmu yang berlawan yang disebut dengan kriptanalisis. Kriptanalisis (Cryptanalysis) adalah ilmu dan seni untuk memecahkan cipherteks menjadi plainteks, tanpa memerlukan kunci yang digunakan. Pelakunya disebut dengan kriptanalis. Jika seorang kriptografer (istilah bagi pelaku kriptografi) mentrasnformasikan plainteks ke cipherteks dengan menggunakan kunci, maka sebaliknya seorang kriptanalis berusaha memecahkan cipherteks tersebut untuk menemukan plainteks atau kunci. Kriptologi (cryptology) adalah studi mengenai kriptografi dan kriptanalisis.
Universitas Sumatera Utara
11
2.1.5
Jenis kriptografi
Kriptografi dibagi menjadi dua bagian berdasarkan kunci yang dipakai dalam proses enkripsi dan dekripsi, yaitu (M Yuli Andri, 2009, hal 14) :
a. Kriptografi simetri, algoritma ini disebut juga algoritma klasik karena memakai kunci yang sama untuk proses enkripsi dan dekripsi. Istilah lain dari kriptografi ini adalah kriptografi kunci privat (privat-key cryptography), kriptografi
kunci
rahasia
(secret-key
atau
cryptography),
kriptografi
konvensional (conventional cryptography). Dalam kriptografi kunci simetri dapat diasumsikan bahwa si penerima dan pengirim pesan telah terlebih dahulu berbagi kunci sebelum pesan dikirimkan. Keamanan dari sistem ini terletak pada kerahasiaan kuncinya.
Skema dari proses kriptografi simetri ini dapat dilihat pada gambar 2.2 berikut. Private Key, K
Plaintext,P
Enkripsi Ek(P) = C
Ciphertext, C
Enkripsi Dk(C) = P
Plaintext, P
Gambar 2.2 Skema proses kriptografi simetri
Terdapat dua teknik dasar yang biasa diguna kan
pada
kriptografi
simetri yaitu teknik subsitusi dimana pergantian setiap karakter plaintext dengan karakter lain dan teknik transposisi (permutasi) dimana teknik ini menggunakan permutasi karakter.
Beberapa algoritma yang menggunakan kunci yang sama (simetri) antara lain : o Data encryption Standard (DES) o International Data Encryption Algorithm (IDEA) o Advanced Encryption Standard (AES)
Universitas Sumatera Utara
12
b. Kriptografi Asimetri, Berbeda dengan kripfotgrafi kunci simetri, kriptografi kunci publik memiliki dua buah kunci yang berbeda pada proses enkripsi dan deskripsinya. Nama lain dari kunci asimetris ini adalah kriptografi kuncipublik (public-key cryptography). Kunci untuk enkripsi pada kriptografi asimetri ini tidak rahasia (diketahui oleh publik), sedangkan kunci untuk dekripsi bersifat rahasia (kunci privat). Enititas pengirim akan mengenkripsi dengan menggunakan kunci publik, sedangkan entitas penerima mendekripsi menggunakan kunci privat. Skema dari proses kriptografi asimetri ini dapat dilihat pada gambar 2.3 berikut.
Kunci Publik, K1
Plaintext,P
Enkripsi Ek(P) = C
Ciphertext, C
Kunci Privat, K2
Enkripsi Dk(C) = P
Plaintext, P
Gambar 2.3 Skema kriptografi asimetri
Kriptografi asimetri ini dapat dianalogikan seperti kotak surat yang terkunci dan memiliki lubang untuk memasukkan surat. Setiap orang dapat memasukkan surat ke dalam kotak surat tersebut, tetapi hanya pemilik surat yang memiliki kunci dan yang dapat membuka kotak surat. Kunci publik dapat dikirim ke penerima melalui saluran yang sama dengan saluran yang digunakan untuk mengirim pesan, tidak perlu takut karena pihak yang tidak berkepentingan tidak akan dapat mendekripsi pesan tersebut, karena tidak memiliki kunci privat, atau penerima dapat memberikan kunci publik yang diinginkan kepada pengirim.
Beberapa algoritma yang menggunakan kunci yang berbeda (asimetri) antara lain : o Digital Signature Algorithm (DSA) o Rivest Shamir Adleman (RSA) o Diffie-Helman (DH) o Cryptography Quantum
Universitas Sumatera Utara
13
2.1.6
Algoritma Kriptografi Rivest Shamir Adleman (RSA)
Dari sekian banyak algoritma kriptografi kunci publik yang pernah dibuat, algoritma RSA merupakan algoritma yang paling populer dan cukup aman dikarena algoritma RSA melakukan menfaktoran bilangan yang cukup besar. Algoritma RSA sendiri dibuat oleh tiga orang peneliti dari MIT (Massachussets Institute of Technology) pada tahun 1976. Mereka adalah Ron Rivest, Adi Shamir, Leonard Adleman. RSA diambil dari tiap nama belakang mereka. (Dony Ariyus,”keamanan Multimedia”, 2007, hal 80).
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. Dikarenakan makin besar ukuran kunci, maka makin besar juga kemungkinan kombinasi kunci yang bisa dijebol dengan metode memeriksa kombinasi satu persatu kunci atau lebih dikenal dengan istilah brute force attack sehingga tidak ekonomis dan sulit untuk memecahkan sandi tersebut.
Terdapat beberapa besaran yang digunakan pada algoritma RSA, yakni: 1. p dan q bilangan prima
(rahasia)
2. N = p ⋅ q
(tidak rahasia)
3. φ(N) = (p – 1)(q – 1)
(rahasia)
4. e
(kunci enkripsi)
(tidak rahasia)
5. d
(kunci dekripsi)
(rahasia)
6. X
(plainteks)
(rahasia)
7. Y
(cipherteks)
(tidak rahasia)
2.1.6.1 Proses Pembangkitan Kunci
Dalam membuat suatu kode, RSA mempunyai cara kerja dalam membuat kunci publik dan kunci privat adalah sebagai berikut (Satma Rachendu dkk, 2007, hal:2):
Universitas Sumatera Utara
14
a. Pilih dua bilangan (integer) prima p dan q secara acak, dimana p
q. Bilangan
ini harus cukup besar untuk memperoleh tingkat keamanan yang tinggi. b. Hitung N = p.q, (p q, karena jika p=q maka nilai N= p2 dan akan mudah mendapatkan nilai N),bilangan N disebut parameter sekuriti.
c. Hitung φ(N)= (p-1)(q-1). φ(N) merupakan nilai totient euler dari suatu bilangan N dimana menyatakan jumlah bilangan bulat positif yang lebih kecil dari N dan prima terhadap N.
d. Pilih bilangan bulat (integer) sebagai kunci publik antara satu dan φ(N) (1< e < φ(N)) yang tidak mempunyai faktor pembagi dari φ(N). sehingga gcd(e. φ(N))
= 1. Dapat dikatakan bahwa e relatif prima terhadap φ(N).
e. Greatest Common Divisor (gcd) dari dua buah bilangan tidak lain adalah irisan dari himpunan faktor bilangan prima dari kedua bilangan tersebut. Contohnya,
gcd (a,b) gcd(10,15) = 5 gcd((2 x 5),(3 x 5)) = 5
ketika kedua bilangan tidak memiliki faktor bersama, maka gcdnya menjadi 1
f. Menghitung bilangan bulat d dimana 1 < d < φ(N), sehingga e.d
1 (mod
φ(N)). Menurut persamaan Chinese Remainder Theorem (CRT) yang
menyatakan bahwa a
b (mod m) ekivalen dengan a = b+ k.m, atau dapat
dinyatakan dengan persamaan : e.d
1 (mod φ(N)) atau e.d (mod φ(N)) = 1
Dengan mencoba nilai d = 0,1,2,3, .. sehingga memenuhi persamaan tersebut. hasil dari algoritma tersebut adalah : 1) Kunci publik adalah pasangan (e,N) 2) Kunci privat adalah pasangan (d,N)
Universitas Sumatera Utara
15
2.1.6.2 Pembangkit dan Pengecekan Bilangan Prima
Dalam proses pembangkitan kunci publik dan privat pada algoritma kriptografi RSA, dibutuhkan dua bilangan p dan q yang merupakan bilangan prima dan merupakan bilangan yang dapat dikatakan sangat besar. Hal ini dapat diantisipasi dengan menggunakan suatu algoritma pembangkit bilangan acak serta dilakukan pengecekan bilangan tersebut merupakan bilangan Prima atau bukan.
Terdapat banyak algoritma pembangkit bilangan acak yang digunakan pada dunia komputer. Akan tetapi algoritma yang digunakan adalah algoritma pembangkit bilangan acak Monte Carlo. Dikarenakan pada hal ini sistem hanya akan menggenerate suatu angka dari suara batasan kumpulan angka yang nantinya akan digunakan pada proses pembangkitan kunci pada RSA. Akan tetapi sebelum digunakan dilakukan kembali pengecekan apakah nilai tersebut merupakan bilangan prima atau tidak. Algoritma pengecekan bilangan prima penulis menggunakan algoritma Miller Rabin.
•
Algoritma pembangkit bilangan acak Monte Carlo
Metode Monte Carlo merupakan dasar untuk semua algoritma dari metode simulasi yang didasari pada pemikiran penyelesaian suatu masalah untuk mendapatkan hasil yang lebih baik dengan cara memberi nilai sebanyakbanyaknya (generated Random Number) untuk mendapatkan ketelitian yang lebih tinggi. Metode ini menganut sistem pemrograman yang bebas tanpa terlalu banyak diikat oleh aturan tertentu. Secara umum algoritma ini dapat diperlihatkan pada pseudocode sederhana seperti berikut.
Input : n,k , dimana n < a < k; Output : a MonteCRandom (a,n,k) I <- 0 Repeat until a found or i=k Random(a), n < a < k I = i +1 Return a
Universitas Sumatera Utara
16
pada bahasa pemgrograman Borland Delphi 7 khususnya telah tersedia suatu fungsi yang langsung menggunakan algoritma ini dalam proses pembangkit bilangan acak yaitu random().
•
Algoritma Pengecekan Bilangan Prima Miller Rabin
Pengecekan bilangan prima Miller Rabin merupakan salah satu metode atau algoritma pengetesan keprimaan suatu bilangan hasil generate sebelumnya. Algoritma ini awalnya diciptakan oleh Gary L. Miller, akan tetapi telah dimodifikasi oleh Michael O. Rabin. Secara garis besar langkah-langkah dari algoritma ini adalah sebagai berikut. Persamaan dari Algoritma ini adalah x2
1 (mod p)
(x-1 )(x+1)
0 (mod p)
Secara garis besar proses dari pengecekan bilangan bilangan prima Miller Rabin dapat dijelaskan sebagai berikut. 1) Input bilangan p yang akan diuji keprimaannya. 2) Hitung b, yang dalam hal ini 2b adalah nilai pangkat 2 terbesar yang habis membagi p – 1. 3) Hitung m sedemikian sehingga p = 1 + 2bm.maka diperoleh : p, m, dan b 4) Bangkitkan bilangan acak a yang lebih kecil dari p. 5) Nyatakan j = 0 dan hitung z = am mod p. 6) Jika z = 1 atau z = p – 1, maka p lolos dari pengujian dan mungkin prima. 7) Jika z > 0 dan z = 1, maka p bukan prima. 8) Nyatakan j = j + 1. Jika j < b dan z ≠ p – 1, nyatakan z = z2 mod p dan kembali ke langkah (6). Jika z = p – 1, maka p lolos pengujian dan mungkin prima. 9) Jika j = b dan z ≠ p – 1, maka p tidak prima. 10) Ulangi pengujian dengan algoritma Rabin-Miller di atas sebanyak t kali (dengan nilai a yang berbeda).
Universitas Sumatera Utara
17
2.1.6.3 Algoritma Enkripsi
Proses enkripsi dilakukan dengan menggunakan kunci publik. Prosedurnya antara lain:
1) Ambil kunci publik penerima pesan (e), dan modulus N. 2) Plainteks dinyatakan dengan blok-blok m1,m2,...,mn sedemikian sehingga setiap blok mempresentasikan nilai di dalam selang [0,N-1]. 3) Setiap blok mi dienkripsikan menjadi blok ci dengan rumus ci = mie mod N 2.2.6.4 Algoritma dekripsi
Proses dekripsi dilakukan dengan menggunakan kunci privat (d,N) dimana setiap blok chiperteks ci didekripsikan kembali menjadi blok mi dengan rumus : mi = cid mod N
Penggunaan algoritma tersebut diatas dapat dicontohkan sebagai berikut : Misalkan p = 47 dan q = 71 (keduanya prima). Selanjutnya menghitung nilai N = p ⋅ q = 3337 dan φ(N)= (p – 1)(q – 1) = 3220
Pilih kunci publik e = 79, karena 79 relatif prima dengan 3220. e dan N dapat dipublikasikan ke umum.
Selanjutnya akan dihitung kunci dekripsi d menggunakan : e.d
1 (mod φ(N)) atau ed mod φ
sehingga dapat diperoleh (e=79 dan φ
Universitas Sumatera Utara
18
Dengan mencoba nilai-nilai d = 1, 2, 3, …, diperoleh nilai SK yang bulat adalah 1019. Ini adalah kunci dekripsi yang harus dirahasiakan.
Selanjutnya pesan yang akan dikirim adalah m = SKRIPSIKU Atau dalam desimal (kode ASCII) adalah : 837582738083737585
Kemudian nilai tersebut akan dipecah menjadi blok-blok m. Nilai-nilai m harus masih dalam selang [0, 3337-1]. Maka blok yang akan terbentuk adalah : m1 = 837 ; m2 = 582 ; m3 = 738 ; m4 = 083 ; m5 = 737 ; m6 = 585
Sebelumnya telah diketahui kunci publik adalah e = 79 dan N = 3337. Maka pesan m dapat dienkripsikan, yakni : c1 = 83779 mod 3337 = 792 ; c2 = 58279 mod 3337 = 776 ; c3 = 73879 mod 3337 = 2623 ; c4 = 08379 mod 3337 = 2251; c5 = 73779 mod 3337 = 2037 ; c6 = 58579 mod 3337 = 685 ;
Sehingga chiperteks yang dihasilkan adalah : 792 776 2623 2251 2037 685 Selanjutnya pesan yang telah terenkripsi tersebut dikirimkan kepada penerima pesan, yang mana telah memiliki kunci privat (d,N) = (1019,3337) sehingga : m1 = 7921019 mod 3337 = 837 ; m2 = 7761019 mod 3337 = 582 ; m3 = 26231019 mod 3337 = 738 ; m4 = 22511019 mod 3337 =083 ; m5 = 20371019 mod 3337 = 737 ; m2 = 6851019 mod 3337 =585 ;
maka akan dihasilkan kembali m = 837 582 738 083 737 585
yang dalam pengkodean ASCII dapat dibaca sebagai berikut : m = SKRIPSIKU
Universitas Sumatera Utara