Marvin Tandy (10120040) 1. Prinsip Confusion dan Diffusion Sebelum membahas mengenai sistem DES dan AES, perlu dibahas terlebih dahulu prinsip diffusion dan confusion yang diperkenalkan Shannon pada tahun 1949. Prinsip confusion mengaburkan hubungan statistik yang ada antara plainteks, cipherteks, dan kunci. Hal ini menyulitkan kriptanalisis yang biasanya memanfaatkan pola-pola statistik yang ada. Sedangkan, prinsip diffusion bertujuan untuk menyebarkan pengaruh satu bit plainteks maupun kunci ke sebanyak mungkin cipherteks. Dengan demikian, perubahan satu bit saja menghasilkan cipherteks yang jauh berbeda. Kedua prinsip ini menjadi dasar dalam pembuatan DES maupun AES. 2. Data Encryption Standard Data Encryption Standard, yang biasa disingkat DES, adalah suatu algoritma sandi blok yang dirancang oleh tim dari IBM sekitar tahun 1974. DES mengenkripsi blok sepanjang 64 bit dengan kunci berukuran 56 bit. DES termasuk ke dalam sandi dengan kunci simetris, yaitu kunci yang sama digunakan untuk enkripsi juga dekripsi. Secara umum, cara kerja DES adalah sebagai berikut: 1. Setiap blok plainteks dikenai permutasi awal (initial permutation/IP). 2. Plainteks hasil permutasi awal kemudian melalui proses enciphering dengan jaringan Feistel sebanyak 16 putaran. 3. Hasil enciphering dikenai invers permutasi awal (IP-1). Skema dari proses di atas dapat dilihat pada gambar berikut. Gambar 1: Skema umum DES 2.1. Permutasi Awal Secara sederhana, permutasi awal IP adalah proses pengacakan posisi dari setiap bit dalam plainteks. Misalnya, plainteks 1234 dapat dipermutasi menjadi 2413, dan invers permutasi dari 2413 adalah 1234. Dalam aplikasinya pada DES, misalkan bit pertama dari plainteks dipermutasi menjadi unsur ke-40. Maka, bit ke-40 hasil keluaran dari proses enciphering akan dipermutasikan menjadi bit pertama. Gambar 2: Ilustrasi cara kerja permutasi awal IP dan invers-nya IP−1 2.2. Jaringan Feistel Sesudah plainteks melalui permutasi awal IP, plainteks tersebut dipecah menjadi dua bagian: bagian kiri L0 dan bagian kanan R0 . Kedua bagian berukuran 32 bit ini kemudian menjadi input dari jaringan Feistel, yang terdiri atas 16 putaran. Di setiap putaran ke-i, bagian kanan Ri dimasukkan ke fungsi f . Output dari fungsi f tersebut di-XOR-kan dengan bagian kiri Li . Terakhir, Li dan Ri ditukar (bagian kanan menjadi bagian kiri, dan sebaliknya). Secara iteratif, proses tersebut dapat dijelaskan sebagai: Li = Ri−1 , Ri = Li−1 ⊕ f (Ri−1 , ki ) dengan i = 1, . . . , 16. Setelah putaran ke-16, L16 dan R16 ditukar untuk terakhir kalinya. Di setiap putaran, kunci internal ki dihasilkan menggunakan kunci utama k yang berukuran 56 bit melalui proses pembangkitan kunci. Gambar 3: Satu putaran jaringan Feistel Fungsi f mempunyai peran penting dalam keamanan dari DES. Struktur dari f dapat dilihat pada gambar 4. Pertama-tama, input Ri−1 berukuran 32 bit dipartisi menjadi 8 blok yang masing-masing berukuran 4 bit. Setiap blok sepanjang 4 bit mengalami ekspansi menjadi 6 bit. Proses ini terjadi di tempat yang dinamakan kotak-E, suatu jenis permutasi yang sudah ditetapkan sebelumnya. Akibatnya, input yang awalnya berukuran 32 bit menjadi 48 bit. Berikutnya, hasil ekspansi E(Ri−1 ), di-XOR-kan dengan ki sehingga menghasilkan blok A berukuran 48 bit. Blok A kemudian dibagi ke dalam 8 kelompok, masing-masing 6 bit. Setiap kelompoknya menjadi input untuk proses substitusi oleh 8 matriks substitusi berbeda yang disebut sebagai kotak-S. Output dari tiap kotak-S berukuran 4 bit, yang jika digabungkan menghasilkan blok B sepanjang 32 bit. Artikel ini tidak akan membahas apa yang terjadi dalam kotak-S secara rinci, tetapi yang perlu diperhatikan adalah kedelapan kotak-S ini menambahkan sifat confusion pada DES karena sifatnya yang non-linear. Langkah terakhir dari fungsi f adalah mengenakan suatu matriks permutasi P (kotak-P) pada blok B. Jadi, P(B) adalah output dari fungsi f . Gambar 4: Cara kerja fungsi f 2.3. Pembangkitan Kunci Internal (Key Schedule/Key Expansion) Pada pembahasan sebelumnya, dapat dilihat bahwa ada 16 kunci yang digunakan sebagai input untuk f . Tetapi, kita hanya memiliki 1 kunci saja di awal. Oleh karena itu, butuh suatu mekanisme untuk membangkitkan ke-16 kunci tersebut, yang disebut kunci internal. Sebagai catatan, kunci asal secara formal berukuran 64 bit, di mana kunci tersebut akan dikenakan matriks permutasi yang disebut PC − 1. Matriks PC − 1 akan mereduksi kunci awal menjadi berukuran 56 bit dengan meniadakan bit yang terletak di urutan 8, 16, . . . , 64 (kelipatan 8). Dengan demikian, DES sebenarnya adalah sistem kripto 56 bit. Langkah selanjutnya adalah membagi kunci 56 bit tersebut menjadi dua bagian C0 dan D0 . Kedua bagian tersebut digeser secara siklik mengikuti aturan berikut: • Di putaran ke i = 1, 2, 9, 16, keduanya digeser ke kiri sebanyak 1 bit. • Selain dari putaran yang disebutkan di atas, keduanya digeser ke kiri sebanyak 2 bit. Untuk memperoleh kunci internal berukuran 48 bit, hasil dari pergeseran digabungkan dan dikenakan matriks permutasi PC − 2 yang ditentukan sebelumnya. Matriks PC − 2 akan menghilangkan 8 dari 56 bit yang ada, dan menghasilkan kunci internal k1 . Proses tersebut diulang sebanyak 15 kali lagi untuk mendapatkan kunci-kunci k2 , . . . , k16 . Gambar 5: Proses pembangunan kunci internal DES 2.4. Dekripsi DES Proses dekripsi cipherteks hasil dari DES hanya merupakan kebalikan dari proses enkripsinya. Pertama, kunci internal ditentukan secara mundur dengan memanfaatkan sifat C0 = C16 dan D0 = D16 . Untuk menentukan k16 , mudah dilihat k16 = PC − 2(C16 , D16 ) = PC − 2(C0 , D0 ) = PC − 2(PC − 1(k)) Untuk mendapatkan k15 , dibutuhkan nilai C15 dan D15 . Tapi, C15 dan D15 hanyalah pergeseran kanan dari C16 dan D16 sebanyak 2 bit. Maka, diperoleh hubungan k15 = PC − 2(C15 , D15 ) = PC − 2(RS2 (C16 ), RS2 (D16 )) = PC − 2(RS2 (C0 ), RS2 (D0 )) Hal serupa dapat dilakukan untuk memperoleh k14 , . . . , k1 dengan memperhatikan jumlah bit untuk pergeseran kanan (1 atau 2 bit). Sedangkan, deciphering tiap putaran jaringan Feistel bisa memanfaatkan hubungan kebalikan berikut. Ri−1 = Li Li−1 = Ri ⊕ f (Ri−1 , ki ) = Ri ⊕ f (Li , ki ) 2.5. Keamanan DES Selama bertahun-tahun, DES digunakan sebagai standar untuk suatu sistem kripto yang aman. Tetapi, ruang kunci dari DES sebesar 256 masih dianggap terlalu kecil sehingga rentan terhadap serangan brute force attack yang mudah dilakukan oleh komputer canggih. Hal ini dibuktikan di tahun 1998, seiring dengan harga komponen komputer yang lebih terjangkau, mesin yang diberi nama Deep Crack sukses melakukan serangan dalam waktu 56 jam. Karena kelemahan tersebut, diperlukan perbaikan dari sistem DES. Salah satunya adalah DES berganda, misalnya Triple DES. DES berganda menerapkan prinsip yang sama dengan DES, hanya saja kunci awal yang digunakan ganda atau lebih dari satu, sesuai dengan namanya. 3. Advanced Encryption Standard Mengingat DES yang tidak lagi aman sebagai sistem kripto standar, serta DES berganda yang tidak efisien secara komputasi, US National Institute of Standards and Technology (NIST) mengajukan proposal untuk suatu sistem kripto standar yang lebih aman. Maka, NIST mengadakan sayembara yang terbuka kepada semua orang untuk menciptakan sistem kripto yang baru. Akhirnya, terpilihlah sandi blok Rijndael sebagai pengganti DES, dan disebut sebagai Advanced Encryption Standard (AES). Sebagai catatan, Rjindael mendukung Panjang kunci dan blok plainteks berukuran 128, 192, dan 256 bit. Namun, standar AES saat ini hanya untuk ukuran 128 bit. Serupa dengan DES, AES mengaplikasikan substitusi dan permutasi dalam beberapa putaran, yang setiap putarannya ditentukan oleh kunci internal yang berbeda. Namun, sistem AES beroperasi dalam orientasi byte, berbeda dengan DES yang berorientasi bit. Perbedaan lain yaitu AES tidak memiliki struktur jaringan Feistel. Jaringan Feistel pada DES hanya mengenkripsi setengah dari blok tiap iterasinya (32 bit), sedangkan AES melakukan enkripsi terhadap seluruh 128 bit tiap iterasi. Secara umum, cara kerja AES terdiri dari tiga ‘lapisan’ algoritma yang memanipulasi ke128 bit data 1. Key addition: melakukan XOR antara plainteks dengan kunci (baik kunci internal maupun kunci asal) 2. Byte substitution: substitusi byte menggunakan transformasi kotak-S 3. Diffusion: terdiri dari dua ‘sub-lapisan’ • ShiftRows: melakukan permutasi byte • MixColumn: mengacak blok berukuran 4 byte dengan suatu operasi matriks Gambar 6: Satu putaran enkripsi AES 3.1. Substitusi Byte Untuk memahami cara kerja AES, perlu dipahami bahwa 128 bit awal dibagi menjadi 16 byte A0 , A1 , . . . , A15 , dan ke-16 byte tersebut disusun dalam suatu matriks A berukuran 4 × 4 (tinjau gambar X). Tahap substitusi byte dapat dipandang sebagai proses meng-input A0 , . . . , A15 ke dalam 16 kotak-S yang identik (berbeda dengan DES yang menggunakan 8 kotak-S berbeda). Luaran dari proses tersebut adalah 16 byte B0 , B1 , . . . , B15 , S(Ai ) = Bi . Proses konstruksi dari kotak-S tidak akan dibahas pada artikel ini. Namun, ada dua sifat dari kotak-S yang penting. Pertama, kotak-S adalah satu-satunya unsur dari AES yang tidak linear. Kedua, kotak-S adalah pemetaan yang bijektif sehingga mudah untuk melakukan invers saat proses dekripsi. A0 A4 A8 A12 A1 A5 A9 A13 A2 A6 A10 A14 A3 A7 A11 A15 kotak-S −−−−→ B0 B4 B8 B12 B1 B5 B9 B13 B2 B6 B10 B14 B3 B7 B11 B15 Gambar 7: Proses substitusi dengan kotak-S 3.2. Lapisan Difusi Transformasi ShiftRows melakukan pergeseran ke kiri terhadap byte B0 , B1 , . . . , B15 dalam matriks 4 × 4 menurut aturan berikut: Baris pertama tidak digeser, baris kedua digeser sejauh satu byte, baris ketiga sejauh 2 byte, dan baris terakhir sejauh 3 byte. Luaran dari ShiftRows adalah matriks berikut. B0 B4 B8 B12 B5 B9 B13 B1 ←− pergeseran kiri 1 byte B10 B14 B2 B6 ←− pergeseran kiri 2 byte B15 B3 B7 B11 ←− tulisam kiri 3 byte Langkah berikutnya adalah transformasi MixColumn. Setiap kolom dari matriks keluaran ShiftRows dipandang sebagai suatu vektor kolom. Transformasi MixColumn mengalikan masing-masing vektor kolom dengan suatu matriks berentri konstan, di mana operasinya dilakukan terhadap lapangan Galois GF(28 ). Luaran dari operasi perkalian ini juga berupa empat vektor kolom dan disatukan menjadi suatu matriks, sebut matriks C. Sebagai contoh, kolom pertama dari matriks C diperoleh dengan mengalikan kolom pertama matriks B sebagai berikut. C0 02 03 01 01 B0 C1 01 02 03 01 B5 = C 01 01 02 03 B 2 10 C3 03 01 01 02 B15 Entri 01, 02, dan 03 pada matriks pengalinya merujuk pada polinom 1, x, dan x+1 pada GF(28 ). 3.3. Pembangkitan Kunci Internal AES Sama dengan DES, AES perlu membangkitkan kunci internal yang akan di-XOR-kan dengan plainteks. Untuk kunci sepanjang 128 bit, jumlah putaran yang diperlukan untuk menjamin keamanan adalah 10 putaran. Dengan demikian, harus dibangkitkan 11 kunci internal (penambahan 1 untuk plainteks awal). Kesebelas kunci internal akan disimpan di array yang disebut key expansion array, notasikan sebagai W . Tiap unsur arraynya akan menyimpan 1 kata = 32 bit, sehingga W [0],W [1], . . . ,W [43] berperan sebagai tempat penyimpanan dari 11 kunci internal secara berurutan. Notasikan juga K0 , . . . , K15 sebagai byte dari kunci awal. Pertama, karena kunci internal pertama (k0 ) adalah kunci awal, hanya perlu melakukan penyalinan dari kunci awal ke W [0],W [1],W [2], dan W [3]. Unsur lain dari W dihitung mengikuti aturan berikut. Untuk unsur yang terletak di indeks kelipatan 4 (string paling kiri dari tiap kunci internal), W [4i] = W [4(i − 1)] + g(W [4i − 1]) i = 1, 2, . . . , 10. Unsur selain dari itu diperoleh secara rekursif menurut W [4i + j] = W [4i + j − 1] +W [4(i − 1) + j] dengan i = 1, . . . , 10, j = 1, 2, 3. Fungsi g pada persamaan sebelumnya menerima 4 byte sebagai input, merotasikan keempat byte tersebut, mengenakan substitusi kotak-S pada tiap byte, dan menambahkan koefisien RC yang berbeda tiap putaran. Proses pembangkitan kunci ini bisa dilihat pada gambar X. Gambar 8: Mekanisme satu kali pembangkitan kunci internal AES 3.4. Dekripsi AES Secara sederhana, proses dekripsi AES dilakukan dengan melakukan invers pada tiap lapisannya serta kunci internalnya. Pertama, invers pada mekanisme MixColumn hanya perlu mengalikan vektor-vektor kolom yang sebelumnya beranggotakan C0 , . . . ,C15 dengan invers matriks yang digunakan untuk mendapatkan byte B0 , . . . , B15 , di mana seluruh operasi dilakukan terhadap lapangan Galois GF(28 ). B0 , . . . , B15 disusun dalam matriks 4 × 4. Kemudian, invers dari proses ShiftRow juga sangat sederhana, yakni menggeser unsur pada baris tiap matriks ke kanan sebesar 0,1,2,dan 3 byte (berlawanan arah dengan pergeseran awal). Terakhir, invers dari SubstitusiByte hanyalah mengalikan Bi dengan invers dari kotak-S, karena Ai = S−1 (S(Ai )) = S−1 (Bi ) Lagi-lagi, detail dari konstruksi invers matriks kotak-S tidak dibahas pada artikel ini. Sedangkan untuk memperoleh kunci, mengingat kunci internal tidak bergantung pada plainteks, kita bisa melakukan proses pembangkitan kunci internal secara independen. Artinya, seluruh kunci internal dibangkitkan terlebih dahulu sebagaimana di proses enkripsi, hanya saja diterapkan secara mundur saat proses dekripsi. 3.5. Keamanan AES Sistem AES yang mempunyai panjang kunci paling sedikit 128 bit membuatnya unggul dari DES secara keamanan. Khususnya, AES akan tahan terhadap serangan brute force attack dengan teknologi yang ada saat ini. Dengan panjang kunci 128 bit, terdapat 2128 = 3, 4 × 1038 kemungkinan kunci. Suatu komputer tercepat yang dapat mencoba 1 juta kunci setiap detik pun masih akan membutuhkan waktu 5, 4 × 1024 tahun untuk mencoba seluruh kemungkinan kunci. Sejauh ini juga belum ditemukan serangan bersifat analitik yang memiliki kompleksitas kurang dari serangan brute force, sehingga AES masih dikategorikan sebagai standar sistem kripto yang aman hingga hari ini. 4. Referensi Paar, C. and Pelzl, J. (2010) Understanding Cryptography: A Textbook for Students and Practitioners. 1st edn. Berlin, Germany: Springer. Munir, R. (2023) Materi Ajar IF4020 Kriptografi Semester II 2022/2023. Program Studi Teknik Informatika Institut Teknologi Bandung. Diakses dari https://informatika.stei.itb. ac.id/~rinaldi.munir/Kriptografi/2022-2023/kripto22-23.htm Katz, J. and Lindell, Y. (2015) Introduction to Modern Cryptography. 2nd edn. Boca Raton, US: Chapman & Hall/CRC.