Anda di halaman 1dari 14

ADVANCED ENCRYPTION STANDARD

(AES)
Yoki Ariyana
PPPPTK IPA BANDUNG, http://www.p4tkipa.org p4tkipa@yahoo.com
yokivox@yahoo.com

Abstract
Pengaman sistem informasi memiliki beberapa dasar-dasar dan teoriteori yang digunakan. Kriptografi, Enkripsi, dan Dekripsi merupakan dasar
dari pengamanan sisteminformasi, ada beberapa algoritma atau metoda
dalam encripsi dan dekripsi. Sejak jaman dulu usaha untuk mengamankan
informasi telah dilakukan, mulai dari penggunan steganografi pada jaman
yunani kuno sampai dengan mesin enigma pada masa perang dunia dan
saat ini yang berkembang adalah beberapa algoritma, seperti Data
Encryption Standard (DES), International Data Encryption Algorithm (IDEA),
Rivest-Shamir and Adleman (RSA), dan masih banyak lagi. Pada paper ni
yang akan dititik beratkana dalah algoritma Advanced Encryption Standard
(AES) yang merupakan perkembangan dari DES yang dirasakan telah habis
dimakan masa (obsolet).

BAB I
Pendahuluan

Informasi saat ini sudah menjadi sebuah komoditi yang sangat


penting. Bahkan ada yang mengatakan bahwa kita sudah berada di sebuah
information-based

society.

Kemampuan

untuk

mengakses

dan

menyediakan informasi secara cepat dan akurat menjadi sangat esensial


bagi sebuah organisasi, baik yang berupa organisasi komersial (perusahaan),
perguruan tinggi, lembaga pemerintahan, maupun individual (pribadi). Hal ini
dimungkinkan dengan perkembangan pesat di bidang teknologi komputer
dan telekomunikasi. Dahulu, jumlah komputer sangat terbatas dan belum
digunakan untuk menyimpan hal-hal yang sifatnya sensitif.
Advanced

Encryption

Standard

(AES)

dikembangkan

untuk

menggantkan DES. Algoritma DES yang menggukan 56 bit kunci dirasakan


terlalu kecil. Walaupun pada masanya Triple DES telah menangani masalah
kunci tersebut, DES banyak digunkan pada enkripsi hardware, kemudian
secara berkelanjutan maka dikembangkan kearah enkripsi software.
Advanced

Encryption

Standard

(AES)

merupakan

algoritma

cryptographic yang dapat digunkan untuk mengamakan data [paper].


Algoritma AES adalah blok chipertext simetrik yang dapat mengenkripsi
(encipher) dan dekripsi (decipher) infoermasi. Enkripsi merubah data yang
tidak dapat lagi dibaca disebut ciphertext; sebaliknya dekripsi adalah
merubah ciphertext data menjadi bentuk semula yang kita kenal sebagai
plaintext. Algoritma AES is mengunkan kunci kriptografi 128, 192, dan 256
bits untuk mengenkrip dan dekrip data pada blok 128 bits.

1.1.

Kriptografi
Kriptografi (Crytography) berasal dari kata Crypto berarti secret

(rahasia) dan graphy berarti writing (tulisan)[budi] yang memiliki arti ilmu
dan seni mempertahankan/mejaga informasi yang dikirim agar menjadi aman

dari orang yang tidak berekepentingan, sehingga informasi dapat dierima


tanpa mengalami kerusakan ataupun data yang telah disadap[bose].
Para pelaku atau praktisi kriptografi disebut cryptographers. Sebuah
algoritma kriptografik (cryptographic algorithm), disebut cipher, merupakan
persamaan matematik yang digunakan untuk proses enkripsi dan dekripsi,
kedua enkripsio maupun dekripsi memiliki kaiatan yang sangat erat.
Cryptanalysis adalah seni dan ilmu untuk memecahkan ciphertext
tanpa bantuan kunci. Cryptanalyst adalah pelaku atau praktisi yang mencari
kelemahan dari cryptanalysis [bose]. Cryptology merupakan gabungan dari
cryptography dan cryptanalysis.

