Implementasi Algoritma Advanced Encryption Standard (AES) untuk Mengamankan File Gambar

BAB II
TINJAUAN PUSTAKA
2.1.

Kriptografi

Metode penulisan rahasia diketahui telah ada sejak 2500 tahun yang lalu. David Kahn,
penulis buku “The Code Breakers” mengatakan bahwa kriptografi muncul secara
spontan sebagaimana munculnya bahasa dan tulisan. Lalu, karena banyak manusia
yang membutuhkan dan tuntutan akan menjaga kerahasiaan komunikasi antara dua
atau banyak orang di tengah-tengah kehidupan sosial masyarakat yang mendorong
lahirnya ilmu tulisan rahasia atau dikenal dengan kriptografi. (Dooley, 2013).
Penggunaan kriptografi telah dikenal sejak masa kuno, yakni bangsa Yunani dan
bangsa Roma yang menggunakannya dalam bentuk yang berbeda. Namun, ketika
negara Roma mengalami masa keterpurukan, pembelajaran mengenai kriptografi juga
menghilang dan akan muncul kembali pada saat zaman Renaissance di Barat.
Berbanding terbalik dengan Roma, kriptografi berkembang di Arab. Hal ini terbukti
dengan ditemukannya suatu penemuan penting oleh Abu Yusuf Ya’qub ibn Isaq asSabbah al-Kindi yaitu frequency analysis yang bermanfaat sebagai metode
memecahkan suatu pesan rahasia. (Dooley, 2013).
Pada masa lalu, kriptografi sering digunakan dalam pengiriman informasi penting
antar dua pihak dengan tujuan untuk memenangkan perang, seperti hal yang dilakukan

oleh Julius Caesar. Dia mengirimkan informasi kepada temannya Cicero bahwa dia
akan segera datang dengan membawa sekelompok pasukan. Julius Caesar
menggunakan metode substitusi dalam merubah setiap karakter pada pesan yang akan
dikirim. Berikut ini adalah tabel karakter yang digunakan oleh Julius Caesar. (Dooley,
2013). Tabel direpresentasikan pada tabel 2.1.
Tabel 2.1 cipher Julius Caesar (Dooley, 2013).
Plain

a b c d e f g h i

j

Cipher

d e f g h i

m n o p q r s t

j


k l

k l

m n o p q r s t

u v w x y z

u v w x y z a b c

7

2.1.1

Definisi Kriptografi

Kata Kriptografi berasal dari bahasa Yunani, “kryptós” dan “gráphein” yang berarti
“tersembunyi” dan “tulisan”. Sehingga kata kriptografi dapat diartikan berupa frase
“tulisan tersembunyi” untuk mengamankan atau menyembunyikan komunikasi
diantara dua pihak. (Pas dan Shelat,2010).

Kriptografi dapat diartikan sebagai suatu ilmu ataupun seni yang mempelajari
bagaimana sebuah data dikonversi ke bentuk tertentu yang sulit untuk dimengerti.
(Schneir, 1996). Istilah-istilah yang digunakan dalam bidang kriptografi :
1.

Plaintext adalah pesan yang akan dikirim (data asli)

2.

Ciphertext adalah pesan ter-enkrip (tersandi) yang merupakan hasil enkripsi.

3.

Enkripsi adalah proses pengubahan plaintext menjadi ciphertext.

4.

Dekripsi adalah kebalikan dari enkripsi yakni mengubah ciphertext menjadi
plaintext kembali. (Fairuzabadi, 2010)


Berikut ini adalah gambar 2.1 yang merepresentasikan sistem kriptografi.

plaintext

ENKRIPSI
(key)

ciphertext

DEKRIPSI
(key)

plaintext

Gambar 2.1. Alur Proses Kriptografi

2.1.2. Jenis Kriptografi
Pada proses enkripsi dan dekripsi dalam sistem kriptografi , memerlukan suatu kunci
yang berfungsi untuk mengubah data asli menjadi sandi dan menerjemahkan sandi
menjadi data asli kembali. Terdapat dua jenis kriptografi berdasarkan kunci yang

digunakan dalam sistem kriptografi yaitu kriptografi simetris dan kriptografi asimetris
(public key).

8

2.1.2.1. Kriptografi Simetris
Pada kriptografi simetris, kunci yang digunakan pada proses enkripsi dan dekripsi
bernilai sama. Proses yang dilakukan dalam kriptografi simetris terbagi atas dua jenis
yaitu substitusi dan transposisi. Pada proses substitusi, setiap karakter di ganti dengan
karakter lain, sementara pada transposisi, setiap karakter bertukar posisi dengan
karakter lain. Hal yang harus diperhatikan pada penggunaan kriptografi simetris
adalah keamanan kunci. Jika, kunci diketahui oleh pihak lain, maka ciphertext yang
dirahasiakan dapat dipecahkan. Berikut ini adalah gambar dari proses penggunaan
kunci simetris, ditampilkan pada gambar 2.2 di bawah ini.

Gambar 2.2. Alur Kriptografi Simetris

2.1.2.2. Kriptografi Asimetris
Pada kriptografi asimetris, kunci yang digunakan pada proses enkripsi berbeda dengan
kunci yang digunakan untuk proses dekripsi. Kunci enkripsi disebut kunci publik dan

kunci untuk dekripsi disebut dengan kunci private. Oleh karena itu, algoritma ini
disebut juga dengan kriptografi kunci publik (public key). Berikut ini adalah gambar
dari proses penggunaan kunci asimetris, yang ditampilkan pada gambar 2.3 di bawah
ini.

Gambar 2.3. Alur Kriptografi Asimetris (Sadikin, 2012)

9

Pada gambar 2.3, Alice berperan sebagai pengenkripsi dan Bob sebagai
pendekripsi.

Berikut

adalah

langkah-langkah

yang


mereka

lakukan

dalam

