Pemrosesan Data Implementasi AES dan Rabin pada Aplikasi Klien Surel Perangkat Android

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