1.2.

Enkripsi
Proses yang dilakukan untuk mengamankan sebuah pesan (yang

disebut plaintext) menjadi pesan yang tersembunyi (disebut ciphertext)


dengan menggunkan algoritma kriptografi adalah enkripsi (encryption).
Ciphertext adalah pesan yang sudah tidak dapat dibaca dengan mudah.
Proses sebaliknya, untuk mengubah ciphertext menjadi plaintext, disebut
dekripsi (decryption).
Kedua enkripsi dan dekripsi memiliki keterkaitan yang sanagat erat,
jika enkripsi mengunakan sebuah metode, kita sebut saja metode A, maka
secara otomatis dekripsinyapun harus menggunka metode A. keterkaitan ini
penting karena jika metode enkripsi berbeda dengan metode dekripsi maka
chipertext yang telah terjadi melalui proses enkripsi tidak dapat menjadi
plaintext karena berbeda metode. Lebih lanjut perhatikan gambar berikut.

Gambar 1. proses enkripsi dan dekripsi [bose]


Secara matematis proses enkripsi dapat dituliskan sebagai berikut :

E(M ) = C

Dimana,
E

: Enkripsi

: Pesan (plaintext) yang akan diamankan

: Chipertext

Sedangkan proses dekripsi ditulis sebagai berikut :


D (C ) = M

Dimana ,
D

: Dekripsi

: Chipertext yang akan dirubah menjadi plaintext

: Pesan (plaintext) yang telah dibuka

BAB II
Advanced Encryption Standard

Advanced

Encryption

Standard

(AES)

merupakan

algoritma

cryptographic yang dapat digunkan untuk mengamakan data [paper].


Algoritma AES adalah blok chipertext simetrik yang dapat mengenkripsi
(encipher) dan dekripsi (decipher) infoermasi. Enkripsi merubah data yang
tidak dapat lagi dibaca disebut ciphertext; sebaliknya dekripsi adalah
merubah ciphertext data menjadi bentuk semula yang kita kenal sebagai
plaintext. Algoritma AES is mengunkan kunci kriptografi 128, 192, dan 256
bits untuk mengenkrip dan dekrip data pada blok 128 bits.

2.1.

Sejarah
Pada rahun 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 diberbagi bidang.
Algoritma AES di design menggunkan 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 tahu 1999 bahwa
hanya ada 5 algoritma yang diterima, algoritma tersebut adalah :
1. MARS
2. RC6
3. Rijndael
4. Serpent
5. Twofish

[06]
Alagoritma-algoritma tersebut manjalani berbagai macam pengetesan.
Pada bulan oktober 2000, NIST mengumumkan bahwa Rijndael sebagai
lagoritma yang terpilih untuk standar AES yang baru. Baru pada februari
2001 NIST mengirimkan draff kepada Federal Information Processing
Standards (FIPS) untuk standar AES. Kemudian pada 26 November 2001,
NIST mengumumkan produk akhir dari Advanced Encryption Standard.
[handout]

2.2.

Input dan Output


Input dan output dari algoritma AES adalah berisikan sequence dari

128 bit (urutan bilngan 0 dan 1). Urutan tersebut berbentuk blok dan jumlah
bit menjadi ukuran dari panjangnnya. Kunci chiper dari algoritma AES adalah
urutan dari 128, 192, dan 256 bit, selain itu maka tidak termasuk kedalam
standar AES.
Ukuran dari AES akan selalu dimulai dengan 0 dan diakhiri sesuai
dengan jumlah bloknnya, 128, 192, atau 256. misal kita menggukan variabel i
sebagai index yang berada diantara blok 0 i 128, 0 i 192, dan 0 i
256,

2.3.

Byte

Unit dasar dari algoritma AES adalah byte yang berisikan deretan 8

bit,

