7
2.2. Advanced Encryption Standard AES
Pada skripsi ini akan membahas Algoritma Simetrik lebih lanjut dikarenakan menggunakan metode Advanced Encryption Standard AES lebih baik dibanding dengan
metode seperti Data Encryption Standard DES ataupun yang lainya yang ada pada algoritma simetrik.
Pemilihan metode AES karena AES dinilai memiliki keamanan yang lebih baik daripada sistem sandi DES. [1] Untuk itu NIST National Institute of Standards and
Technology membuat sayembara untuk menggantikan DES dengan sebuah sistem penyandian yang disebut Advanced Encryption Standard pada tanggal 12 September 1997.
NIST memberikan spesifikasi AES, yaitu harus memiliki panjang blok 128 bit dan mampu mendukung panjang kunci 128,192,256. [1]
Setelah beberapa seleksi, NIST memilih sistem penyandian Rijndael yang dikembangkan oleh Joan Daemen dan Vincent Rijment sebagai sistem penyandian AES
pada tahun 2000. [1] AES merupakan standar enkripsi dekripsi dengan kunci simetris yang menggantikan
pendahulunya yaitu DES. Jenis AES terbagi 3, yaitu AES-128, AES-192 dan AES-256. Angka-angka yang berada di belakang kata AES merupakan panjang kunci yang digunakan
pada tiap-tiap AES. Selain itu AES-128 round yang digunakan sebanyak 10 round, AES-192
menggunakan 12 round, dan AES-256 menggunakan 14 round.
2.3. Contoh Perhitungan
Pada contoh perhitungan akan dijelaskan tahap – tahap perhitungan AES, baik untuk
proses enkripsi maupun dekripsi.
2.3.1 Menghitung Enkripsi AES
Proses di dalam AES merupakan transformasi terhadap state. Sebuah teks asli dalam blok 128 bit terlebih dahulu diorganisir sebagai state. Enkripsi AES adalah transformasi
terhadap state secara berulang dalam beberapa ronde. State yang menjadi keluaran ronde k menjadi masukan untuk ronde ke k+1.
8 Secara garis besar, desain enkripsi AES dapat diberikan oleh gambar dibawah ini.
State AddRoundKey
SubBytes ShiftRows
MixColumns AddRoundKey
SubBytes ShiftRows
MixColumns AddRoundKey
SubBytes ShiftRows
AddRoundKey State
Pra Ronde Ronde 1
Ronde 2
Ronde 10 dst
Ekspansi Kunci AES Kunci Asli
Ekspansi Kunci ke-1
Ekspansi Kunci ke-2
Ekspansi Kunci ke-10
dst
Gambar 2.2. Struktur Enkripsi AES [1]
Pada awalnya teks asli direorganisasi sebagai sebuah state. Kemudian sebelum ronde 1 dimulai blok teks asli dicampur dengan kunci ronde ke-0 transformasi ini disebut
AddRoundKey. Setelah itu, ronde ke-1 sampai dengan ronde ke-Nr-1 dengan Nr adalah jumlah ronde menggunakan 4 transformasi yaitu SubBytes, ShiftRow, MixColumns dan
AddRoundKey. Pada ronde terakhir, yaitu ronde ke-Nr dilakukan transformasi serupa dengan ronde lain namun tanpa trasformasi MixColumns.[1]
9 Berikut ini merupakan tabel konstan Rcon dalam hexadecimal:
Tabel 2.1. Tabel Konstan Rcon [1]
01 02 04 08 10 20 40 80 1b 36 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Berikut merupakan cara memperoleh ekspansi kunci sebelum digunakan dalam proses perhitungan AES.
2b 28 ab
09 a0
88 23
2a 7e
ae f7
cf fa
54 a3
6c 15 d2
15 4f
fe 2c
39 76
16 a6 88
3c 17
b1 39
05
Kolom terakhir kunci awal ditukar ke atas satu kali menjadi : cf
8a 4f
Disubtitusi menjadi 84 3c
eb 09
01
Setelah itu disubtitusi dengan tabel SubBytes kemudian di XOR dengan kolom ke-1 dan di XOR dengan kolom ke-1 pada tabel konstan Rcon sehingga menjadi :
2b 8a
01 a0
7e XOR
84 XOR
00 =
fa 15
eb 00
fe 16
01 00
17 Kunci kolom ke-1 Hasil SubBytes Tabel Rcon
10 Lalu ambil data pada kolom ke-2 kunci awal dan di XOR dengan hasil sebelumnya.
28 a0
88 ae
XOR fa
= 54
d2 fe
2c a6
17 b1
Lalu ambil data pada kolom ke-3 kunci awal dan di XOR dengan hasil sebelumnya. ab
88 23
f7 XOR
54 =
a3 15
2c 39
88 21
39
Lalu ambil data pada kolom ke-4 kunci awal dan di XOR dengan hasil sebelumnya 09
23 2a
cf XOR
a3 =
6c 4f
39 76
3c 39
05
Dan langkah diatas diulang dengan kolom ke-2 tabel konstan Rcon hingga selesai kolom ke-10 tabel konstan Rcon.
Berikut merupakan contoh data beserta perhitungan untuk masing-masing tahapan yang dilakukan pada AES:
a. Pre Round Data xor Key
Data asli : Key awal:
Hasil: 32
88 31 e0 2b 28
ab 09 19 a0
9a e9
43 5a 31
37 7e ae f7
cf 3d f4
c6 f8
f6 30 98
07 15 d2 15
4f e3 e2 8d 48
a8 8d a2
34 16 a6 88
3c be 2b 2a
08
11 b.
SubBytes Pada tahap ini hasil dari pre round disubtitusi dengan tabel berikut:
Contoh: Data dengan hex 19 disubtitusi dengan tabel subtitusi menjadi d4
Tabel 2.2. Tabel Subtitusi untuk Transformasi Subbytes [1]
1 2
3 4
5 6
7 8
9 a
b c
d e
f 63
7c 77
7b f2
6b 6f
c5 30
01 67
2b fe
d7 ab
76 1
ca 82
c9 7d
fa 59
47 f0
ad d4
a2 af
9c a4
72 c0
2 b7
fd 93
26 36
3f f7
cc 34
a5 e5
f1 71
d8 31
15 3
04 c7
23 c3
18 96
05 9a
07 12
80 e2
eb 27
b2 75
4 09
83 2c
1a 1b
6e 5a
a0 52
3b d6
b3 29
e3 2f
84 5
53 d1
00 ed
20 fc
b1 5b
6a cb
be 39
4a 4c
58 cf
6 d0
ef aa
fb 43
4d 33
85 45
f9 02
7f 50
3c 9f
a8 7
51 a3
40 8f
92 9d
38 f5
bc b6
da 21
10 ff
f3 d2
8 cd
0c 13
ec 5f
97 44
17 c4
a7 7e
3d 64
5d 19
73 9
60 81
4f dc
22 2a
90 88
46 ee
b8 14
de 5e
0b db
a e0
32 3a
0a 49
06 24
5c c2
d3 ac
62 91
95 e4
79 b
e7 c8
37 6d
8d d5
4e a9
6c 56
f4 ea
65 7a
ae 08
c ba
78 25
2e 1c
a6 b4
c6 e8
dd 74
1f 4b
bd 8b
8a d
70 3e
b5 66
48 03
f6 0e
61 35
57 b9
86 c1
1d 9e
e e1
f8 98
11 69
d9 8e
94 9b
1e 87
e9 ce
55 28
df f
8c a1
89 0d
bf e6
42 68
41 99
2d 0f
b0 54
bb 16
Sehingga data setelah hasil pre-round di subtitusi dengan tabel menjadi:
d4 e0
b8 1e
27 bf
b4 41
11 98
5d 52
ae f1
e5 30
c. ShiftRows
Pada tahap ini data yang dihasilkan pada tahap sebelumnya SubBytes digeser ke kiri sesuai dengan gambar di bawah ini:
Gambar 2.3. Transformasi ShiftRows [1]
12 Sehingga data setelah hasil SubBytes di ShiftRows menjadi:
d. MixColumns
[ ] [
] [ ]
Syarat: -
Jika msb data berawalan dengan 1 maka di left shift dan xor tetap -
Jika msb data berawalan dengan 0 maka di left shift tapi xor dihilangkan. -
Tetapan untuk pengali 02 yaitu disubtitusi menjadi “xor 1B”
- Karena 03 11 merupakan 10 xor 01 maka akan dipecah menjadi pengali 02
yang berarti juga akan disubtitusi menjadi xor 1B dan 01
Contoh perhitungan perkaliannya: 1.
Perhitungan untuk baris ke-1
d4 . 02 11010100 xor 00011011
10101000 di left shift dan xor tetap 00011011
XOR
10110011
bf . 03 10111111 . 10 xor 01
10111111 . 10 xor 10111111 . 01 01111110 xor 00011011 xor 10111111
01100101 xor 10111111 11011010
d4 e0
b8 1e
bf b4
41 27
5d 52
11 98
30 ae
f1 e5
13
5d . 01 01011101 . 01
01011101
30 . 01 00110000 . 00000001
00110000
Lalu hasil masing-masing di xor semua menjadi 10110011
11011010 01011101
00110000 xor 00000100 dalam hex = 04
2. Perhitungan untuk baris ke-2
d4 . 01
11010100 . 00000001 11010100
bf . 02
10111111 . 10 01111110 . 10 di left shift dan xor tetap
01111110 xor 00011011 01100101
5d . 03
01011101 . 10 xor 01011101 . 01 10111010 xor 1B dihilangkan xor 01011101
11100111
30 . 01 00110000 . 00000001
00110000
14
Lalu hasil masing-masing di xor semua menjadi 11010100
01100101 11100111
00110000 xor 01100110
3. Perhitungan untuk baris ke-3
d4 . 01
11010100 . 01 11010100
bf . 01
10111111 . 01 10111111
5d . 02
01011101 . 10 10111010 hanya di left shift, xor dihilangkan
30 . 03
00110000 . 10 xor 00110000 . 01 01100000 xor 00110000
01010000
Lalu hasil masing-masing di xor semua menjadi 11010100
10111111 10111010
01010000 xor 10000001
15 4.
Perhitungan untuk baris ke-4
d4 . 03 11010100 . 10 xor 11010100 . 01
10101000 xor 00011011 xor 11010100 10110011 xor 11010100
01100111
bf . 01 10111111 . 01
10111111
5d . 01 01011101 . 01
01011101
30 . 02 00110000 . 10
01100000 hanya di left shift, xor dihilangkan
Lalu hasil masing-masing di xor semua menjadi 01100111
10111111 01011101
01100000 xor 11100101
[ ] [
] [ ]
[ ] [
] [ ]
16 [
] [ ] [
]
Sehingga data setelah hasil ShiftRows di MixColumns menjadi:
04 e0
48 28
66 cb
f8 06
81 19
d3 26
e5 9a
7a 4c
e. AddRoundKey
Pada tahap ini hasil dari MixColumns di XOR dengan hasil Round Key ke-1
04 e0
48 28
a0 88
23 2a
66 cb
f8 06
fa 54
a3 6c
81 19
d3 26
fe 2c
39 76
e5 9a
7a 4c
17 b1
39 05
Sehingga hasilnya
a4 68
6b 02
9c 9f
5b 6a
7f 35
ea 50
f2 2b
43 49
17
2.3.2 Menghitung Dekripsi AES