Aes 256 Tugas Keamanan Jaringan - Rijndael Aes Block Encryption Demo
aes
Click here to load reader
-
Upload
rido-telah -
Category
Documents
-
view
89 -
download
2
Transcript of aes
![Page 1: aes](https://reader038.fdokumen.com/reader038/viewer/2022100507/5571fb12497959916993dd36/html5/thumbnails/1.jpg)
ADVANCED ENCRYPTION STANDARD
(AES)
Yoki Ariyana PPPPTK IPA BANDUNG, http://www.p4tkipa.org [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](https://reader038.fdokumen.com/reader038/viewer/2022100507/5571fb12497959916993dd36/html5/thumbnails/2.jpg)
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](https://reader038.fdokumen.com/reader038/viewer/2022100507/5571fb12497959916993dd36/html5/thumbnails/3.jpg)
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](https://reader038.fdokumen.com/reader038/viewer/2022100507/5571fb12497959916993dd36/html5/thumbnails/4.jpg)
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](https://reader038.fdokumen.com/reader038/viewer/2022100507/5571fb12497959916993dd36/html5/thumbnails/5.jpg)
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](https://reader038.fdokumen.com/reader038/viewer/2022100507/5571fb12497959916993dd36/html5/thumbnails/6.jpg)
[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](https://reader038.fdokumen.com/reader038/viewer/2022100507/5571fb12497959916993dd36/html5/thumbnails/7.jpg)
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](https://reader038.fdokumen.com/reader038/viewer/2022100507/5571fb12497959916993dd36/html5/thumbnails/8.jpg)
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](https://reader038.fdokumen.com/reader038/viewer/2022100507/5571fb12497959916993dd36/html5/thumbnails/9.jpg)
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](https://reader038.fdokumen.com/reader038/viewer/2022100507/5571fb12497959916993dd36/html5/thumbnails/10.jpg)
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](https://reader038.fdokumen.com/reader038/viewer/2022100507/5571fb12497959916993dd36/html5/thumbnails/11.jpg)
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](https://reader038.fdokumen.com/reader038/viewer/2022100507/5571fb12497959916993dd36/html5/thumbnails/12.jpg)
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](https://reader038.fdokumen.com/reader038/viewer/2022100507/5571fb12497959916993dd36/html5/thumbnails/13.jpg)
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](https://reader038.fdokumen.com/reader038/viewer/2022100507/5571fb12497959916993dd36/html5/thumbnails/14.jpg)
Untuk 0 ≤ c < Nb.
Gambar ilustrasi transformasi AddRoundKey()