32
INFOKAM Nomor I / Th. X/ Maret / 14
MENGENAL PROSES PERHITUNGAN ENKRIPSI MENGGUNAKAN ALGORITMA KRIPTOGRAFI ADVANCE ENCRYPTION STANDARD(AES) RIJDNAEL SUGENG MURDOWO Dosen AMIK JTC Semarang ABSTRAKSI : Masalah keamanan dan kerahasian data adalah suatu hal yang sangat penting, untuk itu perlu dilakukan perlindungan terhadap data yang kita miliki. Teknik ekripsi dalam ilmu kriptografi merupakan salah satu cara yang dapat mengamankan data dari ganguan orang lain. Kriptografi merupakan seni dalam mengamankan pesan menjadi suatu pesan yang tidak dikenali.Rijndael atau dikenal juga Advance Encryption Standard (AES) merupakan salah algoritma kriptografi yang digunakan. Keyword : kriptografi, Advance Encryption Standard (AES) 1. PENDAHULUAN Keamanan sistem informasi dari data yang kita buat sangat berperan penting, untuk menunjang keaslian data tersebut agar tidak mudah dirubah oleh orang yang tidak bertanggung jawab.Banyak sekali permasalahan dalam keamanan sistem informasi seperti data hilang, data yang disusupi, meskipun telah menggunakan pengamanan data berupa password, tetap saja ada yang sanggup menembusnya. Dilandasi persolalan tersebut akan lebih baik jika semua pengguna sistem informasi menerapkan suatu sistem keamanan yang relatif lebih aman untuk melindungi datanya dari orang lain seperti pemanfaatan algoritma kriptografi (enkripsi dan deskripsi). Enkripsi adalah salah satu teknik yang paling baik untuk menjaga kerahasiaan suatu data dalam berkomunikasi. Dengan enkripsi, suatu informasi akan menjadi sulit untuk diketahui oleh orang yang tidak berhak, karena penggunaan password saja kurang efektif didalam proses pengamanan data karena mudahnya untuk ditembus dengan waktu yang relatif singkat. 2. LANDASAN TEORI 2.1. Kriptografi Kriptografi (cryptography) merupakan ilmu dan seni untuk menjaga pesan agar aman. (Cryptography is the art and science of keeping messages secure.) “Crypto” berarti “secret” (rahasia) dan “graphy” berarti “writing” (tulisan). Algoritma kriptografi terdiri dari enkripsi dan dekripsi. Enkripsi adalah sebuah proses yang melakukan perubahan suatu pesan dari yang bisa dimengerti (plain text) menjadi pesan yang tidak bisa dimengerti (cipher text) dengan menggunakan suatu kunci (key). Enkripsi dapat diartikan sebagai kode atau cipher. Enkripsi dibentuk berdasarkan suatu algoritma yang akan mengacak suatu informasi menjadi bentuk yang tidak bisa dibaca atau tak bisa dilihat. Dekripsi adalah proses dengan algoritma yang sama untuk mengembalikan informasi teracak menjadi bentuk aslinya. Tujuan utama dari kriptografi yang merupakan aspek kemanan sistem informasi sebagai berikut : a. Kerahasiaan, menjaga isi dari informasi dari orang yang tidak memiliki otoritas untuk mengaksenya. b. Integritas Data, sistem harus mampu menjaga keaslian data terhadap manipulasi oleh pihak lain. c. Autentifikasi, berhubungan dengan keaslian identitas, waktu pengiriman, isi data. d. Non Repudiasi, menghindari adanya penyangkalan dai prngiriman.
32
INFOKAM Nomor I / Th. X/ Maret / 14
33
2.2. Jenis-Jenis Kriptografi 2.2.1. Algoritma Simetris Algoritma simetris disebut juga algoritma kunci rahasia (private key).Dalam algoritma simetris ini enkripsi dapat dilakukan jika si pengirim informasi dan penerimanya telah sepakat untuk menggunakan metode enkripsi atau kunci rahasia (secret key) enkripsi tertentu. Proses enkripsi dan dekripsi dalam algoritma simetris ini menggunakan satu kunci rahasia (secret key) yang telah disepakati sebelumnya. Plain Text
Encryption
Encryption Text
Secret Key
Encryption Text
Decryption
Plain Text
Gambar 1 : Algoritma Simetris 2.2.2. Algoritma Kunci Publik (P ublik K ey ) Algoritma kunci publik (public key) ini disebut juga algoritma asimetris.Berbeda dengan algoritma simetris, algoritma kunci publik ini menggunakan dua kunci yang berbeda, yaitu kunci publik dan kunci rahasia atau kunci pribadi (private key).
Public Key
Plain Text
Encryption
Private Key
Cipher Text
Decryption
Plain Text
Gambar 2: Algoritma Asimetris
2.3.
Advanced Encryption Standard (AES)
2.3.1. Sejarah Singkat Pada tahun 1997, National Institute of Standard and Technology (NIST) of United States mengeluarkan Advanced Encryption Standard (AES) untuk menggantikan Data Encryption Standard (DES).AES dibangun dengan maksud untuk mengamankan pemerintahan diberbagai bidang. Algoritma AES di design menggunakan blok chiper minimal dari blok 128 bit input dan mendukung ukuran 3 kunci (3-key-sizes), yaitu kunci 128 bit, 192 bit, dan 256 bit. Pada agustus 1998, NIST mengumumkan bahwa ada 15 proposal AES yang telah diterima dan dievaluasi, setelah mengalami proses seleksi terhadap algoritma yang masuk, NIST menumumkan pada tahun 1999 bahwa hanya ada 5 algoritma yang diterima, algoritma tersebut adalah : MARS, RC6, Rijndael, Serpent dan Twofish. Algoritma-algoritma tersebut manjalani berbagai macam pengetesan.Pada bulan oktober 2000, NIST mengumumkan bahwa Rijndael sebagai algoritma yang terpilih untuk standar AES yang baru. 2.3.2. Pengantar Matematis Seluruh byte dalam algoritma AES diinterpretasikan sebagai elemen finite field.Elemen finite field ini dapat dikalikan dan dijumlahkan, tetapi hasil dari penjumlahan
34
INFOKAM Nomor I / Th. X/ Maret / 14 dan perkalian elemen finite field sangat berbeda dengan hasil dari penjumlahan dan perkalian bilangan biasa. Penjumlahan Penjumlahan dari dua elemen dalam suatu finite field dilakukan dengan menjumlahkan koefisien dari pangkat polinom yang bersesuaian dari dua elemen tersebut. Penjumlahan dilakukan dengan operasi XOR dan dinotasikan dengan Å. Dengan operasi ini, maka 1Å1 = 0, 1Å0 = 1, 0Å1 = 1, dan 0Å0 = 1. Pengurangan dari polinomial identik dengan penjumlahan polinomial. Sebagai alternatif, penjumlahan elemen-elemen pada finite field dapat dijelaskan sebagai penjumlahan modulo 2 dari bit yang bersesuaian dalam byte. Untuk 2 byte {a7a6a5a4a3a2a1a0} dan {b7b6b5b4b3b2b1b0}, hasil penjumlahannya adalah {c7c6c5c4c3c2c1c0} dimana setiap ci = ai Å bi. Contoh dari operasi penjumlahan adalah sebagai berikut : (x6+x4+x2+x+1) Å (x7+x+1) = x7+x6+x4+x2 (notasi polinomial) {01010111}Å{10000011} = {11010100} (notasi biner) {57}Å{83} = {d4} (notasi hexadesimal) Perkalian Dalam representasi polinomial, perkalian dalam GF(28) yang dinotasikan dengan • mengacu pada perkalian modulo polinomial sebuah irreducible polynomial yang berderajat 8. Sebuah polinom bersifat irreducible jika satu-satunya pembagi adalah dirinya sendiri dan 1. Untuk algoritma AES, irreducible polynomial ini adalah : m(x) = x8 + x4 + x3 + x + 1 atau dalam notasi hexadesimal adalah {01}{1b}. Sebagai contoh, {57}•{83} = {c1}, karena (x6 + x4 + x2 + x + 1) • (x7 + x + 1) 13 11 9 = x + x + x + x8 + x7 + x7 + x5 + x3 + x2 + x + x6 + x4 + x2 + x + 1 = x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1 dan x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1 modulo (x8 + x4 + x3 + x + 1) = x6 + x5 + 1 Pengurangan modular oleh m(x) memastikan bahwa hasilnya akan berupa polinomial biner dengan derajat kurang dari 8, sehingga dapat dipresentasikan dengan 1 byte saja. 2.3.3. Algoritma AES
. Gambar 3: Algoritma Enkripsi AES
34
INFOKAM Nomor I / Th. X/ Maret / 14
35
Proses Enkripsi Enkripsi adalah proses mengubah suatu pesan asli (plaintext) menjadi suatu pesan dalam bahasa sandi (ciphertext). C = E (M) Keterangan : M = Pesan asli (Plaintext) E = Proses enkripsi dengan Key Private C = Chipertext (Plaintext yang terenkripsi AES) Secara umum enkripsi dengan algoritma AES sebagai berikut : 1. AddRoundKey: melakukan XOR antara state awal (plainteks) dengan cipher key. Tahap ini disebut juga initial round. 2. Round : Putaran sebanyak Nr – 1 kali. Proses yang dilakukan pada setiap putaran adalah: a) SubBytes: substitusi byte dengan menggunakan table substitusi (S-box). b) ShiftRows: pergeseran baris-baris array state secara wrapping. c) MixColumns: mengacak data di masingmasing kolom array state. d) AddRoundKey: melakukan XOR antara state sekarang round key. 3. Final round: proses untuk putaran terakhir:
a) SubBytes b) ShiftRows c) AddRoundKey
Diskripsi proses enkripsi sebagai berikut : 1. Add Round Key Add Round Key pada dasarnya adalah mengkombinasikan chiper teks yang sudah ada dengan chiper key yang chiper key dengan hubungan XOR. Bagannya bisa dilihat pada Gambar 4
Gambar 4 :Add Round Key 2. Sub Bytes Proses SubBytes () memetakan setiap byte dari array State dengan menggunakan tabel substitusi S-Box. Tidak seperti Des S-box berbeda pada setiap putaran, AES hanya mempunyai satu buah S-Box.Tabel yang digunakan adalah seperti pada tabel 1. Tabel 1 : Tabel S-BOX Untuk Enkripsi
36
INFOKAM Nomor I / Th. X/ Maret / 14
Cara pensubstitusian adalah untuk setiap byte pada array state, misalkan S[r,c] = xy, yang dalam hal ini xy adalah digit heksadesimal dari nilai S’[r,c], maka nilai substitusinya, yang dinyatakan dengan S’[r,c], adalah elemen di dalam S-Box yang merupakan perpotongan baris x dengan kolom y. Gambar 5, memperlihatkan transformasi SubBytes.
Gambar 5 :Ilustrasi SubBytes
Untuk angka 19 cara mengambil nilai sub bytenya sebagai berikut ini : Tabel 2 : Tabel S-BOX Pengambilan Nilai Sub Byte
36
INFOKAM Nomor I / Th. X/ Maret / 14
37
3. Shift Rows Proses ShiftRows() ini adalah proses yang sangat sederhana. Pada ShiftRows() melakukan pergeseran wrapping (sikklik) pada 3 baris terakhir dari array state. Jumlah pergeseran bergantung nilai baris (r). Baris r = 1 digeser sejauh 1 byte, baris r = 2 digeser 2 byte, dan baris r = 3 digeser sejauh 3 byte. Baris r = 0 tidak digeser. Contoh : Geser baris 0 sebesar 0 byte : Karena 0 byte maka tidak melakukan pergeseran dan state-pun tetap sama. Geser Baris 1 Sebesar 0 Byte Geser Baris 3 Sebesar Dua Byte
Geser Baris 2 Sebesar Satu Byte
Geser Baris 4 Sebesar Tiga Byte
Gambar 6: Ilustrasi dari Shift Row Hasil dari Shift Row Sebagai berikut :
4. Mix Columns Transformasi menggunakan MixColumns() adalah proses ketiga dalam satu Ronde enkripsi AES. Di sini, kolom-kolom pada array state akan diperlukan sebagai suatu polynomial yang berada dalam GF(28) dan akan dikalikan dengan modulo x4 + 1 , dengan suatu polynomial tertentu seperti terlihat pada tabel berikut : Tabel 3 : Bilangan Polynominal Untuk Mix Column
Hasil Subtitusi dikalikan dengan matrix MixColumn :
Hasil Perkalian dengan matrix MixColumn :
38
INFOKAM Nomor I / Th. X/ Maret / 14
Pada proses AddRoundKey() maka 128 bit hasil state akan di-XOR-kan dengan Kunci Ronde, yaitu kunci hasil dari proses Expand Key. Pada awal enkripsi, 128 bit plaintext akan di-XOR-kan dengan 128 bit kunci yang asli. Kemudian 128 bit plaintext akan mengalami proses-proses : SubBytes(), ShiftRows() dan MixColumns(). Pada proses AddRoundKey(), 128 bit yang sudah melalui tiga tersebut akan di-XOR-kan dengan kunci ronde hasil Ekspand Key yang pertama. Hasil AddRoundKey() ini adalah state pada ronde 1. State 1 ini akan mengalami ketiga proses tersebut kembali. Pada AddRoundKey() yang berikut, maka 128 bit yang sudah mengalami perubahan pada ketiga proses tersebut kembali akan di-XOR-kan dengan kunci hasil Ekspand Key kedua dan seterusnya. 3. Simulasi Proses Perhitungan Plain Text : AMIKJTCSEMARANG0 Chiper Key : 2014000000000000 Masukkan Ke Kolom 4 X 4
Plain Text A J E A
M T M N
Chiper Key I C A G
K S R 0
2 0 0 0
0 0 0 0
1 0 0 0
4 0 0 0
31 30 30 30
34 30 30 30
Konversi Ke Hexadesimal
Plain Text 41 4A 45 41
4D 54 4D 4E
Chiper Key 39 43 41 47
4B 53 52 30
32 30 30 30
30 30 30 30
Konversikan Ke Biner
Plain Text 01000001 01001010 01000101 01000001
01001101 01010100 01001101 01001110
00111001 01000011 01000001 01000111
01001011 01010011 01010010 00110000
00110000 00110000 00110000 00110000
00110001 00110000 00110000 00110000
00110100 00110000 00110000 00110000
Chiper Key 00110010 00110000 00110000 00110000
Initial Round AddRoundKey 41 XOR 32 = 01000001 XOR 00110010 = 01110011
38
INFOKAM Nomor I / Th. X/ Maret / 14 4A XOR 30 = 01001010 XOR 00110000 = 01111010 45 XOR 30 = 01000101 XOR 00110000 = 01110101 41 XOR 30 = 01000001 XOR 00110000 = 01110001 Dengan Cara yang sama 01110011 01111010 01110101 01110001 Konversi 73 7A 75 71
01111101 01100100 01111101 01111110
00001000 01110011 01110001 01110111
01111111 01100011 01100010 00000000
Ke Hexadesimal 7D 08 7F 64 73 63 7D 71 62 7E 77 00
Proses Sub-Bytes 73 7A 75 71
7D 64 7D 7E
08 73 71 77
7F 63 62 00
8F DA 9D A3
FF 43 FF F3
30 8F A3 F5
D2 FB AA 63
Proses Shift-Row 8F DA 9D A3
FF 43 FF F3
30 8F A3 F5
D2 FB AA 63
8F DA 9D A3
FF 43 FF F3
30 8F A3 F5
D2 FB AA 63
8F DA 9D A3
FF 43 FF F3
30 8F A3 F5
D2 FB AA 63
8F 43 9D A3
FF 8F FF F3
30 FB A3 F5
D2 DA AA 63
8F 43 9D A3
FF 8F FF F3
30 FB A3 F5
D2 DA AA 63
8F 43 A3 A3
FF 8F AA F3
30 FB 9D F5
D2 DA FF 63
8F 43 A3 A3
FF 8F AA F3
30 FB 9D F5
D2 DA FF 63
8F 43 A3 63
FF 8F AA A3
30 FB 9D F3
D2 DA FF F5
Mix Column
02 01 01 03
03 02 01 01
01 03 02 01
01 01 03 02
X
8F 43 A3 63
=
2 x 8F = 10 xor 10001111 = X xor X7 + X3 + X2 + X + 1 = X8 + X4 + X3 + X2 + X Modulo X8 + X4 + X3 + X + 1 = X2 + 1 = 00000101
39
40
INFOKAM Nomor I / Th. X/ Maret / 14 3 x 43 = 11 xor 01000011 = ( X + 1 ) xor (X6 + X + 1) = (X7 + X2 + X) + (X6 + X + 1) = X7 + X6 + X2 + 1 = 11000101 1 x A3 = 1 xor 10100011 = 10100011 1 x 63 = 1 xor 01100011 = 01100011 Hasil Akhir 00000101 11000101 10100011 01100011 00000000 = 00(hex) untuk baris 1 kolom 1 Dan seterusnya untuk masing-masing baris dan kolom sampai semua dihitung. Untuk hasil dari mixcolumns Round 1 sebagai berikut : 00 36 05 C0 B4 BC 7E 92 34 60 65 E9 AC 65 AF B9 Pada proses AddRoundKey() maka 128 bit hasil state akan di-XOR-kan dengan Kunci Ronde, yaitu kunci hasil dari proses Expand Key. Pada awal enkripsi, 128 bit plaintext akan di-XOR-kan dengan 128 bit kunci yang asli. Kemudian 128 bit plaintext akan mengalami proses-proses : SubBytes(), ShiftRows() dan MixColumns(). Pada proses AddRoundKey(), 128 bit yang sudah melalui tiga tersebut akan di-XOR-kan dengan kunci ronde hasil Ekspand Key yang pertama. Hasil AddRoundKey() ini adalah state pada ronde 1. State 1 ini akan mengalami ketiga proses tersebut kembali. Pada AddRoundKey() yang berikut, maka 128 bit yang sudah mengalami perubahan pada ketiga proses tersebut kembali akan di-XOR-kan dengan kunci hasil Ekspand Key kedua dan seterusnya. 4. KESIMPULAN Algoritma Rijndael yang ditetapkan oleh NIST sebagai AES memiliki karakteristik yang istimewa yang menjadikannya mendapat status tersebut. Tujuan utama dari kriptografi adalah melindungi sebuah informasi, begitu pula dengan AES yang dengan serangkaian tahap atau ronde yang dilakukan dengan menggunakan kunci simetris yang bertujuan untuk melindungi informasi dari orang yang tidak berhak. Dalam algortima Rijndael memiliki karakteristik istimewa karena setiap rounde mengalami proses addroundkey, subbytes, shiftrows dan mixcolumns, untuk proses round berikutnya haris mixcolumn akan di xor dengan hasil expandkey yang pertama demikian seterusnya sampai round 9, dan round ke 10 mixcolumns merupakan hasil akhir dari enkripsi. DAFTAR PUSTAKA
http://en.wikipedia.org/wiki/Advanced_Encryption_Standard
Munir, Rinaldi. (2004). Bahan Kuliah IF5054 Kriptografi. Departemen Teknik Informatika Institut Teknologi Bandung Munir, Rinaldi. (2006). Kriptografi. Bandung: Penerbit Informatika. Surian, Didi, Algoritma Kriptografi AES Rijndael, Jurnal Teknik Elektro, Vol. 8 N0 2, 97-101 NN(2004), Implementasi Algoritma AES-128 pada Mikrokontroler 8051, Laporan Tugas Akhir Dept. Teknik Elektro ITB Rosyadi A, Isnanto R.R., I.S. Kodrat (2004), Implementasi Algoritma Kriptografi AES Untuk Enkripsi Dan Dekripsi Email, Tugas Akhir, Jurusan Teknik Elektro Universitas Diponegoro Semarang Raharjo Budi (2002), Keamanan Sistem Informasi Berbasis Internet, Ebook, PT Insan Infonesia – Bandung Fachrurozi M. F. (2006), Enkripsi Pesan Rahasia Menggunakan Algoritma AES Rijndael, Skripsi Universitas Negeri Syarif Hidayatulah Jakarta Tawang, Naufal, Tugas UAS Enkripsi Dengan AES Rijndael
40