menggunakan kriptografi asimetris (Sadikin, 2012) :
1. Anne membangkitkan kunci private dan kunci publik dengan menggunakan fungsi
pembangkit kunci.
(Kpublik, Kprivate)

Pembangkit kunci

Kemudian Anne mempublikasikan kunci publik, namun tetap menjaga
kerahasian kunci private.
2. Alice mengenkripsi sebuah plaintext dengan menggunakan kunci publik Bob yang
menghasilkan sebuah ciphertext.
Ciphertext

Enkripsi (Kpublik, plaintext)


Kemudian Alice mengirim ciphertext kepada Anne melalui saluran tidak aman.
3. Anne mendekripsi ciphertext dengan kunci private Anne untuk mendapatkan
plaintext.
Plaintext

Dekripsi (Kprivate, ciphertext)

Anne mendapatkan plaintext jika ciphertext yang diperolehnya dienkripsi
dengan kunci publik Anne.

2.2. Advanced Encryption Standard (AES)
Pada 12 September 1997 , lembaga standar Amerika Serikat NIST (National Institute
of Standards and Technology) membuat sebuah sayembara untuk membuat sistem
penyandian AES (Advanced Encryption Standard) untuk menggantikan sistem
penyandian sebelumnya yaitu DES (Data Encryption System). NIST memberikan
spesifikasi yaitu AES harus memiliki panjang blok sebesar 128 bit dan mampu
mendukung kunci yang memiliki panjang blok sebesar 128 bit, 192 bit dan 256 bit.
Setelah melakukan seleksi, pada tahun 2000, NIST memilih sistem penyandian


10

Rijndael yang dikembangkan oleh Joan Daemen dan Vincent Rijments sebagai AES,
dan mulai digunakan pada 26 Mei 2002.
AES (Advanced Encryption Standard) merupakan sistem penyandian modern
yang beroperasi pada blok - blok data dan memiliki kunci simetris. Yaitu dalam
enkripsi dan dekripsi menggunakan kunci yang sama. Enkripsi adalah proses
pengubahan data asli menjadi sandi. Sedangkan dekripsi adalah proses pengembalian
bentuk sandi menjadi data asli. Data yang akan dienkripsi akan dikelompokkan ke
dalam blok-blok yang masing-masing berukuran 128 bit. Sedangkan kunci yang dapat
digunakan sebesar 128 bit, 192 bit dan 256 bit.
Data yang digunakan pada AES dikelompokkan kedalam 5 unit, yaitu bit, byte,
word, blok dan state. Bit merupakan satuan data terkecil, yaitu nilai digit sistem biner.
Sedangkan byte merupakan 8 bit, word berukuran 4 byte, blok berukuran 4 word (16
byte) dan state adalah blok data yang ditata sebagai matriks byte berukuran 4x4.
Sebelum data masuk ke dalam tahapan enkripsi, blok-blok data di transformasi
kedalam bentuk state. Bentuk pengelompokkan data tersebut dapat terlihat pada
gambar 2.4 dibawah ini. (Sadikin, 2012)

B1


= {b0 , b1 , b2 , b3 , b4 , b5 , b6 , b7}

byte

word

B0

B1

B2

B3

state

B0

B4


B8

B12

B1

B5

B9

B13

B2

B6

B10

B14

B3

B7

B11

B15

Gambar 2.4. Unit data AES
Proses yang terjadi pada enkripsi dan dekripsi terjadi selama beberapa ronde.
Setiap ronde pada enkripsi dan dekripsi data dilakukan beberapa bentuk transformasi
pada elemen-elemen state. Jumlah ronde tergantung dengan panjang kunci yang
digunakan. Jumlah ronde direpresentasikan pada tabel 2.2.

11

Tabel 2.2. Jumlah putaran AES
Besar Kunci (Nk)

Besar Blok(Nb)

Jumlah Putaran (Nr)

dalam words

dalam words

AES-128

4

4

10

AES-192

6

4

12

AES-256

8

4

14

2.2.1 Matematika Dasar dalam AES
2.2.1.1 Finite Field
Finite field atau Galois field adalah satu set elemen angka yang terhingga. Secara garis
besar sebuah Galois field adalah suatu set elemen terhingga yang bisa dijumlahkan,
dikurangi, dikali dan memiliki invers. Sebelum kita membahas tentang field lebih
lanjut, pertama kita akan membahas mengenai group.
Group (G) adalah suatu set yang terdiri atas elemen G dengan sebuah operasi ◦
yang menggabungkan dua elemen dari G. Suatu group memiliki kondisii seperti di
bawah ini :
1. Operasi group disebut closed. Jika, untuk semua a , b , c ∈G dan a ∘b=c
2. Operasi group disebut associative. Jika, untuk semua a , b , c ∈G dan

a ∘(b ∘ c)=(a ∘b)∘c
3. Terdapat elemen I ∈G disebut elemen identity, untuk semua a∈G dan
a ∘ I =I ∘a

4. Untuk setiap a∈G terdapat elemen a-1 disebut inverse, dan a ∘a−1=a−1 ∘a=I
5. Sebuah group disebut abelian (commutative), dengan a ∘b=b∘ a
Secara garis besar, suatu group adalah suatu set dengan satu operasi dan memiliki
inverse dari operasi tersebut. Jika operasinya disebut penjumlahan, maka inverse nya
adalah pengurangan. Begitu pula dengan operasi perkalian yang memiliki inverse
yaitu pembagian.

12

