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