Enkripsi pesan rahasia menggunakan Algoritma (Advanced Encription Standard) Aes: Rijndael
ENKRIPSI PESAN RAHASIA MENGGUNAKAN
ALGORITMA (A
dvanced Encryption Standard
)
AES : RIJNDAEL
Muhamad Farid Fachrurozi
PROGRAM STUDI MATEMATIKA JURUSAN MIPA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAM NEGERI
SYARIF HIDAYATULLAH
JAKARTA
2006 M / 1427 H
(2)
ENKRIPSI PESAN RAHASIA MENGGUNAKAN
ALGORITMA (A
dvanced Encryption Standard
)
AES : RIJNDAEL
Skripsi
Sebagai Salah Satu Syarat Untuk Memperoleh Gelar Sarjana Sains
Fakultas Sains dan Teknologi
Universitas Islam Negeri Syarif Hidayatullah Jakarta
Oleh :
Muhamad Farid Fachrurozi
102094026471
PROGRAM STUDI MATEMATIKA JURUSAN MIPA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAM NEGERI
SYARIF HIDAYATULLAH
(3)
2006 M / 1427 H
ENKRIPSI PESAN RAHASIA MENGGUNAKAN
ALGORITMA (A
dvanced Encryption Standard
)
AES : RIJNDAEL
Sebagai Salah Satu Syarat Untuk Memperoleh Gelar Sarjana Sains
Pada Fakultas Sains dan Teknologi
Universitas Islam Negeri Syarif Hidayatullah Jakarta
Oleh :
Muhamad Farid Fachrurozi
102094026471
Menyetujui,
Pembimbing I Pembimbing II
Hermawan Setiawan, M.Si Taufik Edy Sutanto, M.ScTech
NIP. 250 000 505 NIP. 150 377 447
Mengetahui, Ketua Jurusan MIPA
(4)
Dr. Agus Salim, M.Si NIP. 150 294 451
JURUSAN MIPA PROGRAM STUDI MATEMATIKA FAKULTAS SAINS DAN TEKNOLOGI
UIN SYARIF HIDAYATULLAH JAKARTA
Dengan ini menyatakan bahwa skripsi yang ditulis oleh : Nama : Muhamad Farid Fachrurozi
NIM : 102094026471
Program Studi : Matematika
Judul Skripsi : Enkripsi Pesan Rahasia Menggunakan Algoritma (Advanced Encryption Standard ) AES:Rijndael
Dapat diterima sebagai syarat kelulusan untuk memperoleh gelar Sarjana Sains pada Jurusan MIPA Program Studi Matematika, Fakultas Sains dan Teknologi Universitas Islam Negeri Syarif Hidayatullah Jakarta.
Jakarta, Juli 2006 Menyetujui, Dosen Pembimbing
Pembimbing I Pembimbing II
Hermawan Setiawan, M.Si Taufik Edy Sutanto, M.ScTech
(5)
Mengetahui,
Dekan Ketua Jurusan MIPA Fakultas Sains dan Teknologi
Dr. Syopiansyah Jaya Putra, M.Sis Dr. Agus Salim, M.Si NIP. 150 317 965 NIP. 150 294 451
PENGESAHAN UJIAN
Skripsi yang berjudul “Enkripsi Pesan Rahasia Menggunakan Algoritma
(Advanced Encryption Standard ) AES:Rijndael”. Telah diuji dan dinyatakan
lulus dalam sidang Munaqosyah Fakultas Sains dan Teknologi, Universitas Islam Negeri Syarif Hidayatullah Jakarta pada hari Jumat, 14 Juli 2006. Skripsi ini telah diterima sebagai salah satu syarat untuk memperoleh gelar sarjana strata satu (S1) pada Jurusan MIPA Program Studi Matematika.
Jakarta, Juli 2006
Tim Penguji
Penguji I Penguji II
Dr. Agus Salim, M.Si Nur Inayah, S.Pd, M.Si NIP. 150 294 451 NIP. 150 326 911
Mengetahui,
Pembimbing I Pembimbing II
Hermawan Setiawan, M.Si Taufik Edy Sutanto, M.ScTech
(6)
Menyetujui,
Dekan Fakultas Sains dan Teknologi Ketua Jurusan MIPA
Dr. Syopiansyah Jaya Putra, M.Sis Dr. Agus Salim, M.Si NIP. 150 317 965 NIP. 150 294 451
(7)
PERNYATAAN
DENGAN INI SAYA MENYATAKAN BAHWA SKRIPSI INI BENAR-BENAR HASIL KARYA SENDIRI YANG BELUM PERNAH DIAJUKAN SEBAGAI SKRIPSI ATAU KARYA ILMIAH PADA PERGURUAN TINGGI ATAU LEMBAGA MANAPUN.
Jakarta, Juli 2006
Muhamad Farid Facrurozi 102094026471
(8)
ABSTRACT
Muhamad Farid Fachrurozi, Enkripsi Pesan Rahasia Menggunakan Algoritma (Advanced Encryption Standard) AES:Rijndael. (Di bawah bimbingan Hermawan Setiawan dan Taufik Edy Sutanto).
Perkembangan teknologi yang semakin pesat membantu pelayanan masyarakat luas dari segi pengiriman dan penyimpanan data. Dibalik manfaat tersebut ada bahaya yang mengancam yang kurang disadari oleh user (pengguna teknologi) pemula, yaitu penyadapan dan perubahan data. Perlu adanya suatu solusi yang dapat menyikapi dalam menjaga keamanan tersebut, kriptologi merupakan salah satu jawabannya.
Algoritma kriptologi cukup banyak dan berkembang pesat, salah satunya adalah (Advanced Encryption Standard) AES yang dicetuskan oleh Rijmen dan Daemen. Algoritma ini menggunakan 4 teknik yaitu : SubBytes(), ShiftRows(), MixColoums(), dan AddRoundKey().
Keempat teknik ini yang menjadikan AES mempunyai kinerja yang baik, ditunjukan dari segi keamanan, kesederhanaan struktur dan fleksibelitas yang membawa AES sebagai pemenang algoritma paling optimal untuk menggantikan Algoritma (Data Encryption Standard) DES yang pernah popular tahun 80-an.
Key Word : Finite Field GF(28), Algoritma AES:Rijndael, dan Kriptografi.
(9)
ABSTRAK
Muhamad Farid Fachrurozi, Enkripsi Pesan Rahasia Menggunakan Algoritma (Advanced Encryption Standard) AES:Rijndael. (Di bawah bimbingan Hermawan Setiawan dan Taufik Edy Sutanto).
Perkembangan teknologi yang semakin pesat membantu pelayanan masyarakat luas dari segi pengiriman dan penyimpanan data. Dibalik manfaat tersebut ada bahaya yang mengancam yang kurang disadari oleh user (pengguna teknologi) pemula, yaitu penyadapan dan perubahan data. Perlu adanya suatu solusi yang dapat menyikapi dalam menjaga keamanan tersebut, kriptologi merupakan salah satu jawabannya.
Algoritma kriptologi cukup banyak dan berkembang pesat, salah satunya adalah (Advanced Encryption Standard) AES yang dicetuskan oleh Rijmen dan Daemen. Algoritma ini menggunakan 4 teknik yaitu : SubBytes(), ShiftRows(), MixColoums(), dan AddRoundKey().
Keempat teknik ini yang menjadikan AES mempunyai kinerja yang baik, ditunjukan dari segi keamanan, kesederhanaan struktur dan fleksibelitas yang membawa AES sebagai pemenang algoritma paling optimal untuk menggantikan Algoritma (Data Encryption Standard) DES yang pernah popular tahun 80-an.
Kata Kunci : Finite Field GF(28), Algoritma AES:Rijndael, dan Kriptografi.
(10)
KATA PENGANTAR
Sembah dan sujud syukur bagi Dzat Yang Maha Sempurna, yang telah menganugrahkan akal dan memancarkan hidayah-Nya bagi manusia. Ya Robbal Izzatii... terimalah setiap titik keringat dan air mata yang menggenangi perjuangan dalam menyelesaikan studi, khususnya skripsi ini, sebagai satu tanda bukti syukur dan pengabdianku pada-Mu dan jadikan ia pemicu semangat jihadku untuk mencapai Ridho-Mu. Sholawat dan salam bagi Baginda Rosulullah SAW, suri tauladan dalam menjalani hidup ini. Ya Bahjatan nafsii ... semoga Allah memperkenankan ku menatap indah paras dan akhlakmu dan meleburkan kerinduanku padamu kelak di surga-Nya. Amin.
Dengan seluruh daya dan upaya dan atas keridhoan Allah SWT, akhirnya penulis dapat menyelesaikan skripsi ini. Meskipun demikian, penulis sadar bahwa dalam mengerjakannya banyak bantuan dari berbagai pihak. Oleh karena itu pada kesempatan ini penulis ingin mengucapkan terima kasih yang sebesar-besarnya kepada :
1. Ayahanda dan ibunda serta teteh dan adik-adikku tercinta juga seluruh keluarga besarku serta nenek ”nyak” yang selalu memberikan do’a, kasih sayang, dukungan dan semangat yang tiada hentinya.
2. Bapak Dr. Syopiansyah Jaya Putra, M.Sis, Selaku Dekan Fakultas Sains dan Teknologi.
3. Bapak Dr. Agus Salim, M.Si, selaku Ketua Jurusan MIPA dan sekaligus dosen penguji I. Terima kasih atas bimbingan yang telah bapak berikan.
(11)
4. Ibu Nur Inayah, S.Pd, M.Si, selaku Ketua Program Studi Matematika dan sekaligus dosen penguji II yang tidak bosan memberikan nasehat dan semangat kepada penulis.
5. Bapak Hermawan Setiawan, M.Si, selaku dosen pembimbing yang bersama-sama dengan Bapak Taufik Edy Sutanto, M.ScTech telah memberikan bimbingan dan saran-saran tiada letih dalam penyusunan skripsi penulis. 6. Seluruh dosen Jurusan MIPA Program Studi Matematika yang sudah
mengajarkan ilmu-ilmu yang bermanfaat bagi penulis selama penulis kuliah. 7. Seluruh staf akademik Fakultas Sains dan Teknologi diantaranya Pa Gun,
Bu Opah, dan semuanya yang tidak dapat penulis sebutkan satu-persatu, yang dengan sabar melayani masalah administrasi mahasiswa program studi Matematika khususnya penulis sendiri.
8. Pengelola Perpustakaan Fakultas Sains dan Teknologi yang telah memberikan fasilitas untuk mengadakan studi kepustakaan.
9. Teman-teman seperjuangan Matematika angkatan 2002 Andi, Hata, dan Bambang yang mulai menata masa depan. Tidak lupa Abub, Sopi, Mute, Ubed semoga sukses selalu. Untuk Maia, Cie-cie, Anie, Indrie, dan Bulan sebagai team sukses konsumsi serta dadar dan muntiani sekawan sejalan. Spesial untuk Ismah yang menginspirasikan dan memberi semangat selalu. Semua kawan-kawan seatap-selantai yang tidak bisa penulis sebutkan satu per satu.
(12)
10. Adik-adik kelasku Matematika semoga kalian bisa menjaga kerahasiaan data kalian, yang ingin aku katatakan hanya “Maju Trus Kriptografi Ku !!! Semoga kalian bisa meneruskan.!!!! ”.
Penulis menyadari bahwa masih banyak kelemahan dan kekurangan yang terdapat dalam skripsi ini, yang masih harus diperbaiki. Akhir kata penulis berharap semoga skripsi ini dapat bermanfaat bagi kita semua.
Jakarta, Juli 2006
(13)
DAFTAR ISI
HALAMAN JUDUL ... i
HALAMAN PERNYATAAN ... ii
KATA PENGANTAR ... iii
DAFTAR ISI ... vi
DAFTAR TABEL ... ix
DAFTAR GAMBAR ... x
DAFTAR LAMPIRAN ... xi
BAB I. PENDAHULUAN ... 1
1.1. Latar Belakang ... 1
1.2. Perumusan Masalah ... 4
1.3. Batasan Masalah ... 4
1.4. Tujuan Penelitian ... 8
1.5. Sistematika Penulisan ... 9
BAB II. LANDASAN TEORI ... 6
2.1. Kriptografi ... 6
2.1.1. Kriptografi Klasik ... 7
2.1.1.1. Teknik Subtitusi ... 8
2.1.1.2. Teknik Tranposisi (Permutasi) ... 8
(14)
2.1.2.1. Kerahasiaan Data ... 13
2.1.2.2. Integritas Data ... 14
2.1.2.3. Keaslian Data ... 14
2.2. Algoritma ... 15
2.2.1. Algoritma Simetris ... 16
2.2.1.1. Stream Cipher ... 18
2.2.1.2. Block Cipher ... 19
2.2.2. Algoritma Asimetris ... 22
2.3. Operasi Aljabar ... 24
2.3.1. Field GF(28) ... 24
2.3.1.1. Penjumlahan ... 25
2.3.1.2. Perkalian ... 26
2.3.1.3. Perkalian dengan Variabel x ... 27
2.3.2. Koefisien Polinom pada GF(28) ... 27
BAB III. AES:RIJNDAEL ... 30
3.1. Pendahuluan ... 30
3.2. Representasi Data ... 33
3.3. Enkripsi ... 35
3.3.1. SubBytes() ... 36
3.3.2. ShiftRows() ... 37
3.3.3. MixColoums() ... 38
(15)
3.4. Ekspansi Kunci ... 40
3.5. Dekripsi ... 41
3.5.1. InvSubBytes() ... 42
3.5.2. InvShiftRows() ... 42
3.5.3. InvMixColoums() ... 43
BAB IV. SIMULASI ... 44
4.1. Simulasi Cipher (Enkripsi) ... 44
4.1.1. AddRoundKey()... 45
4.1.2. SubBytes() ... 46
4.1.3. ShiftRows()... 47
4.1.4. MixColoums() ... 47
4.2. Simulasi Invers Cipher (Dekripsi) ... 51
4.2.1. InvShiftRows() ... 52
4.2.2. InvSubBytes() ... 53
4.2.3. AddRoundKey() ... 53
4.3. Simulasi Ekspansi Kunci ... 54
BAB V. PENUTUP ... 57
5.1. Kesimpulan ... 57
5.2. Penelitian Selanjutnya ... 57
REFERENSI ... 59
(16)
DAFTAR TABEL
Tabel 2-1 Subtitusi Caesar Cipher ( n+3 ) ... 7
Tabel 2-2 Representasi Bit, Heksadesimal, dan Desimal ... 12
Tabel 2-3 Operasi XOR ... 12
Tabel 3-1 Pengindeks-an Aliran Input ... 34
Tabel 3-2 S-Box ... 37
(17)
DAFTAR GAMBAR
Gambar 2.1. Proses Umum Enkripsi dan Dekripsi ... 16
Gambar 2.2. Proses Enkripsi dan Dekripsi pada Algoritma Simetris ... 17
Gambar 2.3. Proses Enkripsi pada Stream Cipher ... 19
Gambar 2.4. Proses Pemetaan Data pada Block Cipher ... 20
Gambar 2.5. Proses Enkripsi dan Dekripsi pada Block Cipher... 21
Gambar 2.6. Proses Enkripsi dan Dekripsi pada Algoritma Asimetris ... 22
Gambar 3.1. SubBytes(),ShiftRows(),MixColoums(),dan AddRoundKey() .... 32
Gambar 3.2. Algoritma AES-128 ... 33
Gambar 3.3. State Array pada Input dan Output ... 35
Gambar 3.4. State Array Ekivalen pada Word Array ... 35
Gambar 3.5. Subtitusi Bytes ... 36
Gambar 3.6. Shift Rows... 38
Gambar 3.7. Mix Coloums ... 39
Gambar 3.8. Operasi XOR pada AddRoundKey() ... 39
(18)
DAFTAR LAMPIRAN
LAMPIRAN 1 : SIMULASI CIPHER ... 61
LAMPIRAN 2 : SIMULASI INVERS CIPHER ... 62
LAMPIRAN 3 : SIMULASI KUNCI EKSPANSI ... 63
(19)
BAB I PENDAHULUAN
1.1.Latar Belakang
Perkembangan Teknologi komputer dan telekomunikasi yang cukup pesat masa kini berpengaruh pada penggunaan informasi. Sehingga melahirkan sebuah istilah “information-based society” [10] , dimana kemampuan untuk mengakses dan menyediakan informasi secara cepat dan akurat menjadi sangat esensial bagi sebuah organisasi atau lembaga, baik organisasi komersial (perusahaan), perguruan tinggi (akademisi), lembaga pemerintahan (birokrasi), maupun individual (pribadi).
Seiring dengan perkembangan Teknologi telekomunikasi dan penyimpanan data dengan menggunakan komputer tersebut, memungkinkan pengiriman data jarak jauh yang relatif cepat dan murah. Dilain pihak pengiriman data jarak jauh melalui jaringan internet, gelombang radio maupun media lain yang digunakan masyarakat luas (public) sangat memungkinkan pihak lain dapat menyadap dan mengubah data yang dikirim.
Perkembangan internet salah satunya sebagai sarana komunikasi merupakan teknologi yang mampu menyikapi persoalan-persolan yang semakin kompetitif saat ini, terbukti dengan pemakai internet yang sudah mendunia. Semakin mudahnya mendapatkan akses dari internet membuat dunia seolah-olah tidak ada batasan lagi, sehingga adanya internet memang sejalan dengan era globalisasi dan kebijakan pasar bebas.
(20)
Dibalik perkembangan dan pemanfaatan internet yang demikian pesat, ternyata ada bahaya yang mengancam yakni fenomena yang kurang disadari oleh para user (pengguna internet) pemula, yaitu user yang kurang memahami tentang keamanan data [14] . Untuk meminimalkan kemungkinan terjadinya tindak kejahatan di internet inilah diperlukan teknologi keamanan informasi, khususnya sistem dan mesin enkripsi(penyandian).
Enkripsi merupakan bagian dari cabang kriptografi, dimana algoritma kriptografi untuk penyandian telah mengalami perkembangan dan perbaikan dari masa ke masa. Sehingga proses tersebut menghasilkan algoritma yang memuaskan, misalnya DES, IDEA, RSA, dan lain-lain. Salah satu algoritma yang cukup popular dan kuat sehingga tidak mudah dipecahkan pada tahun 80-an adalah (Data Encryption Standard) DES.
DES merupakan nama dari sebuah algoritma untuk mengenkripsi data yang dikeluarkan oleh Federal Information Processing Standard (FIPS) di Amerika. Algoritma tersebut dikembangkan oleh IBM, NSA, NBS yang berperan penting dalam pengembangan algoritma DES. Ada sedikit modifikasi dan perbaikan pada perkembangan algoritma DES yaitu algoritma Triple DES, cara ini dipakai untuk membuat algoritma DES lebih kuat lagi. Akan tetapi algoritma yang digunakan sama, hanya saja algoritma Triple DES melakukan enkripsi algoritma DES sebanyak tiga kali dengan menggunakan dua kunci yang berbeda.
NIST (National Institute of Standards and Technology) yang berada di Amerika setiap lima tahun sekali mensertifikasi ulang algoritma DES sejak
(21)
tahun 1977, disebabkan banyaknya kelemahan pada algoritma DES, kini NIST tidak lagi mensertifikati sejak tahun 1993 (penyertifikatan terakhir untuk DES). Salah satu kelemahan DES dutunjukkan oleh Michael Wierner (1995) yang merancang sebuah chip untuk melakukan brute - force attack (teknik menemukan atau memecahkan kunci) pada algoritma DES-56 bit. Chip
tersebut dapat menemukan kunci rahasia dalam waktu rata-rata 3,5 jam dan kunci itu dijamin dapat ditemukan dalam waktu 7 jam [10] dan [12] . Selanjutnya dikembangkanlah suatu algoritma baru yang diharapkan dapat menggatikan DES yaitu (Advanced Encryption Standard) AES.
AES yang lahir pada November 2001 dengan pencetus Rijmen dan Daemen (Rijndael) cukup mengejutkan dunia kriptografi, karena pada saat itu menyisihkan empat finalis algoritma lainnya yang cukup popular yaitu MARS, RC6, Serpent, dan Twofish. Terbukti dengan diberlakukan AES secara efektif tahun 2002, AES mendapatkan sertifikat dari NIST saja sudah mencapai 144 produk sampai bulan Mei 2004. AES memang dipersiapkan untuk penerapan
software, firmware, hardware atau kombinasinya. Jadi, suatu hal yang cukup wajar bila usaha pengembangannya banyak dan bervariasi [1] .
Selain keunggulan yang telah disebutkan, Algoritma AES:Rijndael juga dirancang untuk memiliki properti ketahanan terhadap semua jenis serangan yang telah diketahui, kesederhanaan rancangan, dan kekompakan kode serta kecepatan koputasi pada berbagai platform.
Rijndael cipher (AES:Rijndael) dapat dikategorikan sebagai iterated block cipher dengan panjang blok (128 bit) dan panjang kunci yang dapat
(22)
dipilih secara independent sebanyak 128, 192, atau 256 bit. Sebagai pembuktian akan ditunjukkan salah satu kekuatannya dalam bentuk desimal yaitu kira-kira 3.4 x 1038 kemungkinan untuk kunci 128 bit, 6.2 x 1057 kemungkinan untuk kunci 192 bit, dan 1.1 x 1077 kemungkinan untuk kunci 256 bit.
Pengukuran dan perbandingan dari kekuatan relatif algoritma AES-Rijndael pada algoritma DES diilustrasikan sebagai berikut :
“Jika komputer membutuhkan waktu selama 1 detik untuk memecahkan kunci algoritma DES dengan panjang kunci 256 bit, maka komputer yang sama dengan panjang kunci 256 bit juga akan membutuhkan waktu 149 trilyun (149 x 1012) tahun untuk memecahkan kunci pada algoritma AES-Rijndael”.
1.2.Rumusan Masalah
Masalah yang akan dibahas pada penelitian ini adalah simulasi algoritma AES pada pesan rahasia menggunakan panjang kunci 128 bit.
1.3. Batasan Masalah
Penelitian tugas akhir ini dibatasi pada simulasi Model Enkripsi Simetris –
Block Cipher menggunakan algoritma AES:Rijndael dengan panjang kunci 128 bit.
(23)
Secara umum tujuan penelitian ini adalah mensimulasikan algoritma AES Rijndael dengan enkripsi seacak mungkin (berusaha menghilangkan pola) sehingga lebih sulit untuk dipecahkan.
1.5.Sistematika Penulisan
BAB I, menjelaskan tentang fenomena pentingnya pengamanan data, kriptografi salah satu jawabannya. Algoritma kriptografi yang cukup popular pada tahun 80-an adalah DES akan tetapi diganti dengan AES yang mempunyai cukup banyak kelebihan dan keunggulan dari DES, terutama dalam kekuatan pemecahan kunci.
BAB II, menjelaskan kriptografi dari sejarahnya, teknik, dan metode serta landasan matematika yang menjadi dasar terbentuknya teknik-teknik yang digunakan Algoritma AES, beberapa teknik dalam AES dibangun dari operasi matematika khususnya pada AES adalah GF(28).
BAB III, menjelaskan teknik yang membangun algoritma AES, tetapi sebelumnya dijelaskan dulu tentang pengertian dan kemampuan AES sebagai penghantar kepada algoritmanya.
BAB IV, menjelaskan simulasi program sebagai hasil dari gambaran model Algoritma AES:Rijndael dengan panjang kunci 128 bit.
(24)
BAB II
LANDASAN TEORI
2.1. Kriptografi
Kriptografi berasal dari Bahasa Yunani, yaitu kripto dan graphia. Menurut bahasa kripto berarti rahasia (secret) dan graphia berarti tulisan (writing). Menurut terminologi, kriptografi adalah ilmu atau seni untuk menjaga keamanan pesan ketika pesan dikirim dari suatu tempat ke tempat yang lain [1] . Secara keseluruhan kriptografi dapat disimpulkan sebagai ilmu yang mempelajari tentang pengacakan pesan dengan fungsi matematika agar tidak bisa dibaca oleh pihak yang tidak berwenang.
Kriptografi merupakan studi matematika yang mempunyai hubungan dengan aspek keamanan informasi seperti integritas data dan keaslian data. Dalam penerapannya, kriptografi merupakan suatu metode enkripsi atau penyandian data yang hanya diketahui atau berarti oleh suatu kelompok pengguna tertentu. Metoda ini telah dikenal sejak lama, salah satu contoh penggunaannya pada masa ke-Kaisaran Romawi Kuno. Pada waktu itu Julius Caesar tidak menginginkan berita atau pesan yang dibawa oleh kurir-kurirnya jatuh kepada pihak lawan. Oleh karena itu, beliau menggunakan sistem substitusi sederhana, yang kini disebut dengan Caesar Cipher. Algoritma sistem Caesar ini sangat sederhana, yaitu setiap huruf digeser atau ditambah tiga dengan modulo 26 sehingga huruf A menjadi D, huruf B menjadi E, dan seterusnya (Tabel 2.1.).
(25)
Tabel 2.1. Subtutusi Caesar Cipher (n + 3)
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
Dalam kriptografi ada beberapa istilah yang sering digunakan, antara lain sebagai berikut :
1. Plaintext adalah informasi asli sebelum dienkripsi atau teks terang. 2. Enkripsi adalah proses kriptografi dari plaintext menjadi ciphertext. 3. Ciphertext adalah informasi acak yang berasal dari plaintext yang telah
dimasukkan kedalam fungsi kriptografi atau dienkripsi.
4. Dekripsi adalah proses pengubahan ciphertext menjadi plaintext. 5. Kriptoanalisis adalah studi yang mempelajari teknik matematika
untuk memecahkan teknik kriptografi.
6. Kriptoanalis adalah orang yang melakukan kriptonalisis. 7. Kriptologi adalah ilmu tentang kriptografi dan kriptonalisis.
2.1.1. Kriptografi Klasik
Kriptografi sudah digunakan sejak lama seperti algoritma Caesar
(26)
beberapa abad yang lalu. Dua teknik dasar yang biasa digunakan pada Kriptografi Klasik, adalah sebagai berikut [1] :
1. Teknik Subtitusi : Penggantian setiap karakter plaintext dengan karakter lain
2. Teknik Tranposisi (Permutasi) : Teknik ini menggunakan permutasi karakter.
Untuk memahami pengertian lebih lanjut, dijelaskan sebagai berikut :
2.1.1.1. Teknik Subtitusi
Teknik subtitusi ini merupakan penggantian setiap karakter dari plaintext dengan karakter lainnya, ada empat istilah dari subtitusi cipher diantaranya adalah : monoalphabet, polyalphabet, monograph, dan polygraph.
Contoh teknik subtitusi adalah Caesar Cipher, Playfair Cipher, Shift Cipher, Hill Cipher, dan Vigenere Cipher. Lihat (Tabel 2.1.) Subtitusi Caesar Cipher merupakan pencetus dalam dunia kriptografi, penyandian ini dilakukan pada zaman Pemerintahan Julius Caesar dengan menggeser atau mengganti posisi huruf alphabet. Misal pergeseran yang dilakukan sebanyak tiga kali, berarti kunci dekripsinya adalah (n – 3). Sebenarnya
(27)
pergeseran yang dilakukan tergantung keinginan dari kesepakatan pihak pengirim dan penerima, ini yang dinamakan kunci.. Misal kunci yang digunakan ((n x 2) - 1) atau yang lainnya. Contoh pesan yang akan disandikan dari algoritma Caesar Cipher dengan kunci
(n + 3) (Tabel 2.1. subtutusi Caesar Cipher) sebagai berikut :
Plaintext = T E R I M A K A S I H
Ciphertext = W H U L P D N D V L K
Dengan subtitusi atau mengeser tiga kali sehingga huruf T Æ W, E Æ H, A Æ D, ……, H Æ K. Caesar Cipher ini dapat dipecahkan dengan cara Brute Force Attack suatu bentuk dari sebuah serangan dengan mencoba kemungkinan-kemungkinan pola untuk menemukan kunci rahasia sampai kunci tersebut ditemukan. Banyak kemungkinan kunci yang dapat digunakan oleh Caesar
Cipher sehingga cukup merespon para kriptoanalis, walaupun sederhana akan tetapi butuh cukup waktu untuk memecahkannya karena penggunaan Enkripsi Klasik tidak semudah sekarang dengan bantuan komputer.
2.1.1.2. Teknik Tranposisi (Permutasi)
Teknik ini menggunakan permutasi karakter, dengan menggunakan teknik ini pesan yang asli tidak dapat dibaca kecuali
(28)
pihak yang memiliki kunci untuk mengembalikan pesan tersebut kebentuk semula atau mendekripsikannya. Sebagai contoh :
Ada enam kunci yang digunakan untuk melakukan permutasi cipher yaitu:
Posisi Plaintext
1 2 3 4 5 6
Posisi Ciphertext
3 5 1 6 4 2
Untuk mendekripsikan digunakan juga 6 kunci invers cipher yaitu :
Posisi Ciphertext
1 2 3 4 5 6
Posisi Plaintext
3 6 1 5 2 4
Sehingga sebuah pesan
Plaintext = T E R I M A K A S I H Terlebih dahulu kalimat tersebut dibagi menjadi 6 block
dan apabila terjadi kekurangan pada block bisa ditambahkan dengan huruf yang disepakati, misal “X”.
Posisi = 1 2 3 4 5 6 1 2 3 4 5 6
Plaintext = T E R I M A K A S I H X
(29)
Untuk mendekripsikan ciphertextnya, maka harus melakukan hal yang sama seperti ciphernya dengan menggunakan kunci invers cipher dari permutasi tersebut. Banyak teknik lain permutasi seperti zig-zag, segitiga, spiral, dan diagonal. Dengan beberapa macam pola Teknik Tranposisi (Permutasi) maka dapat dilakukan untuk menyandikan atau menyembunyikan pesan secara aman dari pihak yang tidak berwenang. Dari kombinasi teknik-teknik inilah yang menjadi dasar dari pembentukan algoritma kriptografi yang dikenal dengan Kriptografi Modern [1] .
2.1.2. Kriptografi Modern
Perbedaan kriptografi ini dengan Kriptografi Klasik, adalah pada Kriptografi Modern sudah menggunakan perhitungan komputasi atau program dalam pengoperasiannya, yang berfungsi mengamankan data baik yang ditransfer melalui jaringan komputer maupun tidak. Hal ini sangat berguna untuk untuk melindungi keamanan, integritas, dan keaslian dari data.
Pada kriptografi ini karakter-karakter yang akan dioprasiakan seperti
plaintext dan kunci dikonversikan ke dalam suatu urutan digit biner (bit) yaitu 0 atau 1, yang umumnya digunakan untuk skema pengkodeaan ASCII (American Standart Code for Information Interchange) lihat
(30)
Satu buah karakter sama dengan delapan bit, maka jumlah karakter yang terbentuk dari delapan bit tersebut adalah 256. Begitu juga ASCII yang mempunyai jumlah karakter 256, pada pembahasan selanjutnya 256 karakter ASCII tersebut menjadi himpunan dari elemen finite field
sub-BAB 2.3. Operasi Aljabar.
Ada beberapa metode yang bisa digunakan, misal salah satu dari dua metode, yaitu : pertama stream cipher (aliran cipher) dan kedua block cipher (blok cipher). Kedua metode ini digunakan pada Algoritma kunci
Simetris yang akan dijelaskan pada sub-Bab 2.2.1. Algoritma Simetris
pembahasan selanjutnya. Pada stream cipher metode yang digunakan dengan sejumlah urutan dari bit dienkripsi secara bit per bit. Untuk block cipher, suatu urutan pembagian dibentuk dalam ukuran blok(block) yang dinginkan sehingga dapat dioperasikan block per block.
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 seperti Tabel 2.2..
Tabel 2.2. Representase Bit, Heksadesimal, dan Desimal
Bit Hexa Dec Bit Hexa Dec Bit Hexa Dec
0000 0 0 0110 6 6 1100 C 12
0001 1 1 0111 7 7 1101 D 13
0010 2 2 1000 8 8 1110 E 14
0011 3 3 1001 9 9 1111 F 15
0100 4 4 1010 A 10
(31)
Operasi dasar enkripsi yang menggunakan bit (binary digit) lihat
Tabel 2.2. biasanya menggunakan metode kombinasi dua bit yang disebut dengan ”Exclusive OR” dan terkadang ditulis dengan ”XOR” menggunakan notasi “⊕”. Operasi ini merupakan suatu penambahan modulo 2 yang digambarkan Tabel 2.3..
Tabel 2.3. Operasi XOR
⊕ 0 1
0 0 1
1 1 0
Operasi XOR pada Tabel 2.3. dengan rincian sebagai berikut :
0⊕0 = 0; 0⊕1 = 1; 1⊕0 = 1; 1⊕ 1 = 0.
Sebagai contoh dalam bentuk heksadesimal dengan melihat Tabel 2.2. sebagai proses konversi dari heksadesimal ke bit agar dapat dioperasikan seperti Tabel 2.3. yaitu operasiXOR.
Contoh : 09⊕0D & 01⊕0F
1 0 0 1 0 0 0 1 1 1 0 1 1 1 1 1 1⊕1 0⊕1 0⊕0 1⊕1 0⊕1 0⊕1 0⊕1 1⊕1
Hasil = 0 1 0 0 = 04 1 1 1 0 = 0E 09⊕0D = 04 & 01⊕0F = 0E
(32)
Algoritma kriptografi terus berkembang sesuai dengan perkembangan teknologi komunikasi data. Sampai saat ini terdapat berbagai macam algoritma dengan tujuan penggunaan yang berbeda, seperti digunakan untuk enkripsi data, gambar atau suara. Namun tujuan utama dari masing-masing algoritma adalah sama, yaitu [4]:
2.1.2.1. Kerahasiaan Data.
Kerahasiaan data digunakan untuk menjaga isi informasi dari semua pihak kecuali pihak yang berhak mendapatkan informasi tersebut saja. Ada beberapa cara dalam menjaga kerahasiaan informasi, mulai dari proteksi fisik seperti penyimpanan data di tempat khusus sampai kepada algoritma matematika yang mengubah data informasi terang (data asli) menjadi data acak.
2.1.2.2. Integritas Data.
Integritas data bertujuan untuk menjaga adanya perubahan yang tidak diinginkan terhadap data. Untuk menjamin integritas data, maka perlu pengetahuan dalam mendeteksi perubahan data oleh sekelompok orang yang tidak berkepentingan. Perubahan data bisa berupa pemasukan data baru, penghapusan atau penukaran data.
(33)
2.1.2.3. Keaslian data.
Keaslian data berhubungan dengan identifikasi, dimana fungsi ini berlaku untuk pelaku dan informasi itu sendiri. Dua pihak yang ingin bergabung dalam sebuah komunikasi harus mengidentifikasi satu sama lainnya. Informasi yang dikirim dalam sebuah paket harus diidentifikasi sesuai dengan keasliannya, sebagai contoh berupa tanggal aslinya, isi data, waktu kirim, dan sebagainya. Untuk alasan inilah aspek dari kriptografi biasanya dibagi menjadi dua bagian yaitu identifikasi pelaku dan identifikasi keaslian data.
Keamanan data pada lalu lintas jaringan merupakan suatu hal yang diinginkan oleh banyak orang untuk menjaga kerahasiaannya. Supaya data yang dikirim tetap aman dari orang yang tidak berwenang maka data harus disembunyikan menggunakan algoritma kriptografi.
2.2. Algoritma
Definisi algoritma secara terminologi adalah urutan langkah-langkah logis untuk penyelesaian masalah yang disusun secara sistematis. Sehingga algoritma kriptografi merupakan langkah-langkah logis bagaimana menyembunyikan pesan dari orang yang tidak berhak atas pesan tersebut.
(34)
Proses algoritma kriptografi penyandian terdiri dari algoritma Enkripsi (E) dan algoritma Dekripsi (D), secara umum proses enkripsi dan dekripsi dapat diterangkan menggunakan Persamaan 2.1..
⎭ ⎬ ⎫ = =
P (C) DK
C (P) EK
………...……..
2.1.
Ket :
E = Enkripsi
D = Dekripsi
P = Plaintext
C = Ciphertext
K = Kunci
Jika pesan ”P” (teks terang) dienkripsi dengan ”E” menngunakan suatu kunci ”K” maka menghasilkan pesan ”C” (teks acak). Sedangkan pada proses dekripsi, pesan ”C” tersebut diuraikan atau didekripsi dengan ”D” menggunakan kunci ”K” sehingga dihasilkan pesan ”P” yang sama seperti pesan semula (lihat Persamaan 2.1.) [4] . Untuk lebih jelasnya dapat dilihat
(35)
Gambar 2.1. Proses Umum Enkripsi dan Dekripsi
Keamanan suatu pesan diharapkan tergantung pada kunci yang digunakan, sehingga algoritma-algoritma yang digunakan bukan menjadi kekuatan utama pada keamanan enkripsi. Disini peranan algoritma enkripsi perlu diuji dan dikaji terus.
Karakteristik kunci yang menggunakan algoritma kriptografi dapat digolongkan sebagai berikut :
1. Algoritma kunci rahasia (simetris) : menggunakan satu kunci untuk enkripsi dan dekripsi.
2. Algoritma kunci publik (asimetris) : menggunakan kunci yang berbeda untuk enkripsi dan dekripsi.
Plaintext
Enkripsi
Ciphertext
Kunci Dekripsi
Plaintext Informasi/ Pesan
(36)
2.2.1. Algoritma Simetris
Simetris Kriptografi adalah algoritma dengan menggunakan kunci yang sama pada enkripsi dan dekripsinya. Oleh karena itu, kunci yang digunakan untuk enkripsi tidak boleh diberikan kepada publik melainkan hanya kepada orang tertentu yang tahu atau boleh sehingga dapat membaca data yang dienkripsi. Algoritma ini dikenal juga dengan istilah algoritma kunci rahasia, karena kuncinya hanya boleh diketahui oleh dua pihak yang berkomunikasi tersebut saja. Lihat Gambar 2.2. sebagai ilustrasi dari proses enkripsi dan dekripsi pada kunci rahasia.
Gambar 2.2. Proses Enkripsi dan Dekripsi pada Algoritma Simetris (Kunci Rahasia)
Algoritma simetris pada umumnya banyak digunakan saat ini baik untuk kalangan pemerintahan ataupun bisnis.
Kunci dari algoritma ini harus dijaga ketat supaya tidak ada pihak luar yang mengetahuinya. Masalahnya sekarang adalah bagaimana untuk memberi tahu pihak penerima mengenai metode atau kunci yang akan digunakan sebelum komunikasi yang aman dapat berlangsung. Misalnya dengan jalur komunikasi yang lebih aman yaitu bertemu langsung. Selain
Plaintext Enkripsi Ciphertext
Ciphertext Dekripsi Plaintext
(37)
masalah komunikasi awal untuk penyampaian kunci di atas, algoritma ini mempunyai kelemahan lainnya. Kelemahan ini timbul jika terdapat banyak pihak yang ingin saling berkomunikasi. Karena setiap pasangan harus sepakat dengan kunci pribadi tertentu yang mengakibatkan pembengkakan memori pada penyimpanan kunci, sehingga mempunyai kesulitan dalam menghafal banyak kunci dan harus menggunakannya secara tepat. Contoh Algoritma Simetris seperti : DES, Triple DES, AES, RC2, RC4, IDEA, dan lain-lain. AES dengan kepanjangan “Advanced Encryption Standard”
akan menjadi pembahasan utama lihat BAB III.
2.2.1.1. StreamCipher
Stream cipher (aliran cipher) merupakan bagian dari algoritma simetris. Metode ini mengoprasikan bit per bit, setiap bit plaintext dengan bit kunci. Kunci yang digunakan adalah kunci utama (kunci induk) sebagai pembangkit kunci acak semu dari
Pseudo-Random Sequnce Generator (PRSG) dengan menjadikan suatu nilai yang nampak seperti acak, tetapi sesungguhnya nilai tersebut merupakan suatu urutan.
Random Number Generator (RNG) atau pembangkit nilai random secara umum adalah Pseudorandom yang memberikan inisial state atau seed (nilai yang diinput ke dalam state).
Pseudorandomess menghasilkan urutan yang sama secara berulang-ulang pada penempatan yang berbeda. Kemudian kunci
(38)
acak semu tersebut dioperasikan XOR dengan menggunakan
plaintext untuk mendapatkan bentuk ciphertext. Lihat Gambar 2.3. (a) dan (b) untuk lebih jelasnya.
(a)
(b)
Gambar 2.3. Proses enkripsi pada stream cipher. (a) Pambangkitan bilangan random, dan (b) operasi XOR setelah bilangan random dibangkitkan.
Untuk mensimulasikan suatu random dengan kunci yang mempunyai panjang terbatas, Algoritma Simetris Stream ini menghasilkan bit dari sumber yang lain oleh pesan itu sendiri.
Key
Pseudo-Random Sequnce Generator
(PRSG)
Plaintext Bitstream
⊕
Plaintext Bitstream
Plaintext Bitstream
Pseudo-Random Stream
Ciphertext Bitstream
1 1 1 1 1 1 0 0 0 0 0 1 … 1 0 0 1 0 0 0 1 1 1 0 1 … 0 1 1 0 1 1 0 1 1 1 0 0 …
(39)
Sehingga Stream Cipher adalah Suatu urutan flow yang berkelanjutan dan unsur-unsur yang berdiri sendiri, metode ini kebalilkan dari blockcipher, dimana elemen-elemen dua atau lebih dikoleksi sebagai block.
2.2.1.2. BlockCipher
Block Cipher merupakan suatu metode dalam algoritma dengan input dan outputnya berupa block, dan setiap block terdiri dari beberapa bit (64 bit atau 128 bit). Block Cipher mempunyai banyak aplikasi yang digunakan untuk memberi pelayanan kerahasiaan data, integritas data dan keaslian data serta memberikan layanan keystream generator untuk streamcipher.
Contoh pada sub-BAB 2.1.1.2. Teknik Tranposisi
(Permutasi) yang mengenkripsi plaintext “ TERIMA KASIH ”
dengan merepresentasikan lebih dahulu ke dalam bentuk block
-block, misal 1 block terdiri dari 6 karakter. Secara umum digambarkan representasi plaintext dalam 1 block terdiri dari 64 bit
sama dengan 4 karakter.
(40)
Block 1
1 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0
a1 a3
1 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0
a2 a4
Block 2
0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0
a5 a7
1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 0
a6 a8
Gambar 2.4. Proses Pemetaan Data pada Block Cipher
Block cipher secara sederhana mempunyai keuntungan, yaitu jika satu block ada yang rusak tidak akan mempengaruhi
block yang lainnya, sehingga hanya block yang rusak yang perlu dikirim ulang, tidak perlu semua block. Sedangkan stream cipher, jika ada data yang rusak maka perlu dikirim ulang semua data yang bersangkutan, karena data satu dengan yang lainnya mempunyai keterikatan sebagai aliran data. Selain itu keuntungan yang dimiliki
block cipher yaitu pada proses dekripsinya tidak harus menunggu semua pesan diterima lebih dahulu, maka dekripsi dapat dilakukan bersamaan pada saat pesan dikirim.
Secara umum pengiriman block cipher dapat dilihat pada
(41)
(a) Proses Enkripsi
(b) Proses Dekripsi
Gambar 2.5. Proses Enkripsi dan Dekripsi pada Block Cipher
2.2.2. Algoritma Asimetris.
Asimetris Kriptografi adalah algoritma yang mengunakan kunci enkripsinya berbeda dengan dekripsi. Pada algorima ini kunci dekripsinya tidak dibuka atau rahasia, sedangkan kunci enkripsinya bisa diberikan
Ciphertext Block 1
Ciphertext Block 2
Ciphertext Block n
Algoritma Dekripsi
Algoritma Dekripsi
Algoritma Dekripsi
Plaintext Block 1
Plaintext Block 2
Plaintext Block n
Kunci Kunci
Kunci Plaintext
Block 1
Algoritma Enkripsi
Ciphertext Block 1
Kunci Kunci
Plaintext Block 2
Plaintext Block n
Algoritma Enkripsi
Algoritma Enkripsi
Ciphertext Block 2
Ciphertext Block n Kunci
(42)
kepada publik. Untuk memperoleh atribut ini, algoritma dirancang pada mekasime yang sulit untuk dipecahkan secara matematika.
Dalam Algoritma Asimetris kunci enkripsi dibuka, sehingga siapapun yang ingin berkomunikasi dapat menggunakannya. Tetapi untuk kunci dekripsi, hanya satu pihak saja yang mempunyai kunci dan dapat menggunakannya. Oleh karena itu, kunci yang digunakan untuk enkripsi disebut kunci publik, sedangkan kunci yang digunakan untuk dekripsi disebut kunci pribadi atau kunci rahasia (Gambar 2.6.).
Gambar 2.6. Proses Enkripsi dan Dekripsi Algoritma Asimetris (Kunci Publik)
Algoritma ini digunakan untuk banyak area yang berbeda. Yang paling umum digunakan adalah dalam hal pengiriman kunci algoritma
simetris pada tahap awal sebagai alternatif dari kelamahan Algoritma
Plaintext Enkripsi Ciphertext
Kunci Publik untuk pengirim
Pengiriman Pesan
Ciphertext Dekripsi Plaintext
Kunci Rahasia untuk penerima
(43)
Simetris di atas jika kedua pihak jaraknya jauh dan sulit untuk bertemu langsung. Seperti telah dijelaskan sebelumnya, kunci publik digunakan untuk enkripsi dan kunci rahasia digunakan untuk dekripsi.
Ketika membandingkan kelebihan dan kekurangan antara Algoritma Simetris dan Algoritma Asimetris, algoritma yang menggunakan kunci publik pada umumnya mempunyai lebih banyak keuntungan dalam istilah kriptografi, seperti kelemahan pada algoritma
simetris di atas pada pengiriman awal dan pembengkakan momori atau penghafalan kunci yang banyak. Algoritma Asimetris dapat menanggulangi kelemahan-kelemahan tersebut.
Kendati kelebihan yang telah dijelaskan sebelumnya, Algoritma
Asimetris mempunyai kelemahan yaitu dari segi kecepatan (perhitungan komputasi yang besar) yang lebih lambat dari Algoritma Simetris.
Oleh karena itu, dari tinjauan kelemahan dan kelebihannya kedua sistem algoritma ini sering digabungkan atau dikombinasikan. Algoritma
Asimetris sebagai sarana komunikasi awal pengiriman kunci simetris, selanjutnya digunakan Algorima Simetris dengan kunci rahasia di kedua belah pihak agar pengoprasianya lebih cepat dari pada menggunakan Algoritma Asimetris. Contoh dari algoritma yang menggunakan kunci publik adalah PGP, RSA, dan lain-lain.
(44)
Secara umum akan dibahas beberapa operasi matematika yang berkaitan dengan AES:Rijndael, seluruh dari tiap-tiap tahap atau langkah transformasinya melibatkan state (1 blok ), akan tetapi sebenarnya unit dasar operasi AES:Rinjdael adalah byte (terdiri dari 8 bit). Setiap byte sebagai elemen finite field GF(28) yang didefinisikan pada operasi penjumlahan dan perkalian.
Elemen finite field tersebut merupakan elemen dari field yang memiliki sifat ring komutatif. Dalam hal ini, untuk semua finite field yang memiliki pn
untuk p merupakan bilangan prima dan n merupakan bilangan bulat n≥1 sama dengan notasi GF(pn). Oleh karena itu, elemen-elemen GF(28) juga merupakan
ring komutatif yang memiliki sifat berikut : grup ( [g , +] : tertutup pada ’+’, asosiatif pada ’+’, memiliki elemen identitas, dan mempunyai invers), grup abelian ( grup komutatif), ring ( [g , + , •] : tertutup pada ’•’, asosiatif pada ’•’, dan distributif) [16].
2.3.1. Field GF(28)
Elemen dari finite field bisa direpresentasikan dalam beberapa cara yang berbeda (polinomial, bit, dan heksadesimal). Untuk semua pangkat n
bilangan prima memiliki satu finite field, oleh karena itu GF(28) dan ASCII merupakan isomorfisme, yaitu homomorfisme yang merupakan fungsi 1-1. Sedangakan homomorfisme adalah fungsi dari ring ke ring lain yang mempunyai sifat f(a+b) = f(a) + f(b) dan f(ab) = f(a).f(b) [16] . Oleh karena itu elemen tersebut sama, saat direpresentasikan memiliki pengaruh
(45)
yang kuat dalam implemetasi yang kompleks. Dalam halm ini akan direpresentasikan ring atas polinomial. Jika b, merupakan suatu nilai dari 0 atau 1 maka terbentuk suatu ukuran byte dari urutan bit b7 + b6 + b5 + b4 + b3 + b2 + b1 + b0 (koefisien binary) dapat dituliskan pada Persamaan 2.2..
b(x) = b7x7 + b6x6 + b5x5 + b4x4 + b3x3 + b2x2 + b1x + b0 ……….. 2.2.
Persamaan 2.2. menjelaskan bahwa pangkat tertinggi dari polinomial GF(28) tersebut adalah x7.
Contoh :
Nilai byte dalam bilangan heksadesimal ‘57’ (bentuk biner 01010111) sama dengan bentuk polinomial x6 + x4 + x2 + x + 1.
2.3.1.1. Penjumlahan
Penjumlahan dua elemen finite field didefinisikankan sebagai operasi XOR (penjumlahan 2 elemen dengan modulo 2) per bit lihat Tabel 2.3.. Sebagai konsekuensinya, penyederhanaannya merupakan operasi yang identik. Ekspresi berikut ini adalah ekivalen antara satu dengan lainnya (heksadesimal, bit, dan notasi polinomial).
Contoh : ’57’ ⊕ ’83’ = ’d4’ 01010111
(46)
11010100
(x6+x4+ x2+ x+1) + (x7+x+1) = (x7+ x6+x4+ x2)
Seluruh kondisi yang penting dalam menyelesaikan operasi di atas merupakan bagian dari grup abelian yaitu mempunyai sifat : komutatif ( x+y = y+x ), tertutup, asosiatif, mempunyai elemen identitas, dan mempunyai invers.
2.3.1.2. Perkalian
Perkalian elemen GF(28 ) (notasi•) adalah perkalian dalam bentuk representasi polinomial dengan modulo polinomial m(x) yang irreducible [15] (lihat Persamaan 2.3.) dari polinomial pangkat delapan. Irreducible yaitu polinom yang hanya mempunyai factor ‘01’ dan bilangan itu sendiri.
m(x) = x8+x4+ x3+ x+1 ………
2.3.
atau ‘11B’ dalam bentuk heksadesimal dan betuk desimal adalah 283.
(47)
(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
(x13+ x11+ x9+ x8+ x6+ x5+ x4+ x3+1) modulo (x8+x4+ x3+ x+1)
= x7+ x6+ 1
2.3.1.3. Perkalian dengan variabel x
Jika dituliskan perkalian b(x) sebagai berikut :
x.b(x) = b8x8+b7x7+b6x6+b5x5+b4x4+b3x3+b2x2+b1x+b0
Perkalian x•b(x) dapat diwujudkan sebagai left shift (pergeseran ke kiri bit)yang diikuti XOR kondisional dengan {1b}, jika b8 = 1, maka XOR dilakukan, jika b8 = 0, maka XOR tidak dilakukan. Exclusive-OR kondisional tersebut tidak lain adalah operasi modulo dengan m(x). Serangkaian left shift yang disusul operasi XOR tersebut dapat digunakan untuk perkalian antara elemen finite field. Operasi x•b(x) dinotasikan sebagai xtime() [15] . Sebagai contoh :
‘57’•’13’ = ‘FE’
‘57’•’02’ = xtime(57) = ‘AE’ ‘57’•’04’ = xtime(AE) = ‘47’ ‘57’•’08’ = xtime(47) = ‘8E’
(48)
‘57’•’10’ = xtime(8E) = ‘07’
‘57’•’13’ = ‘57’•(’01’⊕’02’⊕’10’) = ‘57’⊕’AE’⊕’07’ = ‘FE’
2.3.2. Koefisien Polinom pada GF(28)
Direpresentasikan polinomial yang didefinisikan dengan koefisien GF(28) sebagai Persamaan 2.4..
0 1 2 2 3 3 )
(x a x a x a x a
a = + + + …...………. 2.4.
Sehingga didapat bentuk koefisien sebagai [a3,a2,a1,a0]. Polinoimial ini berbeda dengan polinomial pada finite field sebelumnya sebagai polinomial koefisian binary. Pada polinomial ini akan dioperasikan perkalian dengan polinomial yang berbeda, akan tetapi bentuk polinomialnya sama yaitu berderajat 4, lihat b(x) lihat Persamaan 2.5..
0 1 2 2 3 3 )
(x b x b x b x b
b = + + + ………...…………. 2.5.
Definisi kedua yaitu kedua polinomial di atas diopersasikan sebagai operasi XOR antara persamaan 2.4 dengan persamaan 2.5. operasi XOR ini koresponden antara pangkat pada variabel x, dapat dilihat
(49)
) ( ) ( ) ( ) ( ) ( )
(x b x a3 b3 x3 a2 b2 x2 a1 b1 x a0 b0
a + = ⊕ + ⊕ + ⊕ + ⊕ …. 2.6.
Didefinisikan a(x)+b(x)=c(x), sehingga menghasilkan
Persamaan 2.7..
0 1 2 2 3 3 4 4 5 5 6 6 )
(x c x c x c x c x c x c x c
c = + + + + + + ………….. 2.7.
Didapat dengan cara :
0 0
0 a b
c = • c4 =a3•b1⊕a2•b2 ⊕a1•b3
1 0 0 1
1 a b a b
c = • ⊕ • c5 =a3•b2 ⊕a2 •b3
2 0 1 1 0 2
2 a b a b a b
c = • ⊕ • ⊕ • c6 =a3•b3
3 0 2 1 1 2 0 3
3 a b a b a b a b
c = • ⊕ • ⊕ • ⊕ •
Hasil dari c(x) di atas belum dalam bentuk empat byte, maka langkah selanjutnya c(x) di modularkan dengan polinomial derajat 4. Pada algoritma AES diberikan polinomial x4+1, menjadi :
xi mod ( x4 + 1 ) = xi mod 4
Operasi modular dari a(x) dan b(x) menghasilkan sebuah d(x) yang direpresentasikan pada Persamaan 2.8..
(50)
0 1 2 2 3 3 )
(x d x d x d x d
d = + + + ……… 2.8.
Dengan hasil :
⎪ ⎪ ⎭ ⎪ ⎪ ⎬ ⎫ • ⊕ • ⊕ • ⊕ • = • ⊕ • ⊕ • ⊕ • = • ⊕ • ⊕ • ⊕ • = • ⊕ • ⊕ • ⊕ • = ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( 3 0 2 1 1 2 0 3 3 3 3 2 0 1 1 0 2 2 3 2 2 3 1 0 0 1 1 3 1 2 2 1 3 0 0 0 b a b a b a b a d b a b a b a b a d b a b a b a b a d b a b a b a b a d
……… 2.9.
⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ = ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ 3 2 1 0 0 1 2 3 3 0 1 2 2 3 0 1 1 2 3 0 3 2 1 0 b b b b a a a a a a a a a a a a a a a a d d d d ………2.10.
(51)
BAB III
ADVANCED ENCRYPTION STANDARD (AES): RIJNDAEL
3.1. Pendahuluan
Algoritma AES:Rijndael yang disosialisasikan oleh National Institute of Standards and Technology (NIST) pada November 2001 lahir sebagai standar baru enkripsi yang dikembangkan dari algoritma DES (Data Encryption Standard) melalui seleksi yang ketat dengan algoritma yang lainnya. AES yang di cetuskan oleh Dr. Vincent Rijmen dan Dr. Joan Daemen menjadi pemenang pada saat seleksi algoritma baru untuk menggantikan DES. Alasan utama terpilihnya AES:Rijndael ini bukan karena algoritmanya yang paling aman dari MARS, RC6, Serpent,Twofish, dan yang lainnya, tetapi AES:Rijndael memiliki keseimbangan antara keamanan serta fleksibelitas dalam berbagai platform software dan hardware [1] . Evaluasi terhadap AES:Rijndael dijelaskan sebagai berikut :
1. Belum ada jenis serangan yang telah diketahui dapat memecahkan Algoritma Rijndael.
2. Algoritma ini memakai S-Box nonlinier.
3. Rijndael mempunyai suatu security margin yang cukup, tetapi kritik yang datang pada Rijndael cukup banyak, karena struktur matematikanya yang sederhana bisa memberikan peluang suatu saat
(52)
untuk diserang. Dengan kata lain, struktur yang sederhana memberikan Rijndael untuk dikembangkan dalam waktu dekat.
4. Rijndael tidak memakan banyak sumber daya komputasi. Kecepatan antara dekripsi lebih lama dibandingkan dengan enkripsinya.
5. AES:Rijndael mendukung perhitungan sub kunci untuk enkripsi. 6. AES:Rijndael memerlukan satu waktu dalam eksekusi untuk key
schedule dari semua sub kunci dekripsi dengan menggunakan kunci khusus.
Algoritma AES:Rijndael menyandikan data dalam empat langkah dasar yaitu, langkah SubBytes() , langkah ShiftRows(), langkah MixColumns(), dan
AddRoundKey(). Langkah-langkah tersebut dapat dideskripsikan lebih mudah
dengan memvisualisasikan data yang akan dikonversi dalam array byte segi empat. SubBytes() diperoleh dengan memakai atau mensubtitusikan ke dalam tabel nonlinear yang dikenal dengan tabel S-Box. ShiftRows() dilakukan melalui permutasi byte-byte data dari kolom array yang berbeda. Langkah
MixColumns() menyandikan data menjadi kombinasi linear dari byte-byte data dalam satu kolom array tersebut. AddRoundKey() dilakukan dengan operasi XOR antara data dengan kunci. Keempat langkah tersebut akan memiliki nama khusus dalam algoritma yang diterangkan AES (Gambar 3.1.)
(53)
Kunci = ♣♠ ○ ♂♀ ♫
State (tranformasi sementara) = ٱŽWgaö§μڤxΫjỒ’ir
Heksadesimal :
Plaintext = M T K t π │ Æ
4D616A75547275734B726970746F4B75 a r r o ∩ ? ? ¿
Kunci = j u i K ¥ · │
000102030405060708090A0B0C0D0E0F u s p u ¥ Å Q n
plaintext Setelah SubBytes()
π │ Æ « ‼ ┘ ٱ a ڤ Ồ
? ? ¿ ∩ Å ≤ q Ž ö x ’
· │ ¥ U í ò » W § Ϋ i
n
¥ Å Q d a } g μ j r
Setelah ShiftRows() SetelahMixColumns() Setelah AddRoundKey()
Gambar3.1. SubBytes() , ShiftRows(), MixColumns(), dan AddRoundKey() pada karakter
Algoritma AES adalah cipher block simetrik, kunci rahasia yang sama digunakan untuk menyandikan data maupun untuk memperoleh kembali data tersebut dari data tersandinya. Istilah “AES-128” merujuk pada algoritma Rijndael dengan panjang blok (block) data dan panjang kunci 128 bit. AES sendiri menggunakan panjang block data 128 bit, tetapi panjang kunci bisa berbeda-beda (AES-128, AES-192, dan AES-256). AES-128 melakukan 10
(54)
round dengan 9 round utama ditambah sekali final round, berikut Gambar 3.2.
sebagai ilustrasi diagram alir dari algoritma AES-128.
start
Round Å 0
AddRoundKey()
Round Å Round +1
SubBytes() SiftRows()
MixColoumns()
AddRoundKey()
Round = 9
SubBytes() SiftRows()
AddRoundKey()
End
start
Round Å 0
AddRoundKey()
Round Å Round +1
InvSubBytes() InvSiftRows()
InvMixColoumns()
AddRoundKey()
Round = 9
InvSubBytes() InvSiftRows()
AddRoundKey()
(55)
(a) (b)
Gambar3.2. Algoritma (a) Cipher, dan (b) Invers Cipher pada AES-128
3.2. Representasi Data
AES merepresentasikan data dengan cara urutan byte dan bit (0 atau 1 pada bn), dimana data diturunkan dari urutan input 128 bit per blok. Bit-bit
tersebut diberi indeks mulai dari 0 sampai dengan 127 (0 ≤ i < 128). Setiap urutan 8 bit (1 byte) diberlakukan sebagai entitas tunggal yang merupakan elemen finite field dengan representasi polinomial pada Persamaan 3.1..
b(x) = b7x7 + b6x6 + b5x5 + b4x4 + b3x3 + b2x2 + b1x + b0 ………... 3.1.
Pengindeks-an bit dalam byte pada block dapat dilihat pada Tabel 3.1..
Tabel 3.1. Pengindeksan Aliran Input
Urutan Bit 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 …
Input Input0 Input1 …
Posisi Bit/Byte 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 …
State State0 State1 …
Cipher AES dilakukan pada array byte 2 dimensi yang disebut state.
Block data disusun dalam state yang terdiri atas empat baris Nb byte (Nb = panjang block/4 adalah 4 untuk AES-128). Setiap byte diberi dua indeks yang
(56)
menyatakan posisinya, dinyatakan sebagai sr,c atau s[r,c], dengan indeks baris r (row) dalam interval 0 ≤r < 4, sedangkan indeks kolom c (coloum) dalam 0
≤ c < Nb. Data dalam state menginformasikan hasil setiap tahap transformasi
(intermediate result).
Input dikopi ke state array pada permulaan cipher dan inverse cipher, kemudian state diperbaharui pada akhir setiap transformasi (Gambar 3.1.). Nilai state pada transformasi yang terakhir kemudian dikopi ke output kembali (lihat Gambar 3.3.) dengan pengindeks-an yang serupa Tabel 3.1.
Input State Output
0
in in4 in8 in12 s0,0 s0,1 s0,2 s0,3 out0 out4 out8 out12 1
in in5 in9 in13 s1,0 s1,1 s1,2 s1,3 out1 out5 out9 out13 2
in in6 in10 in14 s2,0 s2,1 s2,2 s2,3 out2 out6 out10 out14 3
in in7 in11 in15 s3,0 s3,1 s3,2 s3,3 out3 out7 out11 out15 Gambar3.3. State array pada input dan output
State juga dapat dipandang sebagai word 4 byte, dengan indeks baris r dari
sr,c menyatakan indek dari keempat byte dalam setiap word. Dengan kata lain, state ekivalen dengan array dari empat word yang berindeks c (indek kolom dari sr,c) seperti dilihat pada Gambar 3.4..
w0 = s0,0 . s1,0 . s2,0 . s3,0 w2 = s0,2 . s1,2 . s2,2 . s3,2 w1 = s0,1 . s1,1 . s2,1 . s3,1 w3 = s0,3 . s1,3 . s2,3 . s3,3
0 , 0
(57)
0 , 1
s s1,1 s1,2 s1,3 0
, 2
s s2,1 s2,2 s2,3 0
, 3
s s3,1 s3,2 s3,3
W0 w1 w2 w3
Gambar3.4. State array ekivalen pada word array
3.3. Enkripsi
Cipher (Gambar 3.2.) berlangsung dalam rentetan empat fungsi pembangun (primitif) yang telah dijelaskan yaitu : SubBytes(), ShiftRows(), MixColumns(), dan AddRoundKey(). Rentetan tersebut dijalankan sebanyak
Nr-1 sebagai loop utama, setiap loop disebut round (Nr = 10 round untuk AES-128). AddRoundKey() dieksekusi sebagai round inisial sebelum loop
utama. Setelah loop utama tersebut berakhir (sembilan round), SubBytes(), ShiftRows(),dan AddRoundKey(), dieksekusi secara berturut-turut sebagai final round.
3.3.1. SubBytes()
Operasi ini merupakan suatu operasi subtitusi nonlinier yang beroperasi secara mandiri pada setiap byte dengan menggunakan tabel S-Box (Tabel 3.2.), transfomasi yang telah ditabelkan tersebut mengambil
invers multiplikatif GF(28) tiap byte, kemudian diikuti dengan transformasi affine. Tranformasi affine merupakan sebuah tranformasi yang terdiri dari perkalian oleh matriks yang diikuti dengan penjumlahan dari vector seperti yang ditunjukan pada Persamaan 3.2..
(58)
⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ + ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ = ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ 0 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 x x x x x x x x y y y y y y y y
……… 3.2.
0 , 0
s s0,1 s0,2 s0,3 s′0,0 s0′,1 s′0,2 s0′,3 0
, 1
s s1,2 s1,3
S-Box
0 , 1
s′ s1′,2 s1′,3 0
, 2
s s2,1 s2,2 s2,3 s′2,0 s2′,1 s′2,2 s2′,3 0
, 3
s s3,1 s3,2 s3,3 s′3,0 s3′,1 s′3,2 s3′,3 Gambar3.5. Subtitusi Byte
Tabel 3.2. S-Box - nilai subtitusi untuk byte ( sr,c) dalam bentuk heksadesimal
s C
0 1 2 3 4 5 6 7 8 9 A B C D E F
0 63 7C 77 7B F2 6B 6F C5 30 01 67 2B FE D7 AB 76
1 CA 82 C9 7D FA 59 47 F0 AD D4 A2 AF 9C A4 72 C0
2 B7 FD 93 26 36 3F F7 CC 34 A5 E5 F1 71 D8 31 15
3 04 C7 23 C3 18 96 05 9A 07 12 80 E2 EB 27 B2 75
4 09 83 2C 1A 1B 6E 5A A0 52 3B D6 B3 29 E3 2F 84
5 53 D1 00 ED 20 FC B1 5B 6A CB BE 39 4A 4C 58 CF
6 D0 EF AA FB 43 4D 33 85 45 F9 02 7F 50 3C 9F A8
r 7 51 A3 40 8F 92 9D 38 F5 BC B6 DA 21 10 FF F3 D2
8 CD 0C 13 EC 5F 97 44 17 C4 A7 7E 3D 64 5D 19 73
9 60 81 4F DC 22 2A 90 88 46 EE B8 14 DE 5E 0B DB
A E0 32 3A 0A 49 06 24 5C C2 D3 AC 62 91 95 E4 79
B E7 C8 37 6D 8D D5 4E A9 6C 56 F4 EA 65 7A AE 08
C BA 78 25 2E 1C A6 B4 C6 E8 DD 74 1F 4B BD 8B 8A
D 70 3E B5 66 48 03 F6 0E 61 35 57 B9 86 C1 1D 9E
E E1 F8 98 11 69 D9 8E 94 9B 1E 87 E9 CE 55 28 DF
F 8C A1 89 0D BF E6 42 68 41 99 2D 0F B0 54 BB 16
c r
(59)
3.3.2. ShiftRows()
ShiftRows() merupakan langkah permutasi yang dieksekusi lewat pergeseran siklik secara memutar dengan geseran yang acak pada tiga baris terakhir state (baris pertama, r = 0, tidak digeser). Untuk AES-128 baris ke dua digeser secara siklik ke kiri sekali, baris ke tiga dua kali, baris ke empat tiga kali (Gambar 3.6.(a) dan (b)).
ShiftRows()
0 , r
s sr,1 sr,2 sr,3
0 ,
r
s
′
s
r′
,1s
r′
,2s
r′
,3 (a)ShiftRows()
0 , 0
s s0,1 s0,2 s0,3 s0,0 s0,1 s0,2 s0,3 0
, 1
s s1,1 s1,2 s1,3 s1,1 s1,2 s1,3 s1,0 0
, 2
s s2,1 s2,2 s2,3 s2,2 s2,3 s2,0 s2,1 0
, 3
s s3,1 s3,2 s3,3 s3,3 s3,0 s3,1 s3,2 (b)
Gambar3.6. Shift Rows
(60)
Transformasi MixColumns() mengoperasikan state kolom demi kolom. Operasi ini dilakukan pada state kolom, dengan mengkoversikan setiap kolom sebagai polinomial. Kolom dianggap sebagai polinomial pada GF(28). Transformasi ini dapat digambarkan pada Gambar 3.7.
dengan perkalian matriks seperti Persamaan 3.3. dan Persamaan 3.4..
⎪ ⎪ ⎭ ⎪ ⎪ ⎬ ⎫ • ⊕ ⊕ ⊕ • = ′ • ⊕ • ⊕ ⊕ = ′ ⊕ • ⊕ • ⊕ = ′ ⊕ ⊕ • ⊕ • = ′ ) ] 02 ([ ) ] 03 ([ ) ] 03 ([ ) ] 02 ([ ) ] 03 ([ ) ] 02 ([ ) ] 03 ([ ) ] 02 ([ , 3 , 2 , 1 , 0 , 3 , 3 , 2 , 1 , 0 , 2 , 3 , 2 , 1 , 0 , 1 , 3 , 2 , 1 , 0 , 0 c c c c c c c c c c c c c c c c c c c c s s s s s s s s s s s s s s s s s s s s ………3.3. ⎥ ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ ′ ′ ′ ′ = ⎥ ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ × ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ c c c c c c c c s s s s s s s s , 3 , 2 , 1 , 0 , 3 , 2 , 1 , 0 02 01 01 03 03 02 01 01 01 03 02 01 01 01 03 02
……… 3.4.
MixColumns()
0 , 0
s s0,2 s0,3 s′0,0 s0′,2 s0′,3 0
, 1
s s1,2 s1,3 s1′,0 s1′,2 s1′,3 0
, 2
s s2,2 s2,3 s′2,0 s2′,2 s2′,3 0
, 3
s s3,2 s3,3 s′3,0 s3′,2 s3′,3 Gambar3.7. Mix Coloum
3.3.4. AddRoundKey()
c s0,
c s1,
c s2,
c s3,
c s0′,
c s1′,
c s2′,
c s3′,
(61)
Operasi ini merupakan suatu operasi dari penambahan kunci untuk setiap elemen pada finite field yang didefinisikan dengan operasi XOR (tabel 2.3.) dan setiap kunci round terdiri dari w[i] dimana w[i] merupakan sub kunci yang diturunkan dari kunci primer. Penjumlahan (Bagian 2.3.1.1.) dilakukan antara state dengan Round Key hasil ekspansi (Gambar 3.8.). Persamaan 3.5. berikut ini menjabarkan penjumlahan tersebut.
[s′0,c,s1′,c,s′2,c,s3′,c,]=[s0,c,s1,c,s2,c,s3,c,]⊕[wround*4+c] ……… 3.5.
dengan 0 ≤c < 4 (penjumlahan per block).
0 , 0
s s0,2 s0,3 s′0,0 s0′,2 s0′,3 0
, 1
s s1,2 s1,3 s1′,0 s1′,2 s1′,3 0
, 2
s s2,2 s2,3 w1+0 w1+2 w1+3 s2′,0 s2′,2 s2′,3 0
, 3
s s3,2 s3,3 s′3,0 s3′,2 s3′,3 Gambar3.8. Operasi XOR pada AddRoundKey()
3.4. Ekspansi Kunci
Algoritma AES melaksanakan kunci primer dan membuat suatu ekspansi kunci untuk menghasilkan key schedule. Kunci direpresentasikan menjadi
word (w[i]) lihat Gambar 3.4. serupa dengan state, akan tetapi elemen
statenya adalah cipher key. Ekspansi kunci yang diperlukan AES Nb(Nr+1)
word, sehingga untuk AES-128 membutuhkan 4(10+1) word = 44 word. Beberapa langkah yang ditempuh untuk membuat key schedule yaitu
Rotword(), SubWord, dan Rcon().
c
w1+ c
s0, c s1,
c s2,
c s3,
c s0′,
c s1′,
c s2′,
c s3′,
⊕
(62)
RotWord() adalah Jika w [i] direpresentasikan dengan array baris atau kolom menjadi baris (transpose), maka dapat di ilustrasikan dengan menggeser sekali ke kiri pada posisi byte seperti yang dilakukan shiftrows()
pada baris kedua. Misal w[i] =
(
a0,a1,a2,a3)
, maka didapat RotWord(w[i]) =(
a1,a2,a3,a0)
.SubWord() yaitu subtitusikan setiap byte yang dikonversikan kebentuk heksadesimal dengan tabel S-Box seperti yang dilakukan SubBytes(). Misal
w[i] = CF4F3C09, dengan mensubtitusikan ketabel S-Box menghasilkan SubWord(w[i]) = 8A84EB01, dimana CF menjadi 8A, 4F menjadi 84, 3C menjadi EB, dan 09 menjadi 01.
Rcon[i] merupakan suatu komponen tetap (konstanta) word dari round
dalam perhitungan ekspansi ke dalam key schedule. Adapun nilainya untuk AES-128 yang menggunakan 10 kali putaran dari Persamaan 3.6..
Rcon[i] = [xi, ‘00’, ‘00’, ‘00’] ……… 3.6.
Rcon[1] = [x0, ‘00’, ‘00’, ‘00’] = [‘01’, ‘00’, ‘00’, ‘00’] = 01000000
Rcon[2] = [x1, ‘00’, ‘00’, ‘00’] = [‘02’, ‘00’, ‘00’, ‘00’] = 02000000
Rcon[3] = [x2, ‘00’, ‘00’, ‘00’] = [‘04’, ‘00’, ‘00’, ‘00’] = 04000000
Rcon[4] = [x3, ‘00’, ‘00’, ‘00’] = [‘08’, ‘00’, ‘00’, ‘00’] = 08000000
Rcon[5] = [x4, ‘00’, ‘00’, ‘00’] = [‘10’, ‘00’, ‘00’, ‘00’] = 10000000
(1)
061 = 00111101 3D
062 > 00111110 3E
063 ? 00111111 3F
064 @ 01000000 40
065 A 01000001 41
066 B 01000010 42
067 C 01000011 43
068 D 01000100 44
069 E 01000101 45
070 F 01000110 46
071 G 01000111 47
072 H 01001000 48
073 I 01001001 49
074 J 01001010 4A
075 K 01001011 4B
076 L 01001100 4C
077 M 01001101 4D
078 N 01001110 4E
079 O 01001111 4F
080 P 01010000 50
081 Q 01010001 51
082 R 01010010 52
083 S 01010011 53
084 T 01010100 54
085 U 01010101 55
086 V 01010110 56
087 W 01010111 57
088 X 01011000 58
089 Y 01011001 59
090 Z 01011010 5A
091 [ 01011011 5B
092 \ 01011100 5C
093 ] 01011101 5D
094 ^ 01011110 5E
095 _ 01011111 5F
096 ` 01100000 60
097 a 01100001 61
098 b 01100010 62
(2)
100 d 01100100 64
101 e 01100101 65
102 f 01100110 66
103 g 01100111 67
104 h 01101000 68
105 i 01101001 69
106 j 01101010 6A
107 k 01101011 6B
108 l 01101100 6C
109 m 01101101 6D
110 n 01101110 6E
111 o 01101111 6F
112 p 01110000 70
113 q 01110001 71
114 r 01110010 72
115 s 01110011 73
116 t 01110100 74
117 u 01110101 75
118 v 01110110 76
119 w 01110111 77
120 x 01111000 78
121 y 01111001 79
122 z 01111010 7A
123 { 01111011 7B
124 | 01111100 7C
125 } 01111101 7D
126 ~ 01111110 7E
127 ⌂ 01111111 7F
128 Ç 10000000 80
129 ü 10000001 81
130 é 10000010 82
131 â 10000011 83
132 ä 10000100 84
133 à 10000101 85
134 å 10000110 86
135 ç 10000111 87
136 ê 10001000 88
137 ë 10001001 89
(3)
139 ï 10001011 8B
140 î 10001100 8C
141 ì 10001101 8D
142 Ä 10001110 8E
143 Å 10001111 8F
144 É 10010000 90
145 æ 10010001 91
146 Æ 10010010 92
147 ô 10010011 93
148 ö 10010100 94
149 ò 10010101 95
150 û 10010110 96
151 ù 10010111 97
152 ÿ 10011000 98
153 Ö 10011001 99
154 Ü 10011010 9A
155 ¢ 10011011 9B
156 £ 10011100 9C
157 ¥ 10011101 9D
158 ₧ 10011110 9E
159 ƒ 10011111 9F
160 á 10100000 A0
161 í 10100001 A1
162 ó 10100010 A2
163 ú 10100011 A3
164 ñ 10100100 A4
165 Ñ 10100101 A5
166 ª 10100110 A6
167 º 10100111 A7
168 ¿ 10101000 A8
169 ⌐ 10101001 A9
170 ¬ 10101010 AA
171 ½ 10101011 AB
172 ¼ 10101100 AC
173 ¡ 10101101 AD
174 « 10101110 AE
175 » 10101111 AF
176 10110000 B0
(4)
178 10110010 B2
179 │ 10110011 B3
180 ┤ 10110100 B4
181 10110101 B5
182 10110110 B6
183 10110111 B7
184 10111000 B8
185 10111001 B9
186 10111010 BA
187 10111011 BB
188 10111100 BC
189 10111101 BD
190 10111110 BE
191 ┐ 10111111 BF
192 └ 11000000 C0
193 ┴ 11000001 C1
194 ┬ 11000010 C2
195 ├ 11000011 C3
196 ─ 11000100 C4
197 ┼ 11000101 C5
198 11000110 C6
199 11000111 C7
200 11001000 C8
201 11001001 C9
202 11001010 CA
203 11001011 CB
204 11001100 CC
205 11001101 CD
206 11001110 CE
207 11001111 CF
208 11010000 D0
209 11010001 D1
210 11010010 D2
211 11010011 D3
212 11010100 D4
213 11010101 D5
214 11010110 D6
215 11010111 D7
(5)
217 ┘ 11011001 D9
218 ┌ 11011010 DA
219 █ 11011011 DB
220 ▄ 11011100 DC
221 ▌ 11011101 DD
222 11011110 DE
223 ▀ 11011111 DF
224 α 11100000 E0
225 ß 11100001 E1
226 Γ 11100010 E2
227 π 11100011 E3
228 Σ 11100100 E4
229 11100101 E5
230 µ 11100110 E6
231 11100111 E7
232 Φ 11101000 E8
233 Θ 11101001 E9
234 Ω 11101010 EA
235 11101011 EB
236 ∞ 11101100 EC
237 φ 11101101 ED
238 11101110 EE
239 ∩ 11101111 EF
240 ≡ 11110000 F0
241 ± 11110001 F1
242 ≥ 11110010 F2
243 ≤ 11110011 F3
244 11110100 F4
245 11110101 F5
246 ÷ 11110110 F6
247 ≈ 11110111 F7
248 ° 11111000 F8
249 · 11111001 F9
250 · 11111010 FA
251 √ 11111011 FB
252 ⁿ 11111100 FC
253 ² 11111101 FD
254 ■ 11111110 FE
(6)