Professional Documents
Culture Documents
Abstrak
Makalah ini membahas mengenai studi dan perbandingan antara algoritma Twofish dan Rijndeal sebagai
algoritma enkripsi kriptografi simetri dengan berbasis cipher block. Meskipun kedua algoritma ini memiliki
basis yang sama yaitu blok cipher , namun keduanya memiliki metode yang berbeda dalam menyandikan
data. Oleh sebab itu, kedua algoritma memiliki berbagai kelebihan dan kekurangan masing-masing dilihat
dari prinsip dasar perancangan algoritma berbasis cipher blok. Hal ini menyebabkan perbedaan dalam
tingkat fleksibilitas, kemangkusan, keamanan algoritma, dan kebutuhan memori. Meskipun dalam
sayembara yang diadakan oleh National Institute of Standards and Technology (NIST), Rijndael menjadi
pemenang, tetapi tetap saja algoritma Twofish memiliki keunggulan dibandingkan dengan Rijndael.
Algoritma Rijndael unggul dalam hal kecepatan dan kesederhanaan kode, tetapi dalam hal tingkat
keamanan algoritma Twofish jauh lebih unggul dibandingkan algoritma Rijndael.
Kata kunci: Rijndael, Twofish, cipher block, National Institute of Standards and Technology (NIST),
Advanced Encryption Standard (AES), enkripsi, dekripsi.
2.2 Prinsip Dasar Algoritma Cipher Block plainteks atau kunci akan menyebabkan
sebanyak mungkin pengaruh pada cipherteks.
Dalam pembuatan algoritma Chiper block
Sebagai contoh, perubahan kecil yang terjadi
terdapat beberapa prinsip yang biasa digunakan.
pada plainteks sebanyak satu atau dua bit akan
9 prinsip yang biasanya diperhatikan dalam
menghasilkan perubahan pada cipherteks yang
pembuatan algoritma chiper block adalah :
tidak dapat diprediksi jumlahnya.
1. Confusion dari Shanon
Sama seperti prinsip confusion dari Shanon
2. Diffusion dari Shanon
prinsip ini menyembunyikan hubungan statistik
3. Chiper berulang (iterative chiper)
antara plainteks, sipherteks, dan kunci sehingga
4. Jaringan feistel (feistel network)
membuat kriptanalis menjadi kesulitan dalam
5. Kunci lemah (weak key)
memecahkan kode.
6. Kotak-S (S-Box)
7. Kotak-P (P-Box)
Prinsip diffusion dari shanon ini biasanya
8. Ekspansi
dilakukan secara berulang-ulang pada sebuah
9. Kompresi
blok tunggal dengan kombinasi yang berbeda-
beda untuk mendapatkan tingkat keamanan yang
2.2.1 Confusion dari Shanon
lebih tinggi.
Prinsip ini menyembunyikan hubungan apapun
yang ada antara plainteks, cipherteks, dan kunci.
Sebagai contoh, pada cipher substitusi seperti 2.2.3 Chiper berulang (iterative chiper)
caesar ciper, hubungan antara cipherteks dan
plainteks mudah diketahui, karena satu huruf Chiper berulang pada prinsipnya adalah fungsi
yang sama pada plainteks diganti dengan satu transformasi sederhana yang mengubah plainteks
huruf yang sama pada cipherteksnya. menjadi cipherteks yang dilakukan secara
berulang-ulang sebanyak sejumlah kali. Pada
Prinsip confusion akan membuat kriptanalis setiap putaran digunakan upa-kunci (subkey) atau
kesulitan dalam mencari pola-pola statistik yang kunci putaran (round key) yang dikombinasikan
muncul pada cipherteks. Confusion yang baik dengan plainteks.
adalah membuat hubungan statistik antara
plainteks, cipherteks, dan kunci menjadi sangat Secara formal, cipher berulang dinyatakan
rumit. sebagai berikut :
1. Bagi blok yang panjangnya n bit menjadi 2.2.5 Kunci Lemah (weak key)
dua bagian, kiri (L) dan kanan (R). Masing- Kunci lemah adalah kunci yang menyebabkan
masing bagian memiliki panjang n/2. (n tidak adanya perbedaan antara enkripsi dan
harus bilangan genap) dekripsi. Dekripsi terhadap cipherteks tetap
menghasilkan plainteks semula, namun enkripsi
2. Definisikan cipher blok berulang dimana dua kali berturut-turut terhadap plainteks akan
hasil dari putaran ke-i ditentukan dari hasil menghasilkan kembali plainteksnya.
putaran sebelumnya (lihat Gambar 1), yaitu
Misalkan KL adalah kunci lemah, E adalah fungsi
Li = Ri+1 enkripsi, D adalah fungsi dekripsi, P adalah
plainteks, dan C adalah cipherteks, maka
Ri = Li – 1 ⊕ f(Ri – 1, Ki) persamaan berikut menunjukan fenomena kunci
lemah:
dalam hal ini,
i = 1, 2, ..., r EKL(P) = C
(r adalah jumlah putaran)
Ki = upa-kunci (subkey) DKL(C) = EKL(C ) = P
pada putaran ke-i
f = fungsi transformasi Cipher blok yang bagus tidak mempunyai kunci
(didalamnya terdapat fungsi lemah. Meskipun demikian, algoritma yang
substitusi, permutasi, dan/atau mempunyai sedikit kunci lemah seperti DES
ekspansi, kompresi) tidak begitu masalah, karena jumlah kunci lemah
itu relatif sangat kecil dibandingkan jumlah
Li - 1 Ri −1 kunci keseluruhan.
1. Dipilih secara acak Teknik ini memperbanyak jumlah bit pada blok
Untuk kotak-S yang kecil, cara pengisian plainteks berdasarkan aturan tertentu, misalnya
secara acak tidak aman, namun untuk kotak- dari 32 bit menjadi 48 bit. Dalam praktek, aturan
S yang besar cara ini cukup bagus. eskpansi dinyatakan dengan tabel.
4. Dihitung secara matematis (math-made) 3.1 Panjang Kunci dan Ukuran Blok Rijndael
Entry di dalam kotak-S dibangkitkan
berdasarkan prinsip matematika yang Rijndael mendukung panjang kunci 128 bit
terbukti aman dari serangan kriptanalis. sampai 256 bit dengan step 32 bit. Panjang kunci
dan ukuran blok dapat dipilih secara independen.
Karena AES menetapkan bahwa ukuran blok
2.2.7 Kotak-P (P-Box)
harus 128 bit, dan panjang kunci harus 128, 192,
Kotak-P adalah matriks yang berisi transformasi dan 256 bit, maka dikenal AES-128, AES-192,
sederhana yang mengacak posisi bit dari suatu AES-256. Setiap blok dienkripsi dalam sejumlah
blok plainteks. putaran tertentu bergantung pada panjang
kuncinya.
Panjang kotak-P ditentukan oleh banyaknya
keluaran yang ingin dihasilkan setelah blok
Secara de-fakto, hanya ada dua varian AES, yaitu terdapat 2128 ≈ 3,4 x 1038 kemungkinan kunci.
AES-128 dan AES-256, karena akan sangat Jika digunakan sebuah mesin dengan semilyar
jarang pengguna menggunakan kunci yang prosesor paralel, masing-masing dapat
panjangnya 192 bit. menghitung sebuah kunci setiap satu pico detik,
Karena AES mempunyai panjang kunci paling maka akan dibutuhkan waktu 1010 tahun untuk
sedikit 128 bit, maka AES tahan terhadap mencoba seluruh kemungkinan kunci.
serangan exhaustive key search dengan teknologi
saat ini. Dengan panjang kunci 128-bit, maka
3.2 Algoritma Rijndael Tabel substitusi dapat dilihat pada
tabel 2, sedangkan ilustrasi ByteSub
Seperti pada DES, Rijndael menggunakan dapat dilihat pada gambar.
substitusi dan permutasi, dan sejumlah putaran.
Untuk setiap putarannya, Rijndael menggunakan b. ShiftRow: pergeseran baris-baris
kunci yang berbeda. Kunci setiap putaran disebut array state secara wrapping. Ilustarsi
round key. Tetapi tidak seperti DES yang ShiftRow dapat dilihat pada gambar.
berorientasi bit, Rijndael beroperasi dalam
orientasi byte sehingga memungkinkan untuk c. MixColumn: mengacak data di
implementasi algoritma yang efisien ke dalam masing-masing kolom array state.
software dan hardware [1]. Ilustarsi MixColumn dapat dilihat
Garis besar algoritma Rijndael yang beroperasi pada gambar.
blok 128-bit dengan kunci 128-bit adalah sebagai
berikut: d. AddRoundKey: melakukan XOR
antara state sekarang dengan round
1. AddRoundKey: melakukan XOR antara key. Ilustarsi AddRoundKey dapat
state awal (plainteks) dengan cipher key. dilihat pada gambar.
Tahap ini disebut juga initial round.
3. Final round: proses untuk putaran
2. Putaran sebanyak Nr – 1 kali. Proses yang terakhir:
dilakukan pada setiap putaran adalah: a. ByteSub.
b. ShiftRow.
a. ByteSub: substitusi byte dengan c. AddRoundKey.
menggunakan tabel substitusi (S-box).
Dengan 16 byte, maka baik blok data dan kunci 3.3 Transformasi SubBytes()
yang berukuran 128-bit dapat disimpan di dalam
ketiga array tersebut (128 = 16 x 8). Transformasi SubBytes() memetakan setiap byte
dari array state dengan menggunakan tabel
Selama kalkulasi plainteks menjadi cipherteks, substitusi S-Box. Tidak seperti DES yang
status sekarang dari data disimpan di dalam mempunyai S-Box berbeda pada setiap putaran,
array of byte dua dimensi, state, yang AES hanya mempunyai satu buah S-Box.
berukuran NROWS x NCOLS. Elemen array
state diacu sebagai S[r,c], dengan 0 ≤ r < 4 Cara pensubstitusian adalah sebagai berikut :
dan 0 ≤ c < Nc (Nc adalah panjang blok dibagi untuk setiap byte pada array state, misalkan S[r,
32). Pada AES, Nc = 128/32 = 4. c] = xy, yang dalam hal ini xy adalah digit
heksadesimal dari nilai S[r, c], maka nilai
Pada awal enkripsi, 16-byte data masukan, in0, substitusinya, yang dinyatakan dengan S’[r, c],
in1, ..., in15 disalin ke dalam array state adalah elemen di dalam S-Box yang merupakan
(direalisasikan oleh fungsi perpotongan baris x dengan kolom y.
Pada setiap putaran, blok source merupakan Serge Vaudenay pertama kali mengajukan
input dari f dan output dari f di-xor kan dengan matriks MDS sebagai elemen dari desain cipher.
blok target setelah keduanya ditukar posisikan Shark and Square menggunakan matriks MDS,
untuk putaran berikutnya yang dilihat pertama kali pada konstruksi
matriks MDS digunakan digunakan pada cipher
Ide ini adalah untuk mendapatkan fungsi f yang Manta 3 yang tidak dipublikasikan.
kemungkinan merupakan algortima enkripsi
yang lemah jika dikerjakan satu kali, akan Twofish menggunakan matriks MDS tunggal
menjadi algoritma enkripsi yang kuat jika 4x4.
dikerjakan secara berulang kali .
4.6 Pseudo-Hadamard Transforms
4.4 S-Boxes
Pseudo-Hadamard transform (PHT) adalah
S-Box adalah tabel substitusi untuk operasi penggabungan sederhana yang berjalan secara
algoritma yang yang tidak linear yang digunakan cepat pada perangkat lunak.
pada kebanyakan block cipher. S-Box memiliki
berbagai fariasi dalam ukuran input maupun Ada dua input yaitu a dan b dari 32-bit PHT
ukuran output dan dapat digunakan baik secara yang terdefinisi sebagai :
acak maupun secara algoritmik.
a0 = a + b mod 2 32
S-Box pertama kali digunakan dalam algoritma b0 = a + 2b mod 2 32
Lucifer, kemudian DES dan selanjutnya pada
kebanyakan algoritma enkripsi yang SAFER menggunakan 8-bit PHTs secara
menggunakan metode blok cipher. extensive untuk proses diffusion. Twofish
menggunakan 32-bit PHT untuk mengacak
Dalam algoritma Twofish s-box yang digunakan output dari dua paralel 32-bit fungsi g. PHT ini
adalah 8 x 8 bit s-box. Twofish memiliki 4 kunci dapat dieksekusi dalam dua opcode pada
yang berbeda. S-box yang digunakan pada kebanyakan mikroprosesor modern, termasuk
algoritma twofish dibangun dengan melakukan keluarga Pentium.
8x8 bit permutasi dengan kunci tertentu.
4.7 Whitening
4.5 MDS Matrices
Whitening, adalah teknik untuk meng-exor kan
Kode maximum distance separable (MDS) material kunci sebelum putaran pertama dan
dalam sebuah field adalah pemetaan linear dari setelah putaran terakhir. Whitening digunakan
field elemen A ke field element B, menghasilkan oleh Merkle dalam Khufu/Khafre, dan secara
vektor komposit dari elemen A + B, dengan independen ditemukan oleh Rivest untuk DES-
properti yang memiliki nilai minimum dari X. Dalam tulisannya, Rivest menyatakan bahwa
elemen bukan nol pada vektor bukan nol whitening meningkatkan keamanan algoritma
setidaknya B + 1. Contohnya jumlah elemen dari keysearch attacks sebagai peringatan pada
antara jarak dua vektor dihasilkan dengan cipher.Dalam serangan pada putaran varian
memetakan paling tidak B + 1. Secara mudah Twofish yang disederhanakan ditemukan bahwa
whitening meningkatkan keamanan untuk
menahan serangan terhadap cipher secara 4.8 Key Schedule
subtansial. Proses whitening akan
menyembunyikan input yang spesifik pada Key schedule adalah schedule yang mengatur
putaran pertama dan terakhir dari fungsi f perubahan key bits menjadi round key yang dapat
terhadap serangan yang dilakukan oleh attacker. digunakan oleh cipher. Twofish membutuhkan
banyak material key dan memiliki key schedule
Twofish melakukan xors 128 bits dari subkey yang lengkap. Untuk mmfasilitasi analisis, key
sebelum putaran pertama Feistel, dan melakukan schedule menggunakan primitif yang sama
xor dengan 128 bit lainnya setelah putaran feistel seperti pada fungsi yang mengalami
terakhir. Subkey ini dikalkulasikan dengan cara pengulangan.
yang sama dengan round sub key tetapi
dilakukan pada tempat yang lain pada chiper.
Ketiga vektor Me, M0, dan S dari basis key 7. Kedua algoritma memiliki keyschedule yang
schedule. terdefinisi.
5. Perbandingan Rijndael dan Twofish Selain persamaan tentu saja terdapat beberapa
perbedaan antara kedua algoritma yang dibahas.
5.1 Dilihat dari prinsip perancangan Perbedaan tersebut diantaranya adalah :
Dilihat dari 9 prinsip dalam pembuatan algoritma 1. Algoritma Rijndael tidak menggunakan
Chiper block yang telah disebutkan sebelumnya, jaringan feistel dalam algoritmanya sehingga
terdapat beberapa persamaan dan perbedaan algoritma tampak lebih sederhana
antara perancangan algoritma Rijndael dan
Twofish. 2. Algoritma twofish menggunakan prinsip
MDS Matrices dan Pseudo-Hadamard
Persamaan diantara algoritma Rijndael dan Transforms sedangkan Rijndael
Twofish : menggunakan mixcolums.
1. Baik algoritma Rijndael maupun algoritma 5.2 Dilihat dari kecepatan, keamanan, dan
Twofish menggunakan prinsip Confusion kesederhanaan
dan Diffusion dari Shanon. Kedua algoritma
telah berhasil manyembunyikan hubungan Perbandingan antara algoritma Rijndael dan
apapun yang ada antara plainteks, twofish dilihat dari segi kecepatan, keamanan
cipherteks, dan kunci. Untuk kedua dan kesederhanaan kode dapat dilihat pada tabel
algoritma, perubahan pada 1 bit plainteks berikut :
juga menyebabkan banyak pengaruh pada
cipherteks.
Speed Speed Safety Simplicity
Cipher
(32) (8) Factor (Code Size)
2. Prinsip Chiper berulang (iterative chiper)
Rijndael 18 20 1.11 98 KB
yang pada prinsipnya mengulangi proses
Twofish 16 18 2.67 104KB
enkripsi beberapa kali dengan kunci yang
berbeda dilakuan baik pada algoritma
Twofish maupun pada Algoritma Rijndael. Dari tabel tersebut maka dapat disimpulkan
bahwa algoritma Rijndael unggul dalam hal
3. Kedua algoritma memiliki Kotak-S. kecepatan dan kesederhanaan kode, tetapi dalam
Meskipun demikian algoritma Rijndael hal tingkat keamanan algoritma Twofish jauh
hanya memiliki satu kotak-S sedangkan lebih unggul dibandingkan algoritma Rijndael.
algoritma Twofish memiliki banyak kotak s
yang dibangkitkan secara otomatis. 6. Kesimpulan
4. Kedua algoritma tidak memanfaatkan Kesimpulan yang dapat dimbil dari studi
prinsip P-Box dalam merancang algoritma perbandingan antara algoritma Rijndael dan
untuk transformasi. Akan tetapi algoritma twofish diantaranya adalah :
menggunakan metode lain yaitu dengan
fungsi tertentu untuk melakukan 1. Kedua algoritma memanfaatkan prinsip
transformasi dan permutasi. prinsip Confusion dan Diffusion dari
Shanon.
5. Kedua algoritma tidak melakukan proses 2. Baik pada algoritma Rijndael maupun
ekspansi maupun kompresi. Pada algoritma Twofish, dilakukan prinsip cipher
Twofish hanya terdapat padding untuk kunci berulang dan keduanya memiliki S-Box
yang kurang dari 256. 3. Kedua algoritma tidak memanfaatkan
prinsip P-Box dan sebagai gantinya
menggunakan metode lain untuk proses
transformasi.
4. Pada kedua algoritma tidak terdapat [7] Schneier, Bruce. (1998). Two_fish: A 128-
proses ekspansi maupun kompresi. Bit Block Cipher,
5. Kedua algoritma tidak memiliki weak http://www.schneier.com/paper-twofish-
key. paper.pdf.
6. Kedua algoritma memiliki keyschedule. Tanggal Akses : 27 September 2006 pukul
7. Pada algoritma Rijndael dikenal istilah 08:00.
mixcolums.
8. Pada algoritma twofish dikenal istilah [8] Schneier, Bruce. (1999). New Result on the
MDS Matrices dan Pseudo-Hadamard Twofish Encryption Algorithm,
Transforms http://www.tropsoft.com/strongenc/twofish.
9. Algoritma Rijndael tidak menggunakan pdf.
jaringan feistel sedangkan algoritma Tanggal Akses : 8 Oktober 2006 pukul
twofish menggunakan jaringan feistel. 16:30.
10. Algortima Rijndael unggul
dibandingkan dengan algoritma Twofish
jika dilihat dari segi kecepatan dan
kesederhanaan algoritma.
11. Dalam hal tingkat keamanan data
algoritma Twofish jauh lebih unggul
jika dibandingkan dengan algoritma
Rijndael.
DAFTAR PUSTAKA
[3] http://en.wikipedia.org/wiki/Advanced_Encr
yption_Standard
Tanggal Akses : 8 Oktober 2006 pukul
16.30
[4] http://en.wikipedia.org/wiki/Twofish
Tanggal Akses : 8 Oktober 2006 pukul
16.30