Anda di halaman 1dari 20

BAB 2

LANDASAN TEORI

2.1 Mikrokontroler ATmega32

Mikrokontroler ATmega32 adalah mikrokontroler 8-bit keluaran Atmel dari keluarga


AVR. Pihak Atmel menyatakan bahwa AVR bukanlah sebuah akronim atau singkatan
dari suatu kalimat tertentu, perancang arsitektur AVR, Alf-Egil Bogen dan Vegard
Wollan tidak memberikan jawaban yang pasti tentang singkatan AVR ini
(http://en.wikipedia.org/wiki/Atmel_AVR). Mikrokontroler ini dirancang berdasarkan
arsitektur AVR RISC (Reduced Instruction Set Computer) yang mengeksekusi satu
instruksi dalam satu siklus clock sehingga dapat mencapai eksekusi instruksi sebesar 1
MIPS (Million Instruction Per Second) setiap 1 MHZ frekuensi clock yang digunakan
mikrokontroler tersebut. Frekuensi clock yang digunakan dapat diatur melalui fuse bits
dan kristal yang digunakan. Jika kristal yang digunakan sebesar 16 MHZ sehingga
frekuensi clock-nya sebesar 16 MHZ maka eksekusi instruksinya mencapai 16 MIPS
(Atmel, 2009).

ATmega32 memiliki fitur utama antara lain: 16K x 16 byte In-System


Programmable Flash Program memory dari alamat 0000H sampai 3FFFH. Flash
memory ini terbagi menjadi dua bagian yaitu application flash section dan boot flash
section. Data memori sebesar 2144 byte yang terbagi atas 32 general purpose register,
64 I/O register, dan 2KB internal SRAM (Static Random Access Memory), 1 KB
EEPROM (Electrically Eraseable Read Only Memory), 32 I/O pin, tiga unit
timer/counter, internal dan eksternal interrupt, USART (Universal Synchronous and
Asynchronous Receiver Transceiver), TWI (Two-wire Serial Interface), 10-bit ADC
(Analog to Digital Converter) delapan saluran, SPI (Serial Programmable Interface),
watchdog timer, dan internal clock generator. Seperti telah disebutkan di atas

Universitas Sumatera Utara

ATmega32 memiliki 32 general purpose register, dan register ini terhubung langsung
dengan dengan ALU (Arithmatic Logic Unit) sehingga dua register dapat sekaligus
diakses dalam satu instruksi yang dieksekusi tiap clock-nya. Sehingga arsitektur
seperti ini lebih efisien dalam eksekusi kode program dan dapat mencapai eksekusi
sepuluh kali lebih cepat dibandingkan mikrokontroler CISC (Complete Instruction Set
Computer) (Atmel, 2009). Gambar 2.1, 2.2, dan 2.3 masing-masing menunjukkan
desain memori, susunan pin, dan arsitektur mikrokontroler ATmega32.

(a)

(b)

Gambar 2.1 (a) Flash Program Memory, (b) Data Memory

Gambar 2.2 Susunan Pin ATmega32

Universitas Sumatera Utara

Gambar 2.3 Arsitektur Mikrokontroler ATmega32

ATmega32 memiliki clock generator internal sehingga mikrokontroler ini


dapat bekerja langsung tanpa menggunakan clock eksternal. Sinyal clock internal
yang dibangkitkan sebesar 1 MHZ. Jadi, cukup dengan menghubungkan Vcc dan Gnd
dengan tegangan 5V DC mikrokontroler ini dapat bekerja.

Untuk membuat program untuk ATmega32 dapat digunakan WinAVR atau


AVR Studio yang dapat diperoleh secara gratis (freeware). Namun dalam pembahasan

Universitas Sumatera Utara

ini software yang digunakan adalah WinAVR. Program dibuat dalam bahasa C dan
menambahkan file header untuk ATmega32 yang berisi register-register pada
ATmega32. Setelah program di-compile akan menghasilkan file dengan tipe Intel hex
(.hex). File inilah yang nantinya akan di-programkan ke ATmega32 melalui interface
bsd programmer (Brian Dean's Programmer) yang terhubung ke komputer melalui
port paralel. Koneksi antara ATmega32 dan port paralel untuk bsd programmer
diberikan oleh tabel 2.1.

Tabel 2.1 Koneksi Pin Port Paralel dan ATmega32


Port paralel

ATmega32

No pin

Nama pin

No pin

Nama pin

D5

Reset

D6

SCK

D7

MOSI

10

S6

MISO

19

Ground

11

Ground

2.2 Antarmuka Keyboard ke Mikrokontroler ATmega32

Koneksi antara keyboard dan mikrokontroler hanya menggunakan dua jalur sinyal
yaitu data dan clock, dan koneksi lain yang dibutuhkan adalah kutub positif dan
negatif tegangan 5V DC yang dapat diambil dari tegangan yang diberikan untuk
mikrokontroler. Antar muka keyboard dan mikrokontroler ditunjukkan gambar 2.4.

Gambar 2.4 Antar Muka Keyboard dan Mikrokontroler

Universitas Sumatera Utara

Konektor yang digunakan keyboard ada dua macam yaitu konektor 5-pin DIN
dan konektor 6-pin mini DIN (Deutsches Institut fuer Norm). Sampai sekarang ini
konektor yang sering dipakai adalah 6-pin mini DIN. Perbedaan antara kedua tipe
konektor ini dan defenisi pin-pinnya ditunjukkan tabel 2.2.

Tabel 2.2 Konektor Keyboard AT

(Sumber: http://www.scienceprog.com)

Keyboard standar memiliki satu scancode untuk tiap tombolnya yang


direpresentasikan dalam format bilangan heksadesimal, dan setiap scancode adalah
unik. Scancode ini mempunyai ukuran satu byte, namun ada beberapa tombol khusus
yang disebut extended keys mempunyai scancode lebih dari satu byte dan dimulai
dengan byte E0. Misalnya tombol karakter S memiliki scancode 1B dan extended
key misalnya tombol Home mempunyai scancode E06C.

Setiap suatu tombol ditekan keyboard akan mengirimkan scancode melalui pin
data. Jika tombol masih ditekan untuk beberapa saat maka scancode tombol tersebut
akan terus dikirimkan sampai tombol tersebut dilepas. Setelah tombol dilepas
keyboard akan mengirimkan sinyal byte F0 dan diikuti dengan scancode-nya.
Sedangkan jika tombol extended keys dilepas keyboard akan mengirimkan byte E0
terlebih dahulu kemudian diikuti byte F0 dan selanjutnya diikuti byte scancode
belakangnya setelah byte E0. Scancode untuk keyboard ditunjukkan gambar 2.5 dan
2.6.

Universitas Sumatera Utara

Gambar 2.5 Scancode Keyboard AT

Gambar 2.6 Scancode Tombol Numerik dan Extended Keys

Scancode keyboard dikirimkan secara serial dengan format sebelas bit yang
dimulai dengan bit awal 0 diikuti dengan delapan bit scancode, satu bit parity dan
diakhiri satu bit terakhir 1. Delapan bit scancode yang dikirimkan dimulai dengan
LSB (Least Significant Bit) dan diakhiri dengan MSB (Most Significant Bit). Setiap bit
dari format serial ini nilainya valid saat perubahan clock dari high ke low. Format data
serial ini ditunjukkan gambar 2.7.

Gambar 2.7 Format Serial Scancode

Universitas Sumatera Utara

Karena scancode yang dimiliki tombol-tombol ini acak, maka untuk


mengkonversi scancode ke dalam format ASCII dapat digunakan tabel look-up yang
menyimpan scancode dan kode ASCII dari tombol yang bersangkutan.

2.3 LCD LMB162A Sebagai Output

LMB162A adalah piranti output berupa LCD untuk sistem komputer atau
mikrokontroler yang dapat menampilkan karakter standar yang telah tersimpan dalam
ROM pada LCD tersebut. Karakter yang dapat ditampilkan sebanyak 32 karakter yang
tersusun dalam 16 kolom dan dua baris, sehingga sering disebut LCD 16x2. LCD ini
memiliki 16 pin dan memerlukan tegangan 5V DC. Gambar 2.8 menunjukkan bentuk
dan susunan pin LCD dan keterangan dari setiap pin diberikan pada tabel 2.3.

Gambar 2.8 Susunan Pin LMB162A

Sebelum menggunakan modul LCD ini, power supply 5V DC harus diberikan


sebagai sumber arusnya seperti yang ditunjukkan gambar 2.9.

Gambar 2.9 Hubungan Power Supply ke LCD

Universitas Sumatera Utara

Tabel 2.3 Keterangan Pin LMB162A


No pin

Nama pin

Level

Fungsi

Vss

Ground

Vdd

Power supply untuk chip LCD

Vo

0V 5V

Power supply untuk LCD

RS

H/L

Register Selection

R/W

H/L

Read atau Write

HL

Enable

DB0

H/L

Data Bit 0

DB1

H/L

Data Bit 1

DB2

H/L

Data Bit 2

10

DB3

H/L

Data Bit 3

11

DB4

H/L

Data Bit 4

12

DB5

H/L

Data Bit 5

13

DB6

H/L

Data Bit 6

14

DB7

H/L

Data Bit 7

15

LEDA

Power supply untuk LED (+)

16

LEDK

Power supply untuk LED (-)

Untuk menampilkan karakter pada LCD ada beberapa algoritma yang harus
dijalankan. Algoritma ini dilakukan dengan memberikan nilai logika 0 atau 1 pada pin
yang bersangkutan. Algoritma untuk penampilan karakter ini antara lain:
1. Mengatur display LCD, cursor dan blink.

Tabel 2.4 Pengaturan Display LCD


E

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

10

Keterangan:
D: D=0 display mati dan D=1 display hidup
C: C=0 cursor mati dan C=1 cursor hidup
B: B=0 blink mati dan B=1 blink hidup

Universitas Sumatera Utara

2. Mengatur karakter yang akan ditampilkan


Tabel 2.5 Pengaturan Karakter Tampilan LCD
E

RS

R/W

10

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

Nilai berdasarkan CGROM

Keterangan:
Nilai dari DB0 sampai DB7 yang dimasukkan nantinya akan mengatur tampilan
karakter yang berkorespondensi dengan kode karakter CGROM pada chip LCD. Kode
karakter CGROM diberikan pada gambar 2.10 yang terdiri dari kolom yang
menunjukkan DB6 DB7 dan baris yang menunjukkan DB0 DB3.

Gambar 2.10 Kode Karakter CGROM pada LCD

Universitas Sumatera Utara

2.4 Advanced Encryption Standard (AES)

Menurut Schneier (1996) dalam Munir (2006) kriptografi adalah seni dan ilmu untuk
menjaga kerahasiaan pesan dengan cara menyandikannya ke dalam bentuk yang tidak
dapat dimengerti lagi maknanya. Pengertian lain tentang kriptografi diungkapkan oleh
Menezes (1996) dalam Munir (2006) yang menyatakan bahwa kriptografi adalah ilmu
yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek
keamanan informasi seperti kerahasiaan, integritas data, serta otentikasi. Dalam
kriptografi pesan atau disebut plainteks disandikan menggunakan algoritma tertentu
dan menggunakan suatu kunci (cipher key) dan menghasilkan pesan yang telah
tersandi (cipherteks).

AES adalah algoritma kriptografi kunci simetri yang berbasis cipher blok.
Kunci simetri maksudnya adalah dalam proses enkripsi dan dekripsi algoritma AES
menggunakan kunci atau cipher key yang sama dan cipher blok yaitu baik dalam
proses enkripsi dan dekripsi plainteks atau cipherteksnya diolah dalam bentuk blok
dengan ukuran blok 128 bit (16 karakter). Cipher key yang digunakan dalam AES
bervariasi yaitu 128 bit, 192 bit, atau 256 bit. Untuk selanjutnya plainteks dan cipher
key akan diolah dalam bentuk blok state. AES menggunakan jumlah putaran
(perulangan algoritma) yang berbeda untuk tiap panjang cipher key-nya seperti tabel
2.6.
Tabel 2.6 Hubungan Panjang Kunci dan Jumlah Putaran AES
Panjang kunci

Ukuran blok

Jumlah putaran

AES-128

128 bit

128 bit

10

AES-192

192 bit

128 bit

12

AES-256

256 bit

128 bit

14

2.4.1 Input, output, dan state dalam AES

Input (plainteks) dan output (cipherteks) dalam algoritma AES adalah urutan
biner 128 bit dengan nilai 0 atau 1. Urutan biner ini yang disebut blok 128 bit.
Sedangkan cipher key yang digunakan memiliki panjang yang bervariasi yaitu 128 bit,

Universitas Sumatera Utara

192 bit, atau 256 bit. Untuk selanjutnya plainteks dan cipher key akan diolah dalam
bentuk blok state.

Input (plainteks)
in0

in1

in2

in3

in4

in5

in6

in7

in8

in9

in10 in11 in12 in13 in14 in15

State

Gambar 2.11 Input Plainteks dan State

State adalah suatu larik dua dimensi dari bilangan biner dalam bentuk matriks
4x4, setiap elemen matriksnya sebesar 8 bit (1 byte). Jadi dalam proses enkripsi
plainteks dan cipher key diubah kedalam format state. State juga dapat
direpresentasikan dalam larik satu dimensi yaitu larik dari kolom state tersebut dengan
panjang 32 bit setiap elemennya sehingga terdapat empat elemen state yaitu w0, w1,
w2, dan w3, dengan ketentuan:
w0=s0,0 s1,0 s2,0 s3,0

w2=s0,2 s1,2 s2,2 s3,2

w1=s0,1 s1,1 s2,1 s3,1

w3=s0,3 s1,3 s2,3 s3,3

Representasi seperti ini digunakan pada proses AddRoundKey pada enkripsi AES.

2.4.2 Spesifikasi Algoritma Enkripsi AES

Untuk algoritma AES, panjang blok input, blok output, dan state adalah 128
bit yang direpresentasikan sebagai Nb = 4 yang merupakan representasi larik kolom
dengan panjang 32 bit dan jumlah elemennya adalah empat elemen. Panjang kunci
atau cipher key K adalah 128 bit, 192 bit, atau 256 bit yang direpresentasikan sebagai
Nk = 4, 6, atau 8 yang merupakan representasi larik kolom dengan panjang 32 bit dari
cipher key. Jumlah putaran dalam algoritma ditentukan berdasarkan panjang kunci

Universitas Sumatera Utara

yang digunakan dan jumlah putaran ini disimbolkan dengan Nr. Hubungan antara
panjang kunci (Nk), ukuran blok state (Nb), dan jumlah putaran (Nr) diberikan tabel
2.7.
Tabel 2.7 Hubungan antara Nk, Nb, dan Nr
Panjang kunci

Ukuran blok

Jumlah putaran

(Nk)

(Nb)

(Nr)

AES-128

10

AES-192

12

AES-256

14

Algoritma enkripsi AES meliputi beberapa proses algoritma tersendiri yaitu


AddRoundKey, SubBytes, ShiftRows, dan MixColumns. Selain itu, terdapat algoritma
pembangkitan kunci dari sejumlah Nk kunci asal dan menghasilkan total kunci
ekspansi sebanyak Nb(Nr+1) dalam bentuk larik kolom 32 bit. Algoritma enkripsi
AES diuraikan sebagai berikut:
1. AddRoundKey: melakukan operasi XOR antara state awal (plainteks) dengan
state cipher key. Tahap ini disebut initial round.
2. Putaran sebanyak Nr-1 (Nr adalah banyak putaran) pada algoritma berikut:
a. SubBytes: substitusi state dengan menggunakan tabel substitusi S-box.
b. ShiftRows: Pergeseran baris-baris state secara wrapping.
c. MixColumns: Operasi modular produk terhadap state dengan polinomial
{03}x3+{01}x2+{01}x+{02}.
d. AddRoundKey: melakukan operasi XOR antara state awal (plainteks) dengan
state cipher key untuk putaran ke Nr.
2. Final round, dengan proses:
a. SubBytes
b. ShiftRows
c. AddRoundKey

Gambar 8.12 menunjukkan ilustrasi algoritma enkripsi AES. Dari gambar


dapat terlihat ada beberapa proses yang diulang.

Universitas Sumatera Utara

Gambar 2.12 Algoritma Enkripsi AES

Penjelasan untuk masing-masing algoritma akan diuraikan berikut ini.


1. AddRoundKey
Algoritma ini melakukan operasi XOR antara state plainteks dengan state cipher key
untuk putaran tertentu.

Gambar 2.13 AddRoundKey

Universitas Sumatera Utara

Proses AddRoundKey mengoperasikan tiap kolom dari state. Tiap kolom diXOR-kan dengan cipher key yang telah diekspansi. Total kunci yang diekspansi
adalah Nb(Nr+1) sehingga menghasilkan kunci dalam bentuk larik kolom 32 bit
w0,w1, w2, , w43 untuk Nb = 4 dan Nr = 10. Operasi AddRoundKey pada tiap
putaran melakukan operasi XOR terhadap larik kolom 32 bit dari state dengan kunci
hasil ekspansi berdasarkan persamaan:
[s0,c s1,c s2,c s3,c] = [s0,c s1,c s2,c s3,c] XOR [wl+c]
Dengan, l = round * Nb dan 0 <= c < Nb

2. SubBytes
Algoritma ini melakukan substitusi state menggunakan tabel substitusi S-box.

Gambar 2.14 SubBytes

Tabel 2.8 S-box

Universitas Sumatera Utara

Misalnya state yang akan disubstitusi adalah S0,0 = $EC, maka S0,0[x,y]=$EC.
Nilai dari x adalah E dan nilai dari y adalah C. Sehingga hasil substitusi state adalah
nilai pertemuan antara baris E dan kolom C, yaitu S0,0 = $CE.
3. ShiftRows
Algoritma ini melakukan pergeseran secara wrapping (siklik) pada 3 baris terakhir
dari state. Untuk baris pertama digeser sejauh satu byte, baris kedua digeser sejauh
dua byte, dan untuk baris ketiga digeser sejauh 3 byte.

Gambar 2.15 ShiftRows

4. MixColumns
Algoritma ini mengoperasikan tiap kolom dari state dan memperlakukan kolomkolom ini sebagai bilangan polinomial empat suku. Tiap elemen kolom adalah
polinomial dengan koefisien GF(28) yang kemudian dilakukan operasi modulur
produk dengan polinomial {03}x3+{01}x2+{01}x+{02}.
Operasi ini dapat dinotasikan sebagai s(x)=a(x) s(x). Dengan s(x) adalah
kolom dalam state dan a(x) adalah bilangan polinomial {03}x3+{01}x2+{01}x+{02}.
Operasi ini dapat diilustrasikan sebagai perkalian matriks seperti berikut:

Universitas Sumatera Utara

Gambar 2.16 Perkalian Matriks antara State dan Polinomial

Hasil dari perkalian matriks di atas adalah:

Gambar 2.17 Hasil perkalian matriks antara state dan polinomial

Selanjutnya operasi perkalian tiap elemen state diperlakukan sebagai bilangan


polinomial, misalnya {25} atau 00100101b dinotasikan dengan bilangan polinomial
sebagai x5+x2+1. Sebagai contoh {57} {83} = {c1} dapat dijabarkan sebagai berikut:
{57} = 01010111b = x6+x4+x2+x+1
{83} = 10000011b = x7+x+1
Sehingga {57} {83} = (x6+x4+x2+x+1) ( x7+x+1)
(x6+x4+x2+x+1) (x7) = x13+x11+x9+x8+x7
(x6+x4+x2+x+1) (x) =

x7

(x6+x4+x2+x+1) (1) =

x6
x13+x11+x9+x8

Menghasilkan

+x5

+x3+x2+x
+x4

+x2+x+1

+x6+x5+x4+x3

+1

Hasil sementara ini dilakukan operasi sisa hasil bagi (modulur) dengan {01}{1b} atau
100011011b atau x8+x4+x3+x+1.
x13+x11+x9+x8
(x8+x4+x3+x+1) x5 = x13

+x9+x8

x11

(x8+x4+x3+x+1) x3 =

x11

+x6+x5+x4+x3

+1 modulur x8+x4+x3+x+1

+x6+x5
+x4+x3

+x7+x6
x7+x6

+1

+x4+x3
+1

= 0110001b = {c1}

Universitas Sumatera Utara

Algoritma mixcolumns ditunjukkan gambar 8.18.

Gambar 2.18 Mixcolumns

2.4.3 Algoritma Pembangkitan Kunci

Pada algoritma enkripsi AES dalam proses pembangkitan kuncinya, dari kunci
asal cipher key K sepanjang 128 bit (Nk=4), 192 bit (Nk=6), atau 256 bit (Nk=8) akan
diekspansi kunci sebanyak Nb(Nr+1) dalam bentuk larik kolom 32 bit. Hasil dari
pembangkitan kunci ini adalah suatu penjadwalan kunci yang terdiri dari larik kolom
32 bit (4 byte) yang dinotasikan sebagai [wi], dengan 0<=i<Nb(Nr+1). Hasil ekspansi
kunci ini adalah:
w0 ... w43

untuk Nr = 10

w0 ... w51

untuk Nr = 12

w0 ... w59

untuk Nr = 14

w0

w1

w2

......

wNb(Nr+1)-1

(4 byte)

Gambar 2.19 Larik Kolom 32 bit Hasil Ekspansi Kunci

Universitas Sumatera Utara

Algoritma pembangkitan kunci ini meliputi beberapa proses seperti SubWord,


RotWord, dan Rcon[i/Nk]. Algoritma pembangkitan kunci ini adalah sebagai berikut:
1.

Untuk 0<=i<Nk, wi diisi dengan cipher key asal dan panjang wi adalah 32 bit.
Misalkan cipher key = 2b 7e 15 16 28 ae d2 a6 ab f7 15 88 09 cf 4f 3c, maka:
w0 = 2b 7e 15 16

w2 = ab f7 15 88

w1 = 28 ae d2 a6

w3 = 09 cf 4f 3c

Proses yang sama dilakukan untuk panjang kunci 192 bit dan 256 bit.

Gambar 2.20 Larik Kunci Awal wi Hasil Ekspansi


2. Jika i merupakan kelipatan Nk, lakukan operasi RotWord, SubWord, XOR dengan
Rcon[i/Nk].
RotWord
Operasi permutasi siklik terhadap 32 bit (4 byte) hasil ekspansi kunci
sebelumnya, dalam hal ini adalah wi-1. Misal wi-1 sebagai [a0 a1 a2 a3]
dipermutasi menjadi [a1 a2 a3 a0].

Gambar 2.21 Operasi RotWord dalam Pembangkitan Kunci

Universitas Sumatera Utara

SubWord
Operasi substitusi dari hasil RotWord sebelumnya menggunakan tabel S-box
yang juga dipergunakan pada proses SubBytes.

cf

S-box

8a

4f

84

3c

eb

09

01

Gambar 2.22 Operasi SubWord pada Pembangkitan Kunci

Rcon[i/Nk]
Operasi Rcon[a] memenuhi nilai yang diberikan [xa-1,{00},{00},{00}] dalam
bilangan polinomial. Nilai polinomial x dinotasikan sebagai {02} dalam
GF(28) atau 00000010b.
Misalnya untuk i = 4 sehingga i/Nk = 1.
Rcon[a] = Rcon[1]

= [x1-1,{00},{00},{00}]
= [x0,{00},{00},{00}]
= [{01},{00},{00},{00}]

Selanjutnya, hasil operasi SubWord di-XOR-kan dengan Rcon[i/Nk]

8a

01

8b

84

00

84

00

eb

00

01

eb
01

XOR

Rcon[i/Nk]
Gambar 2.23 Operasi Rcon[i/Nk] pada Pembangkitan Kunci

3. Jika Nk = 8 dan i - 4 adalah kelipatan Nk, maka operasi SubWord dilakukan


terhadap wi-1.
4. Operasi XOR antara larik kolom sebelumnya yaitu wi-Nk dengan hasil operasi
sebelumnya yaitu Rcon[i/Nk] untuk i kelipatan Nk atau SubWord jika kondisi
algoritma ketiga terpenuhi. Hasil dari proses ini adalah hasil akhir untuk
perhitungan wi.

Universitas Sumatera Utara

Berikut ini diberikan contoh proses pembangkitan kunci 128 bit (Nk = 4)
dengan cipher key = 2b 7e 15 16 28 ae d2 a6 ab f7 15 88 09 cf 4f 3c.
w0 = 2b7e1516

w1 = 28aed2a6

w2 = abf71588

w3 = 09cf4f3c

Gambar 2.24 Contoh Proses Pembangkitan Kunci 128 bit

Universitas Sumatera Utara

Anda mungkin juga menyukai