Advanced Encryption Standard Antonius C.P.
Bagaimana AES diciptakan? Kompetisi AES Dimulai pada January 1997 oleh NIST Kerjasama 4 tahun antara U.S. Government Private Industry Academia Untuk apa? Menggantikan3DES Menyediakan algoritma enkripsi publik tak terklasifikasi, royalty-free, dan worldwide Antonius C.P. - AES
The Finalists MARS (menggunakan Feistel network) IBM RC6 (menggunakan Feistel network) RSA Laboratories Rijndael (menggunakan SPN) Joan Daemen (Proton World International) and Vincent Rijmen (Katholieke Universiteit Leuven) Serpent (menggunakan SPN) Ross Anderson (University of Cambridge), Eli Biham (Technion), and Lars Knudsen (University of California San Diego) Twofish (menggunakan Feistel network) Bruce Schneier, John Kelsey, and Niels Ferguson (Counterpane, Inc.), Doug Whiting (Hi/fn, Inc.), David Wagner (University of California Berkeley), and Chris Hall (Princeton University) Antonius C.P. - AES
Kriteria Evaluasi (sesuai urutan prioritas) Security Resistance to cryptanalysis, soundness of math, randomness of output, etc. Cost Computational efficiency (speed) Memory requirements Algorithm / Implementation Characteristics Flexibility, hardware and software suitability, algorithm simplicity Antonius C.P. - AES
Pemenang: Rijndael AES mengadopsi sebuah subset Rijndael Rijndael mendukung lebih banyak blok dan ukuran kunci Antonius C.P. - AES
Rounds AES adalah sebuah cipher non-Feistel yang mengenkripsi dan mendekripsi blok data 128 bits. Menggunakan 10, 12, atau 14 rounds. Ukuran kunci bisa 128, 192, atau 256 bit, tergantung banyaknya ronde. Antonius C.P. - AES
Desain Umum enkripsi AES Antonius C.P. - AES
Unit data yang digunakan dalam AES Antonius C.P. - AES
Transformasi block-to-state dan state-to-block Antonius C.P. - AES
Finite Fields AES menggunakan field hingga GF(28) AES menggunakan transformasi aljabar pada field GF(28) dengan irreducible polynomials (x8 + x4 + x3+ x + 1) AES menggunakan field hingga GF(28) b7x7 + b6x6 + b5x5 + b4x4 + b3x3 + b2x2 + b1x + b0 {b7, b6, b5, b4, b3, b2, b1, b0} Notasi byte notation utk elemen: x6 + x5 + x + 1 {01100011} – binary {63} – hex Field ini memiliki operasi aritmatika tersendiri: Penjumlahan Perkalian Antonius C.P. - AES
Aritmatika Field Hingga Penjumlahan (XOR) (x6 + x4 + x2 + x + 1) + (x7 + x + 1) = x7 + x6 + x4 + x2 {01010111} {10000011} = {11010100} {57} {83} = {d4} Perkalian sedikit lebih rumit Antonius C.P. - AES
Perkalian Field Hingga () (x6 + x4 + x2 + x +1) (x7 + x +1) = x13 + x11 + x9 + x8 + x7 + x7 + x5 + x3 + x2 + x + x6 + x4 + x2 + x +1 = x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 +1 dan x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 +1 modulo ( x8 + x4 + x3 + x +1) = x7 + x6 +1. Saling meniadakan Irreducible Polynomial Antonius C.P. - AES
Parameter-parameter AES Nb – banyaknya kolom dalam State Untuk AES, Nb = 4 Nk – banyaknya 32-bit words dalam Key Untuk AES, Nk = 4, 6, atau 8 Nr – banyaknya ronde (function of Nb and Nk) Untuk AES, Nr = 10, 12, atau 14 Also known as block size Antonius C.P. - AES
Metode AES Konversi ke state array Transformasi (dan inversnya) SubBytes - substitusi ShiftRows - permutasi MixColumns AddRoundKey Key Expansion Antonius C.P. - AES
AES-128 Antonius C.P. - AES
Struktur setiap ronde Antonius C.P. - AES
Konversi ke State Array Input block: 4 8 12 1 5 9 13 2 6 10 14 3 7 11 15 S0,0 S0,1 S0,2 S0,3 S1,0 S1,1 S1,2 S1,3 S2,0 S2,1 S2,2 S2,3 S3,0 S3,1 S3,2 S3,3 = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Antonius C.P. - AES
Merubah plaintext ke state Antonius C.P. - AES
Transformasi Untuk meningkatkan security, AES menggunakan 4 tipe transformasi: substitution, permutation, mixing, and key-adding. Antonius C.P. - AES
SubBytes Substitution Transformasi pertama, SubBytes, digunakan pada proses enkripsi. Untuk mensubstitusi sebuah byte, kita menginterpretasikan byte sebagai dua digit hexadecimal. Note Operasi SubBytes melibatkan 16 byte-to-byte transformation yang independen. Antonius C.P. - AES
Transformasi SubBytes Antonius C.P. - AES
S-box Antonius C.P. - AES
S-box Antonius C.P. - AES
S-box InvSubBytes Antonius C.P. - AES
S-box InvSubBytes (Continued) Antonius C.P. - AES
Ganti setiap byte pada state array dengan nilai dari S-Box yang sesuai 00 44 88 CC 11 55 99 DD 22 66 AA EE 33 77 BB FF 55 Antonius C.P. - AES
Contoh SubBytes transformation Antonius C.P. - AES
ShiftRows InvShiftRows Permutasi ShiftRows InvShiftRows Pada dekripsi, transformasi ini disebut InvShiftRows dan arah pergeseran adalah ke kanan. Antonius C.P. - AES
Tiga baris terakhir digeser ke kiri secara siklik. Antonius C.P. - AES
Contoh ShiftRows transformation Antonius C.P. - AES
Mixing MixColumns Kita memerlukan transformasi antar byte yang merubah bit-bit di dalam sebuah byte, berdasarkan bit-bit pada bytes tetangga. Kita perlu mencamurkan byte-byte untuk mencapai diffusion pada level bit. Mixing bytes menggunakan perkalian matriks Antonius C.P. - AES
Constant matriks yang digunakan dalam MixColumns dan InvMixColumns Antonius C.P. - AES
MixColumns Transformasi MixColumns beroperasi pada level kolom; Operasi ini mentransformasikan setiap kolom pada state kepada sebuah kolom baru. MixColumns transformation Antonius C.P. - AES
MixColumns dan InvMixColumns merupakan invers satu sama lain. Ttansformasi InvMixColumns pada dasarnya sama dengan transformasi MixColumns. Note MixColumns dan InvMixColumns merupakan invers satu sama lain. Antonius C.P. - AES
Aplikasikan MixColumn pada setiap kolom S’0,c = ({02} S0,c) ({03} S1,c) S2,c S3,c S’1,c = S0,c ({02} S1,c) ({03} S2,c) S3,c S’2,c = S0,c S1,c ({02} S2,c ) ({03} S3,c) S’3,c = ({03} S0,c) S1,c S2,c ({02} S3,c MixColumns() S0,1 S1,1 S2,1 S3,1 S’0,1 S’1,1 S’2,1 S’3,1 S0,0 S0,1 S0,2 S0,3 S1,0 S1,1 S1,2 S1,3 S2,0 S2,1 S2,2 S2,3 S3,0 S3,1 S3,2 S3,3 S’0,0 S’0,1 S’0,2 S’0,3 S’1,0 S’1,1 S’1,2 S’1,3 S’2,0 S’2,1 S’2,2 S’2,3 S’3,0 S’3,1 S’3,2 S’3,3 Antonius C.P. - AES
Contoh The MixColumns transformation Antonius C.P. - AES
AddRoundKey adalah invers pada dirinya sendiri Key Adding AddRoundKey AddRoundKey memproses satu kolom pada satu waktu. AddRoundKey menambahkan sebuah round key word dengan setiap kolom matriks state; operasi pada AddRoundKey adalah penjumlahan matriks. Note AddRoundKey adalah invers pada dirinya sendiri Antonius C.P. - AES
AddRoundKey XOR setiap byte dari round key dengan corresponding byte pada state array XOR S0,1 S1,1 S2,1 S3,1 S0,0 S0,1 S0,2 S0,3 S1,0 S1,1 S1,2 S1,3 S2,0 S2,1 S2,2 S2,3 S3,0 S3,1 S3,2 S3,3 S’0,1 S’1,1 S’2,1 S’3,1 R0,1 R1,1 R2,1 R3,1 S’0,0 S’0,1 S’0,2 S’0,3 S’1,0 S’1,1 S’1,2 S’1,3 S’2,0 S’2,1 S’2,2 S’2,3 S’3,0 S’3,1 S’3,2 S’3,3 R0,0 R0,1 R0,2 R0,3 R1,0 R1,1 R1,2 R1,3 R2,0 R2,1 R2,2 R2,3 R3,0 R3,1 R3,2 R3,3 Antonius C.P. - AES
AddRoundKey transformation Antonius C.P. - AES
Key Expansion Untuk membangun round key untuk setiap ronde, AES menggunakan sebuah proses key-expansion. Jika banyaknya ronde adalah Nr , routine key-expansion membangun Nr + 1 round key 128-bit dari sebuah cipher key128-bit. Antonius C.P. - AES
Key Expansion Antonius C.P. - AES
Key expansion pada AES Antonius C.P. - AES
Antonius C.P. - AES
Contoh Misal 128-bit cipher key adalah (24 75 A2 B3 34 75 56 88 31 E2 12 00 13 AA 54 87)16. Antonius C.P. - AES
Setiap round key dalam AES tergantung pada round key sebelumnya Setiap round key dalam AES tergantung pada round key sebelumnya. Ketergantungan ini adalah nonlinear karena transformasi SubWord. Penjumlahan konstan ronde juga menjamin bahwa setiap round key akan berbeda dengan yang sebelumnya. Dua himpunan round keys dapat dibangun dari dua cipher keys yang berbeda hanya dalam satu bit saja. Antonius C.P. - AES
Contoh Antonius C.P. - AES
Konsep kunci lemah seperti pada DES tidak berlaku pada AES Konsep kunci lemah seperti pada DES tidak berlaku pada AES. Misal, asumsikan semua bit pada cipher key adalah 0. Berikut adalah words pada beberapa ronde: Words pada pre-round dan round pertama semuanya sama. Pada round kedua, word pertama sama dengan yang ketiga; yang kedua sama dengan yang keempat. Akan tetapi, setelah round kedua, setiap word berbeda. Antonius C.P. - AES
Encryption byte state[4,Nb] state = in AddRoundKey(state, keySchedule[0, Nb-1]) for round = 1 step 1 to Nr–1 { SubBytes(state) ShiftRows(state) MixColumns(state) AddRoundKey(state, keySchedule[round*Nb, (round+1)*Nb-1]) } AddRoundKey(state, keySchedule[Nr*Nb, (Nr+1)*Nb-1]) out = state Mencegah penyerang untuk mengenkripsi atau mendekripsi tanpa kunci. First and last operations involve the key Antonius C.P. - AES
Decryption byte state[4,Nb] state = in AddRoundKey(state, keySchedule[Nr*Nb, (Nr+1)*Nb-1]) for round = Nr-1 step -1 downto 1 { InvShiftRows(state) InvSubBytes(state) AddRoundKey(state, keySchedule[round*Nb, (round+1)*Nb-1]) InvMixColumns(state) } AddRoundKey(state, keySchedule[0, Nb-1]) out = state Antonius C.P. - AES
Encrypt and Decrypt Encryption AddRoundKey SubBytes ShiftRows MixColumns Decryption InvShiftRows InvSubBytes InvMixColumns Antonius C.P. - AES
Ciphers AES menggunakan empat tipe transformasi untuk enkripsi dan dekripsi.. Secara standar, algoritma enkripsi digunakan sebagai cipher dan algoritma dekripsi sebagai invers dari cipher. Antonius C.P. - AES
Ciphers dan inverse ciphers pada desain asli Antonius C.P. - AES
Cipher dan reverse cipher pada desain alternatif Antonius C.P. - AES
Contoh Contoh blok ciphertext yang dibangun dari sebuah blok plaintext menggunakan cipher key yang diseleksi secara random. Antonius C.P. - AES
Contoh (lanjutan) Antonius C.P. - AES
Contoh (lanjutan) Antonius C.P. - AES
Contoh {lanjutan} Antonius C.P. - AES
Entri state pada ronde 7, dalam Contoh sebelumnya Antonius C.P. - AES
Contoh Contoh hasil enkripsi terhadap plaintext semuanya 0, menggunakan cipher key yang digunakan pada Contoh sebelumnya. Antonius C.P. - AES
Contoh Ubah satu bit pada plaintext dan bandingkan hasilnya. Jelas bahwa hasil enkripsi menunjukkan efek diffusion dan confusion. Perubahan satu bit plaintext berpengaruh pada banyak bit ciphertext. Antonius C.P. - AES
Efek penggunakan cipher key yang semua bitnya adalah 0. Contoh Efek penggunakan cipher key yang semua bitnya adalah 0. Antonius C.P. - AES
Security AES didesain setelah DES. Hampir semua serangan yang dikenal dalam DES telah diujikan pada AES. Brute-Force Attack AES lebih tangguh dibandingkan DES karena ukuran kunci yang lebih panjang. Statistical Attacks Berbagai tes gagal melakukan statistical analysis terhadap ciphertext. Differential and Linear Attacks Belum ada differential dan linear attacks pada AES. Antonius C.P. - AES
Implementation AES dapat diimplementasikan pada software dan hardware. Implementasi dapat menggunakan proses atau routine dari tabel lookup yang menggunakan sebuah well-defined struktur aljabar. Antonius C.P. - AES
Simplicity dan Cost Algoritma yang digunakan dalam AES sangat sederhana sehingga dapat diimplementasikan dengan mudah menggunakan processor yang murah dan memori minimal. Antonius C.P. - AES