untuk input, output, atau chiper dirulis sebagai a, byte menghasilkan array
yang dapat dbentuk dengan notasi an atau a[n], n sendiri merupakan :
Key length = 128 bits, 0 n < 16;

Block length = 128 bits, 0 n < 16;

Key length = 192 bits, 0 n < 24;

Block length = 128 bits, 0 n < 24;

Key length = 256 bits, 0 n < 32.

Block length = 128 bits, 0 n < 32;

Seluruh nilai dalam byte pada algoritma AES didukung oleh polynomial dari
{b7, b6, b5, b4, b3, b2, b1, b0} sehingga dapat dibuat :
7

b7 x 7 + b6 x 6 + b5 x 5 + b4 x 4 + b3 x 3 + b2 x 2 + b1 x + b0 = bi x i
i =0

For example, {01100011} sehingga bisa kita dapat x6 + x5 + x + 1 , nilai ini


juga dapat didapat dari hasil pemisahan 4 bit dan melihat tabel hexadesimal,
sehingga dapat menghasilkan {63}, perhatikan gambar.

Gambar Representasi hexadesimal

2.4.

Array dari Byte

Array byte dapat dtuliskan sebagai :


a1 a2 a3 a15
jika ye yang diinput berasal dari 128 bit ditliskan sebagai :
input1 input2 input3 input126 input127
jika kita gabungkan maka akan berbentuk :
a0 = {input0, input1, , input7 }
a1 = {input8, input9, , input15 }

a7 = {input120, input121, , input127 }


sehingga secara umum :
an = {input8n, input8n+1, , input8n+7}

Gambar bagaimana pemberian nomor bit.

2.5.

State

Secara internal, operasi algoritma AES dilakukan pada array 2D dari bytes
yang disebut State. State terdiri dari empat baris bytes, masing-masing berisi
Nb bytes, di mana Nb adalah panjangnya blok yang dibagi oleh 32. Di dalam
Array State yang ditandai oleh lambang, masing-masing byte individu
mempunyai dua indeks, dengan jumlah barisnya r didalam rentang 0 r< 4
dan jumlah kolom c didalam rentang 0 c< Nb. Ini mengijinkan byte State
untuk dikenal sebagai sr,c maupun s[r,c]. Karena standard ini, Nb=4, yaitu, 0
c < 4.
input the array of bytes in0, in1, in15 is dimasukan pada State array,
lihat gambar. Cipher atau kebalikan dari operasi Cipher adalah memasukkan
kedalam State array, kemudian langklah akhirnya adalah menyalin hasil pada
output the array of bytes out0, out1, out15.

Gambar State array input and output.

Pada awal chiper Atau Kebalikan dari chiper, masukan array disalin kepada
State Array menurut persamaan
s[r, c] = in[r + 4c] untuk 0 r < 4 and 0 c < Nb,
dan pada akhir chiper Dan Kebalikan dari chiper, State disalin kepada output
array menurut persamaan:
out[r + 4c] = s[r, c] untuk 0 r < 4 and 0 c < Nb.

BAB III
Spesifikasi Algoritma AES

Algoritma AES mengenkripsi 128-bit blok palintext (M), menjadi 128-bit


blok chipertext (C), menggunakan kunci chiper (chiper key K) yang
panjangnya diantara 128-bit, 192-bit, atau 256-bit. Perbedaan dari panjang
kunci mejadikan nama kunci AES-128, AES-192, dan AES-256. algoritma
AES berjalan delam hitungan byte dan berdasarkan ukuran blok dari input,
output dan kuncinya yang direpresentasikan dalam 32-bit words sama
dengan 4 byte.
Algoritma AES menggukanan pada Number of Rounds Nr pada saat
eksekusinya tergantung pada ukuran daeru kunci yang digunakan, seperti
terlihat pada tabel dibawah :
AES Algorithm

(Input/Output size) Key Length Number


Block Size Nb

Nk

rounds Nr

AES-128

4 Words

4 Words

10 rounds

AES-192

4 Words

6 Words

