Kriptografi (Simetry Key) Materi 6 Pemrograman Jaringan Dosen: Eko Prasetyo Teknik Informatika UMG 2012
Istilah Penting Plaintext: Encryption algorithm: Secret Key Pesan atau data yang dapat dibaca yang dimasukkan kedalam algoritma sebagai input. Encryption algorithm: Algoritma enkripsi yang melakukan bermacam-macam substitusi dan transformasi pada plaintext Secret Key Kunci untuk melakukan enkripsi dan dekripsi. Nilainya tidak tergantung pada plaintext maupun algoritma. Algoritma akan menghasilkan output yang berbeda tergantung kunci yang digunakan. Substitusi dan transformasi dilakukan oleh algoritma menurut kuncinya. Ciphertext: Pesan yang segera dihasilkan sebagai output. Tergantung pada plaintext dan kunci. Untuk sebuah pesan, dua kunci yang berbeda akan menghasilkan dua ciphertext yang berbeda. Decryption algorithm: Algoritma yang menerima cipher text dan mencocokkan kunci sehingga menghasilkan plaintext yang asli.
Kebutuhan Enkripsi Konvensional Ada 2 hal yang dibutuhkan dalam enkripsi konvensional: algoritma yang kokoh, kerahasiaan kunci Algoritma enkripsi yang kokoh Minimal, lawan yang tahu algoritma dan mempunyai akses ke sebuah chipertext tidak bisa mendekrip ciphertext atau mendapat kuncinya. Kerahasiaan kunci Pengirim dan penerima harus mendapat salinan secret key dengan cara yang aman dan dijaga kerahasiaannya.
Kriptosistem Plaintext, X = [X1, X2, ..., XM] Pesan, M Kunci, K = [K1, K2, ..., KJ] Ciphertext Y = [Y1, Y2, ..., YN] Algoritma akan membentuk cipher Y, Y = E(K, X) Algoritma akan mengembalikan plaintext X, X = D(K, Y)
Karakteristik Kriptografi Tipe operasi yang digunakan untuk mentransformasi plaintext ke ciphertext Ada 2: substitusi dan transposisi Substrtusi: setiap elemen plaintext (bit, karakter, atau kelompok karakter) dipetakan ke elemen yang lain. Transposisi: elemen plaintext ditata ulang posisinya Tidak boleh ada informasi yang hilang (harus bisa dikembalikan lagi plaintext yang asli) Jumlah kunci yang digunakan Simetry Key: pengirim dan penerima menggunakan kunci yang sama (enkripsi konvensional) Asimetry Key: pengirim dan penenrima menggunakan kunci berbeda (enkripsi kunci publik) Cara plaintext diproses Block chiper: memproses setiap blok input untuk mendapat satu blok keluaran masing-masing Stream chiper: memproses input secara kontinyu, menhasilkan satu elemen keluaran
Cryptanalysis Tujuan dari penyerangan sistem enkripsi adalah untuk mendapatkan kunci, kemudian dengan mudah me-recover plaintext dari cipher yang didapat. Ada 2 pendekatan dalam penyerangan sistem enkripsi konvensional: Cryptanalysis: Cryptanalytic menyerang sifat alami algoritma dan beberapa pengetahuan karakteristik umum plaintext atau bahkan beberapa sampel pasangan plaintext-chipertext Brute-force attack: Penyerang mencoba setiap kunci yang mungkin pada potongan chipertext sampai mendapat terjemahan plaintext yang dapat dipahami. Rata-rata, separuh dari semua kunci yang mungkin harus dicoba untuk mencapai keberhasilan. Teknik Substitusi: Caesar cipher, Monoalphabetic Ciphers, Hill Cipher, Polyalphabetic Ciphers, dsb. Teknik Transposisi.
Caesar Cipher Metode substituasi tertua, dibuat oleh Julius Caesar Substitusi dengan mengganti setiap karakter alfabet dengan 3 karakter didepannya dalam urutan alfabet. Misal: Plain : meet me after the toga party cipher: PHHW PH DIWHU WKH WRJD SDUWB Pola subtitusi: Kita bisa memberi nomor ekivalen untuk setiap karakter sebagai berikut:
Caesar Cipher Untuk setiap huruf plaintext p, men-substitusi huruf cipher C: C = E(3, p) = (p + 3) mod 26 Pergeseran tidak selalu 3, bisa sembarang angka, secara general: C = E(k, p) = (p + k) mod 26 Dimana k diambil dalam range 1 sampai 25 Algoritma dekripsi dilakukan dengan formula: p = D(k, C) = (C k) mod 26 Ada 3 masalah ketika Caesar cipher diserang dengan brute-force cryptanalysis: Algoritma enkripsi dan dekripsi sudah dikenal Hanya 25 kunci yang bisa dicoba Bahasa plaintext sudah diketahui dan mudah dikenali Dengan asumsi bahwa algoritma diketahui, umumnya algoritma ingin agar metode brute- force harus mencoba kemungkinan kunci yang banyak. Misal, untuk Triple DES, menggunakan 168 bit kunci, maka penyerang harus mencoba kunci sebanyak 2168 atau 3,7 x 1050 kunci.
Hill Cipher Dikembangkan oleh ahli matematika Lester Hill tahun 1929 Algoritma enkripsi mengambil m huruf plaintext berturut-turut dan men- substutusinya pada m huruf cipher tersebut. Substitusi ditentukan dengan persamaan linear m dimana setiap karakter diberi nilai numerik (a = 0, b = 1 ... z = 25). Misal, untuk m=3, sistemnya sbb: c1 = (k11p1 + k12p2 + k13p3) mod 26 c2 = (k21p1 + k22p2 + k23p3) mod 26 c3 = (k31p1 + k32p2 + k33p3) mod 26 Hal ini bisa dinyatakan dalam bentuk vektor kolom dan matrik. Atau: C = KP mod 26 Dimana C dan P adalah vektor kolom dengan panjang 3, menyatakan plaintext dan ciphertext. K adalah matrik 3x3 menyatakan kunci enkripsi. Operasi dilakukan dengan mod 26.
Hill Cipher Contoh: plaintext yang akan dienkripsi "paymoremoney" menggunakan kunci enkripsi: Untuk 3 karakter pertama “pay” diwakili oleh vektor Maka: Dilanjutkan 3 karakter berikutnya, sampai semua karakter plaintext sudah dienkripsi. Cipher akhir yang dihasilkan: LNSHDLEWMTRW
Hill Cipher Dekripsinya menggunakan invers matrik K. Invers K-1 dari matrik K didefinisikan dengan persamaan KK-1 = K-1K = I, dimana I adalah matrik yang semua elemennya 0 kecuali elemen diagonal utama bernilai 1 (matrik identitas). Invers matrik tidak selalu ada, tapi jika ada maka harus memenuhi persamaan diatas. Untuk K yang digunakan, inversnya(K-1) adalah: Jika dikalikan dengan K, kemudian di modulus 26: Secara umum, algoritma Hill cipher dituliskan: C = E(K, P) = KP mod 26 P = D(K, P) = K-1C mod 26 = K-1KP = P
Any Question ?