Misalnya, suatu set integer ℤm ={0,1,... , m−1} dan operasi penjumlahan modulo
m membentuk suatu group dengan elemen identitas 0. Setiap elemen a memiliki
sebuah inverse a-1 dengan a +(a-1) = 0 mod m. Sedangkan pada group dengan operasi
perkalian, elemen identitasnya adalah 1 dan setiap elemen a memiliki sebuah inverse
a-1 dengan aa-1=1 mod m.
Untuk membuat empat operasi dasar aritmatika (penjumlahan, pengurangan,
perkalian, pembagian) dalam suatu struktur, kita membutuhkan suatu set yang terdiri
dari group penjumlahan dan group perkalian. Inilah yang disebut dengan field.
Field(F) adalah suatu set yang terdiri dari dari elemen-elemen yang memiliki
kondisi berikut :
1. Semua elemen dari F terdiri dari suatu group penjumlahan dengan operator
“+” dan elemen identitas I adalah elemen “0”.
2. Semua elemen dari F terdiri dari suatu group perkalian dengan oerartor “x” dan
elemen identitas I adalah elemen “1”.
3. Ketika kedua group digabungkan, terdapat hukum distributive, dengan
ketentuan untuk semua a , b , c ∈F dan a(b+c )=(ab)+(ac)
.
Jumlah elemen dalam field disebut order atau cardinality . Suatu field dengan
order m hanya ada jika m bernilai prima dengan m=pn, untuk semua n adalah bilangan
integer positif, dan p adalah bilangan prima positif. P disebut sebagai karakteristik
dari finite field, sehingga dinotasikan dengan GF(p). (Paar dan Pelzl, 2010)
2.2.1.2. Prime Field
Elemen

dari

GF(p)

direpresentasikan

menggunakan

bilangan

integer

0 , 1, . . . , p−1 . Operasi penambahan dan perkalian pada field dimodulokan dengan p.

Untuk melakukan proses aritmatika pada prime field, harus mengikuti aturan sebagai
berikut :
−1
1. Inverse penjumlahan dari suatu elemen a didefinisikan a+(a ) = 0 mod p

2. Inverse perkalian dari setiap elemen nonzero a didefinisikan a a−1 = 1 mod p

13

Algoritma AES menggunakan finite field yang terkecil yaitu prime field GF(2).
Elemen dari GF(2) adalah {0 dan 1}. Berikut adalah tabel penjumlahan dan perkalian
GF(2). Tabel tersebut direpresentasikan pada tabel 2.3 dibawah ini.
Tabel 2.3. Hasil penjumlahan dan perkalian GF(2)
penjumlahan

perkalian

+ 0

1

x

0

1

0

0

1

0

0

0

1

1

0

1

0

1

Seperti yang terlihat pada tabel diatas, hasil penjumlahan elemen GF(2) dengan
dimodulo p sama dengan hasil gerbang XOR. Dan pada hasil perkalian GF(2) dengan
dimodulo p sama dengan hasil gerbang AND. (Paar dan Pelzl, 2010)

2.2.1.3. Extension Field GF(2m)
Dalam AES, finite field terdiri dari 256 elemen dan dinotasikan sebagai GF(28). Field
ini dipilih karena setiap elemen bisa direpresentasikan sebagai 1 byte. Pada
transformasi S-Box dan MixColumn, AES memperlakukan setiap byte dari data
sebagai elemen dari GF(28) dan memanipulasi data dengan menampilkan aritmatika
dalam finite field.
Tetapi, jika order dari suatu finite field tidak prima dan 28 bukanlah bilangan
prima, operasi penjumlahan dan perkalian tidak bisa dilakukan dengan menggunakan
penjumlahan dan perkalian dengan modulo 28. Suatu field dengan m>1 disebut
extension field. Untuk bisa menggunakan extension field , dibutuhkan suatu notasi
yang berbeda untuk elemen finite field dan peraturan yang berbeda untuk
menampilkan aritmatika pada elemen. Elemen extension field dapat direpresentasikan
dalam bentuk polinomial dan proses komputasi dalam extension field bisa diperoleh
dengan menggunakan proses aritmatika pada polinomial.
Pada extension fields GF(28), elemen-elemennya tidak direpresentasikan sebagai
integer tapi dalam bentuk polinomial dengan kofisien dalam GF(2). Polinomial

14

memiliki derajat maksimum yaitu m-1, jadi totalnya ada m elemen. Pada field GF(28),
yang digunakan pada AES, setiap elemen

8

direpresentasikan sebagai

A ∈GF (2 )

berikut :

............................. (1)

A (x )=a7 x 7 +. ..+a1 x +a 0 , ai∈GF(2)={0, 1}

2.2.1.4 Penjumlahan dan Pengurangan pada GF(2m)
Untuk

m

A (x ), B(x)∈GF. (2 )

penjumlahan dari dua elemen dihitung dengan rumus

sebagai berikut :
m−1

C( x)= A ( x)+ B( x)=∑ c i x i , ci ≡ai +b i mod 2

............................... (2)

i=0

Dan selisihnya dihitung dengan rumus sebagai berikut :
m−1

C( x)= A ( x)−B( x )= ∑ ci x i , c i≡ai−bi ≡ai +b i mod 2 ......................... ..... (3)
i=0

Proses yang terjadi pada penjumlahan dan pengurangan elemen di modulokan 2
akan menghasilkan nilai yang sama dengan nilai gerbang XOR. (Paar dan Pelzl, 2010).

2.2.1.5. Perkalian pada GF(2m)
Perkalian dalam GF(28) proses utama yang akan terjadi selama transformasi
MixColumn

dari

AES.

Langkah

pertama

yang

dilakukan

,

dua

elemen

(direpresentasikan dengan polinomial) dari finite field dari GF(28) dikalikan dengan
menggunakan aturan standar perkalian polinomial :

A ( x ) B( x )=( am−1 x
C ’ ( x)=c ’ 2 m−2 x

m −1

2 m−2

+...+a 0)(b m−1 x


+ ...+ c 0

m−1

+...+b 0) ............................ (4)

................................................... ........... (5)

dimana :

c ’ 0=a0 b0 mod 2
c ’ 1=a0 b1 +a1 b0 mod 2 .

15

.
.

c ’ 2 m−2=am−1 b m−1 mod 2

