Cipher Block Chaining CBC

E e P = C D d C = P Schneier 1996. Algoritma Simetrik Suatu skema algoritma enkripsi dikatakan algoritma simetrik jika untuk setiap pasangan kunci enkripsi dan dekripsi e,d, maka secara komputasi d “mudah” dihitung apabila e diketahui, dan e “mudah” dihitung apabila d diketahui. Karena pada praktiknya sering kali e = d, maka algoritma simetrik disebut juga enkripsi satu kunci, kunci tunggal, atau enkripsi konvensional Menezes et al. 1996. Sandi Alir dan Sandi Blok Algoritma simetrik dibedakan menjadi dua, yaitu sandi alir dan sandi blok. Sandi alir mengoperasikan bit-bit pesan per satuan waktu tertentu, sedangkan sandi blok mengoperasikan sekumpulan bit blok pesan per satuan waktu tertentu Menezes et al. 1996. Modus Operasi Sandi Blok Sandi blok mengenkripsi plaintext dalam ukuran tetap n-bit. Untuk pesan yang melampaui n-bit, pendekatan yang paling sederhana adalah dengan mempartisi pesan menjadi blok-blok n-bit, masing-masing blok dienkripsi secara terpisah Menezes et al. 1996. Cara ini dikenal dengan istilah modus operasi sandi blok. Dalam Special Publication 800-38A, NIST merekomendasikan lima modus operasi sandi blok yaitu: Electronic Codebook ECB, Cipher Block Chaining CBC, Cipher Feedback CFB, Output Feedback OFB, dan Counter CTR. Electronic Codebook ECB Modus operasi Electronic Codebook ECB merupakan modus operasi blok paling sederhana di antara modus operasi blok lainnya Stallings 2003. Modus operasi ECB melakukan enkripsi setiap blok plaintext ke suatu blok ciphertext yang sama. Demikian pula sebaliknya untuk proses dekripsi Schneier 1996. Secara matematis dapat dituliskan sebagai berikut: C i = E K P i ; untuk proses enkripsi P i = D K C i ; untuk proses dekripsi dengan i = 1, 2, ..., n. Ilustrasi cara kerja modus ECB dapat dilihat pada Gambar 1. a Enkripsi b Dekripsi Gambar 1 Modus operasi ECB Stallings

2003. Cipher Block Chaining CBC

