Dokumen tersebut membahas algoritma enkripsi CAST-128. Algoritma ini menggunakan sistem Substitusi Permutasi Network (SPN) dengan 16 putaran yang menggunakan 3 jenis fungsi putaran yang berbeda. CAST-128 juga menggunakan delapan kotak substitusi dan algoritma penjadwalan kunci untuk menghasilkan 16 pasang subkunci dari kunci awal 128-bit.
1 of 5
Download to read offline
More Related Content
CAST encryption
1. Aris Cahyadi Risdianto - 23210016
ET 4085 Keamanan Jaringan Telekomunikasi
CAST-128 Encryption
1. Pendahuluan
Algoritma ini diciptakan pada tahun 1996 oleh Carlisle Adams dan Stafford Tavares menggunakan
prosedur desain Cast; salah satu anggota keluarga dari cipher CAST, Cast-256 (merupakan mantan
kandidat AES) juga diturunkan dari CAST-128. Menurut beberapa sumber, nama Cast didasarkan pada
inisial penemunya, meskipun Bruce Schneier laporan klaim penulis bahwa "nama harus menyulap
gambar acak" (Schneier, 1996).
Algoritma ini mirip dengan kriptografi DES dengan menggunakan sistem Substitusi Permutasi
Network (SPN) yang tampaknya memiliki ketahanan yang baik terhadap kripto analisis diferensial,
kripto analisis linear
, dan kripto analisis related-key. Cipher ini juga
memiliki sejumlah properti kriptografi lain yang diinginkan,
termasuk Avalanche , Strict Avalanche Criterion (SAC), Bit
Independence Criterion (BIC), tidak ada complementation property, dan tidak adanya kunci lemah
dan kunci semi-lemah.
2. Deskripsi Algoritma
CAST-128 merupakan kelas algoritma enkripsi yang dikenal sebagai Feistel cipher, yang keseluruhan
operasinya mirip dengan Data Encryption Standard (DES). Algoritma enkripsi yang lengkap
diberikan dalam empat langkah berikut :
INPUT : plain teks m1 ... m64, kunci K = k1 ... k128.
OUTPUT : ciphertext c1 ... C64.
1. (Key Schedule) menghitung 16 pasang subkunci {KMI, Kri} dari K (Lihat Bagian 2.1 dan 2.4
untuk lebih detail).
2. (L0, R0) <- (m1. .. m64). Membagi plaintext ke kiri dan 32-bit kanan bagian L0 = m1 ... m32
dan R0 = M33 ... m64
3. (16 Rounds) untuk i dari 1 sampai 16, menghitung Li dan Ri sebagai berikut:
Li = Ri-1, Ri = Li-1 ^ f (Ri-1, KMI, Kri), dimana f didefinisikan dalam Bagian 2.2 (F adalah
tipe 1, tipe 2, atau Tipe 3, tergantung pada i).
4. c1 ... C64 <- (R16, L16). Mempertukarkan final cipher blok L16, R16 dan menggabungkannya
untuk membentuk ciphertext.
Dekripsi identik dengan algoritma enkripsi yang diberikan di atas, kecuali putaran (dan karena itu
pasangan subkey) digunakan secara terbalik untuk menghitung (L0, R0) dari (R16, L16).
1
2. Aris Cahyadi Risdianto - 23210016
ET 4085 Keamanan Jaringan Telekomunikasi
Illustration 1: Three Rounds of
The CAST-128 Block Cipher
2.1 Pairs Round Keys
CAST-128 menggunakan sepasang subkeys untuk setiap putarannya: 32-bit Km digunakan sebagai
kunci "masking" dan 5-bit Kr digunakan sebagai "Rotasi" tombol.
2.2. Non-Identical Rounds
Ada Tiga buah rounds function yang berbeda digunakan dalam CAST-128. Round tersebut adalah
sebagai berikut (dimana "D" adalah input data ke fungsi f dan "Ia" - "Id" adalah byte paling signifikan
ke bukan paling signifikan dari I). Perhatikan bahwa "+" dan "-" adalah penambahan dan pengurangan
modulo 2 ** 32, "^" adalah bitwise XOR, dan "<<<" adalah melingkar kiri shift operasi.
2
3. Aris Cahyadi Risdianto - 23210016
ET 4085 Keamanan Jaringan Telekomunikasi
Tipe 1: I = ((KMI + D) <<<Kri)
f = ((S1 [Ia] ^ S2 [Ib]) - S3 [Ic]) + S4 [Id]
Tipe 2: I = ((^ KMI D) <<<Kri)
f = (([Ia] S1 - S2 [Ib]) + S3 [Ic]) ^ S4 [Id]
Tipe 3: I = ((KMI - D) <<<Kri)
f = ((S1 [Ia] + S2 [Ib]) ^ S3 [Ic]) - S4 [Id]
Putaran 1, 4, 7, 10, 13, dan 16 menggunakan fungsi f Tipe 1.
Putaran 2, 5, 8, 11, dan 14 menggunakan fungsi f Tipe 2.
Putaran 3, 6, 9, 12, dan 15 menggunakan fungsi f Tipe 3.
2.3 Substitution box
CAST-128 menggunakan delapan kotak substitusi: s-box S1, S2, S3, dan S4 adalah s-box untuk round
functions, sedangkan S5, S6, S7, dan S8 adalah s-box untuk key schedule. Meskipun 8 s-box
memerlukan total 8 KByte ruang penyimpanan, perhatikan bahwa hanya 4 KByte yang diperlukan
selama enkripsi aktual / dekripsi karena subkunci biasanya dibangkitkan sebelum setiap inputan data.
2.4 Key Schedule
Sebagai contoh kunci 128-bit tersebut adalah x0x1x2x3x4x5x6x7x8x9xAxBxCxDxExF, dimana x0
mewakili byte paling signifikan dan XF merupakan byte yang paling tidak signifikan.
Maka Z0 .. zF menjadi intermediate (sementara) byte, sedangkan Si [] merupakan s-box ke i dan
simbol "^" merupakan penambahan XOR.
Maka Subkunci yang terbentuk dari x0x1x2x3x4x5x6x7x8x9xAxBxCxDxExF kunci sebagai berikut.
z0z1z2z3 = x0x1x2x3 ^ S5[xD] ^ S6[xF] ^ S7[xC] ^ S8[xE] ^ S7[x8]
z4z5z6z7 = x8x9xAxB ^ S5[z0] ^ S6[z2] ^ S7[z1] ^ S8[z3] ^ S8[xA]
z8z9zAzB = xCxDxExF ^ S5[z7] ^ S6[z6] ^ S7[z5] ^ S8[z4] ^ S5[x9]
zCzDzEzF = x4x5x6x7 ^ S5[zA] ^ S6[z9] ^ S7[zB] ^ S8[z8] ^ S6[xB]
K1 = S5[z8] ^ S6[z9] ^ S7[z7] ^ S8[z6] ^ S5[z2]
K2 = S5[zA] ^ S6[zB] ^ S7[z5] ^ S8[z4] ^ S6[z6]
K3 = S5[zC] ^ S6[zD] ^ S7[z3] ^ S8[z2] ^ S7[z9]
K4 = S5[zE] ^ S6[zF] ^ S7[z1] ^ S8[z0] ^ S8[zC]
x0x1x2x3 = z8z9zAzB ^ S5[z5] ^ S6[z7] ^ S7[z4] ^ S8[z6] ^ S7[z0]
x4x5x6x7 = z0z1z2z3 ^ S5[x0] ^ S6[x2] ^ S7[x1] ^ S8[x3] ^ S8[z2]
x8x9xAxB = z4z5z6z7 ^ S5[x7] ^ S6[x6] ^ S7[x5] ^ S8[x4] ^ S5[z1]
xCxDxExF = zCzDzEzF ^ S5[xA] ^ S6[x9] ^ S7[xB] ^ S8[x8] ^ S6[z3]
K5 = S5[x3] ^ S6[x2] ^ S7[xC] ^ S8[xD] ^ S5[x8]
K6 = S5[x1] ^ S6[x0] ^ S7[xE] ^ S8[xF] ^ S6[xD]
K7 = S5[x7] ^ S6[x6] ^ S7[x8] ^ S8[x9] ^ S7[x3]
K8 = S5[x5] ^ S6[x4] ^ S7[xA] ^ S8[xB] ^ S8[x7]
3
5. Aris Cahyadi Risdianto - 23210016
ET 4085 Keamanan Jaringan Telekomunikasi
xCxDxExF = zCzDzEzF ^ S5[xA] ^ S6[x9] ^ S7[xB] ^ S8[x8] ^ S6[z3]
K29 = S5[x8] ^ S6[x9] ^ S7[x7] ^ S8[x6] ^ S5[x3]
K30 = S5[xA] ^ S6[xB] ^ S7[x5] ^ S8[x4] ^ S6[x7]
K31 = S5[xC] ^ S6[xD] ^ S7[x3] ^ S8[x2] ^ S7[x8]
K32 = S5[xE] ^ S6[xF] ^ S7[x1] ^ S8[x0] ^ S8[xD]
2.5 Variabel Keysize
Algoritma enkripsi Cast-128 telah dirancang untuk memungkinkan ukuran kunci yang dapat bervariasi
dari mulai 40 bit hingga 128 bit, dengan kenaikan setiap 8-bit (maksudnya ukuran kunci yang diijinkan
adalah 40, 48, 56, 64, ..., 112, 120, dan 128 bit). Spesifikasi untuk pengoperasian keysize variabel,
adalah sebagai berikut:
1) Untuk ukuran kunci kurang dan sama dengan 80 bit (yaitu,, 40, 48, 56 64, 72, dan 80 bit),
algoritma ini sama seperti yang ditetapkan tetapi hanya menggunakan 12 rounds saja, bukan 16
rounds
2) Untuk ukuran kunci lebih besar dari 80 bit, algoritma menggunakan 16 rounds penuh
3) Untuk ukuran kunci kurang dari 128 bit, kunci akan diisi dengan nol byte (di posisi paling
kanan, atau posisi paling tidak signifikan,) dari 128 bit yang kurang (karena Cast-128 key
schedule mengasumsikan kunci input 128 bit).
Perhatikan bahwa meskipun-CAST 128 dapat mendukung semua 12 ukuran kunci terdaftar di atas,
tetapi 40 bit, 64 bit, 80 bit, dan 128 bit adalah ukuran yang ditemukan utilitas di lingkungan typical.
Oleh karena itu, kemungkinan besar akan cukup bagi sebagian besar implementasi untuk mendukung
beberapa subset saja dari kunci hanya empat ukuran.
Untuk menghindari ambigu bila variabel operasi keysize digunakan, nama Cast-128 adalah dianggap
sinonim dengan nama CAST5, yang memungkinkan keysize yang akan ditambahkan tanpa ambiguitas.
Misalnya, Cast-128 dengan kunci 40-bit disebut sebagai CAST5-40, tetapi untuk kunci 128-bit secara
eksplisit harus dimaksudkan, CAST5-128 harus digunakan.
3. Referensi
Internet Engineering Task Force (IETF), RFC 2144, The CAST-128 Encryption Algorithm,
May 1997
English Wikipedia, CAST-128, 2010.
5