• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
CAST encryption
 

CAST encryption

on

  • 141 views

 

Statistics

Views

Total Views
141
Views on SlideShare
141
Embed Views
0

Actions

Likes
0
Downloads
2
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    CAST encryption CAST encryption Document Transcript

    • Aris Cahyadi Risdianto - 23210016ET 4085 – Keamanan Jaringan Telekomunikasi CAST-128 Encryption1. PendahuluanAlgoritma ini diciptakan pada tahun 1996 oleh Carlisle Adams dan Stafford Tavares menggunakanprosedur desain Cast; salah satu anggota keluarga dari cipher CAST, Cast-256 (merupakan mantankandidat AES) juga diturunkan dari CAST-128. Menurut beberapa sumber, nama Cast didasarkan padainisial penemunya, meskipun Bruce Schneier laporan klaim penulis bahwa "nama harus menyulapgambar acak" (Schneier, 1996).Algoritma ini mirip dengan kriptografi DES dengan menggunakan sistem Substitusi PermutasiNetwork (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 lemahdan kunci semi-lemah.2. Deskripsi AlgoritmaCAST-128 merupakan kelas algoritma enkripsi yang dikenal sebagai Feistel cipher, yang keseluruhanoperasinya mirip dengan Data Encryption Standard (DES). Algoritma enkripsi yang lengkapdiberikan 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 itupasangan subkey) digunakan secara terbalik untuk menghitung (L0, R0) dari (R16, L16). 1
    • Aris Cahyadi Risdianto - 23210016ET 4085 – Keamanan Jaringan Telekomunikasi Illustration 1: Three Rounds of The CAST-128 Block Cipher2.1 Pairs Round KeysCAST-128 menggunakan sepasang subkeys untuk setiap putarannya: 32-bit Km digunakan sebagaikunci "masking" dan 5-bit Kr digunakan sebagai "Rotasi" tombol.2.2. Non-Identical RoundsAda Tiga buah rounds function yang berbeda digunakan dalam CAST-128. Round tersebut adalahsebagai berikut (dimana "D" adalah input data ke fungsi f dan "Ia" - "Id" adalah byte paling signifikanke bukan paling signifikan dari I). Perhatikan bahwa "+" dan "-" adalah penambahan dan penguranganmodulo 2 ** 32, "^" adalah bitwise XOR, dan "<<<" adalah melingkar kiri shift operasi. 2
    • Aris Cahyadi Risdianto - 23210016ET 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 boxCAST-128 menggunakan delapan kotak substitusi: s-box S1, S2, S3, dan S4 adalah s-box untuk roundfunctions, sedangkan S5, S6, S7, dan S8 adalah s-box untuk key schedule. Meskipun 8 s-boxmemerlukan total 8 KByte ruang penyimpanan, perhatikan bahwa hanya 4 KByte yang diperlukanselama enkripsi aktual / dekripsi karena subkunci biasanya dibangkitkan sebelum setiap inputan data.2.4 Key ScheduleSebagai contoh kunci 128-bit tersebut adalah x0x1x2x3x4x5x6x7x8x9xAxBxCxDxExF, dimana x0mewakili 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 dansimbol "^" 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 - 23210016ET 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 - 23210016ET 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 KeysizeAlgoritma enkripsi Cast-128 telah dirancang untuk memungkinkan ukuran kunci yang dapat bervariasidari mulai 40 bit hingga 128 bit, dengan kenaikan setiap 8-bit (maksudnya ukuran kunci yang diijinkanadalah 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 mendukungbeberapa subset saja dari kunci hanya empat ukuran.Untuk menghindari ambigu bila variabel operasi keysize digunakan, nama Cast-128 adalah dianggapsinonim 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 secaraeksplisit 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