Bab ini merupakan bab terakhir dari seluruh rangkaian bab yang ada di laporan skripsi ini, maka dalam bab ini akan termuat kesimpulan dari hasil bahasan seluruh bab serta saran-saran yang dapat bermanfaat dan cukup memiliki alasan yang kuat untuk diperlihatkan serta dipertimbangkan untuk dilaksanakan.
9
BAB II
LANDASAN TEORI
2.1 Tinjauan Pustaka
Pada jurnal ilmiah yang penulis jadikan referensi dijelaskan bahwa algoritma Rijndael merupakan teknik enkripsi simetris yang efisien dan paling aman. Tingkat keamanan yang tinggi serta kecepatan enkripsi dan dekripsi yang sudah terjamin dari berbagai operasi.
Operasi enkripsi dan dekripsi algoritma Rijndael terdiri dari beberapa ronde, dimana jumlah ronde yang dijalani ditentukan oleh panjang kunci yang digunakan. Tiap ronde juga terdiri dari berbagai fungsi yaitu : subBytes,
shiftRows, mixColumns dan addRoundKey (Shiral, et. al. 2015), dimana fungsi –
fungsi tersebut serta cara kerja algoritma Rijndael akan dijelaskan pada dasar teori dibawah.
Berdasarkan penjelasan pada referensi jurnal ilmiah tersebut tidak tertulis bahwa adanya kekurangan dari algoritma ini, oleh karena itu penulis akan membuat sebuah program pengenkripsian data rahasia yang mengimplementasikan algoritma Rijndael sebagaimana proses kerjanya sesuai dengan referensi yang dibaca.
2.2 Teori Dasar Kriprografi
Kriptografi berasal dari bahasa Yunani, Crypto dan Graphia. Cripto berarti rahasia (secret) dan graphia berarti tulisan (writing). Menurut terminologinya, Kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan ketika pesan dikirim dari suatu tempat ke tempat yang lain. Ada 4 (empat) tujuan mendasar dari ilmu kriptografi ini yang juga merupakan aspek keamanan informasi yaitu :
1. Kerahasiaan (confidentiality) adalah layanan yang ditujukan untuk menjaga agar pesan tidak dapat dibaca oleh pihak-pihak yang tidak berhak.
2. Integritas data (data integrity) adalah layanan yang menjamin bahwa pesan masih asli atau belum pernah dimanipulasi selama pengir iman. 3. Otentikasi (authentication) adalah layanan yang berhubungan dengan
identifikasi, baik mengidentifikasi kebenaran pihak - pihak yang berkomunikasi maupun mengidentifikasi kebenaran sumber pesan.
4. Anti-penyangkalan (non-repudiation) adalah layanan yang mencegah entitas yang berkomunikasi melakukan penyangkalan.
Berikut adalah istilah - istilah yang digunakan dalam bidang kriptografi : 1. Plainteks, adalah pesan yang hendak dikirimkan (berisi data asli). 2. Cipherteks, adalah pesan yang merupakan hasil enkripsi
3. Enkripsi (fungsi E), adalah proses pengubahan plainteks menjadi chiperteks
4. Dekripsi (fungsi D), adalah kebalikan dari enkripsi yakni mengubah cipherteks menjadi plainteks, sehingga berupa data awal / asli.
11
5. Kunci, adalah bilangan yang dirahasiakan yang digunakan dalam proses enkripsi dan dekripsi (Wasino, et. al., 2012).
2.3 Sejarah Kriptografi
Kriptografi mempunyai sejarah yang sangat menarik dan panjang. Kriptografi sudah digunakan 4000 tahun yang lalu, diperkenalkan oleh orang – orang Mesir lewat hieroglyph. Jenis tulisan ini bukanlah bentuk standar untuk menulis pesan.
Dikisahkan, pada zaman Romawi Kuno, pada suatu saat Julius Caesar ingin mengirim sebuah pesan kepada salah satu jendralnya melalui seorang kurir. Karena pesan tersebut mengandung rahasia maka Julius mengacak pesan tersebut sedemikian rupa sehingga cuman jendralnya saja yang bisa memahaminya.
Yang dilakukan Julius Caesar adalah mengganti semua susunan alfabet dari a, b, c yaitu a menjadi d, b menjadi e dan seterusnya. Proses pengacakan alphabet disebut dengan enkripsi, sedangkan upaya jendral meyususn kembali alfabet tersebut disebut dengan dekripsi.
Pada zaman Romawi juga telah ada alat pembuat pesan rahasia yang disebut
Scytale. Scytale merupakan suatu alat yang memiliki pita panjang dari daun
papirus dan ditambah dengan sebatang silinder. Mula – mula pengirim pesan menulis pesan pada pita yang digulung pada batang silinder. Setelah itu pita dilepaskan dan dikirim. Untuk membaca pesan yang dikirim, penerima harus melilitkan kembali pita tersebut pada batang silinder yang memiliki diameter yang sama. Kunci pada penyandian scytale adalah diameter batang silinder atau jumlah huruf yang dapat ditulis secara melingkar pada batang silinder.
Gambar 2.1 Scytale
(Sumber: commons.wikimedia.org/wiki/Category:Scytale, 12 Januari 2016)
2.4 Algortima Kriptografi
Algoritma kriptografi dapat diartikan sebagai langkah – langkah logis bagaimana menyembunyikan pesan dari orang yang tidak berhak atas pesan tersebut. Berdasarkan kunci yang dipakai, algoritma kriptografi dapat dibagi menjadi tiga yaitu:
1. Algoritma Simetri 2. Algoritma Asimetri 3. Hash Function.
2.4.1 Algoritma Simetri Kriptografi
Algoritma ini juga disebut dengan algoritma klasik karena memakai kunci yang sama pada proses enkripsi dan dekripsinya. Bila mengirim pesan dengan menggunakan algoritma ini maka si penerima pesan harus diberitahu kunci dari pesan tersebut agar dapat mendekripsikan pesan yang dikirim.
Secara umum, cipher yang termasuk dalam kriptografi simetri beroperasi dalam mode blok (block cipher), yaitu setiap kali enkripsi atau dekripsi dilakukan terhadap satu blok data yang berukuran tertentu , atau beroperasi dalam mode
13
aliran (stream cipher), yaitu setiap kali enkripsi atau dekripsi dilakukan terhadap 1 bit atau 1 byte data.
Gambar 2.2 Algoritma Simetri Kriptografi
(Sumber: erdisusanto.com/2012/10/konsep-dasar-kriptografi-simetris-dan.html, 14 Januari 2016)
Kelebihan kriptografi kunci simetri adalah :
1. Proses enkripsi dan dekripsi membutuhkan waktu yang lebih singkat. 2. Otentikasi pengirim pesan langsung diketahui dari cipherteks yang
diterima, karena kunci hanya diketahui pengirim dan penerima saja. Kelemahan algoritma kunci simetri :
1. Kunci harus dikirim melalui saluran yang aman. 2. Kunci harus sering diubah.
Algoritma kriptografi yang menggunakan kunci simetri diantaranya adalah : 1. Data Encryption Standard (DES),
2. RC2, RC4, RC5, RC6,
3. International Data Encryption Algorithm (IDEA), 4. Advanced Encryption Standard (AES).
5. One Time Pad (OTP), 6. A5, dan lain sebagainya.
2.4.2 Algoritma Asimetri Kriptografi
Algortima asimetri sering disebut dengan algoritma kunci publik, dengan arti kata kunci yang digunakan untuk melakukan enkripsi dan dekripsi berbeda. Pada algoritma asimetri kunci dibagi menjadi dua bagian :
1. Kunci umum (public key), kunci yang boleh semua orang mengetahuinya (dipublikasikan).
2. Kunci pribadi (private key), kunci yang dirahasikan (hanya boleh diketahui oleh satu orang).
Kunci – kunci tersebut saling berhubungan satu dengan lainnya. Dengan kunci publik orang dapat mengenkripsi pesan tapi tidak dapat mendekripsinya, hanya orang yang memiliki kunci pribadi yang dapat mendekripsi pesan tersebut. Algortima asimetri dapat melakukan pengiriman pesan lebih aman daripada algoritma simetri.
Gambar 2.3 Algoritma Asimetri Kriptografi
(Sumber: erdisusanto.com, 14 Januari 2016)
Kelebihan algoritma kunci asimetri :
1. Hanya kunci pribadi yang perlu dijaga kerahasiaannya oleh setiap entitas yang berkomunikasi.
2. Pasangan kunci publik dan pribadi tidak perlu diubah.
15
Kelemahan algoritma kunci asimetri :
1. Proses enkripsi dan dekripsi lebih lambat daripada algoritma kunci simetri. 2. Ukuran cipherteks lebih besar dari plainteks.
3. Ukuran kunci relarif lebih besar daripada ukuran kunci simetri.
Algoritma kriptografi yang menggunakan kunci asimetri diantaranya adalah : 1. Digital Signature Algorithm (DSA),
2. RSA,
3. Diffie-Hellman (DH),
4. Kriptografi Quantum, dan lain sebagainya.
2.4.3 Fungsi Hash
Fungsi Hash sering disebut dengan fungsi satu arah (one-way function), merupakan suatu fungsi matematika yang mengambil masukan panjang variabel dan mengubahnya ke urutan biner dengan panjang yang tetap. Fungsi Hash biasanya diperlukan apabila ingin membuat sidik jari dari suatu pesan. Sidik jari pada pesan menandakan bahwa pesan tersebut benar – benar dari orang yang diinginkan.
2.5 Teknik Dasar Kriptografi
Secara umum kriptografi dibagi menjadi dua berdasarkan teknik yang digunakan yakni kriptografi klasik dan kriptografi modern.
2.5.1 Kriptografi Klasik
Kriptografi klasik merupakan suatu algoritma yang menggunakan satu kunci untuk mengamankan data. Teknik ini sudah digunakan beberapa abad yang lalu. Dua teknik dasar yang biasa digunakan pada algoritma jenis ini adalah :
1. Teknik Subsitusi
Teknik ini bekerja dengan menukar satu karakter dengan karakter yang lain. Langkah pertama adalah membuat sebuah tabel subsitusi. Tidak ada aturan khusus dalam membuat tabel subsitusi, dapat dibuat sesuai keinginan, dengan catatan bahwa penerima pesan memiliki tabel yang sama untuk keperluan dekripsi. Salah satu contoh teknik subsitusi adalah teknik yang digunakan Julius Caesar atau dikenal dengan Caesar Cipher. 2. Teknik Transposisi (Permutasi)
Teknik ini memindahkan atau merotasikan karakter dengan aturan tertentu. Prinsipnya adalah berlawan dengan teknik subsitusi. Dalam teknik subsitusi, karakter berada pada posisi yang tetap tetapi identitasnya yang diacak. Pada permutasi, identitasnya karakternya tetap, namun posisinya yang diacak sebelum dilakukan permutasi. Sebagai contoh : Ada enam kunci yang digunakan untuk melakukan permutasi cipher yaitu:
Untuk mendekripsikan digunakan juga 6 kunci invers cipher yaitu : Posisi Ciphertek s 1 2 3 4 5 6
Posisi Plainteks 3 6 1 5 2 4 Posisi Plainteks 1 2 3 4 5 6 Posisi Cipherteks 3 5 1 6 4 2
17
Sehingga sebuah pesan Plainteks : K R I P T O G R A F I
Terlebih dahulu kalimat tersebut dibagi menjadi 6 blok dan apabila terjadi kekurangan pada blok bisa ditambahkan dengan huruf yang disepakati bersama, misalnya : “X”.
Posisi = 1 2 3 4 5 6 1 2 3 4 5 6
Plainteks = K R I P T O G R A F I X
Cipherteks = I O K T R P A X G I R F
Untuk mendekripsikan cipherteksnya, maka harus melakukan hal yang sama seperti cipher-nya dengan menggunakan kunci invers cipher dari permutasi tersebut. Banyak teknik permutasi lain seperti zig-zag, segitiga, spiral, dan diagonal. Dari kombinasi teknik – teknik inilah yang menjadi dasar dari pembentukan algoritma kriptografi yang dikenal dengan Kriptografi Modern (Ariyus, 2008:68).
.
2.5.2 Kriptografi Modern
Perbedaan kriptografi ini dengan kriptografi klasik adalah pada teknik ini menggunakan perhitungan komputasi atau program dalam pengoperasiannya, yang berfungsi mengamankan data baik yang ditransfer melalui jaringan komputer maupun tidak.
Pada kriptografi ini karakter – karakter yang akan dioperasikan seperti plainteks dan kunci dikonversikan ke dalam suatu urutan digit biner (bit) yaitu 0 dan 1, yang umumnya digunakan untuk skema pengkodean ASCII (American
Contoh penulisan bit (basis dua) dengan basis lainnya yaitu heksadesimal (basis 16) dan desimal (basis 10) dengan empat bit yang menghasilkan bilangan desimal 0-15 dapat dilihat pada tabel dibawah ini.
Tabel 2.1 Representasi Bit, Hexadecimal dan Decimal
(Sumber : amethyst070188.wordpress.com , 20 Februari 2016)
Operasi dasar enkripsi yang menggunakan bit biasanya menggunakan metode kombinasi dua bit yang disebut dengan “XOR” dengan menggunakan notasi “⊕”.
Tabel 2.2 Operasi XOR
(Sumber : Sentot Kromodimoeljo, 2011)
Sebagai contoh dalam bentuk heksadesimal dengan melihaat tabel 2.1 sebagai proses konversi dari heksadesimal ke bit sehingga dapat dioperasikan seperti tabel 2.2 yaitu operasi XOR.
19
Jadi, 09 ⊕ 0D = 04
2.6 Algoritma Rijndael
Algoritma Rijndael yang disosialisasikan oleh National Institute of Standard
and Technology (NIST) pada November 2001 lahir sebagai standar baru enkripsi
yang dikembangkan dai algoritma DES (Data Encryption Standard) melalui seleksi ketat dengan algoritma lainnya. Algoritma ini dicetuskan oleh Vincent Rijmen dan Joan Daemen menjadi pemenang saat lomba seleksi algoritma baru pengganti DES. Alasan utama terpilihnya algoritma ini adalah algritma ini memiliki keseimbangan antara keamanan serta fleksibilitas dalam berbagai
platform software dan hardware (Hanifah Fadhilah, 2012). Evaluasi terhadap Rijndael dijelaskan sebagai berikut :
1. Belum ada jenis serangan yang telah diketahui yang dapat memecahkan algoritma Rijndael.
2. Algoritma ini memakai S-Box nonlinier.
3. Rijndael tidak memakan banyak sumber daya komputasi. Kecepatan antara dekripsi lebih lama daripada enkripsinya.
Algoritma Rijndael menggunakan subsitusi, permutasi dan sejumlah putaran yang dikenakan pada tiap blok yang akan dienkripsi dan dekripsi. Untuk setiap putarannya Rijndael menggunakan kunci yang berbeda. Kunci setiap putaran
disebut round key. Rijndael beroperasi dalam bentuk byte, ukuran blok untuk algoritma Rijndael adalah 128 bit (16 byte). Algoritma Rijndael mempunyai tiga parameter :
1. Plainteks, array yang berukuran 16 byte, yang berisi data masukan. 2. Cipherteks, array yang berukuran 16 byte, yang berisi hasil enkripsi. 3. Kunci, array yang berukuran 16 byte, yang berisi kunci cipher.
Garis besar algoritma Rijndael yang beroperasi pada blok 128 bit dengan kunci 128 bit adalah sebagai berikut :
1. AddRoundKey, melaukan XOR antara state awal (plainteks) dengan cipher
key. Tahap ini juga disebut sebagai initial round.
2. Putaran sebanyak Nr-1 kali. Proses yang dilakukan pada setiap putaran adalah:
a. SubBytes, adalah substitusi byte dengan menggunakan tabel substitusi (S-Box).
b. ShiftRows, dilakukan melalui permutasi byte – byte data dari kolom
array yang berbeda.
c. MixColumns, mengacak data di masing – masing kolom array state. d. AddRoundKey, melakukan operasi XOR antara data dengan kunci. 3. Final Round, proses untuk putaran terakhir :
a. SubBytes b. ShiftRows c. AddRoundKey
21
22
BAB III
ANALISIS DAN PERANCANGAN
3.1 Analisis
Pada bagian ini akan dibahas berbagai macam analisis, yakni analisis kebutuhan fungsional, kebutuhan non-fungsional dan analisis proses kerja algoritma Rijndael.
3.1.1 Analisis Kebutuhan
Kebutuhan merupakan syarat-syarat yang harus dipenuhi oleh sistem atau program yang akan dibangun. Ada dua jenis kebutuhan yang melatar belakangi suatu penelitian yaitu kebutuhan fungsional yang merupakan persyaratan utama yang harus dipenuhi oleh suatu sistem atau program dan kebutuhan non fungsional yang akan menjadi nilai lebih dari suatu sistem atau program bila dipenuhi.
3.1.1.1 Analisis Kebutuhan Fungsional
Adapun beberapa persyaratan fungsional yang harus dipenuhi oleh perangkat lunak adalah sebagai berikut:
1. Perangkat lunak memperbolehkan user meng-input plainteks, cipherteks serta kunci yang diperlukan agar program bisa berjalan.
23
2. Perangkat lunak dapat mengenkripsikan plainteks input-an dari user dan mendekripsikan cipherteks input-an dari user sesuai dengan algoritma
Rijndael.
3. Hasil dekripsi atau cipherteks sesuai dengan pesan awal atau plainteks tanpa ada 1 karakter pun yang berbeda.
3.1.1.2 Analisis Kebutuhan Non-Fungsional
Adapun kebutuhan non-fungsional pada sistem yang akan dirancang adalah sebagai berikut:
1. Perangkat lunak akan memunculkan feedback berupa pop-up message apabila pesan telah selesai dienkripsi maupun didekripsi.
2. Perangkat lunak memperbolehkan user memilih panjang kunci yang diinginkan.
3. Perangkat lunak akan otomatis membatasi panjang kunci yang di-input sesuai dengan pilihan panjang kunci sebelumnya.
4. Input-an plainteks dapat terdiri dari karakter angka, huruf maupun simbol atau kombinasi dari ketiga variasi karakter tersebut.
5. Perangkat lunak menampilkan lamanya waktu enkripsi dan dekripsi pada bagian bawah program.
3.1.2 Analisis Proses
Perangkat lunak yang dirancang menggunakan algoritma Rijndael terdapat 4 proses penting yaitu : SubBytes, ShiftRows, MixColumns dan AddRoundKey. Pada bagian ini akan dibahas dengan rinci cara kerja keempat proses tersebut.
3.1.2.1 Transformasi SubBytes
Transformasi SubBytes memetakan setiap byte dari array state dengan menggunakan tabel substitusi S-Box. Tabel yang digunakan adalah:
Tabel 3.1 S-Box Rijndael
(Sumber : metode-algoritma.com)
Cara pensubstitusian adalah sebagai berikut: jika setiap byte pada array
state S[r,c]=xy, xy adalah digit heksadesimal dari nilai S[r,c], maka nilai
substitusinya dinyatakan dengan S’[r,c], adalah elemen di dalam S-Box yang merupakan perpotongan baris x dengan kolom y.
Gambar 3.1 Transformasi SubByte dengan S-Box
25
Gambar 3.2 Proses SubBytes
(Sumber : metode-algoritma.com)
Gambar 3.3 Hasil SubBytes
(Sumber : metode-algoritma.com)
3.1.2.2 Transformasi ShiftRows
Transformasi ShiftRows melakukan pergeseran secara wrapping pada 3 (tiga) baris terakhir dari array state. Jumlah pergeseran bergantung pada nilai baris r. Baris r=1 digeser sejauh 1 byte, baris r=2 digeser sejauh 2 byte, dan baris r=3 digeser sejauh 3byte. Baris r=0 tidak digeser.
Geser baris ke-1:
Hasil pergeseran baris ke-1 dan geser baris ke-2:
Hasil pergeseran baris ke-2 dan geser baris ke-3:
Hasil pergeseran baris ke-3 :
Gambar 3.5 Proses Transformasi ShiftRows
(Sumber : metode-algoritma.com)
3.1.2.3 Transformasi MixColumns
Transformasi MixColumns mengalikan setiap kolom dari array state dengan matriks yang telah ditetapkan. Matriks yang ditetapkan adalah :
27
Gambar 3.6 Matriks Perkalian MixColumns
Transformasi ini dinyatakan sebagai perkalian matriks :
Gambar 3.7 Transformasi MixColumns
(Sumber : en.wikipedia.org, 10 Januari 2016)
Gambar 3.8 Hasil dari ShiftRows
(Sumber : metode-algoritma.com)
Gambar 3.9 Operasi MixColumns
Gambar 3.10 Hasil Keseluruhan MixColumns
(Sumber : metode-algoritma.com)
3.1.2.4 Transformasi AddRoundKey
Transformasi ini melakukan operasi XOR terhadap sebuah round key dengan array state, dan hasilnya disimpan di array state.
Gambar 3.11 Transformasi AddRoundKey
(Sumber : metode-algoritma.com)
29
Gambar 3.12 Proses Transformasi AddRoundKey
(Sumber : metode-algoritma.com)
3.1.2.5 Ekspansi Kunci
Algoritma Rijndael melaksanakan cipher key dan membuat suatu ekspansi kunci untuk menghasilkan suatu key schedule. Jika ekspansi kunci yang diperlukan Rijndael Nb(Nr+1) word, sehingga bisa digunakan AES 128 bit, maka 4(10+1)=40 word=44x32 bit=1408 bit subkey.
Ekspansi dari 128 menjadi 1408 bit subkey, proses ini disebut dengan key
schedule. Subkey ini diperlukan karena setiap round merupakan suatu inisial dari
Nb word untuk Nr=0 dan Nb untuk Nr=1,3 untuk Nr= 2,....,11 Nb untuk Nr=10, dari operasi ini akan didapatkan schedule kunci yang berisi array linier 4 byte word (wi), 0=i(Nr+1).
Gambar 3.13 Proses Ekspansi Kunci
Contoh dari keseluruhan proses Algoritma Rijndael dapat dilihat pada gambar di bawah ini.
Gambar 3.14 Proses Algoritma Rijndael
31
3.1.2.6 Simulasi Proses Enkripsi
Pada tahap ini akan disimulasikan proses enkripsi algoritma Rijndael pada ronde 0 dan ronde 1. Misalkan plainteks dan kunci yang digunakan adalah masing - masing seperti berikut :
Plainteks : “DEDI ALYANTO2016” Kunci : “RIJNDAEL12345678”
Langkah pertama yang dilakukan adalah mengubah plainteks dan kunci diatas menjadi bentuk hexadecimal dimana proses selanjutnya semua akan menggunakan bentuk hexadecimal. Hasil konversi akan menjadi seperti ini : Plainteks : “40 45 44 49 20 41 4C 59 41 4E 54 4F 32 30 31 36”
Kunci : “52 49 4A 4E 44 41 45 4A 31 32 33 34 35 36 37 38”
Setelah menkonversi plainteks dan kunci ke dalam hexadecimal, maka kita akan susun plainteks dan kunci ke dalam bentuk matriks 4x4 seperti gambar dibawah
44 20 41 32 45 41 4E 30 44 4C 54 31 49 59 4F 36 52 44 31 35 49 41 32 36 4A 45 33 37 4E 4C 34 38
Sebelum memasuki initial round atau round 0, kita terlebih dahulu harus mencari
round key untuk tiap - tiap ronde. Pada ronde 0, subKey-nya sama dengan kunci
yang pertama kali diinput. Pada ronde 0 plainteks akan melalui proses
AddRounKey dimana pada tahap ini terjadi perhitungan XOR antara plainteks
dengan kunci.
Proses XOR terjadi terhadap masing - masing cell pada matriks diatas, contoh matriksTeks[1,1] XOR matriksKunci[1,1] dan matriksTeks[2,1] XOR matriksKunci[2,1], dan seterusnya. Dibawah ini akan disimulasikan proses XOR antara baris ke-1 kolom ke-1 pada masing - masing matriks.
Baris ke-1 kolom ke-1 dari matriks plainteks : 44 Baris ke-1 kolom ke-1 dari matriks kunci : 52
Untuk melakukan XOR terlebih dahulu ubah bentuknya dari hexa ke bentuk biner sehingga seperti dibawah ini.
Baris ke-1 kolom ke-1 dari matriks plainteks (biner 8 bit) : 01000100 Baris ke-1 kolom ke-1 dari matriks kunci (biner 8 bit) : 01010010
Selanjutnya membandingkan kedua parameter tersebut bit per bit sesuai dengan dijelaskan pada tabel 2.2 sehingga menghasilkan
33
Hasil diatas dikonversi balik ke hexa sehingga menghasilkan 44 ⊕ 52 = 16
Bila diteruskan perhitungan XOR terhadap cell - cell berikutnya maka akan mendapatkan hasil seperti ini
16 64 70 07 0C 00 7C 06 0E 09 67 06 07 15 7B 0E
Sampai tahap ini ronde 0 telah selesai, selanjutnya akan dilankutkan ronde ke-1. Sama seperti ronde ke-0, ronde ke-1 juga memerlukan subKey yang juga berukuran 4x4. Pembentukan subKey berhubungan dengan subKey yang terbentuk pada ronde sebelumnya. Semua dijelaskan pada tabel dibawah ini.
Untuk memperoleh kolom ke-i dari matriks 4x4 diperlukan kolom ke i-4 dan i-1 dari round key yang telah ada. Seperti pada tabel diatas, untuk memperoleh kolom pertama dari subKey ke-1 diperlukan kolom pertama dan ke-4 dari subKey ke-0.
Khusus kolom pertama pada tiap round key cara perhitungannya berbeda dengan cara perhitungan pada kolom 2, 3 dan 4. Pertama, ambil kolom Wi-1 kemudian
cell paling atas dipindah ke cell paling bawah atau istilah RotWord.
Setelah itu hasilnya disubsitusi dengan S-Box dimana tata cara substitusinya sudah dijelaskan pada bagian 3.1.2.1. Hasil substitusi dengan S-Box menjadi seperti berikut :
Setelah disubstitusi, maka hasil tersebut akan di-XOR dengan kolom Wi-4 dan kolom pertama dari tabel Rcon dimana terdapat pada bagian 3.1.2.5. Tentunya tata cara XOR juga cell terhadap cell yang urutan baris dan kolomnya sama. Hasil XOR terlihat pada gambar dibawah.
Setelah diperoleh kolom pertama dari subKey ke-1 maka tabel subKey akan terlihat seperti berikut.
35
Sekarang kita akan mencari kolom ke-2 dari subKey ke-1, dimana juga diperlukan kolom i-1 dan i-4 dari tabel subKey. Cara mencari kolom ke-2 lebih sederhana dibandingkan dengan cara mencari kolom pertama, cukup men-XOR-kan kolom i-1 dan i-4 saja. Hasilnya akan seperti ini.
Seterusnya untuk mendapatkan kolom ke-3 dan ke-4 caranya sama dengan kolom yang ke-2. Sehingga hasil keseluruhannya akan seperti ini.
Setelah selesai mendapatkan subKey untuk ronde ke-1 kita akan lanjut ke proses
subBytes. Pada bagian ini kita melakukan proses substitusi S-Box terhadap hasil addRoundKey pada ronde ke-0. Dimana hasilnya adalah sebagai berikut.
Selanjutnya adalah proses shiftRows. Seperti yang sudah dijelaskan pada bagian 3.1.2.2, hasil shiftRows terhadap hasil subBytes yang diperoleh diatas adalah seperti berikut.
Selanjutnya adalah proses mixColumns, pada proses ini, terjadi perkalian matriks 4x4 antara hasil shiftRows yang diperoleh diatas dengan matriks yang telah dijelaskan pada bagian 3.1.2.3. Secara keseluruhan perkalian matriksnya adalah seperti berikut.
Sama seperti perkalian matriks biasa, untuk mendapatkan W11, rumusnya adalah
W11 = (02 * 47) ⊕(03 * 63) ⊕ (01 * 85) ⊕ (01 * AB),
W12 = (02 * 43) ⊕(03 * 10) ⊕ (01 * 6F) ⊕ (01 * C5),
37
Hasilnya keseluruhannya akan seperti berikut.
Selanjutnya adalah proses addRoundKey, sama dengan addRoundKey yang terjadi pada ronde ke-0, pada proses ini hasil mixColumns yang diperoleh diatas di-XOR-kan dengan subKey ronde ke-1 yang kita telah peroleh tadi. Hasilnya adalah seperti berikut.
Berikut merupakan hasil dari ronde ke-1, untuk ronde ke-2 sampai ke-9 ulangi saja proses diatas, dan untuk ronde terakhir atau ronde ke-10, lewati proses
mixColumns. Setelah itu, kita akan mendapatkan hasil enkripsi dari plainteks yang
di-input.
3.2 Perancangan
Pada bagian ini akan dibuat perancangan pada perangkat lunak yang akan dibuat, baik perancangan sistem kerja maupun perancangan tampilan program.
3.2.1 Perancangan Sistem
Sistem ini terdiri dari dua program utama yaitu program enkripsi dan program dekripsi. Si penulis pesan menggunakan program enkripsi untuk mendapatkan cipherteks dan kemudian dikirim ke penerima pesan, kemudian si penerima menggunakan program dekripsi untuk mendekripsikan cipherteks sebelumnya kembali menjadi plainteks. Permodelan sistem dapat dilihat pada
activity diagram dibawah ini.
Gambar 3.15 Permodelan Sistem dalam Activity Diagram
39
Perancangan tampilan program disini dibuat berdasarkan daripada perancangan sistem yang mana sistem ini terdiri dari dua program, yakni program
enkripsi dan dekripsi, maka terdapat juga dua tampilan yaitu program tampilan untuk enkripsi dan dekripsi yang terlihat seperti gambar di bawah ini.
Gambar 3.16 Rancangan Tampilan Form Enkripsi
Keterangan :