SEBAGAI FUNGSI ENKRIPSI TEROTENTIKASI
Oleh:
Ratna Purnama Sari
G64101009
DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
SEBAGAI FUNGSI ENKRIPSI TEROTENTIKASI
Skripsi
Sebagai salah satu syarat untuk memperoleh gelar Sarjana Komputer
pada Fakultas Matematika dan Ilmu Pengetahuan Alam
Institut Pertanian Bogor
Oleh:
Ratna Purnama Sari
G64101009
DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
RATNA PURNAMA SARI. Analisis Algoritma dan Kinerja pada Counter dengan CBC-MAC (CCM) sebagai Fungsi Enkripsi Terotentikasi. Dibimbing oleh SUGI GURITMAN dan SHELVIE NIDYA NEYMAN.
Algoritma CCM merupakan suatu modus enkripsi terotentikasi yang mengkombinasikan modus enkripsi Counter (CTR) dengan modus otentikasi Cipher Block Chaining-Message Authentication Code (CBC-MAC). CCM didasarkan pada algoritma blok kunci simetrik dengan panjang blok 128 bit, seperti algoritma Advanced Encryption Standard (AES). CCM melindungi tiga elemen data, yaitu: nonce, payload, dan associated data. Tulisan ini bertujuan untuk mengimplementasikan, menganalisis algoritma dan kinerja CCM, serta melakukan perbandingan antara CCM dengan modus operasi Electronic Codebook (ECB). Implementasi algoritma CCM ini menggunakan Matlab versi 6.5 bagi analisis uji running time generation-encryption dan
decryption-verification.
Berdasar analisis, CCM didesain untuk mendapatkan kerahasiaan dan otentikasi pesan secara simultan menggunakan sebuah kunci rahasia. Kebutuhan akan hanya fungsi forward cipher
dari algoritma blok yang mendasari CCM menjadikan ukuran kode implementasi CCM yang lebih kecil. Meskipun demikian, beberapa timbal balik kinerja pada proses-proses dalam CCM harus dipikirkan terlebih dahulu sebelum mengaplikasikan algoritma ini. Semakin besar nonce, maka akan semakin kecil panjang maksimum dari payload yang bisa diproteksi CCM. Semakin kecil
nonce, maka akan semakin kecil jumlah maksimum nonce yang berbeda. Semakin besar nilai MAC akan memberikan jaminan otentisitas yang semakin besar pula. Namun, dengan semakin besar nilai MAC maka semakin besar pula ruang penyimpanan yang harus disediakan bagi
ciphertext. Dengan analisis algoritma, didapatkan CCM memiliki kompleksitas pada lingkup O(n) baik bagi proses generation-encryption maupun decryption-verification.
Sebagai modus operasi algoritma blok, CCM dapat memberikan jaminan keamanan yang lebih baik dari ECB. CCM tidak hanya memberikan jaminan kerahasiaan, namun juga memberikan jaminan otentikasi pesan. Namun dari segi kecepatan, ECB lebih baik dibandingkan CCM baik untuk proses enkripsi maupun dekripsi. Meskipun demikian, efisiensi yang rendah dari proses kebalikan dalam AES yang memungkinkan proses dekripsi AES menjadi lambat dalam implementasi, dapat dihindari oleh CCM.
Melalui analisis uji implementasi menggunakan Matlab 6.5 dan analisis uji statistik (Independent-Samples T-Test), dapat disimpulkan bahwa running time proses CCM generation-encryption tidak berbeda nyata dengan running time proses CCM decryption-verification dengan selang kepercayaan 95%. Melalui analisis regresi, dapat disimpulkan bahwa untuk payload
berukuran besar dan tanpa associated data, nilai running time proses generation-encryption dan
decryption-verification pada AES-CCM adalah 1.8 sampai dengan 2.0 kali running time proses enkripsi pada AES-ECB.
NRP
: G64101009
Menyetujui:
Pembimbing I,
Dr. Sugi Guritman
NIP 131999582
Pembimbing II,
Shelvie Nidya Neyman, S.Kom
NIP 132311916
Mengetahui:
Dekan Fakultas Matematika dan Ilmu Pengetahuan Alam
Institut Pertanian Bogor
Dr. Ir. Yonny Koesmaryono, MS
NIP 131473999
Penulis lahir di Garut pada tanggal 16 Juni 1983, anak dari ayah Misbach Sudur dan ibu Siddikoh Komariah. Penulis merupakan putri ketujuh dari tujuh bersaudara.
Tahun 2001 penulis lulus dari SMU Negeri 1 Tarogong Garut, dan pada tahun yang sama melanjutkan kuliah ke Institut Pertanian Bogor (IPB), Jurusan Ilmu Komputer, Fakultas Matematika dan Ilmu Pengetahuan Alam melalui jalur Undangan Seleksi Masuk IPB (USMI).
Alhamdulillah wa syukrulillah penulis panjatkan ke hadirat Allah Subhanahu wa ta’ala atas segala rahmat, kasih sayang, dan hidayah-Nya sehingga skripsi ini berhasil diselesaikan. Shalawat serta salam semoga senantiasa tercurah kepada teladan kita Nabi Muhammad Shallallahu alaihi wasallam, kerabat, sahabat dan umatnya sampai akhir zaman. Tema yang dipilih dalam penelitian ini ialah teknik kriptografi enkripsi terotentikasi, dengan judul Analisis Algoritma dan Kinerja pada Counter dengan CBC-MAC (CCM) sebagai Fungsi Enkripsi Terotentikasi.
Penulis menyampaikan terima kasih kepada semua pihak yang telah membantu dalam penulisan karya ilmiah ini khususnya kepada Bapak Dr. Sugi Guritman dan Ibu Shelvie Nidya Neyman, S.Kom yang telah membimbing dengan penuh ketekunan dan kesabaran hingga selesainya penulisan karya ilmiah ini. Selanjutnya, penulis juga ingin mengucapkan terima kasih kepada:
1. Kedua orangtuaku, Uki dan Umi, atas segala cinta, kasih sayang, dukungan, dan doa yang tiada pernah putus.
2. Kakak-kakakku, Jauhar Arifin, Surantiningsih Sagiyati, Fatimah Rahayu, Hikmat Ramdan, Fajar Nugraha, Lia Yulindaria, Ahmad Dermawan, Mira Rahmawati, Rahmat Budiman, Rita Susanti, serta Wahyu Gunawan. Terima kasih atas kasih sayang, bantuan, dan dukungan doa serta semangat yang tiada berbatas.
3. Keponakan-keponakanku, Hasnan Habib Jauhari, Hana Hanifah, Gina Aura Ramdan, Salma Ersyara, Syifa Azeera, dan Rafa Fauzan Budiman yang juga selalu memberikan semangat dan dukungan meskipun dalam bahasa tak beraksara.
4. Heti Mulyati dan seluruh keluarga besar Bapak H. Edi Djunaedi, terima kasih atas segala kebaikannya.
5. Andika Wahyu Agusetyawan, terima kasih atas perhatian, pengertian, dan kesabaran yang menyatu menjadi paket indah dalam kebersamaan.
6. Sahabat-sahabat Ilkom angkatan 38, M. Astrid, Ellysa Kurniasari, Hendra Saputra, Meisye Francisca, Ifnu Bima, terima kasih atas persahabatan kita selama ini.
7. Departemen Ilmu Komputer, staf dan dosen yang telah begitu banyak membantu, baik selama pelaksanaan skripsi ini maupun sebelumnya.
Kepada semua pihak lainnya yang telah memberikan kontribusi yang besar selama pengerjaan penelitian ini yang tidak dapat disebutkan satu persatu, penulis ucapkan terima kasih.
Semoga karya ilmiah ini dapat bermanfaat dan menjadi amal sholih bagi semua pihak yang terlibat dalam penyusunan skripsi ini. Amin.
Bogor, Januari 2006
Halaman
DAFTAR TABEL ... ix
DAFTAR GAMBAR ... x
DAFTAR LAMPIRAN ... xi
PENDAHULUAN ... Latar Belakang ... 1
Tujuan ... 1
Ruang Lingkup ... 2
TINJAUAN PUSTAKA Kriptografi... 2
Kriptanalisis... 2
Enkripsi dan Dekripsi ... 2
Algoritma Kriptografi... 2
Algoritma Simetrik... 3
Sandi Alir dan Sandi Blok... 3
Modus Operasi Sandi Blok... 3
Electronic Codebook (ECB) ... 3
Cipher Block Chaining (CBC) ... 3
Counter(CTR) ... 4
Advanced Encryption Standard(AES)... 4
Fungsi Hash... 5
Cipher Block Chaining-Message Authentication Code(CBC-MAC) ... 5
Analisis Algoritma... 5
Birthday Attack... 6
Meet-in-the-Middle Attack... 6
Chosen-Ciphertext Attack... 6
Deskripsi Algoritma CCM ... 6
Algoritma Blok untuk CCM... 6
Teknik Kriptografi dalam CCM ... 6
Elemen-elemen Data... 7
Pemformatan Input... 7
Fungsi Pemformatan... 7
Fungsi Pembangkitan Counter ... 8
Proses Generation-Encryption ... 9
Deskripsi Umum Implementasi ... 11
Spesifikasi Uji Implementasi ... 11
HASIL DAN PEMBAHASAN Analisis Algoritma CCM ... 12
Analisis Algoritma Proses Generation-EncryptionCCM... 15
Analisis Algoritma Proses Decryption-VerificationCCM... 15
Analisis Uji Implementasi... 16
KESIMPULAN DAN SARAN Kesimpulan ... 24
Saran ... 24
Halaman
1. Pemformatan oktet flag dalam B0 ... 8
2. Pemformatan B0... 8
3. Pemformatan Ctri... 8
4. Pemformatan oktet flag dalam Ctri... 8
5. Ukuran payload dan ukuran blok counter yang dibangkitkan ... 16
6. Rekapitulasi rataan running time generation-encryption dan decryption-verification dengan a = 0, n = 7, dan t = 8 ... 16
7. Rekapitulasi rataan running time generation-encryption dan decryption-verification dengan a = 8, n = 7, dan t = 8 ... 17
8. Rekapitulasi rataan running time generation-encryption dan decryption-verification dengan a = 16, n = 7, dan t = 8 ... 17
9. Rekapitulasi rataan running time generation-encryption dan decryption-verification dengan a = 24, n = 7, dan t = 8 ... 18
10. Rekapitulasi rataan running time generation-encryption dan decryption-verification dengan a = 32, n = 7, dan t = 8 ... 18
11. Group statistics AES-CCM... 21
12. Independent-samples t-test (α = 0.05) untuk AES-CCM... 21
13. Koefisien grafik hubungan running time proses generation-encryption terhadap ukuran ADF dan PF ... 22
14. Koefisien grafik hubungan running time proses decryption-verification terhadap ukuran ADF dan PF ... 22
15. Rekapitulasi rataan running time enkripsi dan dekripsi pada AES-ECB ... 22
16. Group statistics AES-ECB... 23
17. Independent-samples t-test (α = 0.05) untuk AES-ECB... 23
18. Koefisien grafik hubungan running time prosesenkripsi terhadap ukuran file pesan... 23
Halaman
1. Modus operasi ECB (Stalling 2003) ... 3
2. Modus operasi CBC (Stalling 2003) ... 3
3. Modus operasi CTR (Stalling 2003) ... 4
4. Proses enkripsi AES, kunci 128 bit (Stalling 2003) ... 5
5. Algoritma CBC-MAC (Menezes et al. 1996) ... 5
6. Proses generation-encryption CCM... 10
7. Proses decryption-verification CCM... 11
8. Diagram alir proses generation-encryption CCM... 15
9. Diagram alir proses decryption-verification CCM... 15
10. Hubungan running timegeneration-encryption dan decryption-verification terhadap ukuran data terformat pada percobaan pertama ... 19
11. Hubungan running timegeneration-encryption dan decryption-verification terhadap ukuran associated data pada kelima percobaan ... 20
12. Hubungan panjang MAC pada ciphertext terhadap panjang payload... 20
Halaman
1. Antarmuka implementasi ... 27
2. Rekaman ilustrasi tahapan proses generation-encryption dan decryption-verification CCM. 28 3. Rekapitulasi rata-rata uji running timegeneration-encryption AES-CCM dengan a = 0,
n = 7, dan t = 8 ... 30 4. Rekapitulasi rata-rata uji running timedecryption-verification AES-CCM dengan a = 0,
n = 7, dan t = 8 ... 32 5. Rekapitulasi rata-rata uji running timegeneration-encryption AES-CCM dengan a = 8,
n = 7, dan t = 8 ... 34 6. Rekapitulasi rata-rata uji running timedecryption-verification AES-CCM dengan a = 8,
n = 7, dan t = 8 ... 36 7. Rekapitulasi rata-rata uji running timegeneration-encryption AES-CCM dengan a = 16,
n = 7, dan t = 8 ... 38 8. Rekapitulasi rata-rata uji running timedecryption-verification AES-CCM dengan a = 16,
n = 7, dan t = 8 ... 40 9. Rekapitulasi rata-rata uji running timegeneration-encryption AES-CCM dengan a = 24,
n = 7, dan t = 8 ... 42 10. Rekapitulasi rata-rata uji running timedecryption-verification AES-CCM dengan a = 24,
n = 7, dan t = 8 ... 44 11. Rekapitulasi rata-rata uji running timegeneration-encryption AES-CCM dengan a = 32,
n = 7, dan t = 8 ... 46 12. Rekapitulasi rata-rata uji running timedecryption-verification AES-CCM dengan a = 32,
PENDAHULUAN
Latar Belakang
Komunikasi melalui internet telah menjadi suatu bagian penting dalam kehidupan kita. Internet menyebabkan banyak organisasi, industri, maupun individu menggunakan sistem komputer sebagai media komunikasi data. Komunikasi data atau pesan melalui internet ini tentu saja mengandung resiko, terutama untuk data atau pesan yang bersifat rahasia dan berharga, karena internet merupakan media komunikasi umum yang rentan akan terjadinya penyusupan oleh pihak yang tak berwenang.
Para penyusup ini melakukan ancaman terhadap data atau pesan dengan dua macam cara, yaitu berupa ancaman pasif dan ancaman aktif. Ancaman pasif terjadi ketika penyusup secara sengaja memonitor saluran komunikasi serta membaca isi pesan. Seorang penyusup pasif hanya mengancam kerahasiaan data. Namun apabila penyusup juga berusaha untuk menghapus pesan, menambahkan isi pesan, atau dengan cara lain mengubah transmisi pesan, maka dalam hal ini telah terjadi ancaman aktif. Seorang penyusup aktif mengancam integritas data, otentikasi maupun kerahasiaan data (Menezes et al. 1996).
Berkaitan dengan hal tersebut, seringkali ketika dua pihak berkomunikasi melalui suatu jaringan, ada dua tujuan utama yang ingin mereka capai dalam menjaga keamanan data atau pesan, yaitu kerahasiaan dan otentikasi pesan. Teknik kriptografi dapat digunakan untuk mencapai tujuan tersebut. Tujuan kerahasiaan dapat dicapai dengan menggunakan teknik kriptografi berupa penyandian pesan, sedangkan tujuan otentikasi dapat diraih dengan menggunakan teknik kriptografi berupa otentikasi pesan yang secara implisit memberikan integritas data.
Berbagai macam cara penyandian pesan telah dikembangkan. Salah satu contoh adalah algoritma Advanced Encryption Standard
(AES) yang menggunakan teknik blok simetrik. Algoritma AES dipublikasikan oleh
National Institute of Standards and Technology (NIST) pada tahun 2001 dan dimaksudkan untuk menggantikan algoritma
Data Encryption Standard (DES) sebagai standard yang telah disetujui untuk dipakai dalam berbagai macam aplikasi. Kedua algoritma tersebut, baik DES maupun AES
memberikan layanan keamanan berupa kerahasiaan data.
Sama halnya dengan teknik penyandian pesan, teknik otentikasi pesan juga telah banyak dikembangkan. Salah satu teknik otentikasi pesan adalah dengan menggunakan
Message Authentication Code (MAC) yang merupakan fungsi hash berkunci. Beberapa algoritma MAC diantaranya adalah CBC-MAC, HCBC-MAC, UCBC-MAC, dan masih banyak algoritma lainnya.
Sehubungan dengan pencapaian tujuan keamanan data, para ahli kriptogafi berpendapat bahwa seseorang sebaiknya tidak melakukan penyandian pesan tanpa diikuti otentikasi pesan. Berbagai macam solusi untuk mengatasi persoalan ini telah ada sejak beberapa dekade, dan pendekatan tradisional untuk mendapatkan jaminan kerahasiaan dan otentikasi pesan telah dilakukan dengan menggabungkan kedua teknik tersebut dalam suatu cara tertentu yang dikenal dengan istilah “generic composition”. Akan tetapi, baru-baru ini ada sejumlah konstruksi baru yang meraih kerahasiaan dan otentikasi secara simultan dan seringkali lebih cepat daripada sembarang solusi yang menggunakan generic composition (Black 2003). Konstruksi baru ini memanfaatkan modus-modus operasi sandi blok sehingga dikenal dengan istilah “combined modes” atau istilah yang lebih sering digunakan adalah “ authenticated-encryption modes” (modus enkripsi terotentikasi).
Penelitian ini akan menganalisis salah satu modus enkripsi terotentikasi yaitu algoritma
Counter with Cipher Block Chaining-Message Authentication Code, disingkat CCM. CCM dapat dianggap sebagai suatu modus operasi algoritma blok. Seperti ditunjukkan oleh namanya, CCM mengkombinasikan modus enkripsi Counter (CTR) dengan modus otentikasi Cipher Block Chaining-Message Authentication Code (CBC-MAC). CCM didasarkan pada algoritma sandi blok kunci simetrik dengan panjang blok 128 bit, seperti algoritma AES. Pada penelitian ini dilakukan analisis algoritma, serta implementasi algoritma CCM bagi analisis kinerja dengan uji running time proses generation-encryption
dan decryption-verification. Tujuan
Tujuan penelitian ini adalah:
2. mengimplementasikan algoritma CCM berdasarkan algoritma AES untuk melakukan analisis kinerja dengan uji
running time proses generation-encryption dan decryption-verification
3. melakukan perbandingan modus operasi CCM dengan modus operasi Electronic Codebook (ECB) pada algoritma AES berdasarkan hasil penelitian Giri (2004).
Ruang Lingkup
Implementasi algoritma CCM memanfaatkan algoritma sandi blok AES dengan panjang 128 bit dengan panjang blok kunci yang dipilih adalah 128 bit. Oleh karenanya analisis algoritma CCM dibatasi oleh hal tersebut. Implementasi algoritma CCM ditujukan untuk melakukan enkripsi terotentikasi pada pesan dalam bentuk file teks dengan representasi 8 bit (1 byte) untuk setiap karakter. Untuk mempermudah penelitian, manajemen penentuan nilai kunci diasumsikan terjamin keamanannya. Adapun analisis kinerja mencakup analisis uji running time generation-encryption dan decryption-verification CCM hasil implementasi yang selanjutnya dilakukan perbandingan dengan
running time enkripsi dan dekripsi pada algoritma AES dengan modus operasi ECB.
TINJAUAN PUSTAKA
Kriptografi
Menezes et al. (1996) mendefinisikan kriptografi sebagai studi teknik matematik yang berkaitan dengan aspek keamanan informasi seperti kerahasiaan, integritas data, otentikasi entitas, dan otentikasi asal data.
Empat tujuan utama kriptografi menurut Menezes et al. (1996) adalah sebagai berikut: 1. Kerahasiaan adalah suatu layanan yang
digunakan untuk menjaga isi informasi dari semua pihak yang tidak berwenang memilikinya.
2. Integritas data adalah suatu layanan yang berkaitan dengan pengubahan data oleh pihak yang tidak berwenang.
3. Otentikasi adalah suatu layanan yang berhubungan dengan identifikasi. Fungsi ini diterapkan baik pada entitas maupun pada informasi itu sendiri. Informasi yang disampaikan melalui suatu saluran seharusnya dapat diidentifikasikan asalnya, isinya, tanggal dan waktunya.
Atas dasar ini otentikasi terbagi menjadi dua kelas besar, yaitu otentikasi entitas dan otentikasi asal data. Otentikasi asal data secara implisit memberikan integritas data.
4. Non-repudiasi adalah suatu layanan yang mencegah suatu entitas dari penyangkalan akan komitmen atau aksi yang telah dibuat sebelumnya.
Sesuai dengan asumsi yang telah dikemukakan sebelumnya, penelitian ini menekankan pada aspek kerahasiaan dan otentikasi pesan.
Kriptanalisis
Kriptanalisis adalah studi teknik matematik untuk mencoba mematahkan teknik kriptografi, dan lebih umum lagi terhadap layanan keamanan informasi, sedangkan kriptanalis adalah orang yang menggeluti kriptanalisis (Menezes et al.
1996).
Enkripsi dan Dekripsi
Enkripsi yang disimbolkan dengan E
merupakan proses untuk mengubah suatu
plaintext (P) menjadi ciphertext (C). Secara matematis fungsi enkripsi dapat dinyatakan sebagai berikut:
E(P) = C
Sebagai fungsi kebalikan dari enkripsi, dekripsi disimbolkan dengan D, mengembalikan ciphertext (C) menjadi
plaintext (P). Secara matematis fungsi dekripsi dapat dinyatakan sebagai berikut:
D(C) = P
Dengan demikian, untuk proses enkripsi yang diikuti proses dekripsi berlaku identitas berikut ini:
D(E(P)) = P
(Schneier 1996).
Algoritma Kriptografi
Algoritma kriptografi adalah rangkaian fungsi matematika yang digunakan dalam proses enkripsi dan dekripsi. Kriptografi modern menggantungkan keamanannya pada penggunaan suatu kunci, disimbolkan dengan
K. Semua kemungkinan nilai kunci disebut dengan ruang kunci. Baik enkripsi maupun dekripsi menggunakan kunci, dengan e
Ee(P) = C Dd(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:
Ci = EK(Pi); untuk proses enkripsi
Pi = DK(Ci); 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:
Gambar 2 Modus operasi CBC (Stallings 2003).
Untuk dekripsi, setiap blok ciphertext
ciphertext sebelumnya untuk menghasilkan
plaintext. Secara matematis dapat ditulis menjadi:
P1 = IV⊕DK (C1)
Pj = DK (Cj) ⊕Cj-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:
Ki = E(K, Nonce || i) untuk i = 1, 2, ..., n Ci= Pi⊕Ki
(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 GF(28).
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
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 x1, x2, x3, ..., xt. 2. Proses CBC. Misalkan Ek merupakan
notasi enkripsi menggunakan E dengan kunci k, hitung blok Ht dengan:
H1Å Ek (x1)
HiÅEk (Hi-1⊕xi ), 2 ≤ i ≤ t (Ini merupakan standard CBC, IV = 0, mengabaikan blok ciphertextCi = Hi). 3. Proses pilihan untuk meningkatkan
kekuatan MAC. Menggunakan kunci rahasia kedua k′ ≠ k, secara opsional dihitung H′tÅ E-1k′ (Ht), Ht ÅEk (H′t).
4. Penyelesaian. MAC adalah n-bit blok Ht. Ilustrasi algoritma CBC-MAC dapat dilihat pada Gambar 5 berikut.
E
Gambar 5 Algoritma CBC-MAC (Menezes et al. 1996).
Analisis Algoritma
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 N1/2 elemen acak. Jika terdapat 2n nilai yang mungkin, maka 2n/2 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
Seperti telah diungkapkan sebelumnya bahwa algoritma blok yang akan mendasari CCM pada penelitian ini adalah algoritma AES. Seperti algoritma blok lainnya, AES terdiri dari dua fungsi yang merupakan kebalikan satu sama lain, yaitu fungsi forward cipher dan fungsi invers cipher. Meskipun demikian, CCM hanya memerlukan fungsi
forward cipher.
Kunci CCM, disimbolkan dengan K, adalah kunci untuk algoritma blok AES. Fungsi forward cipher dengan kunci ini dinyatakan dengan CIPHK, sedangkan panjang K dinyatakan dengan Klen.
2. Teknik Kriptografi dalam CCM
Spesifikasi CCM pada dasarnya menggabungkan dua mekanisme kriptografik yang didasarkan pada fungsi forward cipher. Mekanisme pertama diadaptasi dari teknik CBC untuk memberikan jaminan otentisitas. Secara spesifik, teknik CBC dengan sebuah vektor inisialisasi bernilai nol diterapkan pada data yang akan diotentikasi. Seluruh atau sebagian dari blok terakhir output CBC merupakan MAC dari data. Algoritma untuk membangkitkan sebuah MAC dengan cara ini disebut dengan CBC-MAC.
ini membutuhkan pembangkitan rangkaian blok yang cukup panjang yang disebut blok-blok counter. Blok-blok counter ini harus berbeda dalam setiap invokasi (yaitu suatu operasi sandi blok) menggunakan kunci yang diberikan. Kunci yang sama, yaitu K, digunakan baik untuk mekanisme CTR maupun CBC-MAC dalam CCM (Dworkin 2004).
3. Elemen-elemen Data
Data yang dilindungi CCM terdiri dari tiga elemen, yaitu:
1. Sebuah pesan atau data, yaitu suatu
bitstring disebut payload, dinyatakan dengan P, dengan panjang bitnya dinyatakan dengan Plen. P akan diotentikasi dan dienkripsi sehingga CCM menyediakan jaminan keaslian dan kerahasiaan P.
2. Suatu bit string disebut associated data, dinyatakan dengan A. Associated data
(misalnya suatu header) ini bersifat opsional, yaitu A mungkin saja berupa
string kosong. A akan diotentikasi tetapi tidak dienkripsi sehingga CCM hanya menyediakan jaminan keaslian namun tidak memberikan jaminan kerahasiaan A. 3. Suatu bit string unik yang disebut nonce,
dinyatakan dengan N, diberikan pada pasangan data yang akan dilindungi, yaitu
P dan A.
MAC yang dibangkitkan dalam CCM dinyatakan dengan T. Panjang bit T, dinyatakan dengan Tlen, merupakan suatu parameter yang akan ditetapkan untuk semua proses CCM dengan kunci yang diberikan (Dworkin 2004).
4. Pemformatan Input
Elemen-elemen data CCM yaitu N, P, dan
A akan diformat dengan sebuah fungsi pemformatan (dalam Jonsson (2002) disebut dengan encoding function) menjadi rangkaian tak-kosong dari blok data lengkap, dinyatakan dengan B0, B1, …, Br untuk r bilangan bulat tak-negatif. Nilai r tergantung pada fungsi pemformatan dan elemen input. Untuk sembarang kunci, tiga sifat berikut harus dimiliki oleh fungsi pemformatan:
1. Blok pertama, B0, secara unik menentukan nonce N.
2. Data yang diformat secara unik menentukan P dan A; selain itu, jika (N,
3. Blok pertama, B0, berbeda dari sembarang blok counter yang digunakan untuk semua proses CCM menggunakan kunci yang diberikan.
Sifat ketiga menyarankan agar fungsi pemformatan dan fungsi pembangkitan
counter tidak dipilih atau dirancang secara independen satu sama lain. Fungsi pemformatan mungkin memberikan pembatasan pada isi dan panjang bit data input
N, P, dan A, seperti halnya pada parameter
Tlen. Nilai yang memenuhi batasan dari fungsi pemformatan disebut valid.
Fungsi pemformatan dan fungsi pembangkitan counter yang digunakan pada penelitian ini merupakan fungsi pemformatan CCM generik yang diajukan oleh perancang CCM kepada NIST. Kedua fungsi ini tentu saja memenuhi syarat tersebut di atas. Alternatif fungsi pemformatan dan fungsi pembangkitan counter dimungkinkan untuk dikembangkan pada masa mendatang (Dworkin 2004).
5. Fungsi Pemformatan
5.1. Syarat Panjang Peubah dalam CCM
Panjang bit untuk setiap string input, yaitu
N, A, dan P, merupakan kelipatan dari 8 bit, yaitu setiap string input merupakan string
oktet. Panjang oktet dari string ini dinyatakan dengan n, a, dan p sehingga n, a, dan p
merupakan bilangan bulat. Demikian pula dengan parameter t yang menyatakan panjang oktet T.
Panjang oktet dari P (yaitu bilangan bulat
p) direpresentasikan dalam blok pertama dari data terformat sebagai sebuah string oktet disimbolkan dengan Q. Panjang oktet Q yang dinyatakan dengan q, adalah sebuah parameter untuk fungsi pemformatan. Jadi, Q ekuivalen dengan [p]8q, representasi biner p dalam
oktet-oktet q. Sebagai contoh, jika q = 3 dan P
adalah sebuah string yang terdiri dari 2048 bit, yaitu p = 256, maka Q adalah string
00000000 00000001 00000000.
Fungsi pemformatan yang digunakan dalam penelitian ini mensyaratkan panjang dari peubah berikut (Dworkin 2004):
• q adalah elemen dari {2, 3, 4, 5, 6, 7, 8}
• n adalah elemen dari {7, 8, 9, 10, 11, 12, 13}
• n + q = 15
• a < 264.
5.2. Pemformatan Kontrol Informasi dan
Nonce
Oktet awal blok pertama dari pemformatan, B0, berisi empat flag untuk mengontrol informasi: yaitu dua bit tunggal (disebut Reserved dan Adata) dan dua string
terdiri dari tiga bit yang digunakan untuk menyandikan nilai t dan q. Penyandian t
adalah [(t-2)/2]3, dan penyandian q adalah
[q-1]3. Sebagai contoh, jika panjang MAC
adalah 8 oktet, maka t disandikan menjadi 011. Bit Reserved dicadangkan untuk memungkinkan perluasan pemformatan di masa mendatang dan akan di-set dengan nilai ‘0’. Bit Adata bernilai ‘0’ jika a = 0 dan ‘1’ jika a > 0 (Dworkin 2004). Urutan flag dalam oktet diberikan dalam Tabel 1. Pada Tabel 2 diperlihatkan pemformatan 15 oktet lainnya dari blok pertama yang disediakan untuk
nonce dan representasi biner dari panjang pesan dalam oktet-oktet q.
Tabel 1 Pemformatan oktet flag dalam B0
Bit 7 6 5 4 3 2 1 0
Isi Reserved Adata [(t-2)/2]3 [q-1]3
Tabel 2 Pemformatan B0
Oktet 0 1 ... 15-q 16-q ... 15
Isi Flags N Q
5.3. Pemformatan Associated Data
Jika a = 0 maka tidak ada blok yang disediakan untuk associated data dalam data yang diformat. Jika a > 0, maka a disandikan seperti dijelaskan di bawah ini, dan sandi dari
a digabung dengan associated dataA, diikuti oleh jumlah minimum bit-bit ‘0’ (mungkin juga tidak) sedemikian sehingga string yang dihasilkan bisa dipartisi ke dalam 16-blok oktet. Blok-blok ini dinyatakan dalam data terformat sebagai B1, B2, … Bu untuk u
bilangan bulat positif yang tergantung dari nilai a.
Nilai a disandikan berdasarkan tiga kasus berikut:
Pemformatan dari kumpulan associated data yang berbeda tidak akan overlap, karena untuk nilai-nilai a yang berbeda, bit-bit yang mendahului dari penyandian a juga berbeda. Pada kasus pertama, oktet yang pertama tidak akan 0xff seperti pada kasus yang kedua dan ketiga; kasus kedua dan ketiga dapat dibedakan dengan oktet yang kedua. Penyandian yang tidak dispesifikasikan pada tiga kasus ini adalah reserved, misalnya ketika kedua oktet yang pertama adalah 0x0000, 0xff00, 0xff01, dan lain-lain (Dworkin 2004).
5.4. Pemformatan Payload
Blok-blok associated data, jika ada, diikutkan dalam rangkaian blok pemformatan dengan blok payload. Payload digabungkan dengan jumlah minimum bit-bit ‘0’ (mungkin juga tidak ada) sedemikian sehingga hasilnya bisa dipartisi menjadi 16-blok oktet. Blok-blok ini dinyatakan dalam data yang telah diformat sebagai Bu+1, Bu+2, … Br, dengan r =
u + ⎡p/16⎤ (Dworkin 2004).
6. Fungsi Pembangkitan Counter
Fungsi pembangkitan counter pada bagian ini adalah ekuivalen dengan pemformatan indeks
counter i menjadi suatu blok data lengkap. Blok-blok counter Ctri dibentuk seperti terlihat pada Tabel 3. Dalam setiap blok Ctri,
flag dibentuk seperti terlihat pada Tabel 4 (Dworkin 2004).
Tabel 3 Pemformatan Ctri
Oktet 0 1 ... 15-q 16-q ... 15
Isi Flags N [i]8q
Tabel 4 Pemformatan oktet flag dalam Ctri
Bit 7 6 5 4 3 2 1 0
Isi Reserved Reserved 0 0 0 [q-1]3
counter berbeda dari B0. Bit 0, 1, dan 2 berisi penyandian q yang sama seperti dalam B0. 7. Proses Generation-Encryption
Berikut ini adalah spesifikasi dari proses
generation-encryption CCM:
¾ Prasyarat:
• algoritma blok (AES)
• kunci K
• fungsi pembangkitan counter
• fungsi pemformatan
• panjang MAC Tlen
1. Jalankan fungsi pemformatan pada (N, A, P) untuk menghasilkan
blok-5. Jalankan fungsi pembangkitan
counter untuk membangkitkan blok-blok counter Ctr0, Ctr1, …, Ctrm
Input data terhadap proses generation-encryption adalah valid nonce, valid payload, dan valid associated data, yang dibentuk berdasarkan fungsi pemformatan. Mekanisme CBC-MAC diterapkan pada data terformat untuk membangkitkan sebuah MAC, dengan panjang seperti yang telah disyaratkan.
Enkripsi modus counter, yang membutuhkan rangkaian blok-blok counter yang cukup panjang sebagai input, diterapkan pada
payload dan secara terpisah diterapkan juga pada MAC. Data yang dihasilkan disebut
ciphertext, dinyatakan dengan C, merupakan output proses generation-encryption. Proses ini telah mengekspansi ukuran payload
dengan ukuran MAC. Ilustrasi proses
generation-encryption dapat dilihat pada Gambar 6.
8. Proses Decryption-Verification
Berikut ini adalah spesifikasi dari proses
decryption-verification CCM:
¾ Prasyarat:
• algoritma blok (AES)
• kunci K
• fungsi pembangkitan counter
• fungsi pemformatan
• valid panjang MAC Tlen
¾ Input:
• nonce N
• associated data A
• ciphertext C dengan panjang Clen bit
2. Jalankan fungsi pembangkitan
counter untuk membangkitkan blok-blok counter Ctr0, Ctr1,…, Ctrm, lakukan fungsi pemformatan pada (N,
A, P) untuk menghasilkan blok-blok
B0, B1, …, Br.
Gambar 6 Proses generation-encryption CCM.
9. Untuk i = 1 sampai dengan r, lakukan Yj = CIPHK(Bi⊕Yi-1).
10. Jika T ≠ MSBTlen(Yr), maka
kembalikan INVALID, selainnya kembalikan P.
Input proses decryption-verification adalah
ciphertext, string associated data, dan nonce
yang digunakan dalam membangkitkan
ciphertext. Dekripsi modus counter diterapkan pada ciphertext untuk menghasilkan MAC yang bersesuaian dan payload. Jika nonce,
string associated data, dan payload adalah valid, maka string tersebut dibentuk kedalam blok-blok berdasarkan fungsi pemformatan, dan mekanisme CBC-MAC diterapkan untuk memverifikasi MAC. Jika verifikasi berhasil, proses decryption-verification mengembalikan
payload sebagai output; jika tidak, maka hanya pesan error INVALID yang akan dikembalikan. Jika pesan error ini muncul,
payload P dan MAC T tidak akan diketahui. Ilustrasi proses decryption-verification dapat dilihat pada Gambar 7.
METODOLOGI
Untuk mengetahui kinerja algoritma CCM sebagai suatu modus operasi sandi blok dengan fungsi enkripsi terotentikasi, metodologi penelitian yang dilakukan meliputi:
1. Metode telaah pustaka bagi analisis algoritma CCM.
2. Metode pendekatan analisis uji hasil implementasi AES-CCM dalam Matlab versi 6.5 bagi uji implementasi
generation-encryption dan decryption-verification. Analisis ini mencakup uji
running time hasil implementasi serta hubungannya terhadap ukuran payload
dan associated data yang berbeda antara proses generation-encryption dan
decryption-verification algoritma AES-CCM.
3. Metode pendekatan analisis uji hasil implementasi AES-ECB (Giri 2004) bagi uji implementasi enkripsi dan dekripsi. Analisis ini mencakup uji running time
Gambar 7 Proses decryption-verification CCM.
Spesifikasi Implementasi
Implementasi dirancang dengan menggunakan perangkat keras dan lunak sebagai berikut:
Perangkat keras:
1. Prosesor Intel(R) Pentium(R) 4 2.00GHz
2. Memori 256 MB
3. Kapasitas harddisk 80 GB Perangkat lunak:
1. Sistem operasi Windows XP
2. Bahasa pemrograman Matlab versi 6.5
Deskripsi Umum Implementasi
Implementasi akan dirancang dengan dua tujuan utama yaitu:
1. Menyediakan fasilitas uji running time
bagi proses generation-encryption dan
decryption-verification algoritma CCM. 2. Menyediakan fasilitas untuk merekam
hasil uji implementasi tahapan proses algoritma CCM baik generation-encryption, decryption-verification, maupun keduanya. Bentuk rekaman hasil
uji implementasi disajikan dalam bentuk
file teks.
Spesifikasi Uji Implementasi
Uji implementasi AES-CCM dilakukan dengan menggunakan objek kajian file payload berupa teks dengan 32 ukuran berbeda dalam selang 0 byte sampai dengan 1000 byte. Selain itu, terkait dengan fungsi pemformatan input, dalam uji implementasi ini digunakan beberapa nilai a, yaitu a = 0, 8, 16, 24, dan 32 oktet, sedangkan n ditetapkan dengan nilai 7 oktet. Panjang MAC (Tlen) dipilih 64 bit, atau dengan kata lain t bernilai 8 oktet. Pengukuran running time dilakukan untuk setiap perlakuan. Ulangan setiap perlakuan dilakukan sebanyak 10 kali.
Untuk uji implementasi AES-ECB juga dilakukan dengan menggunakan 32 ukuran
file teks yang berbeda dalam selang 1 byte
HASIL DAN PEMBAHASAN
Analisis Algoritma CCM
Algoritma CCM diajukan oleh Doug Whiting, Russ Housley, dan Niels Ferguson pada tahun 2002. Algoritma CCM bergantung pada pemilihan algoritma blok kunci simetrik yang mendasarinya. Dengan demikian, algoritma CCM merupakan sebuah modus operasi algoritma blok. Algoritma blok yang digunakan mendasari CCM merupakan algoritma yang sudah diakui dengan ukuran blok 128 bit. Sampai dengan sekarang satu-satunya algoritma blok 128 bit yang sudah diakui adalah algoritma AES.
Seperti modus operasi lainnya, sebuah kunci rahasia untuk algoritma blok tersebut harus dibangkitkan sebelumnya di antara pihak-pihak yang akan berhubungan. Kunci dibangkitkan acak secara seragam, atau mendekati acak secara seragam sehingga setiap kemungkinan kunci dibangkitkan secara (hampir) equally likely. Sebagai tambahan, kunci harus dibangun oleh suatu metode manajemen kunci yang terjamin. Kunci harus dijaga kerahasiaannya dan hanya digunakan untuk modus CCM. Pada keadaan minimum, sifat keamanan CCM tergantung pada kerahasiaan kunci.
AES merupakan algoritma kriptografi yang didesain untuk beroperasi pada blok pesan 128 bit dan menggunakan variasi blok kunci dengan panjang 128 bit, 192 bit, atau 256 bit. Variasi ukuran kunci mengakibatkan pemilihan penggunaan kunci sulit untuk diprediksi oleh kriptanalis. Ukuran kunci minimum yang mencapai 128 bit mengakibatkan range minimum bagi ruang kunci sebesar 2128, dibandingkan dengan DES yang menggunakan 56 bit kunci, ruang kunci sebesar 256 mengindikasikan AES lebih tahan terhadap serangan exhaustive key search.
AES didesain untuk melakukan proses penyandian secara rahasia dengan tingkat keamanan tak linear dengan kompleksitas waktu seefisien mungkin melalui penggunaan proses-proses transformasi yang ringan dalam implementasi seperti XOR, pergeseran (shift), dan subtitusi. Akan tetapi, invers (proses kebalikan) dari proses-proses tersebut terkadang memiliki efisiensi yang rendah, akibatnya proses dekripsi AES menjadi lambat dalam implementasi. Hal ini ditunjukkan dalam hasil penelitian Giri (2004).
Meskipun demikian, kekurangan ini dapat dihindari oleh algoritma CCM. CCM hanya memerlukan fungsi enkripsi AES baik dalam proses CCM generation-encryption maupun dalam proses CCM decryption-verification. Dengan hanya menggunakan fungsi enkripsi AES dapat mengarah ke penghematan ukuran program CCM atau ukuran perangkat keras (jika CCM diimplementasikan dalam perangkat keras).
Data yang dilindungi CCM terdiri dari tiga elemen, yaitu: Nonce (N), Payload (P), dan
Associated Data (A). Ketiga elemen data ini dibentuk dengan suatu cara yang unik menggunakan sebuah fungsi pemformatan menjadi rangkaian tak-kosong dari blok data input lengkap. Selain fungsi pemformatan, CCM juga memerlukan suatu fungsi pembangkitan counter.
Nilai nonce sebaiknya tak-berulang dengan pengertian bahwa pada sembarang dua pasangan data yang berbeda yang dilindungi oleh CCM selama umur hidup kunci akan diberikan nonce yang berbeda. Sebagai akibatnya, nonce menentukan suatu invokasi (yaitu suatu operasi sandi blok) dalam CCM. Dengan mengasumsikan bahwa tidak terdapat
associated data, atau kalaupun ada, associated data tersebut bernilai kecil, maka dapat dikatakan bahwa jumlah total invokasi dalam CCM tidak akan melebihi 261.
Dari fungsi pemformatan dapat dilihat bahwa parameter nonce n menentukan parameter q, yaitu panjang oktet dari representasi biner panjang oktet payload, karena q = 15 - n. Parameter q menentukan panjang maksimum dari payload dengan p < 28q, maka P terdiri atas oktet-oktet kurang dari 28q, yaitu kurang dari 28q-4 blok-blok 128-bit. Nilai n menentukan jumlah maksimum nonce
yang berbeda, yaitu 28n. Dengan asumsi bahwa associated data bernilai kecil, maka semakin besar nonce akan mengakibatkan panjang maksimum dari payload yang bisa diproteksi CCM menjadi semakin kecil. Namun semakin kecil nonce, maka akan semakin kecil jumlah maksimum nonce yang berbeda.
CCM pada dasarnya menggabungkan dua algoritma kriptografik. Mekanisme pertama adalah CBC-MAC yang memberikan jaminan otentikasi. Jaminan ini berarti musuh tidak dapat dengan mudah memalsukan valid
Algoritma CBC-MAC membangkitkan sebuah nilai MAC yang merupakan nilai otentikasi dari suatu pesan. Suatu nilai MAC memberikan jaminan otentisitas yang lebih kuat daripada suatu nilai checksum atau error detecting code. Verifikasi dari suatu (non-kriptografik) checksum atau error detecting code dirancang hanya untuk mendeteksi modifikasi data yang bersifat kebetulan (accidental), sementara verifikasi dengan MAC, seperti yang digunakan pada CCM, dirancang untuk mendeteksi modifikasi data yang bersifat kebetulan, maupun bersifat disengaja, serta dilakukan oleh pihak yang tak punya kuasa.
Proses CCM generation-encryption akan mengekspansi panjang payload dengan panjang MAC. MAC yang dibangkitkan dalam CCM dinyatakan dengan T. Panjang bit
T, dinyatakan dengan Tlen, merupakan suatu parameter yang ditetapkan untuk semua proses CCM dengan kunci yang diberikan. Nilai Tlen yang semakin besar memberikan jaminan otentisitas yang semakin besar pula. Namun, dengan semakin besar nilai Tlen
maka semakin besar pula ruang penyimpanan untuk ciphertext.
Meskipun fungsi pemformatan yang digunakan dalam penelitian ini memungkinkan Tlen untuk sembarang bilangan bulat kelipatan 16 antara 32 dan 128, namun nilai Tlen yang kurang dari 64 seharusnya tidak digunakan tanpa analisis yang cermat dari resiko penerimaan data tak-otentik sebagai tak-otentik. Secara khusus nilai
Tlen yang lebih kecil dari 64 sebaiknya tidak digunakan kecuali lingkungan protokol atau aplikasi pengontrolan dengan cukup membatasi jumlah kejadian proses decryption-verification bisa mengembalikan pesan error
INVALID, untuk semua implementasi dengan menggunakan kunci yang diberikan. Suatu batasan pada jumlah kejadian dengan output adalah pesan error INVALID sebelum masa hidup kunci berakhir untuk semua implementasi proses decryption-verification
dengan menggunakan kunci tersebut dinyatakan sebagai MaxErrs.
Dengan cara yang sama, untuk nilai Tlen
yang lebih besar, lingkungan protokol atau aplikasi pengontrolan sebaiknya membatasi jumlah input yang tak-otentik yang mungkin dihadirkan pada proses decryption-verification
sampai pada jumlah sepadan dengan nilai dari data yang dilindungi. Probabilitas tertinggi yang dapat diterima untuk sebuah pesan yang
tak-otentik dapat melewati proses decryption-verification ini dinyatakan sebagai Risk. Berdasarkan kedua hal tersebut maka nilai
Tlen harus memenuhi pertidaksamaan berikut ini:
Tlen≥ log2 (MaxErrs / Risk)
(Dworkin 2004).
Sebagai contoh, misalkan sebuah sistem tidak akan menghasilkan pesan INVALID lebih dari 1024 pesan sebelum memberhentikan kunci (yaitu MaxErrs = 210), dan bahwa para pengguna dapat mentolerir sekitar satu dari satu juta kesempatan sistem tersebut dapat menerima pesan tak-otentik (yaitu Risk = 2-20). Dalam hal ini, bisa digunakan nilai Tlen terendah, yaitu 32. Namun, jika MaxErrs = 232 dan Risk = 2-32, maka nilai Tlen sekurang-kurangnya adalah 64.
Untuk kebanyakan aplikasi, Whiting et al.
(2002) merekomendasikan penggunaan Tlen
sekurang-kurangnya adalah 64. Penelitian ini tidak dilakukan dalam suatu aplikasi pengontrolan tertentu sehingga sulit untuk menentukan parameter Risk dan MaxErrs. Oleh karenanya, dalam penelitian ini pun dipilih nilai minimum Tlen yang direkomendasikan yaitu 64 bit sehingga dapat memberikan jaminan otentisitas yang cukup serta ekspansi pesan pun tidak terlalu besar.
Mekanisme kedua dalam CCM adalah modus Counter (CTR) yang memberikan jaminan kerahasiaan. Jaminan ini berarti musuh tidak dapat dengan mudah mengambil sembarang informasi dari ciphertext tanpa adanya akses terhadap kunci rahasia. Tujuan utama seorang musuh dalam hal ini adalah untuk membedakan ciphertext dari “random gibberish”, yaitu bitstring yang dipilih secara acak seragam dari kumpulan semua bitstring
yang mungkin dengan panjang tertentu. Karena nilai nonce selalu berbeda, maka blok pertama dari data terformat dan blok-blok
counter akan selalu baru. Suatu payload yang sama dengan kunci rahasia yang sama pun akan menghasilkan ciphertext yang berbeda jika nonce yang digunakan juga berbeda. Dengan demikian, output ciphertext akan sangat menyerupai “random gibberish” dan pada modus CTR ini tidak terjadi collision
attack atau precomputation attack dapat terjadi di sini. Misalkan musuh memilih nonce
tertentu N0 dan memilih 264 kunci K yang berbeda secara acak. Diasumsikan musuh mengetahui 16 byte pertama dari pesan, maka musuh dapat dengan mudah menghitung suatu
table entry dari masing-masing nilai kunci, membangkitkan pasangan dalam bentuk (K,S1). Musuh lalu pengawasi pengiriman pesan dan collision untuk S1 diharapkan terjadi setelah memeriksa 264 pesan yang dikirim. Dengan cara ini, kunci yang digunakan dapat diketahui oleh musuh. Langkah yang ditempuh adalah sebanyak 264 dan bukan sebanyak ukuran ruang kunci yaitu 2128. Dua senjata yang bisa digunakan untuk melawan serangan ini adalah dengan menggunakan ukuran kunci yang lebih besar serta dengan menggunakan nilai nonce yang selalu baru.
Modus CTR tidak hanya digunakan untuk mengenkripsi payload tetapi juga mengenkripsi MAC. Dengan mengenkripsi MAC maka collision attack pada proses CBC-MAC juga dapat dihindari dan musuh tidak akan memperoleh informasi apapun mengenai hasil CBC-MAC.
Pada proses CCM decryption-verification, seluruh atau sebagian payload tidak boleh dilepaskan sampai nilai MAC telah berhasil diverifikasi. Hal ini dapat mencegah terjadinya chosen-ciphertext attack yang akan mengambil informasi berharga dari kueri proses decryption-verification yang tak-valid.
Dari segi efisiensi, dapat dengan mudah dihitung bahwa penggunaan CCM untuk mengenkripsi dan mengotentikasi payload
kosong, tanpa associated data, membutuhkan dua invokasi. Untuk setiap blok associated data yang ditambahkan dibutuhkan satu invokasi, sedangkan untuk setiap blok
payload yang ditambahkan dibutuhkan dua invokasi. Kasus terburuk adalah ketika
payload dan associated data masing-masing hanya terdiri dari satu oktet. Pada kasus ini, CCM membutuhkan lima invokasi.
Dari struktur CCM yang menggabungkan modus CBC-MAC dengan modus CTR dapat dilihat bahwa CCM bersifat not fully parallelizable. Pemparalelan tidak dapat dilakukan pada proses CBC-MAC namun mungkin untuk dilakukan pada proses CTR. Hal ini bisa dikatakan sebagai salah satu kekurangan CCM. Meskipun demikian, CCM mempunyai kelebihan dari sisi lain. Para perancang CCM tidak akan memberlakukan
paten terhadap algoritma ini. Seluruh hak kekayaan intelektual terhadap algoritma CCM dilepaskan kepada publik.
Dari beberapa hal yang diuraikan di atas dapat diketahui bahwa jika dipandang sebagai modus operasi algoritma blok, CCM memberikan jaminan keamanan yang lebih baik dari modus operasi ECB seperti yang diterapkan pada penelitian Giri (2004) terhadap algoritma blok AES karena selain jaminan kerahasiaan, CCM juga memberikan jaminan otentikasi pesan. Untuk dua blok
plaintext yang sama dengan kunci yang diberikan, modus ECB akan menghasilkan blok ciphertext yang sama. Dengan alasan ini, ECB tidak baik digunakan untuk mengenkripsi plaintext berukuran panjang ataupun untuk suatu aplikasi yang kuncinya digunakan berulang-ulang untuk mengenkripsi lebih dari satu pesan. Jika hal ini dilakukan maka musuh dapat dengan mudah mematahkannya. Namun dari segi kecepatan, secara teoritis dapat dikatakan bahwa ECB lebih baik dari CCM karena dalam ECB hanya terdapat satu proses enkripsi algoritma blok dan tidak terdapat chaining di dalamnya, sedangkan dalam CCM terjadi dua proses yaitu otentikasi dengan CBC-MAC dan enkripsi dengan CTR, serta di dalam CBC-MAC terdapat proses chaining. Selain itu, struktur ECB yang memungkinkan pemrosesan secara paralel semakin dapat meningkatkan kecepatan algoritma ECB.
Berdasar analisis dapat dikatakan bahwa CCM didesain untuk mendapatkan kerahasiaan dan otentikasi pesan secara simultan menggunakan sebuah kunci rahasia. Kebutuhan akan hanya fungsi forward cipher
dari algoritma blok yang mendasari CCM menjadikan ukuran kode implementasi CCM yang lebih kecil. Meskipun demikian, beberapa timbal balik kinerja pada proses-proses dalam CCM harus dipikirkan terlebih dahulu sebelum mengaplikasikan algoritma ini. Semakin besar nonce, maka akan semakin kecil panjang maksimum dari payload yang bisa diproteksi CCM. Semakin kecil nonce, maka akan semakin kecil jumlah maksimum
nonce yang berbeda. Semakin besar nilai Tlen
akan memberikan jaminan otentisitas yang semakin besar pula. Namun, dengan semakin besar nilai Tlen maka semakin besar pula ruang penyimpanan untuk ciphertext.
(big O), yang dilakukan untuk menduga besarnya sumber daya waktu yang dibutuhkan untuk sembarang ukuran input.
a. Analisis Algoritma Proses
Generation-Encryption CCM
Diagram alir proses generation-encryption
CCM dapat dilihat pada Gambar 8. Langkah untuk melakukan proses generation-encryption CCM dengan didasarkan pada algoritma blok AES adalah:
1. Pemformatan input nonce, associated data, dan payload
2. Ekspansi kunci
3. Pembangkitan nilai otentikasi menggunakan algoritma CBC-MAC berdasarkan algoritma blok AES
4. Pembangkitan blok-blok counter
5. Enkripsi nilai otentikasi (hasil pada langkah nomor 3) dan payload
menggunakan algoritma blok AES dengan modus operasi CTR sehingga didapatkan
ciphertext.
Waktu eksekusi pada langkah 1 dan 2 adalah konstan (misal α) karena tidak dipengaruhi ukuran input. Langkah 3 (misal waktu eksekusi = 1) dipengaruhi jumlah blok
data terformat, sehingga untuk input berukuran n1 blok diperlukan waktu 1n1.
Langkah 4 (misal waktu eksekusi = 2)
dipengaruhi jumlah blok payload, sehingga untuk payload berukuran n2 blok diperlukan
waktu 2(n2+1). Langkah 5 (misal waktu
eksekusi = 3) dipengaruhi jumlah blok
counter hasil langkah 4 sehingga diperlukan waktu sebesar 3(n2+1).
Secara keseluruhan, waktu eksekusi
generation-encryption CCM adalah 1n1 + 2(n2+1) + 3(n2+1) + α, dengan 1, 2, 3 dan α
adalah suatu konstanta; n1 adalah jumlah blok
data terformat dan n2 adalah jumlah blok
counter. Notasi О untuk kasus terburuk proses
generation-encryption CCM adalah:
GE(CCM) = 1n1 + 2(n2+1) + 3(n2+1) + α
Didapatkan kompleksitas GE(CCM) adalah
dalam lingkup О(n).
b. Analisis Algoritma Proses
Decryption-Verification CCM
Diagram alir proses decryption-verification CCM dapat dilihat pada Gambar 9. Langkah untuk melakukan proses
decryption-verification CCM dengan didasarkan pada algoritma blok AES adalah:
Gambar 8 Diagram alir proses generation-encryption CCM.
Gambar 9 Diagram alir proses decryption-verification CCM.
1. Pembangkitan blok-blok counter
2. Ekspansi kunci
3. Dekripsi ciphertext menggunakan algoritma blok AES dengan modus operasi CTR sehingga didapatkan payload
4. Pemformatan input nonce, associated data, dan payload
5. Pembangkitan nilai otentikasi menggunakan algoritma CBC-MAC berdasarkan algoritma blok AES untuk kemudian dilakukan verifikasi dengan nilai otentikasi yang terdapat pada
ciphertext sehingga diperoleh payload
terverifikasi.
Langkah 1 (misal waktu eksekusi = 1)
dipengaruhi jumlah blok input ciphertext, sehingga untuk input berukuran n1 blok
diperlukan waktu 1(n1+1). Waktu eksekusi
pada langkah 2 dan 4 adalah konstan (misal β) karena tidak dipengaruhi ukuran input.
Langkah 3 (misal waktu eksekusi = 2)
dipengaruhi jumlah blok counter hasil langkah 1 sehingga diperlukan waktu 2(n1+1).
Langkah 5 (misal waktu eksekusi = 3)
dipengaruhi jumlah blok data terformat, sehingga untuk input berukuran n3 blok
diperlukan waktu 3n3.
Secara keseluruhan, waktu eksekusi
decryption-verification CCM adalah 1(n1+1)
+ 2(n1+1) + 3n3 + β, dengan 1, 2, 3, dan β
adalah suatu konstanta; n1 adalah jumlah blok
counter dan n2 adalah jumlah blok data
terformat. Notasi О untuk kasus terburuk proses decryption-verification CCM adalah:
DV(CCM) = 1(n1+1) + 2(n1+1) + 3n3 + β
Didapatkan kompleksitas DV(CCM) adalah
dalam lingkup О(n). Analisis Uji Implementasi
Antarmuka implementasi diberikan pada Lampiran 1. Contoh rekaman uji implementasi deskripsi tahapan proses
generation-encryption dan decryption-verification diberikan pada Lampiran 2.
Uji implementasi CCM dilakukan dengan lima macam percobaan. Setiap percobaan mengambil 32 ukuran file payload berupa teks sebagai objek kajian dalam selang 0 byte
sampai dengan 1000 byte, dengan n ditetapkan dengan nilai 7 serta t ditetapkan dengan nilai 8. Untuk tiap percobaan diberikan nilai a yang berbeda, secara berturut-turut yaitu a = 0, 8, 16, 24, dan 32. Rekapitulasi setiap hasil pengujian secara lengkap diberikan pada Lampiran 3-12.
Tabel 5 berikut memperlihatkan 32 ukuran
payload yang dikaji pada penelitian ini serta ukuran blok counter yang dibangkitkan untuk setiap ukuran payload. Ukuran terkecil blok
counter yang dibangkitkan adalah 16 byte, yaitu 1 blok counter 128-bit. Ukuran terbesar blok counter adalah 1024 byte, yaitu 64 blok
counter 128-bit. Dengan demikian, jumlah invokasi terbesar pada modus CTR adalah sebanyak 26.
Dari setiap percobaan yang dilakukan didapatkan rekapitulasi uji hasil implementasi proses generation-encryption dan decryption-verification yang tercantum pada Tabel 6-10. Masing-masing tabel memuat rekapitulasi rataan running time generation-encryption
(GE) dan decryption-verification (DV) terhadap ukuran data terformat yang berbeda, yaitu payload dan associated data yang telah dibentuk oleh fungsi pemformatan.
Tabel 5 Ukuran payload dan ukuran blok
counter yang dibangkitkan
Payload
Tabel 6 Rekapitulasi rataan running time
generation-encryption dan
Lanjutan Tabel 6
Dari Tabel 6 dapat dilihat bahwa dengan a
= 0, ukuran terkecil data terformat adalah 16
byte, yakni 1 blok 128-bit, sedangkan ukuran terbesar data terformat adalah 1024 byte, yakni 64 blok 128-bit. Jumlah invokasi pada CBC-MAC dalam percobaan yang pertama ini adalah 26. Dengan demikian, jumlah total invokasi pada percobaan pertama adalah sebanyak 2 x 26 = 27. Jumlah ini masih jauh lebih kecil dari batas jumlah invokasi 261.
Tabel 7 Rekapitulasi rataan running time
generation-encryption dan
decryption-verification dengan a = 8, n = 7, dan t = 8 ukuran terkecil data terformat adalah 32 byte, yaitu 2 blok 128-bit, sedangkan ukuran terbesar data terformat adalah 1040 byte, yakni 65 blok 128-bit. Jumlah invokasi pada CBC-MAC dalam percobaan kedua ini adalah 64. Dengan demikian, jumlah total invokasi pada percobaan kedua adalah sebanyak 129, atau dengan kata lain bertambah 1 invokasi dibandingkan pada percobaan pertama.
Tabel 8 Rekapitulasi rataan running time
generation-encryption dan
Lanjutan Tabel 8
Tabel 9 Rekapitulasi rataan running time
generation-encryption dan
decryption-verification dengan a = 24, n = 7, dan t = 8
Dari Tabel 8 dan Tabel 9 dapat ditunjukkan bahwa dengan a = 16 dan a = 24, ukuran terkecil data terformat adalah 48 byte, yaitu 3 blok 128-bit, sedangkan ukuran terbesar data terformat adalah 1056 byte, yakni 66 blok 128-bit. Jumlah invokasi pada CBC-MAC dalam percobaan ketiga dan keempat ini adalah 66. Dengan demikian, jumlah total invokasi pada percobaan ketiga dan keempat adalah sebanyak 130, atau dengan kata lain bertambah 2 invokasi dibandingkan pada percobaan pertama.
Rekapitulasi percobaan kelima ditunjukkan pada Tabel 10. Dengan a = 32, ukuran terkecil data terformat adalah 64 byte, yaitu 4 blok 128-bit, sedangkan ukuran terbesar data terformat adalah 1072 byte, yakni 67 blok 128-bit. Jumlah invokasi pada CBC-MAC dalam percobaan ini adalah 67. Dengan demikian, jumlah total invokasi adalah sebanyak 131, atau dengan kata lain bertambah 3 invokasi dibandingkan pada percobaan pertama.
Tabel 10 Rekapitulasi rataan running time
generation-encryption dan