aes

14

Click here to load reader

Transcript of aes

Page 1: aes

ADVANCED ENCRYPTION STANDARD

(AES)

Yoki Ariyana PPPPTK IPA BANDUNG, http://www.p4tkipa.org [email protected]

[email protected]

Abstract

Pengaman sistem informasi memiliki beberapa dasar-dasar dan teori-

teori 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).

Page 2: aes

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

Page 3: aes

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 :

Page 4: aes

CME =)(

Dimana,

E : Enkripsi

M : Pesan (plaintext) yang akan diamankan

C : Chipertext

Sedangkan proses dekripsi ditulis sebagai berikut :

MCD =)(

Dimana ,

D : Dekripsi

C : Chipertext yang akan dirubah menjadi plaintext

M : Pesan (plaintext) yang telah dibuka

Page 5: aes

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

Page 6: aes

[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;

Page 7: aes

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

001

22

33

44

55

66

77

i

ii xbbxbxbxbxbxbxbxb

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.

Page 8: aes

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.

Page 9: aes

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)

Block Size Nb

Key Length

Nk

Number of

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

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 :

Page 10: aes

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 Nr–1

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.

Page 11: aes

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.

NbNbrshiftcrcr SS mod)),((,`, += Untuk 0 < r < 4 dan 0 ≤ c < Nb

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

Page 12: aes

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 :

)1mod()()()`( 4 +⊗= xxsxaxs

Dimana a(x) = 03x3 + 01x2 + 01x1 + 02, kemudian dapat digambarkan

sebagaio matrik :

Page 13: aes

Untuk 0 ≤ c < Nb

Hasil dari perkaliaan pada matrik tersebut dapat dilihat pada persamaan-

persamaan 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.

Page 14: aes

Untuk 0 ≤ c < Nb.

Gambar ilustrasi transformasi AddRoundKey()