Dalam skema CBC, input algoritma enkripsi adalah hasil exclusive-or XOR antara blok plaintext dengan blok ciphertext sebelumnya. Kunci yang sama digunakan untuk setiap blok. Untuk menghasilkan blok pertama ciphertext, suatu initialization vector IV di-XOR-kan dengan blok pertama plaintext. Secara matematis dapat ditulis menjadi: C 1 = E K IV ⊕ P 1 C j = E K [C j-1 ⊕ P j ] untuk j = 2, ..., n E K K K . . . E E P 1 IV P 2 P n C 1 C 2 C n C n-1 a Enkripsi D K K K . . . D D P 1 IV P 2 P n C 1 C 2 C n C n-1 b Dekripsi Gambar 2 Modus operasi CBC Stallings 2003. Untuk dekripsi, setiap blok ciphertext dilewatkan ke dalam algoritma dekripsi. Hasilnya kemudian di-XOR-kan dengan ciphertext sebelumnya untuk menghasilkan plaintext. Secara matematis dapat ditulis menjadi: P 1 = IV ⊕ D K C 1 P j = D K C j ⊕ C j-1 Stallings 2003. Gambar 2 menyajikan ilustrasi cara kerja CBC. Counter CTR Modus CTR diperkenalkan oleh Diffie dan Hellman pada tahun 1979, namun modus ini tidak distandarisasi sebagai modus resmi untuk DES sehingga dalam buku-buku teks modus CTR seringkali tidak disebutkan. Modus CTR baru distandarisasi oleh NIST pada tahun 2001. Modus CTR membutuhkan sebuah nonce yang unik. Nonce adalah suatu nilai yang digunakan hanya sekali. Kebanyakan sistem membentuk nilai nonce dari nomor pesan dan beberapa data tambahan untuk memastikan keunikan dari nonce. Modus CTR menggunakan metode yang sangat sederhana untuk membangkitkan aliran kunci. Nilai nonce digabung dengan nilai counter i. Dalam NIST SP800-38A disebutkan bahwa nilai counter harus berbeda untuk setiap blok plaintext yang dienkripsi. Secara khusus counter diinisialisasi terhadap suatu nilai dan kemudian ditambahkan dengan ‘1’ untuk setiap blok berikutnya. Nilai gabungan nonce dan counter seringkali disebut juga dengan blok counter dienkripsi untuk membentuk sebuah blok dari aliran kunci. Blok kunci ini kemudian di-XOR-kan dengan blok plaintext untuk menghasilkan blok ciphertext. Dengan demikian, panjang blok counter harus sama dengan panjang blok plaintext. Secara matematis modus CTR dapat dituliskan sebagai berikut: K i = EK, Nonce || i untuk i = 1, 2, ..., n C i = P i ⊕ K i Ferguson Schneier 2003. Rangkaian blok counter yang sama digunakan pada proses enkripsi maupun dekripsi. Untuk dekripsi, setiap blok counter yang telah dienkripsi kemudian di-XOR-kan dengan blok ciphertext untuk mendapatkan kembali blok plaintext yang sesuai. Gambar 3 menyajikan ilustrasi cara kerja CTR. a Enkripsi b Dekripsi Gambar 3 Modus operasi CTR Stallings 2003. Advanced Encryption Standard AES AES merupakan algoritma simetrik yang didesain untuk beroperasi pada blok pesan 128 bit dan menggunakan tiga variasi blok kunci dengan panjang 128 bit, 192 bit, atau 256 bit. Empat proses utama algoritma ini terdiri dari satu proses permutasi dan tiga proses subtitusi, yaitu: 1. Subtitute Bytes: menggunakan S-Box untuk untuk menjalankan subtitusi byte demi byte dari blok pesan. 2. Shift Rows: suatu permutasi sederhana. 3. Mix Columns: subtitusi yang memanfaatkan aritmatika GF2 8 . 4. Add Round Key: proses XOR sederhana antara blok yang bersesuaian dengan suatu bagian dari ekspansi kunci. Proses enkripsi maupun dekripsi diawali proses Add Round Key, diikuti sembilan round yang masing-masing tersusun atas empat proses, dan diakhiri round ke-sepuluh yang terdiri atas tiga proses Stallings 2003. Algoritma CCM didasarkan pada algoritma blok kunci simetrik dengan panjang blok 128 bit seperti halnya algoritma AES. Oleh karenanya pada penelitian ini dimanfaatkan algoritma AES dengan dibatasi untuk panjang blok kunci 128 bit. Meskipun demikian algoritma CCM hanya menggunakan fungsi forward cipher atau fungsi enkripsi AES lihat Gambar 4 baik untuk proses CCM generation-encryption maupun proses CCM decryption-verification. Gambar 4 Proses enkripsi AES, kunci 128 bit Stallings 2003. Fungsi Hash Menezes et al. 1996 mendefinisikan fungsi hash sebagai fungsi yang secara komputasi efisien memetakan bitstring dengan panjang sembarang ke bitstring dengan panjang tetap yang disebut kode-hash, hasil-hash, nilai-hash, atau sederhana disebut hash. Berdasarkan kegunaannya, fungsi hash dibagi menjadi dua tipe, yaitu: 1. Modification Detection Codes MDCs MDC juga dikenal sebagai Manipulation Detection Codes, atau Message Integrity Codes MIC. MDC merupakan subkelas dari fungsi hash tak-berkunci. Tujuan MDC adalah memberikan jaminan integritas data sebagaimana dibutuhkan dalam suatu aplikasi khusus. 2. Message Authentication Codes MACs MAC merupakan subkelas dari fungsi hash berkunci. Tujuan MAC adalah memberikan jaminan sumber pesan dan integritasnya. Cipher Block Chaining – Message Authentication Code CBC-MAC Algoritma CBC-MAC merupakan algoritma MAC berdasarkan pada sandi blok yang paling sering digunakan, dengan memanfaatkan modus operasi CBC. Algoritma CBC-MAC didefinisikan sebagai berikut: INPUT: data x, spesifikasi sandi blok E, kunci rahasia MAC k untuk E. OUTPUT: n-bit MAC pada x n adalah panjang blok dari E. 1. Proses Penambahan Bit Ekstra dan blocking. Proses penambahan bit ekstra dilakukan dengan menggunakan algoritma padding. Padded text dipecah menjadi blok-blok dengan ukuran n-bit dinotasikan dengan x 1 , x 2 , x 3 , ..., x t . 2. Proses CBC. Misalkan E k merupakan notasi enkripsi menggunakan E dengan kunci k, hitung blok H t dengan: H 1 Å E k x 1 H i Å E k H i-1 ⊕ x i , 2 ≤ i ≤ t Ini merupakan standard CBC, IV = 0, mengabaikan blok ciphertext C i = H i . 3. Proses pilihan untuk meningkatkan kekuatan MAC. Menggunakan kunci rahasia kedua k ′ ≠ k, secara opsional dihitung H ′ t Å E -1 k ′ H t , H t Å E k H ′ t . 4. Penyelesaian. MAC adalah n-bit blok H t . Ilustrasi algoritma CBC-MAC dapat dilihat pada Gambar 5 berikut. E k k k . . . E E X 1 IV X 2 X t H 1 H 2 H t H t-1 E -1 E k k H optional Gambar 5 Algoritma CBC-MAC Menezes et al. 1996. Analisis Algoritma Analisis algoritma dilakukan untuk menduga besarnya sumber daya waktu yang dibutuhkan untuk sembarang ukuran input n Cormen et al. 1990. Pada penelitian ini, algoritma CCM dievaluasi berdasarkan keadaan kompleksitas waktu untuk waktu terburuk, dinotasikan dengan O big O. Kasus waktu terburuk didefinisikan sebagai batas atas terbesar waktu yang diperlukan algoritma untuk menyelesaikan suatu pekerjaan bagi setiap ukuran input Cormen et al. 1990. Birthday Attack Birthday attack dinamakan demikian karena adanya birthday paradox. Birthday attack adalah suatu serangan yang tergantung pada fakta bahwa nilai rangkap, disebut juga collisions, muncul lebih cepat dari yang diharapkan. Secara umum, jika suatu elemen mempunyai kemungkinan N nilai yang berbeda, maka collision pertama dapat terjadi setelah memilih sekitar N 12 elemen acak. Jika terdapat 2 n nilai yang mungkin, maka 2 n2 elemen sebelum suatu terjadi collision Ferguson Schneier 2003. Meet-in-the-Middle Attack Meet-in-the-Middle attack merupakan “saudara” dari birthday attack keduanya disebut collision attacks. Perbedaan pada kedua jenis serangan tersebut adalah pada birthday attack musuh menunggu sebuah nilai tunggal yaitu kunci untuk muncul dua kali dalam sebuah himpunan elemen, sedangkan meet-in-the-middle attack, musuh mempunyai dua himpunan yaitu kunci yang dipilih secara acak dan MAC yang dihitung dari bagian pesan yang diketahui dan menunggu terjadinya tumpang tindih overlap pada dua himpunan tersebut. Dengan menggunakan meet-in-the-middle attack musuh dapat mematahkan sebuah sistem dengan lebih dalam Ferguson Schneier 2003. Chosen-Ciphertext Attack Chosen-ciphertext attack adalah suatu serangan yang dilakukan musuh dengan memilih beberapa ciphertext berbeda sehingga didapatkan plaintext yang bersesuian. Salah satu jalan untuk melaksanakan ini adalah dengan mendapatkan akses terhadap alat yang digunakan untuk mendekripsi ciphertext. Dengan demikian, musuh dapat memperoleh kunci yang digunakan untuk mendekripsi pesan Menezes et al. 1996. Deskripsi Algoritma CCM Algoritma Counter with Cipher Block Chaining-Message Authentication Code CCM diajukan oleh Doug Whiting, Russ Housley, dan Niels Ferguson pada tahun 2002. CCM merupakan modus algoritma blok yang dapat memberikan jaminan kerahasiaan dan otentikasi data. CCM didasarkan pada algoritma blok kunci simetrik yang telah diakui yakni diakui oleh Federal Information Processing Standard FIPS atau direkomendasikan oleh NIST dengan ukuran blok 128 bit, seperti algoritma AES yang dipublikasikan dalam FIPS 197. CCM tidak dapat digunakan dengan algoritma 3DES dengan ukuran blok 64 bit. Meskipun demikian, ide CCM dapat dengan mudah diperluas untuk digunakan pada panjang blok lainnya, namun hal ini akan membutuhkan ketentuan lebih lanjut Whiting et al. 2002. CCM dimaksudkan untuk digunakan dalam lingkungan paket, yaitu ketika semua data tersedia dalam penyimpanan sebelum CCM diaplikasikan. CCM tidak dirancang untuk mendukung pemrosesan parsial Dworkin 2004. Berikut ini adalah uraian lengkap mengenai algoritma CCM.

1. Algoritma Blok untuk CCM