Algoritma lain dari Kriptografi adalah Algoritma Rijndael. Algoritma Rijndael merupakan algoritma yang memenangkan sayembara terbuka yang diadakan oleh NIST (National Institute of Standards and Technology) pada tahun 1999. Algoritma ini berkompetisi dengan dengan 4 finalis lain yang membawa Algoritma Serpent, MARS, Twofish, dan RC6 yang memiliki tujuan sama, yaitu membuat standard algoritma kriptografi yang baru, yang akan menggantikan Algoritma Data Encryption Standard (DES), yang dianggap sudah tidak aman.
Algoritma Rijndael juga terdiri dari proses enkripsi dan dekripsi. Proses enkripsinya terdiri dari 4 jenis transformasi bytes, yaitu SubBytes, ShiftRows, Mixcolumns, dan AddRoundKey.
Untuk lebih jelasnya Gambar 5.5 menunjukkan diagram alur proses enkripsi Algoritma Rijndael.
78
Gambar 5.5 Diagram Proses Enkripsi Algoritma Rijndael.
Dalam Gambar 5.5 diperlihatkan proses enkripsinya diawali dengan proses AddRoundKey dan diakhiri juga dengan proses AddRoundKey. Terdapat dalam flowchart Gambar 5.5 kotak Kunci Putaran, yang tidak dibahas dalam buku ini, karena cukup panjang ulasannya. Dalam Permasalahan 5.2.1 akan diperlihatkan suatu text yang akan di enkripsi kemudian dikembalikan lagi melalui dekripsi. Namun tetap dibatasi, tidak semua proses dilakukan, karena akan ada 10 iterasi yang kalau dituliskan seluruhnya akan sangat panjang dan cukup menjemukan. Solusi dari permasalahan ini sebagian akan diuraikan dalam perhitungan matematik matriks dan vektor, tetapi sebagian akan dipersingkat dengan uraian-uraian proses tanpa perhitungan.
Permasalahn 5.2.1:
Akan dilakukan enkripsi dan dekripsi suatu text dengan menggunakan Algoritma Rijndael.
Text Awal Hasil hexa decimal P A G I
0 0 0 0
79 0 0 0 0
0 0 0 0
Sebagai langkah awal ditentukan terlebih dahulu Key yang
digunakan. Key ini harus dirahasiakan. Dalam permasalahan
ini misalkan diambil Key adalah
A. Proses AddRoundKey
Dilakukan proses AddRoundKey dengan Key yang telah ditentukan, maka hasilnya menjadi:
Awal Hasil AddRoundKey 50 41 47 49
00 00 00 00 00 00 00 00 00 00 00 00
Proses AddRoundKey dilakukan dimulai dengan mengubah matriks- matriks dalam bentuk hexadecimal ke dalam bentuk biner, selanjutnya dilakukan proses XOR.
50 = 0101 0000 41 = 0100 0001 4d = 0100 1011 XOR 41 = 0100 0001 XOR
1d = 0001 1011 00 = 0000 0000
Demikian seterusnya sehingga diperoleh hasil AddRoundKey.
B. Proses SubBytes
50 41 47 49 00 00 00 00 00 00 00 00 00 00 00 00
4d 41 48 41 53 49 53 57 41 00 00 00 00 00 00 00
1d 00 0f 08 53 49 53 57 41 00 00 00 00 00 00 00
80
Proses selanjutnya setelah AddRoundKey adalah SubBytes, dimana dalam proses SubBytes membutuhkan Tabel 5.2 yaitu Substitusi S-Box untuk SubBytes
Sehingga hasil SubBytes berdasar Tabel 5.2 adalah
Proses ini relatif mudah, karena hanya
mengubah matriks awal menjadi matriks
baru dengan menggunakan Tabel 5.2
C. Proses ShiftRows
Proses ini hanya menggeser matriks dengan pola menurut aturan ShiftRows. Aturan ShiftRows adalah: Baris pertama tidak digeser, baris kedua digeser satu elemen ke kanan, baris ketiga digeser dua elemen ke kanan, dan baris ketiga digeser tiga elemen ke kanan.
Dari aturan tersebut, maka hasil dari proses ShiftRows adalah:
1d 00 0f 08 53 49 53 57 41 00 00 00 00 00 00 00
a4 63 76 30 ed 3b ed 5d 83 63 63 63 63 63 63 63
a4 63 76 30 ed 3b ed 5d 83 63 63 63
81
D. Proses MixColums
Proses terakhir dalam Algoritma Rijndael adalah proses MixColums. Proses ini juga yang menggunakan penjumlahan dan perkalian matriks dalam prosesnya.
Proses Mixcolumns mengoperasikan setiap elemen yang berada dalam satu kolom pada state. Elemen pada kolom dikalikan dengan suatu polinomial tetap yaitu
𝑎(𝑥) = {03}𝑥 + {01}𝑥 + {01}𝑥 + {02} (Wibowo, 2004).
Langkah-langkah Operasi matriks Mixcolumns:
1. Membentuk matriks perkalian dengan kolom pertama:
02 03 01 01 01 02 03 01 01 01 02 03 03 01 01 02
𝑎4 3𝑏 63 63
= 𝑌 𝑌 𝑌 𝑌
2. Merubah dari notasi hexa decimal ke notasi biner selanjutnya ke notasi polinomial Notasi Hexa
decimal
Notasi Biner Notasi polinomial
01 0000 0001 1
02 0000 0010 x
03 0000 0011 x+1
a4 1010 0100 𝑥 + 𝑥 +𝑥
3b 0011 1011 𝑥 + 𝑥 +𝑥 +x+1
63 0110 0011 𝑥 + 𝑥 + x+1
3. Mencari 𝑌 , 𝑌 , 𝑌 , 𝑌.
𝑌 = [{02} • a4] ⊕ [{03} • 3b] ⊕ [{01} • 63] ⊕ [{01} • 63]
63 63 63 63 a4 63 76 30
3b ed 5d ed 63 63 83 63 63 63 63 63
82
𝑌 = (𝑥) • ( 𝑥7+ 𝑥5+𝑥2)⊕(x+1) •( 𝑥 + 𝑥 +𝑥 +x+1)⊕(1)•(𝑥6+ 𝑥5+ x+1) ⊕ (1)
•(𝑥6+ 𝑥5+ x+1)
𝑌 = ( 𝑥8+ 𝑥6+𝑥3)⊕( 𝑥6+ 𝑥5+𝑥4+𝑥2+ x)⊕( 𝑥 + 𝑥 +𝑥 +x+1)⊕(𝑥6+ 𝑥5+ x+1)
⊕(𝑥6+ 𝑥5+ x+1)
𝑌 = 𝑥8+ 𝑥2+ 1 = 0001 1110 = 1e
𝑌 = [{01} • a4] ⊕ [{02} • 3b] ⊕ [{03} • 63] ⊕ [{01} • 63]
𝑌 = (1) • ( 𝑥7+ 𝑥5+𝑥2) ⊕(x) • ( 𝑥 + 𝑥 +𝑥 +x+1) ⊕(x+1) •(𝑥6+ 𝑥5 + x+1) ⊕ (1)
•(𝑥6+ 𝑥5 + x+1)
𝑌 = ( 𝑥7+ 𝑥5+𝑥2) ⊕( 𝑥 + 𝑥 +𝑥 +𝑥 +x) ⊕ (𝑥7+ 𝑥6 + 𝑥2+ x)⊕ (𝑥6+ 𝑥5 + x+1)
⊕ (𝑥6+ 𝑥5 + x+1)
𝑌 = 𝑥 +𝑥 = 0001 0100 = 14
𝑌 = [{01} • a4] ⊕ [{01} • 3b] ⊕ [{02} • 63] ⊕ [{03} • 63]
𝑌 = (1) • ( 𝑥7+ 𝑥5+𝑥2) ⊕(1) • ( 𝑥 + 𝑥 +𝑥 +x+1) ⊕(x) •(𝑥6+ 𝑥5 + x+1) ⊕ (x+1)
•(𝑥6+ 𝑥5 + x+1)
𝑌 = ( 𝑥7+ 𝑥5+𝑥2) ⊕ ( 𝑥 + 𝑥 +𝑥 +x+1) ⊕(𝑥7+ 𝑥6 +𝑥 +x) ⊕ (𝑥7+ 𝑥6 +𝑥 +x) (𝑥6+ 𝑥5 + x+1)
𝑌 = (𝑥7+ 𝑥6 +𝑥 + 𝑥 + 𝑥 +𝑥 ) = 252 (dec) = fc 𝑌 = [{03} • a4] ⊕ [{01} • 3b] ⊕ [{01} • 63] ⊕ [{02} • 63]
𝑌 = (x + 1) • ( 𝑥7+ 𝑥5+𝑥2) ⊕(1) • ( 𝑥 + 𝑥 +𝑥 +x+1) ⊕(1) •(𝑥6+ 𝑥5 + x+1) ⊕ (x)
•(𝑥6+ 𝑥5 + x+1)
𝑌 = ( 𝑥8+ 𝑥6+𝑥3) ⊕ ( 𝑥7+ 𝑥5+𝑥2) ⊕ ( 𝑥 + 𝑥 +𝑥 +x+1) ⊕(𝑥6+ 𝑥5 + x+1) ⊕ (𝑥7+ 𝑥6 ++𝑥 +x)
𝑌 = ( 𝑥8+ 𝑥6+𝑥5+ 𝑥4+ 𝑥) = 105 (dec) = 69
Sehingga 𝑌 𝑌 𝑌 𝑌
= 1𝑒 14 𝑓𝑐 69
Secara sama proses dilakukan untuk kolom kedua, ketiga, dan ke-empat. Tidak diuraikan secara rinci perhitungan untuk kolom-kolom selanjutnya. Dapat digunakan program dalam mencari hasil proses MixColumns, karena apabila menggunakan perhitungan secara konvensional membutuhkan ketelitian yang luar biasa dan waktu yang cukup lama.
Berikut hasil proses MixColumns yang telah dihitung dengan bantuan program:
83 02 03 01 01
01 02 03 01 01 01 02 03 03 01 01 02
𝑎4 63 76 30 3𝑏 𝑒𝑑 5𝑏 𝑒𝑑 63 63 83 63 63 63 63 63
=
1𝑒 𝑒𝑎 𝑒1 4𝑐 14 64 3𝑑 37 𝑓𝑐 𝑒𝑑 95 𝑏𝑒 69 𝑒𝑑 84 18
Dapat dirasakan, betapa melelahkan proses perhitungan perkalian matriks yang dilakukan berulang-ulang. Semua proses MixColumns dapat dilakukan dengan menggunakan program.
Akan tetapi program yang dibuat untuk meyelesaikan algoritma ini juga memerlukan pemahaman yang cukup dalam tentang matriks, algoritma Rijndael, tabel biner, desimal dan hexadesimal, program kunci putaran yang tidak diterangkan secara mendetail dalam buku ini.
Permasalahan enkripsi tidak berhenti sampai disini, akan tetapi akan dilakukan proses A sampai dengan D selama sembilan kali ( 9 tahap), ditambah satu tahap yang prosesnya tanpa MixColumns, dimana masing-masing tahap, Key selalu berubah dengan aturan yang telah ditentukan.
Dalam solusi permasalahan ini hanya akan diterangkan proses enkripsi tahap pertama. Akhir proses enkripsi akan menghasilkan matriks
Menggunakan matriks hasil tersebut, maka dengan dekripsi akan ditunjukkan bahwa matriks hasil akan kembali pada soal awal.
Namun sebelumnya akan diberikan alur proses dekripsi pada Gambar 5.6.
eb 00 97 93 59 d8 90 6c b4 Ae ff 8a 62 77 47 5d
84
Gambar 5.6 Diagram Proses Dekripsi Algoritma Rijndael.
Selanjutnya akan dilakukan langkah-langkah dekripsi, dimana proses kunci putaran pada enkripsi telah menghasilkan Key terakhir:
Selanjutnya dengan Key yang ada dilakukan proses AddRoundKey, InvShiftRows, InvSubBytes, dan terakhir AddRoundKey, dengan sembilan (9) tahap, dilanjutkan dengan tahap ke-sepuluh.
E. AddRoundKeys 4c 3a 6f cc 0d 91 89 d9 58 1c b7 2b 73 12 a4 42
eb 00 97 93
85
Hasil Enkripsi Key
Proses perhitungan XOR dari bilangan- bilangan dalam hexadecimal adalah sebagai berikut:
eb = 1110 1011 59 = 0101 1001 4c = 0100 1100 XOR 0d = 0000 1101 XOR
1010 0111 = a7 0101 0100 = 54
Sehingga hasil AddRoundKey untuk semua bilangan hexadeciml dalam matriks adalah
F. InvShiftRows
Proses selanjutnya adalah InvShiftRows. Proses ini hanya menggeser baris matriks. Baris pertama tetap, baris kedua mengalami pergeseran bit 3 kali, baris ketiga mengalami pergeseran bit 2 kali dan baris ke empat mengalami pergeseran bit 1 kali.
G. InvSubBytes
Sama seperti proses SubBytes,
proses InvSubBytes juga
memerlukan Tabel Substitusi S-Box untuk InvSubByte
Tabel 5.4 Substitusi S-Box untuk InvSubByte 59 d8 90 6c
b4 ae ff 8a 62 77 47 5d
4c 3a 6f cc 0d 91 89 d9 58 1c b7 2b 73 12 a4 42
a7 3a f8 5f 54 49 19 b5 ec b2 48 a1 11 65 e3 1f
a7 3a f8 5f 54 49 19 b5 ec b2 48 a1 11 65 e3 1f
a7 3a f8 5f b5 54 49 19 48 a1 ec b2 65 e3 1f 11
86
Selanjutnya dilakukan proses InvSubBytes, hasilnya menjadi:
InvSubBytes
Sebelum melakukan proses
AddRoundKey, maka dilakukan putaran kunci, sehingga terbentuk Key yang baru. Demikian seterusnya, proses dilakukan sampai 9 tahap yang sama, akhirnya masuk dalam tahap 10 sehingga hasilnya kembali pada plaintext yang harus sama dengan aslinya.
Berikut adalah hasil setelah InvSubBytes tahap ke-sepuluh:
Key AddRoundKey
Ternyata, Key pada tahap ke-sepuluh
kembali lagi pada Key awal. Sehingga
a7 3a f8 5f b5 54 49 19 48 a1 ec b2 65 e3 1f 11
89 a2 e1 84 d2 fd a4 8e d4 f1 83 3e bc 4d cb e3
1d 00 0f 08 53 49 53 57 41 00 00 00 00 00 00 00
4d 41 48 41 53 49 53 57 41 00 00 00 00 00 00 00
87 dengan proses AddRoundKey, hasilnya menjadi
atau
Demikian proses algoritma Rijndael, meski tidak mungkin diterangkan seluruh prosesnya, namun dari beberapa langkah yang diberikan, telah tampak fungsi matriks dan vektor yang sangat besar.
Contoh-contoh yang dituangkan dalam permasalahan-permasalahan dalam BAB V kiranya cukup memberikan gambaran pentingnya peranan matriks dan vektor dalam mencari permasalahan-permasalahan yang ada dalam Teknik Elektro dan Teknik Informatika.
Peran matriks dan vektor dalam bidang Teknik lainnya tentu saja tidak sedikit, namun untuk mengulas keseluruhan peran matriks dan vektor dalam dunia teknik dibutuhkan waktu yang cukup lama, yaitu untuk mencari permasalahan yang ada dalam tiap-tiap jurusan di bidang teknik tertentu, selanjutnya mempelajari algoritma yang digunakan untuk mencari solusinya, baru menyelesaikan dengan bantuan matriks ataupun vektor.
Kesulitan perhitungan yang biasanya dlakukan beberapa kali (iterasi) harus diatasi dengan menggunakan program. Pembuatan program untuk mendapatkan solusi cepat inipun menggunakan matriks dalam pembuatannya.
Betapa besar peran matriks dan vektor dalam membantu mencari solusi persoalan matematis sudah sangat terlihat. Tanpa tahu matriks dan vektor, kesulitan besar akan menghadang didepan mata kita untuk solusi-solusi persoalan besar yang tidak mungkin dihitung secara manual. Demikian akhir dari Bab V, semoga bisa menjadi awal dari penulisan buku lain dengan tema yang lain.
50 41 47 49 00 00 00 00 00 00 00 00 00 00 00 00
P A G I 00 00 00 00 00 00 00 00 00 00 00 00
88
DAFTAR PUSTAKA
Anton, H., C. Rorres, Elementary Linear Algebra, John Wiley & Sons, 2000 Forouzan, Behrouz, Cryptography and Network Security, McGraw-Hill, 2006 Guntoro, Nanang Arif, Fisika Terapan, Jakarta, 2013
Hayt, William H., and Jack E.Kemmerly. 2005. Rangkaian Listrik, Erlangga, Jakarta:
Erlangga.
Jr Frank Ayres. 2001. Schaum's Outline Series, Theory & Problems of Matrices, Schaum Publishing Co, Aug 25.
Lipschutz, Seymour, and Marc Lars Lipson. 2001. Schaum's, Outline of Theory and Problems of Linear Algebra.
Poetro, Bagus Satrio Waluyo, Sugiharto, dkk. 2010. Kriptografi Citra Digital Dengan
Algoritma Rijndael dan Transformasi Wavelet Diskrit Haar. Prosiding Seminar Nasional Undip.
Sintarsih. 1995. Diktat Kuliah Kalkulus II, Semarang.
Soemartojo, Noeniek. 1998. Analisa Vektor, Edisi Keempat. Jakarta:Erlangga, PT Gelora Aksara Pratama.
Spiegel. M.R., dan Hans. D.W. 1994. Analisis Vektor dan Suatu Pengantar Analisis Tensor.
Jakarta:Erlangga.
http://longsani.wordpress.com/2012/11/28/basis-dan-dimensi/
89 LAMPIRAN
90
91
92
PROFIL PENULIS
Sri Arttini Dwi Prasetyowati terlahir di Yogyakarta dan dibesarkan di Semarang, Jawa Tengah. Pendidikan Sarjananya diselesaikan di Jurusan Matematika, Fakultas Matematika dan Ilmu Pengetahuan Alam, Universitas Gadjah Mada Yogyakarta pada tahun 1989. Dia pernah bekerja di Astra Graphia Jakarta pada tahun 1990 sebelum kembali ke Semarang menjadi Dosen di Universitas Islam Sultan Agung pada tahun 1995. Pendidikan Magister dan Doktornya diselesaikan di Universitas yang sama. Meski pendidikan Sarjana dan Magister yang ditekuni adalah bidang Matematika, namun dia memperoleh gelar Doktor di bidang Teknik Elektro. Berusaha mengaplikasikan ilmu Matematika yang dimilikinya di bidang Teknik merupakan cita-citanya sejak menjadi seorang sarjana. Saat ini, dia mulai menekuni bidang isyarat elektronika, bagian dari ilmu elektronika yang sangat bernuansa matematika sesuai dengan riset-riset yang dia lakukan setelah lulus program Doktor dari Teknik Elektro UGM.