3.3 Pemrosesan Data
Konten yang akan dienkripsi akan melalui proses enkripsi AES 128-bit. Kunci AES yang digunakan akan dienkripsi dengan Algoritma Rabin. Pada enkripsi AES 128-bit
terdapat 10 ronde, dimana tiap ronde terjadi proses transformasi yang berbeda-beda tergantung ronde keberapa transformasi tersebut dilakukan. Berikut adalah algoritma
untuk enkripsi AES 128-bit:
Input: P,K {Teks Asli 16 bytes,kunci AES 128 bit} Output:CT {Teks sandi 16 bytes}
Nr,wEkspansiKunciK {Nr: Jumlah ronde=10, w: larik bytes kunci ronde} CT=P
AddRoundKeyCT,w[0..3] For i=1 to Nr do
SubBytesCT ShiftRowsCT
If i ≠Nr then MixColumnsCT
End If AddRoundKeyCT,w[i4…i4+3]
End For
Dari algoritma diatas, bisa dilihat proses enkripsi akan menerima masukan berupa teks asli yang ingin dienkripsi dan kunci AES yang digunakan dan akan menghasilkan
output berupa teks asli yang telah terenkripsi. Sebelum ronde 1 dimulai teks asli dicampur dengan kunci ronde ke-0 Transformasi ini disebut AddRoundKey . Setelah
itu ronde ke-1 sampai dengan ronde ke-Nr-1 dengan Nr adalah jumlah ronde akan menggunakan 4 jenis transformasi, yaitu SubBytes, ShiftRows, MixColumns dan
AddRoundKey. Pada ronde terakhir , yaitu ronde ke-Nr akan menggunakan transformasi serupa dengan ronde lain namun tanpa transformasi MixColumns.
Universitas Sumatera Utara
Misal terdapat plainteks “AESRabin”, kunci AES ”1122334455667788” dan kunci Rabin “77”. Detail transformasi yang digunakan pada proses enkripsi akan
dijelaskan pada bahasan selanjutnya.
3.3.1 KeyExpansion
Sebelum proses enkripsi AES dilakukan, terlebih dahulu akan dikerjakan proses KeyExpansion untuk mendapatkan kunci AES yang digunakan untuk setiap ronde
enkripsi. Misal terdapat kunci “1122334455667788” , untuk mendapatkan kunci ronde ke-1 w[4],w[5],w[6],w[7] dilakukan proses:
Kunci diorganisir menjadi block dalam heksadesimal {31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 }
Block kemudian dibagi menjadi empat word, sehingga w[0]= {31 31 32 32}, w[1]= {33 33 34 34}
w[2]= {35 35 36 36}, w[3]= {37 37 38 38} Dari algoritma KeyExpansion dapat dihitung
w[4] = w[0]XOR SubWordRotWordw[3] XOR RC[1] = 31 31 32 32 XOR C5 30 30 C5 XOR 01 00 00 00
= AA 36 35 A8 w[5] = w[4] XOR w[1]
= AA 36 35 A8 XOR 33 33 34 34 = 99 05 01 9C
w[6] = w[5] XOR w[2] = 99 05 01 9C XOR 35 35 36 36
= AC 30 37 AA
w[7] = w[6] XOR w[3] = AC 30 37 AA XOR 37 37 38 38
= 9B 07 0F 92 Diperoleh kunci ronde ke-1, yaitu
{ AA 36 35 A8 99 05 01 9C AC 30 37 AA 9B 07 0F 92}
Universitas Sumatera Utara
Selanjutnya, proses KeyExpansion ini akan diulang hingga sepuluh kali untuk menghasilkan 10 kunci ronde.
3.3.2 Pre-Round Plainteks akan diorganisir menjadi block heksadesimal sepanjang 16 byte. Apabila
panjang block kurang dari 16, maka akan ditambah karakter notasi heksadesimal “80”
sebagai padding dan notasi “00” pada byte sisa. Sebelum ronde ke-1 dimulai ,
plainteks akan dicampur dengan kunci ronde ke-0 melalui proses AddRoundKey sehingga menghasilkan plainteks dalam bentuk UTF-
8 “70 74 61 14 61 52 56 5D 5B B5 36 36 37 37 38 38
” 3.3.3 SubBytes Transformation
Block plainteks yang didapat dari pre-round selanjutkan diorganisir menjadi state
Dilakukan subtitusi untuk setiap elemen pada state dengan mengacu pada tabel 2.1. Hasil transformasi SubBytes adalah:
3.3.4 ShiftRows Transformation
State keluaran dari proses SubBytes kemudian dikenakan proses ShiftRows seperti ditunjukkan gambar 2.2. Hasil transformasi ShiftRows adalah:
Universitas Sumatera Utara
3.3.5 MixColumn Transformation State keluaran dari proses ShiftRows kemudian dikenakan proses MixColumns dengan
rumus nomor 1. Misal untuk menghitung nilai elemen keluaran
⨁ ⨁
Representasi dalam biner yaitu 9A= 10011010 sehingga
Dalam heksadesimal adalah 2F Representasi
dalam biner yaitu EF= 11101111 sehingga
Dalam heksadesimal adalah 2A
⨁ ⨁
⨁ ⨁ = 70
Selanjutnya proses diatas dilakukan untuk setiap elemen pada state sehingga hasil transformasi MixColumns adalah:
3.3.6 AddRoundKey Transformation
Universitas Sumatera Utara
State keluaran dari proses MixColumns akan dicampur dengan kunci ronde ke-1 dengan operasi eksklusif OR.Hasil dari transformasi AddRoundKey adalah:
Selanjutnya proses SubBytes hingga AddRoundKey akan diulang hingga sepuluh ronde yang akhirnya akan menghasilkan ciphertext
3.3.7 Rabin Encryption Masukan dari proses enkripsi Rabin adalah kunci dari AES 128-bit yaitu
“1122334455667788”. Proses enkripsi akan mengorganisir kunci menjadi array dengan tiap anggota array adalah setiap 2 karakter dari kunci sehingga menjadi {11 22
33 44 55 66 77 88}. Misal kunci publik Rabin n “77” dilakukan proses pada 2 karakter pertama
“11”:
Ubah “1 1” ke dalam nilai ASCII dalam bentuk bilangan biner 1 = 00110001
1 = 00110001
Kedua karakter kemudian digabung menjadi “11000100110001”
Nilai ini kemudian digandakan menjadi “1100010011000111000100110001” lalu dirubah kedalam bentuk bilangan desimal M “206336305”
Gunakan rumus nomor 3 sehingga didapat cipherteks C = 206336305
2
mod 77 = 56
Langkah diatas kemudian dilakukan pada setiap 2 karakter lainnya sehingga menghasilkan kunci AES yang telah dienkripsi {56 23 64 25 60 15 44 70}
Universitas Sumatera Utara
3.4 Perancangan Sistem