12 rounds

AES-256

4 Words

8 Words

14 rounds

of

Setiap rounds berisi 4 byte-oriented cryptographic transformation :


1. Byte subtitution
2. Shifting rows of the state array
3. data Mixing antara kolom dengan state array
4. round keyaddition pada state array
jika kita lihat pada psudocode untuk chiper yang berisikan 4 trasnformation
diatas :

Cipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)])


begin
byte state[4,Nb]
state = in
AddRoundKey(state, w[0, Nb-1])
for round = 1 step 1 to Nr1
SubBytes(state)
ShiftRows(state)
MixColumns(state)
AddRoundKey(state, w[round*Nb, (round+1)*Nb-1])
end for
SubBytes(state)
ShiftRows(state)
AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])
out = state
end
(sumber : AES Draff spesification : http://csrc.nist.gov/encryption/aes/.)

3.1.

SubBytes() Trasformation.

Tranformasi pertama pada AES adalah transformasi non-linier byte


subtitution

yang

disebut

sebagai

tranformasi

SubBytes().SubBytes()

beroperasi dengan bebas pada masing-masing byte State menggunakan


tabel subtitusi (S-box).
Dalam bentuk matriks, elemen S-Box dapat dinyatakan :

Gambar dibawah menggambarkan efek Subbytes() perubahan bentuk pada


State.

S-Box digunakan pada transformasi Subbytes() diprlihatkan dalam bentuk


hexadecimal, Sebagai contoh, jika s1,1= { 53}, kemudian nilai subtitusi akan
ditentukan oleh persimpangan antara baris dengan index 5 dan kolom
dengan index 3. Ini akan menghasilkan s1,1 ={ed}

3.2.

ShiftRows() Trasformation.

Pada tranformasi ShiftRows(), byte pada tiga baris terakhir digeser sebanyak
ofsetnya,

sedangkan

byte

pada

baris

pertama

tidak

mengamalai

penggerserran.

Sr`,c = Sr ,( c + shift ( r , Nb )) mod Nb

Untuk 0 < r < 4 dan 0 c < Nb

Pergeseran byte tergantung pada nilai pada barisnya r, (untuk Nb = 4):

Shift(0,4)=0; bergeser 0 langkah atau tidak bergeser


Shift(1,4)=1; bergeser 1 langkah
Shift(2,4)=2; bergeser 2 langkah
Shift(3,4)=3; bergeser 3 langkah
Pergeeseran

dilakukan

dari

depan

kebelankang,

perhatikan

ilustrasi

transformasi ShiftRows() dan gambar dibawah menujukan bagaimana


ShiftRows() bergerser.

3.3.

MixColumns() Trasformation.

Tarnsformasi MixColumns() digunkan untuk mencampur kolom dari matrik


State, Kolom direpresentasikan sebagai polinomial Galois Field GF(28).
output dari tarnsformasi MixColumns() s`(x), seperti pada persamaan berikut :
s`( x) = a( x) s ( x) mod( x 4 + 1)
Dimana a(x) = 03x3 + 01x2 + 01x1 + 02, kemudian dapat digambarkan
sebagaio matrik :

Untuk 0 c < Nb
Hasil dari perkaliaan pada matrik tersebut dapat dilihat pada persamaanpersamaan dibawah :

Gambar tarnsformasi MixColumns() pada State Column-to-column

3.4.

AddRoundKey() Trasformation.

Kunci dari bit dihasilkan dari kunci chiper yang asli dengan menggunkan
tarnsformasi key expansion yang dijumlahkan bit pada array dari state
dengan operasi XOR yang sederhana. Nilai awal dari round key adalah w0,
untuk round = 0, ditambahkan pertama kali para criptographic round.
Kemudian setiap round untuk 1 round Nr, kemudian 32-bit yang berbeda
pada round-key wi ditambahkan.

Untuk 0 c < Nb.

Gambar ilustrasi transformasi AddRoundKey()

Anda mungkin juga menyukai