• Tidak ada hasil yang ditemukan

Analisis algoritma dan kinerja pada counter dengan CBC-MAC(CCM) sebagai fungsi enkripsi terotentikasi

N/A
N/A
Protected

Academic year: 2017

Membagikan "Analisis algoritma dan kinerja pada counter dengan CBC-MAC(CCM) sebagai fungsi enkripsi terotentikasi"

Copied!
62
0
0

Teks penuh

(1)

SEBAGAI FUNGSI ENKRIPSI TEROTENTIKASI

Oleh:

Ratna Purnama Sari

G64101009

DEPARTEMEN ILMU KOMPUTER

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

INSTITUT PERTANIAN BOGOR

(2)

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

(3)

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.

(4)

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

(5)

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).

(6)

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

(7)

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

(8)

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

(9)

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

(10)

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

(11)

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,

(12)

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:

(13)

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

(14)

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

(15)

ciphertext sebelumnya untuk menghasilkan

plaintext. Secara matematis dapat ditulis menjadi:

P1 = IVDK (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= PiKi

(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

(16)

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-1xi ), 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

(17)

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.

(18)

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):

(19)

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

(20)

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.

(21)

Gambar 6 Proses generation-encryption CCM.

9. Untuk i = 1 sampai dengan r, lakukan Yj = CIPHK(BiYi-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

(22)

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

(23)

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

(24)

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

(25)

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.

(26)

(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

(27)

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

(28)

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

(29)

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

Gambar

Gambar 1  Modus operasi ECB (Stallings 2003).
Gambar 3  Modus operasi CTR (Stallings 2003).
Gambar 5  Algoritma CBC-MAC (Menezes et al. 1996).
Tabel 4  Pemformatan oktet flag dalam Ctri
+7

Referensi

Dokumen terkait

Pada saat melakukan start dengan jarak 45 M mahasiswa melakukan lari dengan cepat namun begitu mendekati papan tolakan kecepatan lari mulai berkurang dan

Pengujian hipotesis dilakukan untuk mengetahui perbedaan tingkat keterikatan karyawan pada perawat yang diberikan pelatihan kebermaknaan kerja (kelompok eksperimen)

Berdasarkan penjelasan diatas dapat disimpulkan dari hasil wawancara anggota bahwa upaya pengurus dalam mensejahterakan anggota baik dari segi, informasi, pelayanan,

Penelitian Pemanfaatan Arus Bawah Sungai sebagai Energi Gerak turbin untuk menghasilkan Listrik”, maka Sebagai dasar teori yang digunakan adalah mengubah energi

Dengan demikian, MKEK adalah lembaga penegak etika profesi kedokteran (kodeki), di samping MKDKI (Majelis Kehormatan Disiplin Kedokteran Indonesia) yakni lembaga

Selanjutnya untuk memberikan arah dan sasaran yang jelas serta sebagai pedoman dan tolok ukur kinerja Pengadilan Negeri Garut diselarsakan dengan arah kebijakan dan

ditandai dengan redaksi-redaksi hadis mereka yang mengindikasikan ketidakpercayaan kaum Syi’ah Imamiyah dengan keotentikan al-Qur’an, Rukun Iman yang berbeda, adanya

Dilihat dari Praktek Konsinyasi Emas di Pegadaian Syariah Ngabean, praktek konsinyasi emas di Pegadaian Syariah cabang Ngabean merupakan layanan titip jual emas di