Semua koefisien ai , bi , c i adalah elemen dari GF(2) dan koefisien aritmatika di
tampilkan dalam GF(2). Secara umum, produk dari polinomial C(x) akan memiliki
derajat yang lebih tinggi dari m-1 dan harus di kurangi. Ide dasarnya adalah suatu
pendekatan yang mirip dengan kasus perkalian pada prime field GF(p), pertama
kalikan dua integer, bagi hasilnya dengan bilangan prima dan ambil sisa dari
pembagian tersebut. Proses tersebut juga dilakukan pada extension field , yaitu hasil
dari perkalian dari dua polinomial dibagi oleh suatu polinomial dan sisa dari
pembagian polinomial tersebut diambil. Untuk itu dibutuhkan suatu irreducible
polinomial yang dapat dijadikan sebagai pembagi untuk hasil dari perkalian dari dua
polinomial. Irreducible polinomial mirip dengan bilangan prima yaitu hanya dapat
dibagi dengan bilangan 1 dan bilangan nya sendiri. Irreducible polinomial yang
digunakan pada AES adalah p( x)=x 8+ x 4 + x3 + x +1 . (Paar dan Pelzl, 2010).
Contoh :
8

4

A ( x )=x + x + x

3

2

B ( x)=x + x
2

8

4

3

8

4

3

10

6

5

9

5

4

10

9

6

C( x)=x ( x + x + x )+ x ( x + x + x )=( x + x + x )+( x + x + x )=x + x + x + x

4

Karena terdapat derajat pada koefisien x yang lebih besar dari 8, maka hasil dari
dC( x) di modulokan dengan irreducible polinomial p( x)=x 8+ x 4 +. x3 + x +1
ap(x)=0 maka x 8=x 4 + x 3 + x+ 1
9

8

9

4

x =x (x )
3

x =x ( x + x + x+1)
9

5

10

2

8

10

2

4

10

6

x =x (x )

4

2

x =x + x + x + x

3

x =x ( x + x + x +1)
5

3

2

x =x + x + x + x

Karena

16

Sehingga, hasil dari perkalian polinomial A(x) dengan B(x) adalah
10

9

6

C( x)=x + x + x + x
6

5

3

4

2

5

4

2

6

C( x)=( x + x + x + x )+( x + x + x + x)+ x + x

4

3

C( x)=x + x

2.2.1.6. Invers pada GF(2m)
Proses invers pada GF(28) adalah proses utama yang akan digunakan pada
transformasi SubByte, yang menggunakan S-Box. Untuk suatu finite field GF(2m) dan
irreducible polinomial p(x), dan invers A-1 dari elemen non-zero A ∈GF (28 ) dengan
adalah sebagai berikut :
................................................................. (6)

−1

A ( x) . A ( x)=1 mod p( x)

Pada tabel dibwah ini menunjukkan nilai yang akan digunakan pada tabel S-

8
4
3
Box AES. Nilai-nilai pada tabel tersebut berisi dari inverse dari GF(28) modulo p( x)=x
. + x + x + x +1
8

4

3

p( x)=x + x + x + x +1 .Kasus yang spesial tedapat pada masukan untuk elemen 0, yang tidak

memiliki inverse. Namun, untuk tabel S-Box AES, tabel substitusi dibutuhkan untuk
mendefinisikan setiap kemungkinan nilai masukan. Sehingga, masukan 0 dipetakan
pada keluaran 0. Berikut ini adalah tabel inverse perkalian dari GF(28) untuk setiap
byte yang akan digunakan dalam pembentukan tabel S-Box AES. (Paar dan Pelzl,
2010). Tabel diperlihatkan pada tabel 2.4 dibawah ini
Tabel 2.4. Tabel inverse perkalian dari GF(28)
0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

0

00

01

8D

F6

CB

52

7B

D1

E8

4F

29

C0

B0

E1

E5

C7

1

74

B4

AA

4B

99

2B

60

5F

58

3F

FD

CC

FF

40

EE

B2

2

3A

6E

5A

F1

55

4D

A8

C9

C1

0A

98

15

30

44

A2

C2

3

2C

45

92

6C

F3

39

66

42

F2

35

20

6F

77

BB

59

19

4

1D

FE

37

67

2D

31

F5

69

A7

64

AB

13

54

25

E9

09

5

ED

5C

05

CA

4C

24

87

BF

18

3E

22

F0

51

EC

61

17

17

Tabel 2.4. Tabel inverse perkalian dari GF(28) (con’t)
6

16

5E

AF

D3

49

A6

36

43

F4

47

91

DF

33

93

21

3B

7

79

B7

97

85

10

B5

BA

3C

B6

70

D0

06

A1

FA

81

82

8

83

7E

7F

80

96

73

BE

56

9B

9E

95

D9

F7

02

B9

A4

9

DE

6A

32

6D

D8

8A

84

72

2A

14

9F

88

F9

DC

89

9A

A

FB

7C

2E

C3

8F

B8

65

48

26

C8

12

4A

CE

E7

D2

62

B

0C

E0

1F

EF

11

75

78

71

A5

8E

76

3D

BD

BC

86

57

C

0B

28

2F

A3

DA

D4

E4

0F

A9

27

53

04

1B

FC

AC

E6

D

7A

07

AE

63

C5

DB

E2

EA

94

8B

C4

D5

9D

F8

90

6B

E

B1

0D

D6

EB

C6

0E

CF

AD

08

4E

D7

E3

5D

50

1E

B3

F

5B

23

38

34

68

46

03

8C

DD

9C

7D

A0

CD

1A

41

1C

Sebagai contoh , berdasarkan tabel diatas, inverse dari
7

6

x + x + x=(1100 0010)2=(C 2)hex

Bila disesuaikan dengan baris ke C dan kolom ke 2 maka hasilnya adalah
5

3

2

(2 F )hex =( 00101111)2=x + x + x + x +1

Hasil tersebut dapat dibuktikan dengan rumus diatas :
−1

