Uploaded by marvin t

Rangkuman AES & DES

advertisement
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.
Download