際際滷

際際滷Share a Scribd company logo
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
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
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
Aris Cahyadi Risdianto - 23210016
ET 4085  Keamanan Jaringan Telekomunikasi


 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]
 K9 = S5[z3] ^ S6[z2] ^ S7[zC] ^ S8[zD] ^ S5[z9]
 K10 = S5[z1] ^ S6[z0] ^ S7[zE] ^ S8[zF] ^ S6[zC]
 K11 = S5[z7] ^ S6[z6] ^ S7[z8] ^ S8[z9] ^ S7[z2]
 K12 = S5[z5] ^ S6[z4] ^ S7[zA] ^ S8[zB] ^ S8[z6]
 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]
 K13 = S5[x8] ^ S6[x9] ^ S7[x7] ^ S8[x6] ^ S5[x3]
 K14 = S5[xA] ^ S6[xB] ^ S7[x5] ^ S8[x4] ^ S6[x7]
 K15 = S5[xC] ^ S6[xD] ^ S7[x3] ^ S8[x2] ^ S7[x8]
 K16 = S5[xE] ^ S6[xF] ^ S7[x1] ^ S8[x0] ^ S8[xD]
 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]
 K17 = S5[z8] ^ S6[z9] ^ S7[z7] ^ S8[z6] ^ S5[z2]
 K18 = S5[zA] ^ S6[zB] ^ S7[z5] ^ S8[z4] ^ S6[z6]
 K19 = S5[zC] ^ S6[zD] ^ S7[z3] ^ S8[z2] ^ S7[z9]
 K20 = 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]
 K21 = S5[x3] ^ S6[x2] ^ S7[xC] ^ S8[xD] ^ S5[x8]
 K22 = S5[x1] ^ S6[x0] ^ S7[xE] ^ S8[xF] ^ S6[xD]
 K23 = S5[x7] ^ S6[x6] ^ S7[x8] ^ S8[x9] ^ S7[x3]
 K24 = S5[x5] ^ S6[x4] ^ S7[xA] ^ S8[xB] ^ S8[x7]
 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]
 K25 = S5[z3] ^ S6[z2] ^ S7[zC] ^ S8[zD] ^ S5[z9]
 K26 = S5[z1] ^ S6[z0] ^ S7[zE] ^ S8[zF] ^ S6[zC]
 K27 = S5[z7] ^ S6[z6] ^ S7[z8] ^ S8[z9] ^ S7[z2]
 K28 = S5[z5] ^ S6[z4] ^ S7[zA] ^ S8[zB] ^ S8[z6]
 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]

                                             4
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

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
  • 4. Aris Cahyadi Risdianto - 23210016 ET 4085 Keamanan Jaringan Telekomunikasi 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] K9 = S5[z3] ^ S6[z2] ^ S7[zC] ^ S8[zD] ^ S5[z9] K10 = S5[z1] ^ S6[z0] ^ S7[zE] ^ S8[zF] ^ S6[zC] K11 = S5[z7] ^ S6[z6] ^ S7[z8] ^ S8[z9] ^ S7[z2] K12 = S5[z5] ^ S6[z4] ^ S7[zA] ^ S8[zB] ^ S8[z6] 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] K13 = S5[x8] ^ S6[x9] ^ S7[x7] ^ S8[x6] ^ S5[x3] K14 = S5[xA] ^ S6[xB] ^ S7[x5] ^ S8[x4] ^ S6[x7] K15 = S5[xC] ^ S6[xD] ^ S7[x3] ^ S8[x2] ^ S7[x8] K16 = S5[xE] ^ S6[xF] ^ S7[x1] ^ S8[x0] ^ S8[xD] 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] K17 = S5[z8] ^ S6[z9] ^ S7[z7] ^ S8[z6] ^ S5[z2] K18 = S5[zA] ^ S6[zB] ^ S7[z5] ^ S8[z4] ^ S6[z6] K19 = S5[zC] ^ S6[zD] ^ S7[z3] ^ S8[z2] ^ S7[z9] K20 = 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] K21 = S5[x3] ^ S6[x2] ^ S7[xC] ^ S8[xD] ^ S5[x8] K22 = S5[x1] ^ S6[x0] ^ S7[xE] ^ S8[xF] ^ S6[xD] K23 = S5[x7] ^ S6[x6] ^ S7[x8] ^ S8[x9] ^ S7[x3] K24 = S5[x5] ^ S6[x4] ^ S7[xA] ^ S8[xB] ^ S8[x7] 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] K25 = S5[z3] ^ S6[z2] ^ S7[zC] ^ S8[zD] ^ S5[z9] K26 = S5[z1] ^ S6[z0] ^ S7[zE] ^ S8[zF] ^ S6[zC] K27 = S5[z7] ^ S6[z6] ^ S7[z8] ^ S8[z9] ^ S7[z2] K28 = S5[z5] ^ S6[z4] ^ S7[zA] ^ S8[zB] ^ S8[z6] 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] 4
  • 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