Bab 2: Kriptografi Landasan Matematika Fungsi Misalkan A dan B adalah himpunan. Relasi f dari A ke B adalah sebuah fungsi apabila tiap elemen di A dihubungkan dengan tepat satu elemen di B. Fungsi juga disebut pemetaan atau transformasi. Jika f adalah fungsi dari A ke B, dapat dituliskan sebagai f : A B Fungsi Invers Jika terdapat f sehingga f : A B berkoresponden satu-ke-satu dari A ke B, maka invers dari f, dilambangkan dengan f 1 yang memetakan B ke A. Dapat pula ditulis sebagai f 1 : B A Fungsi yang memiliki invers dinamakan fungsi invertible (dapat dibalikkan) karena fungsi balikannya dapat didefinisikan. Sebaliknya, suatu fungsi dikatakan non invertible karena fungsi balikannya tidak dapat didefinisikan. Fungsi Satu Arah Fungsi f : A B dikatakan Fungsi Satu Arah apabila f(x) mudah dihitung untuk semua x A tetapi tidak mungkin atau sangat sukar mencari x yang memenuhi f(x) = y untuk y B. 9
Basis Bilangan (Radix) Dalam sistem numerik, basis atau Radix menunjukkan banyaknya lambang bilangan yang unik, termasuk nol, yang digunakan sebagai nilai tempat bilangan dalam merepresentasikan suatu nilai. Radix biasanya dideskripsikan dengan simbol b. Sebagai contoh, untuk sistem desimal b bernilai 10, untuk sistem oktal b bernilai 8, dan untuk sistem biner b bernilai 2. Cara lain adalah dengan menuliskan angka desimal dibawah angka yang direpresentasikan. Sebagai contoh 1111011 2 artinya bilangan 1111011 merupakan bilangan dengan basis 2 (biner), senilai dengan 123 10, 173 8, dan 7B 16. Lambang bilangan yang digunakan pada sistem bilangan dengan basis b adalah {0, 1,..., b 2, b 1}. Sehingga, sistem bilangan biner memiliki lambang bilangan {0, 1}, sistem bilangan basis 7 memiliki lambang bilangan {0, 1,..., 5, 6}. Mengubah bilangan dengan basis b ke bilangan desimal dapat dilakukan dengan cara pemangkatan, yaitu penjumlahan dari hasil perkalian nilai lambang bilangan dengan nilai tempatnya. Misalkan a n a n 1... a 2 a 1 a 0 adalah suatu bilangan dengan basis b, maka nilai desimal bilangan tersebut dapat dicari dengan: n (a i b i ). i=0 Sebagai contoh: 241 5 = 2 5 2 + 4 5 1 + 1 5 0 = 71 10. Sifat Pembagian Bilangan Bulat Bilangan bulat yang dimaksud adalah bilangan yang tidak memiliki pecahan desimal. Misalkan a dan b adalah bilangan bulat dengan a 0. Apabila terdapat bilangan bulat c sehingga b = ac, dinyatakan bahwa a membagi b. Jika ditulis dengan notasi matematika: b = ac a b, c Z, a 0 Greatest Common Divisor (gcd) Apabila terdapat a dan b bilangan bulat tak nol, maka pembagi bersama terbesar (greatest common divisor) dari a dan b adalah bilangan bulat terbesar d yang 10
memenuhi d a dan d b. Dalam hal ini dinyatakan bahwa gcd(a, b) = d. Untuk kasus dimana gcd(a, b) = 1, dikatakan bahwa a relatif prima terhadap b dan sebaliknya. Fungsi Phi(φ) Untuk n 1 fungi Phi φ(n) didefinisikan sebagai banyaknya bilangan bulat positif yang tidak lebih dari n dan relatif prima terhadap n. Sebagai contoh, φ(24) = 9 sebab bilangan bulat positif yang relatif prima dan tidak lebih dari 24 adalah 1, 5, 7, 9, 11, 13, 17, 19, 23 Fungsi Phi ini juga sering disebut sebagai indikator ataupun totient. Jika n prima maka setiap bilangan bulat positif kurang dari n selalu relatif prima terhadap n, sehingga φ(n) = n 1. Jika n komposit (bukan prima), maka terdapat 1 d n sehingga gcd(d, n) 1. Dengan demikian, sedikitnya terdapat dua bilangan bulat positif diantara 1, 2,..., n yang tidak relatif prima terhadap n, yaitu d dan n. Oleh sebab itu didapat: φ(n) = n 1 jika dan hanya jika n prima Fungsi Phi merupakan fungsi multiplikatif, artinya φ(mn) = φ(m)φ(n) Aritmatika Modular Aritmatika modular adalah sebuah sistem aritmatika dimana suatu bilangan bulat akan kembali ke nilai dasar setelah mencapai nilai tertentu (modulus). Contoh yang paling umum adalah pembagian waktu 24 jam. Sistem ini membagi waktu dari tengah malam ke tengah malam berikutnya menjadi 24 bagian, diberi angka dari 0 hingga 23. Jika saat ini waktu menunjukkan pukul 20:00, maka setelah 7 jam waktu akan menunjukkan pukul 03:00. Dalam penjumlahan biasa, 20+7 = 27, bukanlah solusi yang diinginkan; Melainkan 20+7 = 3. Hal ini disebabkan waktu kembali saat tengah malam, yaitu pukul 24:00. Sistem ini disebut sistem aritmatika modulo 24. 11
Kongruensi Notasi menyatakan kongruensi. Bilangan bulat a dan b dikatakan kongruen modulo n apabila kedua bilangan dibagi dengan n memiliki sisa pembagian yang sama. a b mod n Notasi diatas dibaca: a kongruen terhadap b dalam modulo n Dengan menggunakan notasi, penjumlahan yang disebutkan sebelumnya dapat ditulis: 20 + 7 = 27 3 mod 24 Beberapa Sifat Kongruensi Beberapa sifat yang berkaitan dengan kongruensi (juga berkenaan dengan penjumlahan dan perkalian) yaitu: Jika a 1 b 1 mod n dan a 2 b 2 mod n, maka: (a 1 + a 2 ) (b 1 + b 2 ) mod n (a 1 a 2 ) (b 1 b 2 ) mod n Fermat s Little Theorem Fermat s Little Theorem menyatakan bahwa untuk semua p bilangan prima, maka untuk semua bilangan bulat a, a p a habis dibagi p. Dalam notasi aritmatika modular ditulis: a p a mod p Variasi lain teorema ini mengatakan: apabila p prima dan a bilangan bulat yang prima relatif terhadap p, maka a p 1 1 habis dibagi p. Notasinya: a p 1 1 mod p 12
Perumuman Perumuman dari Fermat s Little Theorem mengatakan bahwa jika p prima, m dan n bilangan bulat positif yang memenuhi m n mod (p 1) maka a Z : a m a n mod p lebih jauh, dengan ϕ(n) menyatakan fungsi ϕ Euler, n Z dan gcd(a, n) = 1 maka a ϕ(n) 1 mod n Chinese Remainder Theorem Andaikan n i, i = 1, 2,..., k bilangan bulat positif yang saling prima, maka untuk semua bilangan a i, i = 1, 2,..., k terdapat x yang memenuhi sistem kongruensi x a 1 mod n 1 x a 2 mod n 2. x a k mod n k lebih jauh, semua solusi x kongruen terhadap modulo N. Dengan N = Oleh sebab itu untuk semua 1 i k k n i. i=1 x y mod n i x y mod N Kriptografi Definisi Kriptografi Kriptografi (cryptography) berasal dari bahasa Yunani yaitu kryptos (κρυπτoς) yang berarti rahasia dan gráphō (γραϕω) yang berarti tulisan. Jadi secara harfiah, Kriptografi berarti tulisan rahasia. Beberapa literatur berbeda dalam pendefinisian Kriptografi. Pada buku-buku yang diterbitkan sekitar tahun 1980 menyatakan bahwa Kriptografi adalah ilmu dan seni untuk menjaga kerahasiaan pesan dengan cara menyandikannya ke dalam bentuk yang tidak dapat dimengerti. 13
Definisi tersebut memang cocok dengan keadaan dimasa itu, dimana Kriptografi digunakan untuk saling bertukar pesan rahasia di kalangan militer, diplomat, dan intelejen. Namun sekarang Kriptografi tidak hanya menyandikan pesan, akan tetapi juga untuk pengecekan integritas data dan otentikasi pengirim. Terminologi Kriptografi Istilah-istilah yang sering dipakai dalam Kriptografi antara lain: Message, Plaintext, Ciphertext Message (pesan) dan plaintext (teks polos) adalah informasi yang dapat dibaca dan dimengerti maksudnya. Pesan dapat berupa data atau informasi yang dikirim atau disimpan dalam suatu media. Supaya pesan tidak dapat dimengerti oleh pihak lain, pesan perlu disandikan ke bentuk lain yang tidak dapat dimengerti. Bentuk pesan yang telah tersandi disebut Ciphertext (teks tersandi). Teks tersandi harus dapat diubah kembali ke bentuk asal, plaintext, agar informasi yang dikirim/tersimpan dapat dibaca. Sender dan Recipient Dalam komunikasi terdapat sedikitnya dua pihak: pengirim (sender) yaitu orang yang mengirimkan informasi dan penerima (recipient) yang menerima informasi. Enkripsi dan Dekripsi Enkripsi (encryption) adalah suatu proses penyandian teks polos menjadi teks tersandi. Sebaliknya, Dekripsi (decryption) adalah proses pengembalian teks tersandi menjadi teks polos. Kedua proses tersebut dapat diterapkan baik pada informasi yang dikirim maupun disimpan. Cipher dan Key Satu Algoritma Kriptografi adalah rangkaian aturan untuk en Ciphering dan de Ciphering. Selain itu, dapat diartikan sebagai fungsi matematika yang digunakan untuk Enkripsi dan Dekripsi. Konsep ini, juga biasa disebut Cipher atau Kriptosistem, didasari oleh relasi lima himpunan (P, C, K, E, D) yang memenuhi kondisi berikut: 14
P adalah himpunan semua kemungkinan plaintext C adalah himpunan semua kemungkinan Ciphertext K, disebut keyspace, adalah himpunan semua kemungkinan key (kunci) Untuk setiap K K, terdapat aturan Enkripsi e k E dan aturan Dekripsi d k D. Tiap e k : P C dan d k : C P adalah fungsi sedemikian sehingga d k (e k (x)) = x untuk setiap x P Kunci adalah parameter yang digunakan untuk transformasi en Ciphering dan de Ciphering. Kunci biasanya berupa string atau deretan bilangan. Gambar 1: Skema Kriptosistem Penyadap Penyadap (eavesdropper) adalah pihak ketiga yang berusaha menangkap informasi ditengah transmisi pesan antara pengirim dan penerima. Tujuannya mengambil sebanyak-banyaknya informasi mengenai sistem Kriptografi yang digunakan untuk berkomunikasi dengan maksud untuk memecahkan Ciphertext. Penyadap dikenal juga dengan: enemy, intruder, interceptor, adversary, dan bad guy. Kriptanalisis dan Kriptologi Apabila kriptografi adalah seni untuk menyandikan pesan, kriptanalisis adalah lawan dari kriptografi. Kriptanalisis adalah ilmu dan seni untuk memecahkan teks tersandi menjadi teks polos tanpa mengetahui kunci yang digunakan. Kriptologi adalah studi mengenai kriptografi dan kriptanalisis. Kedua ilmu dan seni ini saling berkaitan. 15
Gambar 2: Skema kriptologi Tujuan Kriptografi Kerahasiaan Pesan yang telah disandikan haruslah terjaga kerahasiaannya. Oleh sebab itu pihak lain yang tidak berhak tidak dapat membacanya. Integritas Data Teks polos, informasi yang dikirim ke penerima, utuh dan dijamin keutuhannya setelah diterima. Pesan yang diterima juga dijamin belum pernah dimanipulasi selama pengiriman. Otentikasi Identitas pengirim dijamin keabsahannya. Artinya yang mengirim informasi adalah benar-benar pengirim, bukan pihak ketiga yang berpura-pura menjadi pengirim. Beberapa Contoh Kriptosistem Secara umum, Kriptosistem dibagi menjadi dua bagian besar: 1. Kriptosistem Kunci Simetris 2. Kriptosistem Kunci Asimetris Perbedaan antara keduanya adalah banyaknya kunci yang digunakan. bawah akan dibahas satu per satu beserta contohnya. Di 16
Kriptosistem Kunci Simetris Kriptosistem kunci simetris (Symmetric-key Cryptosystem) adalah Algoritma yang menggunakan satu kunci untuk kedua proses Enkripsi maupun Dekripsi. Selain disebut symmetric-key, jenis Kriptosistem ini juga disebut secret-key, single-key, shared-key, dan one-key. Gambar 3: Symmetric-key Algorithm Karena hanya menggunakan satu buah kunci, atau lebih dari satu kunci dengan kunci-kunci yang berkaitan secara simpel; Masalah utama yang muncul adalah cara mengirimkan kunci secara aman ke penerima. Tentunya pihak lain tidak boleh mengetahui isi kunci yang dikirimkan. Waktu proses Kriptosistem simetris jauh lebih cepat daripada Kriptosistem asimetris. Shift Cipher Shift Cipher atau sandi geser adalah salah satu contoh Algoritma kunci simetris yang sederhana. Algoritma ini bekerja dengan menggeser pesan huruf per huruf sebanyak k karakter. Ambil P = C = K = Z 26. Untuk 0 K 25, dengan x, y Z 26 e k (x) = x + K mod 26 d k (y) = y K mod 26 Huruf-huruf pada plaintext diubah terlebih dahulu menjadi bentuk angka pada Z 26 : A 0, B 1,..., Z 25. 17
Sebagai contoh, akan diubah teks INSTITUTTEKNOLOGIBANDUNG dengan K = 14. Hal pertama yang dilakukan adalah mengubah plaintext ke dalam bentuk angka, yaitu: 8 13 18 19 8 19 20 19 19 4 10 13 14 11 14 6 8 1 0 13 3 20 13 6 kemudian dimasukkan satu per satu nilai x P ke dalam e 14 (x). Akan dihasilkan Ciphertext 22 1 6 7 22 7 8 7 7 18 24 1 2 25 2 20 22 15 14 1 17 8 1 20 terakhir, bentuk angka Ciphertext diubah kembali menjadi bentuk teks: WBGH- WHIHHSYBCZCUWPOBRIBU. Untuk mendapatkan plaintext dilakukan proses yang sama dengan proses Enkripsi dengan urutan terbalik. Hill Cipher Algoritma ini diciptakan pada tahun 1929 oleh Lester S. Hill. Ambil m bilangan bulat positif, kemudian definisikan P = C = (Z 26 ) m. Ide besarnya adalah untuk mengambil sebanyak m kombinasi linear terhadap m karakter alfabet dalam satu elemen Ciphertext. Misalkan m = 2, dapat dituliskan satu elemen plaintext sebagai x = (x 1, x 2 ) dan satu elemen Ciphertext sebagai y = (y 1, y 2 ) sehingga y 1 = ax 1 + bx 2 y 2 = cx 1 + dx 2 atau dapat dituliskan dalam bentuk matriks ( a b (y 1, y 2 ) = (x 1, x 2 ) c d ) Secara umum, diambil matriks K m m sebagai kunci. Untuk x = (x 1,..., x m ) P dan K K, dapat dihitung y = e K (x) = (y 1,..., y m ) sebagai berikut: k 11 k 12 k 1m k 21 k 22 k 2m (y 1, y 2,..., y m ) = (x 1, x 2,..., x m )...... k m1 k m2 k mm dengan kata lain, y = xk. 18
Untuk proses Dekripsinya, dapat digunakan invers matriks K 1 sehingga x = d K (y) = yk 1. Perlu dicatat bahwa seluruh operasi dilakukan pada Z 26. Dari bahasan diatas, dapat dituliskan deskripsi Hill Cipher: Ambil m bilangan bulat positif, P = C = (Z 26 ) m, dan K = {matriks m m yang memiliki invers di Z 26 } untuk kunci K K, definisikan dimana semua operasi dilakukan di Z 26. e K (x) = xk d K (y) = yk 1 Sebagai contoh, akan mengenkripsi kata JULY dengan kunci ( ) 11 8 K = 3 7 dapat diperiksa bahwa invers matriks K 1 di Z 26 adalah ( ) 7 18 K 1 = 23 11 karena KK 1 = ( 11 8 3 7 ) ( 7 18 23 11 ) = ( 261 286 182 131 ( ) 1 0 0 1 ) mod 26 terdapat dua elemen plaintext, yaitu (9, 20) (mewakili JU) dan (11, 24) (mewakili LY). Dapat dihitung ( ) 11 8 e K (9, 20) = (9, 20) 3 7 = (99 + 60, 72 + 140) (3, 4) mod 26 dan ( 11 8 e K (11, 24) = (11, 24) 3 7 ) = (121 + 72, 88 + 168) (11, 22) mod 26 19
menghasilkan Ciphertext DELW. Untuk proses Dekripsinya dapat dihitung ( ) 7 18 d K (3, 4) = (3, 4) 23 11 (9, 20) mod 26 dan ( 7 18 d K (11, 22) = (11, 22) 23 11 (11, 24) mod 26 ) yang menghasilkan JULY, plaintext semula. Kriptosistem Kunci Asimetris Algoritma ini umum juga disebul Kriptosistem kunci publik (Public-key Cryptosystem). Kriptosistem ini menggunakan dua buah kunci: Private Key (Kunci Privat) dan Public Key ( kunci publik). Sesuai dengan namanya, kunci publik bebas didistribusikan ke mana saja dan ke siapa saja sebab kunci ini hanya digunakan untuk mengenkripsi informasi. Sebaliknya, kunci privat hanya dimiliki oleh penerima untuk men Dekripsi informasi yang telah dienkripsi oleh kunci publik. Gambar 4: Public-key Algorithm Pada Kriptosistem ini, masalah distribusi kunci dapat dieliminasi. Akan tetapi pasangan kunci yang dipakai haruslah dikomputasi, pengirim atau penerima data 20
tidak dapat sembarangan memilih kunci yang akan digunakan. Ini mengakibatkan proses yang dilalui menjadi lebih banyak sehingga total waktu proses menjadi lebih lama dibandingkan Kriptosistem kunci simetris. Bagaimanapun juga tingkat keamanan Kriptosistem jenis ini lebih tinggi daripada Kriptosistem kunci simetris. RSA RSA menggunakan operasi matematika di Z n dimana n adalah hasil kali dari dua bilangan prima ganjil p dan q, dimana p q. Deskripsi Kriptosistem rsa: Misal n = pq, p dan q prima. Misal P = C = Z n, definisikan untuk K K definisikan K = (n, p, q, a, b) : n = pq, p, q prima, ab 1 mod φ(n) e K (x) = x b mod n d K (y) = y a mod n dimana x, y Z n. Nilai (n, b) adalah kunci publik, (n, a) adalah kunci privat, dan nilai p, q rahasia. Dapat diperiksa bahwa e K dan d K adalah operasi yang saling invers. Telah didefinisikan bahwa ab 1 mod φ(n) sehingga ab 1 mod (p 1)(q 1) atau; ab 1 = k(p 1)(q 1) untuk suatu k Z. Dapat diperiksa bahwa ab 1 = l(p 1) atau; ab 1 mod (p 1) dan ab 1 = m(q 1) atau; ab 1 mod (q 1) 21
dari hasil diatas didapat d k (e k (x)) = (x b ) a x k(p 1)+1 mod p x k(p 1)+1 mod p (x (p 1) ) k x mod p 1 k x mod p (Fermat s Little Theorem) x mod p. Dengan cara serupa didapat d k (e k (x)) = (x b ) a x mod q. Kemudian dengan Chinese Remainder Theorem, dapat disimpulkan d k (e k (x)) = (x b ) a x mod pq x mod n. Untuk menentukan kunci a dan b langkah yang perlu diambil antara lain: 1. Pilih dua bilangan prima p dan q; 2. Hitung n = pq dan φ(n) = (p 1)(q 1); 3. Pilih bilangan acak 1 < b < φ(n) dimana gcd(b, n) = 1; 4. Hitung a = b 1 mod φ(n), sehingga didapatkan a, b, n. (n, b) kunci publiknya. Telah dibahas diatas bahwa (n, a) kunci privat dan Sebagai contoh, akan dienkripsi pesan HARIINI menggunakan RSA. Sebelumnya harus dicari dulu pasangan kuncinya. Pilih p = 47 dan q = 71, sehingga dapat dicari n = pq = 47 71 = 3337 φ(n) = (p 1)(q 1) = 46 70 = 3220 22
kemudian pilih b = 79. Dapat diperiksa bahwa gcd(79, 3220) = 1. Karena ab 1 mod φ(n) maka ab 1 = kφ(n) a = 1 + kφ(n) b a = 1 + 3220k 79 untuk nilai k = 25 didapatkan nilai bulat a = 1019. Berikutnya ubah HARIINI menjadi bentuk angka. Menggunakan sistem pengkodean standar ASCII, HARIINI menghasilkan 19d03b412acb51 16 atau 7265827332737873 dalam bentuk desimal. Oleh karena P = C = Z n = Z 3337, bagi plaintext menjadi blok berukuran 3 digit: akhirnya hitung }{{} 726 }{{} 582 }{{} 733 }{{} 273 }{{} 787 x 1 x 2 x 3 x 4 }{{} 3 x 5 x 6 y 1 = 726 79 mod 3337 215 y 2 = 582 79 mod 3337 776 y 3 = 733 79 mod 3337 1743 y 4 = 273 79 mod 3337 933 y 5 = 787 79 mod 3337 1731 y 6 = 3 79 mod 3337 158 Untuk proses Dekripsinya, digunakan kunci privat (1019, 3337): x 1 = 215 1019 mod 3337 726 x 2 = 776 1019 mod 3337 582 x 3 = 1743 1019 mod 3337 733 x 4 = 933 1019 mod 3337 273 x 5 = 171 1019 mod 3337 787 x 6 = 158 1019 mod 3337 3 yang apabila dirangkai kembali menghasilkan 7265827332737873, adalah bentuk desimal HARI INI. 23
24