A ( x) . A ( x)=1− mod p ( x)
5

3

2

7

6

( x + x + x + x+1) .( x + x + x )=1 mod p( x )

2.2.2. Enkipsi AES
Langkah-langkah pada proses enkripsi dengan menggunakan algoritma AES adalah
sebagai berikut (Sadikin , 2012) :
Input : P , K {Data asli 16 bytes, kunci AES (128,192, 256 bit}
Output : CT {Data hasil enkripsi 16 bytes}
1. Ekspansi Kunci (K) {Nr : jumlah ronde, w : larik bytes kunci ronde}

18

2. AddRoundKey (P, w[0..3])
3. for i = 1

(Nr-1) do SubBytes (P) , ShiftRows (P) , MixColumns(P) ,

AddRoundKey(P, w[(i*4) .. (i*4) + 3 ] )
4. SubBytes (P) , ShiftRows (P) , AddRoundKey(P, w[(Nr*4) .. (Nr*4) + 3 ] )
5. CT = P
Dibawah ini adalah gambar 2.5 yang menjelaskan langkah-langkah pada proses
enkripsi Advanced Encryption Standard (AES).

Gambar 2..5. Langkah-langkah enkripsi AES
2.2.2.1. Ekspansi Kunci AES
Proses pada ekspansi kunci AES mengalami proses rotWord(), subWord() dan Rcon[i]
untuk setiap word pada state key. rotWord() merupakan proses pergeseran nilai byte
pada word

(b0, b1, b2, b3) secara cyclic permutasi menjadi

(b1, b2, b3, b0).

subWord() merupakan proses pertukaran nilai byte pada word dengan nilai pada tabel
S-Box. Rcon[i] merupakan proses XOR nilai byte pada word dengan nilai Rcon[i].

19

Misalnya terdapat state key yang berukuran 128 bit sebagai berikut :
2B

28

AB

09

7E

AE

F7

CF

15

D2

15

4F

16

A6

88

3C

Key tersebut akan digunakan dalam proses AddRoundKey pada ronde ke -0.
Lalu, untuk membentuk key pada ronde ke-1 sampai ronde ke-nr maka dilakukan
proses sebagai berikut :
1.

Setiap kolom dibentuk menjadi sebuah word, maka dari state diatas
terbentuklah w0 = 2B7E1516 , w1 = 28AED2A6 , w2 = ABF71588 , w3 =
09CF4F3C .

2.

Pada w3 dilakukan proses RotWord, SubWord, Rcon[i]

3.

Hasil dari ketiga proses tersebut dijadikan acuan untuk melakukan operasi
XOR pada w0 , w1, w2 ,w3.
Tabel 2.5. Perhitungan key ronde 1

i

temp

4

09CF4F3C

5

After

After

RotWord

SubWord

CF4F3C09

8A84EB01

Rcon [i/Nk]

After XOR

Wi-Nk

XOR Wi-Nk

with Rcon
01000000

8B84EB01

Wi = temp

2B7E1516

A0FAFE17

A0FAFE17

28AED2A6

88542CB1

6

88542CB1

ABF71588

23A33939

7

23A33939

09CF4F3C

2A6C7605

Maka, key untuk ronde ke 1 adalah sebagai berikut :
A0

88

23

2A

FA

54

A3

6C

FE

2C

39

76

17

B1

39

05

20

2.2.2.2. SubBytes
Pada transformasi SubBytes , setiap byte masukan pada sebuah state di tukar dengan
suatu byte pada tabel S-Box. Hanya tabel S-Box yang bersifat nonlinear pada AES,
yaitu untuk setiap ByteSub(A)+ByteSub(B) ≠ ByteSub(A + B) untuk dua state A dan
B. Substitusi S-Box adalah suatu pemetaan yang bersifat bijective, yaitu untuk setiap
elemen yang terdapat pada 28 dipetakan secara satu per satu untuk setiap elemen
output. (Paar dan Pelzl, 2010). Tabel 2.6 dibawah ini menampilkan tabel S-Box.
Tabel 2.6. Tabel S-Box
0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

0

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

199

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

D9

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

21

Misalnya, terdapat sebuah state dengan nilai masukan sebagai berikut:
A(i,j)

B(i,j)

0A

4C

F1

18

67

29

A1

AD

B3

01

28

73

6D

7C

34

8F

FF

E2

55

D8

16

98

FC

61

AB

52

00

07

62

00

63

C5

Nilai byte awal pada A(i,j) berubah menjadi nilai yang terdapat B(i,j) setelah
mengalami SubBytes. Byte pada A(i,j) merepresentasikan indeks baris dan kolom pada
tabel S-Box . Pada nilai byte yang sebelah kiri merepresentasikan baris dan pada
sebelah kanan merepresentasikan kolom. Sehingga pada contoh A(1,1) yang bernilai
0A disubstitusi dengan nilai 67. Karena pada baris ke-0 dan kolom ke-A pada S-Box
bernilai 67.
Tidak seperti S-Box pada DES, yang terdiri dari nilai acak yang pokok pada
tabelnya, S-Box pada AES memiliki struktur aljabar. Suatu tabel S-Box AES dapat
terlihat dengan 2 langkah transformasi matematika. Pertama adalah invers dari Galois
field . Setiap elemen pada input Ai, invers nya bisa dihitung dengan rumus: Bi’= Ai-1,
dimana kedua dari Ai dan Bi’ adalah elemen dalam field GF(28) dengan irreducible
polinomialnya adalah

8

4

3

p( x)=x + x + x + x +1

. Tabel invers dari Galois field dari

GF(28) terdapat pada tabel 8.4 diatas. Tahapan kedua, setiap byte pada Bi’ dikalikan
dengan suatu matrix yang nilainya konstan lalu dilanjutkan dengan penambahan
terhadap 8-bit vektor yang bernilai konstan. (Paar dan Pelzl, 2010). Operasi tersebut
dijelaskan pada penjelasan dibawah ini :

Langkah kedua ini disebut pemetaan affine. Mari kita lihat bagaimana proses
perhitungan pada tabel S-Box. Sebagai contoh, kita asumsikan bahwa input Ai adalah
(1100 0010)2 = (C2)hex. Dari tabel invers dapat dilihat bahwa nilai inverse nya adalah

22

(2F)

hex

= (0010 1111)2 . Selanjutnya, lakukan pemetaan affine pada 2F, dan akan

menghasilkan nilai (0010 0101) = (25) hex. dan nilai tersebut sesuai dengan tabel S-Box
dengan indeks C2.
Keuntungan dalam penggunaan invers dari GF(28) sebagai fungsi utama dari
transfomrasi SubBytes adalah hal tersebut menyediakan sebuah derajat nonlinear yang
tinggi, sehingga menghasilkan tingkat keamanan yang tinggi untuk melawan serangan
secara analitis. (Paar dan Pelzl, 2010).
2.2.2.3.ShiftRows
Pada transformasi ShiftRows byte-byte inputan berpindah secara cyclic .Pada baris
kedua dari state satu byte paling kiri berpindah ke kanan, dan byte yang tersisa
bergeser ke kiri. Pada baris ketiga dua byte paling kiri berpindah ke kanan, dan byte
yang tersisa bergeser ke kiri. Dan pada baris keempat tiga byte paling kiri berpindah
ke kanan, dan byte yang tersisa bergeser ke kiri. Tujuan dari transformasi ShiftRows
adalah untuk menambah penyebaran elemen dari AES. Jika masukan untuk ShiftRows
terdiri dari suatu state B = (B0,B1,. . .,B15) sebagai berikut :
B0

B4

B8

B12

B1

B5

B9

B13

B2

B6

B10

B14

B3

B7

B11

B15

Maka keluaran state setelah melalui transformasi ShiftRows :
B0

B4

B8

B12

tidak terjadi perpindahan

B5

B9

B13

B1

1 byte bergeser ke kanan

B10

B14

B2

B6

2 byte bergeser ke kanan

B15

B3

B7

B11

2 byte bergeser ke kanan

23

2.2.2.4. MixColumns

MixColumns adalah suatu transformsi linier yang menggabungkan setiap
kolom dari matriks state. Ketika setiap masukan byte mempengaruhi empat byte
keluaran, operasi MixColumns merupakan elemen penyebaran utama pada AES.
Kombinasi dari ShiftRows dan MixColumns membuat kemungkinan bahwa hanya
setelah 3 ronde, setiap byte dari matriks state bergantung pada semua 16 byte plain
teks. State pada ShiftRows dinotasikan dengan C, yaitu C = MixColumn(B), dengan B
adalah state keluaran dari ShiftRows. (Paar dan Pelzl, 2010).
Setiap 4-byte pada kolom dianggap sebagai sebagai sebuah vektor dan
dikalikan dengan suatu matriks 4x4. Matriks tersebut terdiri dari elemen yang tetap.
Perkalian dan penjumlahan dari koefesien dilkakukan sama seperti pada operasi
aritmatika pada GF(28). Bentuknya dapat dilihat sebagai berikut :

Setiap byte pada state Ci dan Bi bernilai 8 bit yang merepresentasikan suatu
elemen pada GF(28). Untuk elemen matriks konstan yang bernilai “01” diterjemahkan
ke dalam bentuk polinomial GF(28) dengan nilai (0000 0001) dan setereusnya. Proses
penjumlahan dalam perkalian vektor-matriks adalah penjumlahan dalam GF(28).
Contohnya, kita anggap inputan untuk MixColumns adalah B = (25, 25, 25, 25). Untuk
perhitungan elemen “25” dengan “01” akan menghasilkan nilai “25” juga, karena
elemen “01” merupakan elemen identitas. Sementara perkalian “25” dengan “02” dan
“03” adalah sebagai berikut :
02.25= (0000 0010).(0010 0101)
= x . (x5 + x2 ++1)
= x6+ x3 + x
03.25= (0000 0011).(0010 0101)
= (x + 1) . (x5 +x2 +1)

24

= x6+x5 + x3 + x2 + x +1

Lalu, hasil keluaran state dari transformasi MixColumns adalah
01.25

=

x5 +

x2 +

1

01.25

=

x5 +

x2 +

1

02.25

=

x6 +

03.25

=

x6 +

Ci

=

x3 +
x5 +

x3 +

x5 +

x+
x2 +

x+

x2 +

1
1

2.2.2.5. AddRoundKey
Masukan untuk proses AddRoundKey adalah state matriks inputan dan state kunci .
Masing - masing elemen pada kedua state akan dilakukan operasi XOR. Operasi XOR
menghasilkan keluaran yang sama dengan opeasi penjumlahan pada Galois field
GF(2). (Paar dan Pelzl, 2010).
2.2.3. Dekripsi AES
Karena AES tidak bersifat non-Feistel, sehingga semua transformasi memiliki fungsi
inversinya. Inversi transformasi SubByte adalah InvSubByte , ShiftRows menjadi
InvShiftRows dan MixColumns menjadi InvMixColumns. Namun, operasi pada invers
mirip dengan operasi yang terjadi pada enkripsi. Pada pembahasan enkripsi
sebelumnya, transformasi MixColumn tidak dilakukan pada ronde terakhir. Oleh sebab
itu, pada rondee pertama dekripsi diatas tidak dilakukan proses InvMixCoulumns .
Namun, semua ronde dekripsi yang lain terdiri dari empat transformasi yaitu
AddRoundKey, InvSubBytes, InvShiftRows dan InvMixColumns. (Paar dan Pelzl, 2010).
Algoritma dekripsi AES dijelaskan pada pembahasan berikut ini :
Input : CT , K {Data hasil enkripsi 16 bytes, kunci AES (128,192, 256 bit) }
Output : P {Data hasil dekripsi 16 bytes}

25

1.

AddRoundKey (CT, w[(Nr*4) .. (Nr*4) + 3 ]), InvSubBytes(CT) ,
ShiftRows(CT)

2.

for i = (Nr-1)

1 do AddRoundKey (CT, w[(i*4) .. (i*4) + 3 ] ) ,

InvMixColumn(CT), InvShiftRows(CT), InvSubBytes (CT)
3.

AddRoundKey(CT, w[0 . .3 ] )

4.

P = CT

Dibawah ini adalah gambar 2.6 yang menunjukkan proses dekripsi dengan
algoritma AES (Advanced Encryption System) .

Gambar 2.6. Langkah - langkah dekripsi AES (Paar dan Pelzl, 2010).

2.2.3.1 InvMixColumns
Setelah melewati proses penambahan subkey, invMixColumn adalah transformasi yang
dilakukan pertama kali pada ronde pertama hingga ronde terakhir. Untuk
mengembalikan operasi MixColumn, inverse dari matriks harus digunakan. Masukan
untuk proses InvMixColumns adalah 4-byte dari kolom state yang nantinya dikalikan
dengan inverse dari matriks 4x4. Matriks tersebut terdiri dari elemen yang tetap.
Proses perkalian dan penjumlahan koefisien dilakukan seperti pada operasi aritmatika
dalam GF(28). Proses perhitungan dapat dilihat di bawah ini.

26

Kolom - kolom selanjutnya pada state dihitung dengan rumus seperti diatas.
Setiap nilai pada Bi dan Ci merupakan elemen dari GF(28), begitu pula nilai pada
matriks. Notasi yang dituliskan untuk nilai pada matriks yang digunakan diatas
menggunakan GF(28) . Misalnya nilai 0B = (0000 1011)2 = x3 + x +1.
2.2.3.2. InvShiftRows
Pada transfornasi InvShiftRows pada dekripsi, proses pergeseran byte pada setiap baris
diputar ke arah yang berlawanan dari proses ShiftRows pada enkripsi. Pada baris
pertama tidak dilakukan pergeseran, sama halnya yang terjadi pada enkripsi. Baris baris yang lain pada state dilakukan pergeseran ke arah kanan pada byte dan jumlah
nya sesuai dengan indeks barisnya. Misalnya terdapat matriks sebagai berikut :
B0

B4

B8

B12

B5

B9

B13

B1

B10

B14

B2

B6

B15

B3

B7

B11

Maka inverse dari matriks tersebut adalah :
B0

B4

B8

B12

tidak terjadi perpindahan

B1

B5

B9

B13

1 byte bergeser ke kiri

B2

B6

B10

B14

2 byte bergeser ke kiri

B3

B7

B11

B15

2 byte bergeser ke kiri

27

2.2.3.3. InvSubBytes

Pada transformasi ini, setiap byte masukan dari state akan disubstitusikan nilainya
dengan menggunakan tabel dari inverse S-Box. Nilai byte pada tabel S-Box dibangun
dengan menggunakan rumus :
Ai = S−1 (Bi ) = S−1 (S(Ai )) .......................................................... (7)
Dimana Ai dan Bi adalah elemen dari matriks. Untuk membalikkan nilai byte
pada tabel S-Box yang digunakan pada proses enkripsi, hal yang harus dilakukan
terlebih dahulu adalah menghitung nilai inverse pada transformasi affine. Setiap byte
direpresentasikan sebagai elemen GF(28 ). Rumus transformasi affine adalah sebagai
berikut :

Dimana (b7 , . . . , b0 ) adalah representasi dari elemen pada state Bi dan (b′7 , . . . ,
b0 ) adalah hasil perhitungan tersebut. Kedua, hal yang harus dilakukan adalah
membalikkan nilai dari Galois field inverse, dinotasikan sebagai Ai = (Ai−1 )-1. Hal ini
berarti, proses yang dilakukan adalah meng-inversekan nilai dari inverse suatu matriks,
dinotasikan sebagai Ai = (B′i )−1 ∈ GF(28 ). Dan akan menghasilkan Ai = S−1 (Bi ).
Berikut ini adalah hasil dari perhitungan invese byte yang dipetakan pada tabel InvSBox. Tabel tersebut direpresentasikan pada tabel 2.7 dibawah ini.
Tabel 2.7 Tabel InvS-Box
0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

0

52

09

6A

D5

30

36

A5

38

BF

40

A3

9E

81

F3

D7

FB

1

7C

E3

39

82

9B

2F

FF

87

34

8E

43

44

C4

DE

E9

CB

2

54

7B

94

32

A6

C2

23

3D

EE

4C

95

0B

42

FA

C3

4E

3

08

2E

A1

66

28

D9

24

B2

76

5B

A2

49

6D

8B

D1

25

4

72

F8

F6

64

86

68

98

16

D4

A4

5C

CC

5D

65

B6

92

28

Tabel 2.7 Tabel InvS-Box (cont)
5

6C

70

48

50

FD

ED

B9

DA

5E

15

46

57

A7

8D

9D

84

6

90

D8

AB

00

BC

BC

D3

0A

F7

E4

558

05

B8

B3

45

06

7

D0

2C

1E

8F

3F

3F

0F

02

C1

AF

BD

03

01

13

8A

6B

8

3A

91

11

41

4F

67

DC

EA

97

F2

CF

CE

F0

B4

E6

73

9

96

AC

74

22

AD

AD

35

85

E2

F9

37

E8

1C

75

DF

6E

A

47

F1

1A

71

1D

29

C5

89

6F

B7

62

0E

AA

18

BE

1B

B

FC

56

3E

4B

C6

D2

79

20

9A

DB

C0

FE

78

CD

5A

F4

C

1F

DD

A8

33

88

07

C7

31

B1

12

10

59

27

80

EC

5F

D

60

51

7F

A9

19

B5

4A

0D

2D

E5

7A

9F

93

C9

9C

EF

E

A0

E0

3B

4D

2A

2A

F5

B0

C8

EB

BB

3C

83

53

99

61

F

17

2B

04

7E

BA

77

D6

26

E1

69

14

63

55

21

0C

7D

2.2.3.4. AddRoundKey
Proses AddoundKey pada dekripsi mirip dengan yang terjadi pada enkripsi. Setiap byte
pada state masukan dilakukan operasi XOR dengan byte pada subkey. Pada ronde
pertama menggunakan subkey terakhir, dekripsi kedua menggunakan subkey kedua
paling akhir dan begitu seterusnya. Subkey yang digunakan pada proses ini adalah
subkey yang digunakan pada proses enkripsi , sehingga sudah selayaknya subkey
tersebut disimpan sesuai dengan indeks nya masing-masing. (Paar dan Pelzl, 2010).
2.3. Citra Digital

Citra digital merupakan representasi dari matriks 2 dimensi yang terdiri atas kumpulan
piksel, dimana setiap piksel merepresentasikan nilai warna, sehingga terbentuklah
suatu gambar yang dapat dilihat dan dikomputasi di dalam komputer. Piksel adalah
elemen pada gambar yang nilainya tergantung pada tipe data yang digunakan untuk
merepresentasikan warna yang dibutuhkan seperti RGB(Red, Green Blue), Binary,
ataupun CMYK. Rentang nilai pada setiap piksel ditentukan oleh panjang bit pada
setiap tipe data yang digunakan. Pada binary yang terdiri atas 1 bit, maka rentang
nilainya adalah antara 0 dan 1 saja. Sedangkan pada RGB yang terdiri atas 8 bit pada
masing-masing komponennya, maka rentang nilainya adalah 0 - 255.

29

Penyimpanan kumpulan piksel dalam bentuk 2 dimensi dari citra digital di dalam
memori komputer menjadi suatu file membutuhkan suatu mekanisme yang tepat yang
disebut sebagai format file. Beberapa format file yang sudah umum digunakan adalah
Tagged Image File Format (TIFF) untuk mendukung gambar yang tidak terkompres,
Graphic Interchange Format (GIF) dan Portable Network Graphics (PNG) yang biasa
digunakan untuk web, dan JPEG/JFIF untuk citra digital berwarna yang diperlukan
dengan ukuran yang tidak terlalu besar. Contoh citra digital ditunjukkan pada gambar
2.7 di bawah ini.

Gambar 2.7 . Citra digital dan nilai piksel

2.3.1. Format JPG
Format file JPG dikembangkan oleh Joint Photographic Experts Group dengan tujuan
untuk memperoleh pereduksian data dengan skala 1:16 yang telah ditetapkan sebagai
standar ISO IS-10918 pada tahun 1990. Standar format JPEG mendukung citra dengan

30

komponen warna yang bernilai hingga 255 dan juga telah mendudukung tipe data
CMYK. JPEG merupakan format file dengan menerapkan metode kompresi untuk
citra berwarna maupun grayscale.
Pembentukan state pada citra dilakukan pada setiap baris. Langkah - langkah
pembentukan state dari sebuah citra adalah sebagai berikut :
1. Konversikan nilai piksel pada gambar ke dalam bentuk nilai hex.
2. Setiap baris nilai piksel dari sebuah citra dibentuk kedalam beberapa matriks 4
x 4. Matriks inilah yang disebut dengan state.
Skema pembentukan state pada setiap baris dari sebuah citra ditunjukkan pada
gambar 2.8.
210

186

164

156

157

155

154

154

147

130

113

120

136

136

122

137

138

231

120

100

120

222

123

118

121

234

121

211

122

110

110

143

114

114

210

157

147

136

138

222

234

110

186

155

130

134

231

123

121

110

164

154

113

122

100

118

211

143

156

154

120

137

120

121

122

114

Gambar 2.8. Skema pembentukan state pada baris citra

2.4 Pseudorandom Number Generator (PNRG)
Pseudorandom Number Generator (PNRG) merupakan algoritma pembangkitan
angka acak dengan menggunakan suatu fungsi f(x) secara rekursif. Syarat umum yang
digunakan untuk menghasilkan nilai acak dengan algoritma ini adalah bahwa fungsi
yang digunakan harus menunjukkan nilai statistik yang tepat untuk menunjukkan
bahwa angka yang dihasilkan terlihat seperti bilangan acak.

31

2.5.

Penelitian yang Relevan

Berikut ini beberapa penelitian tentang kriptografi yang berkaitan dengan Algoritma
Advanced Encryption Standard (AES) ditunjukkan pada tabel 2.8 .
Tabel 2.8 Penelitian Terkait
No

Nama/Tahun

Judul

Hasil Penelitian

1.

R.Kristoforus
JB dan
Stefanus
Aditya BP
(2012)

Implementasi
Algoritma Rijndael
untuk Enkripsi dan
Dekripsi pada
Citra Digital

kecepatan proses enkripsi dipengaruhi
oleh panjang kunci yang digunakan.
Semakin
panjang
kunci
yang
digunakan maka waktu proses akan
semakin lama .

2.

Douglas
Selent (2010)

Advanced
Encryption
Standard

3.

Ahmed
Bashir
Abugharsa,
Abd Samad
dan Hamida
Almangush
(2011)

A New Image
Encryption
Approach Using
Block Based on
Shifted Algorithm

algoritma Rijndael terpilih sebagai
AES (Advanced Ebcryption Standard)
dengan keunggulan yang dimilikinya
yaitu tahan terhadap serangan dan
setiap operasinya di rancang untuk
dapat diperoleh inversinya yang
dibutuhkan untuk proses dekripsi
cipher text.
tingkat keamanan dari kerahasiaan data
gambar lebih baik dengan melakukan
proses shift pada baris dan kolom dari
blok data gambar.