Implementasi Algoritma Kunci Publikntruencrypt Pada Add-In Microsoft Outlook

BAB II

TINJAUAN PUSTAKA

2.1.

Kriptografi

Saat ini manusia memasuki era globalisasi di mana informasi menjadi sebuah aset
yang sangat bernilai, bahkan lebih bernilai dari aset lainnya. Kebocoran sebuah
informasi penting akan sangat merugikan pihak-pihak yang terkait di dalamnya, untuk
itu aset informasi perlu dilindungi (secured), disembunyikan dari orang yang tidak
bertanggung jawab (confidentality), dilindungi dari perubahan oleh yang tidak
bertanggung jawab (integrity) dan tersedia bagi pihak yang berhak untuk
mengaksesnya ketika diperlukan (availability) [4].

Keberadaan komputer digital menyebabkan beberapa aspek keamanan
informasi di atas mengalami perubahan dan menjadi lebih menantang untuk diteliti.
The International Telecommunication Union – Telecommunication Standardization

(ITU-T) X.800 mendefinisikan 5 layanan yang berkaitan dengan target keamanan

sebagai berikut [6].
1. Data confidentiality didesain untuk melindungi informasi dari serangan pihak lain,
baik keseluruhan atau sebagian informasi serta untuk melindungi informasi dari
serangan pengintaian dan analisis lalu lintas pertukaran informasi.
2. Data Integrity didesain untuk melidungi data dari perubahan, penyisipan,
penghapusan dan pembalasan (replying) dari musuh atau penyerang.
3. Authentication merupakan layanan pembuktian keaslian pengirim dan penerima
pada saat informasi dikirimkan melalui jaringan transmisi data.
4. Nonrepudiation merupakan layanan yang mencegah penyangkalan oleh pengirim
maupun penerima informasi. Pengirim maupun penerima pesan dapat melakukan
pembuktian pengiriman atau penerimaan informasi bila terjadi penyangkalan oleh
pengirim maupun penerima informasi.

Universitas Sumatera Utara

8

5. Acces Control menyediakan perlindungan untuk mencegah pihak yang tidak
berhak


untuk

mengakses

data

termasuk

membaca,

menulis,

merubah,

mengeksekusi program dan lain- lain.

Layanan keamanan data confidentiality dapat diterapkan atau diimplementasikan
dengan menggunakan teknik kriptografi dan steganografi. Kriptografi (berasal dari
bahasa Yunani, crypto “rahasia” dan graphia “tulisan”) adalah ilmu dan seni untuk
menjaga keamanan pesan ketika pesan dikirim dari suatu tempat ke tempat lain.

Steganografi (steganos “tertutupi” dan graphein “menulis”) merupakan ilmu dan seni
untuk menyembunyikan informasi pada media lain sehingga tidak tampak oleh orang
lain [1].

Proses yang berlangsung pada kriptografi dibedakan menjadi dua proses yaitu,
enkripsi dan dekripsi. Enkripsi adalah sebuah cara mentransformasikan plaintext
menjadi ciphertext dibawah kendali sebuah kunci. Proses ini juga dikenal sebagai
encipherment. Kebalikan dari proses ini dikenal dengan istilah dekripsi atau
decipherment [6].

Ada beberapa istilah penting dalam kriptografi yang perlu untuk dipahami, yaitu:
1. Pesan, Plainteks dan Cipherteks
Pesan merupakan data atau informasi yang dapat dibaca dan dimengerti
maknanya. Nama lain untuk pesan adalah plainteks (plaintext). Pesan dapat berupa
data atau informasi yang dikirim atau yang disimpan dalam media penyimpanan.
Pesan yang tersimpan bisa berbentuk teks, citra (image), suara/bunyi (audio) dan
video. Pesan yang diubah ke dalam bentuk sandi yang tidak dapat dipahami.
disebut cipherteks (ciphertext).
2. Pengirim dan Penerima
Komunikasi data melibatkan pertukaran pesan antara dua atau lebih entitas.

Pengirim (sender ) adalah entitas yang mengirim pesan kepada entitasnya yang
lain. Penerima (receiver ) adalah entitas yang menerima pesan. Entitas yang
dimaksudkan di sini dapat berupa manusia, mesin (komputer), kartu kredit, dan
sebagainya.

Universitas Sumatera Utara

9

3. Enkripsi dan Dekripsi
Proses penyandikan pesan asli menjadi pesan tersandi disebut enkripsi, sedangkan
proses untuk mengembalikan pesan tersandi menjadi pesan semula dinamakan
dekripsi.
4. Cipher dan Kunci
Algoritma kriptografi disebut juga cipher yaitu aturan untuk enciphering dan
deciphering, atau fungsi matematika yang digunakan untuk enkripsi dan dekripsi.

Keamanan algoritma kriptografi sering diukur dari banyaknya kerja (work) yang
dibutuhkan untuk memecahkan cipherteks menjadi plainteks tanpa mengetahui
kunci yang digunakan. Kunci (key) merupakan parameter yang digunakan untuk

transformasi enciphering dan deciphering. Kunci biasanya berupa string atau
deretan bilangan.
5. Sistem Kriptografi
Kriptografi membentuk sebuah sistem yang dinamakan sistem kriptografi. Sistem
kriptografi (cryptosystem) terdiri dari algoritma kriptografi, semua plainteks dan
cipherteks yang mungkin dan kunci.
6. Penyadap (Eaesdropper )
Penyadap

merupakan

orang

yang

mencoba

menangkap

pesan


selama

ditransmisikan. Tujuan penyadap adalah untuk mendapatkan informasi sebanyakbanyaknya mengenai sistem kriptogafi yang digunakan untuk berkomunikasi
dengan maksud untuk memecahkan cipherteks.
7. Kriptanalisis
Kriptanalisis (cryptanalysis) adalah ilmu dan seni untuk memecahkan cipherteks
menjadi plainteks tanpa mengetahui kunci yang digunakan, pelakunya disebut
kriptanalis [1].

Berdasarkan kunci yang digunakan pada proses enkripsi dan dekripsi,
kriptografi dibagi ke dalam dua bagian, yaitu kriptografi simetri dan kriptografi
asimetri. Masing-masing jenis memiliki kelebihan dan kekurangan, sehingga
penggunaanya harus disesuaikan dengan kebutuhan dan tujuan dari penggunaan
kriptografi itu sendiri.

Universitas Sumatera Utara

10


2.1.1. Kriptografi Simetri

Kriptografi simetri adalah kriptografi yang menggunakan satu kunci rahasia yang
sama untuk melakukan enkripsi dan dekripsi. Keamanan sekaligus kelemahan dari
jenis algoritma ini adalah kerahasiaan pada kuncinya, kebocoran kunci berarti pihak
lain yang tidak berkepentingan akan dapat mendekripsi pesan yang dikirim. Semua
algoritma kriptografi klasik termasuk dalam kriptografi simetri, di sisi lain ada
puluhan algoritma kriptografi modern yang termasuk ke dalam kriptografi simestri, di
antaranya adalah IDEA (International Data Encryption Algorithm), DES (Data
Encryption Standard), Blowfish, Twofish, Tripel-DES, RC2 (Ron’s Code 2) dan

turunannya, dan lain sebagainya.

Kriptografi simetri dapat dibagi dalam dua kategori yaitu stream cipher dan
block cipher . Stream cipher beroperasi pada plainteks yang berupa satu bit tunggal

pada satu waktu. Block cipher beroperasi pada plainteks dalam grup bit-bit. Ukuran
blok yang digunakan biasanya berukuran 64 bit atau 128 bit. Gambar 2.1 berikut
memberikan gambaran mengenai proses enkripsi dan dekripsi secara umum pada
sistem kriptografi simetri.


Kunci

Plaintext

Enkripsi

Ciphertext

Dekripsi

Plaintext

Gambar 2.1 Skema Kriptografi Simetri

Kriptografi simetri memiliki kelebihan dan kekurangan dibandingkan dengan
algoritma asimetri. Berikut beberapa kelebihan dari algoritma simetri [6]:
1. Proses enkripsi dan dekripsi hanya membutuhkan waktu yang singkat.
2. Ukuran kunci simetri relatif pendek.
3. Kriptografi simetri dapat digunakan untuk membangkitkan bilangan acak.

4. Kriptografi simetri dapat disusun untuk menghasilkan cipher yang lebih kuat.
5. Otentikasi pengirim pesan langsung diketahui dari ciphertext yang diterima,
karena kunci hanya diketahui oleh pengirim dan penerima pesan.

Universitas Sumatera Utara

11

Kekurangan dari kriptografi simetri adalah sebagai berikut:
1. Kunci pada kriptografi simetri harus dikirimkan melalui jalur yang aman. Kedua
entitas yang berkomunikasi harus menjaga kerahasiaan kunci.
2. Kunci harus sering diubah, mungkin pada setiap sesi komunikasi.

2.1.2. Kriptografi Asimetri

Berbeda dengan kriptografi kunci simetris, kriptografi asimetri adalah kriptografi yang
menggunakan kunci yang berbeda pada proses enkripsi dan dekripsi. Ada dua buah
kunci yang digunakan pada algoritma ini, yaitu kunci publik yang digunakan untuk
proses enkripsi, dan kunci privat yang digunakan untuk proses dekripsi. Algoritma ini
dirancang sedemikian sehingga tidak mungkin untuk menemukan kunci privat dari

sebuah kunci publik yang telah diketahui [6].

Pada kriptografi asimetri penerima pesan harus mempunyai sepasang kunci
privat dan kunci publik. Pengirim mengenkripsi pesan dengan menggunakan kunci
publik penerima, sedangkan penerima pesan menggunakan kunci privat miliknya
untuk mendekripsikan pesan. Beberapa algoritma kriptografi asimetri yang sering
digunakan adalah RSA, ElGamal, DSA dan sebagainya. Gambaran umum mengenai
proses enkripsi dan dekripsi pada kriptografi asimetri ditunjukkan pada gambar
berikut.
Kunci Publik

Plaintext

Enkripsi

Kunci Privat

Ciphertext

Dekripsi


Plaintext

Gambar 2.2 Skema Kriptografi Asimetri

Sama halnya dengan kriptografi simetri, kriptografi asimetri juga memiliki
kelebihan dan kekurangan, beberapa kelebihan tersebut adalah sebagai berikut:
1. Hanya kunci privat yang perlu dijaga kerahasiaannya oleh setiap entitas yang
berkomunikasi. Tidak ada kewajiban mengirimkan kunci privat sebagaimana pada
sistem kriptografi simetri.

Universitas Sumatera Utara

12

2. Pasangan kunci publik dan kunci privat tidak perlu diubah, bahkan dalam periode
waktu yang panjang.
3. Kriptografi asimetri dapat digunakan untuk mengamankan kunci yang dihasilkan
oleh sistem kriptografi simetri.
4. Beberapa algoritma asimetri dapat digunakan untuk memberi tanda tangan digital
pada pesan.

Kelemahan kriptografi asimetri adalah sebagai berikut:
1. Proses enkripsi dan dekripsi pada umumnya menjadi lebih lambat dibandingkan
dengan kriptografi simetri, karena enkripsi dan dekripsi menggunakan bilangan
yang besar dan melibatkan operasi perpangkatan yang besar.
2. Ukuran ciphertext yang dihasilkan akan lebih besar dari pada plaintext.
3. Ukuran kunci relatif lebih besar daripada kunci simetri.
4. Karena kunci publik diketahui secara luas dan dapat digunakan setiap orang, maka
ciphertext tidak memberikan informasi mengenai otentikasi pengirim.

2.2.

Landasan Matematika Kriptografi

Matematika memberikan landasan penting pada sebagian besar konsep dalam
kriptografi, sehingga untuk memahami konsep kriptografi tersebut diperlukan
pemahaman terhadap ilmu matematika terlebih dahulu. Beberapa ilmu matematika
yang sering digunakan dalam kriptografi adalah aritmetika modulo, bilangan prima,
dan himpunan polinomial.

2.2.1. Bilangan Prima

Bilangan prima adalah bilangan asli yang lebih besar dari 1, yang tidak dapat dibagi
oleh bilangan lain kecuali bilangan itu sendiri dan 1. Karena bilangan prima lebih
besar dari 1, maka bilangan prima dimulai dari 2, yaitu 2, 3, 5, 7, 11, 13 dan
seterusnya. Seluruh bilangan prima adalah ganjil, kecuali 2 yang merupakan bilangan
genap.

Universitas Sumatera Utara

13

Secara matematis tidak ada "bilangan prima yang terbesar", karena jumlah
bilangan prima adalah tak terhingga. Bilangan prima terbesar yang diketahui per 2008
adalah 243.112.609 – 1. Bilangan ini mempunyai 12,978,189 digit dan merupakan
bilangan prima Mersenne yang ke-47. M43112609 (notasi penulisan bilangan prima
Mersenne ke-47) ditemukan pada 23 Agustus 2008 oleh Edson Smith, seorang
professor dari University of Central Missouri bekerja sama dengan puluhan ribu
anggota lainnya dari proyek GIMPS. [11]

Dalam teori The Fundamental Theorem of Arithmetic disebutkan bahwa setiap
bilangan bulat positif yang lebih besar atau sama dengan 2 dapat dinyatakan sebagai
perkalian satu atau lebih bilangan prima [11].
Contoh: 38 = 2×19, bilangan asli 38 dapat difaktorkan dari 2 buah bilangan prima 2
dan 19.

2.2.2. Aritmetika Modulo

Misalkan a adalah bilangan bulat dan m adalah bilangan bulat > 0. Operasi a modulo
m memberikan sisa jika a dibagi dengan m. Bilangan m disebut modulus atau modulo,
dan hasil aritmetika modulo m terletak di dalam himpunan {0, 1, 2, ..., m-1}.
Notasi: a mod m = r sedemikian, sehingga a = mq + r dengan 0 ≤ r ≤ m.
Contoh 2.1 Temukan 72 mod 5, 9 mod 27, -32 mod 7.
Jawab:
72 mod 5 = 2 (72 = 5.14 + 2)
9 mod 27 = 9 (9 = 27.0 + 9)
-32 mod 7 = 3 (-32 = 7.(-5) + 3)
Penjelasan untuk -32 mod 7: karena a negatif, bagi |a| dengan m mendapatkan sisa r’.
Maka a mod m = m – r’, bila r’ ≠ 0.
Jadi |-32| mod 7 = 4, sehingga -32 mod 7 = 7 – 4 = 3 [1].

Universitas Sumatera Utara

14

Aritmetika modulo cocok digunakan dalam kriptografi karena dua alasan
berikut:
1. Oleh karena nilai-nilai aritmetika modulo berada dalam himpunan berhingga (0
sampai modulus m – 1), maka tidak perlu dikhawatirkan jika hasil perhitungan
berada di luar himpunan.
2. Karena bekerja pada bilangan bulat, maka tidak perlu khawatir kehilangan
informasi akibat pembulatan (round off) sebagaimana pada operasi bilangan riil
[6].

2.3.

Algoritma Extended Euclid

Faktor persekutuan terbesar atau greatest common divisor adalah elemen terbesar pada
himpunan divisor dua bilangan integer. Dua bilangan integer dapat saja memiliki
beberapa elemen divisor yang sama namun hanya satu yang terbesar. Misalnya 24
memiliki divisor {1, 2, 3, 4, 6, 8, 12, 24}, dan 32 memiliki divisor {1, 2, 8, 16, 32},
maka himpunan divisor bersamanya adalah {1, 2, 4, 8}, dan yang terbesar adalah 8.
Dinotasikan sebagai gcd(24, 32) = 8.

Euclid (300 SM), seorang matematikawan klasik yang bekerja pada
perpustakaan Aleksandria pada zaman Ptolemy I, membuat algoritma yang dapat
menemukan gcd dua buah bilangan integer a dan b dengan cara rekursif. Terdapat dua
kasus, pertama kasus dasar, yaitu ketika b = 0,
gcd(a, 0) = a
dan kasus umum ketika b3 ≠ 0,
gcd(a, b) = gcd(b, a mod b)

Kasus dasar menyatakan bila b = 0, maka didefinisikan nilai gcd adalah a
(sebab semua bilangan integer habis membagi 0 dan a habis membagi dirinya sendiri,
sehingga gcd(a, 0) = a. Sedangkan kasus umum menyatakan bila b ≠ 0 untuk mencari
gcd(a, b) dapat direduksi menjadi gdc(b, a mod b). Jadi kasus umum dapat dikenakan
berkali-kali sampai akhirnya akan bertemu dengan kasus dasar untuk menemukan
gcd(a, b).

Universitas Sumatera Utara

15

Contoh 2.2 Temukan gcd(120, 36)
Jawab:
Aplikasi kasus umum
gcd(120, 36) = gcd(36, 120 mod 36) = gcd(36, 12)
gcd(36, 12) = gcd(12, 36 mod 12) = gcd(12, 0)
dan aplikasi kasus dasar
gcd(12, 0) = 12
karena itu, gcd(120, 36) = 12

Algoritma Euclid yang bersifat rekursif dapat diubah menjadi bersifat iteratif
seperti ditunjukkan pada tabel 2.1.

Tabel 2.1 Pseudocode Algoritma Euclid
Input
Output
Step
1
2
3
4
5
6
7
8

a, b
A
A←b
B←b
while B > 0 do
Q←A/B
R←A–Q×B
A←B
end while
return A

Operation

Algoritma Euclid dapat dikembangkan (disebut Extended Euclid) agar dapat
menemukan 2 integer s dan t selain nilai gcd(a, b) sehingga memenuhi relasi s × a + t
× b = gcd(a, b).

Secara matematika dapat dibuktikan untuk setiap a dan b anggota himpunan
bilangan integer terdapat sepasang integer lain s dan t yang unik sehingga memenuhi
relasi s × a + t × b = gcd(a, b). Algoritma Extended Euclid merupakan perluasan
algoritma Euclid untuk gcd(a, b) dengan tambahan menyimpan nilai s dan t pada
algoritmanya. Operasi yang terjadi pada extended euclidean dapat dinyatakan ke
dalam bentuk pseudocode berikut.

Universitas Sumatera Utara

16

Tabel 2.2 Pseudocode Algoritma Extented Euclid
Input
Output
step
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

a, b
A, s, t
Operation
A←a
B←b
S1 ← 1
S2 ← 0
T1 ← 0
T2 ← 0
While B > 0 do
Q←A/B
R←A–Q×B
A←B
B←R
S ← S1 – Q × S2
S1 ← S 2
S2 ← S
T ← T1 – Q × T2
T1 ← T 2
T2 ← T
End while
Return A, s ← S1, t ← T1

Contoh 2.3 Carilah nilai s dan t sehingga memenuhi s × a + t × b = gcd(a, b), dengan
a = 279, b = 183.
Jawab:
Berdasarkan algoritma pada tabel 2.2 nilai-nilai variabel dapat dirunut dari awal
sampai kondisi while terpenuhi.

k
init

1
2
3
4
5
6
7

A
279
279
183
96
87
9
6
3

B
183
183
96
87
9
6
3
0

Q

R

1
1
1
9
1
2

96
87
9
6
3
0

S1
1
1
0
1
-1
2
-19
21

S2
0
0
1
-1
2
-19
21
-61

S
1
-1
2
-19
21
-61

T1
0
0
1
-1
2
-3
29
-32

T2
1
1
-1
2
-3
29
-32
93

T
-1
2
-3
29
-32
93

Pada iterasi terakhir nilai gcd(279, 183), s dan t ditemukan, yaitu nilai A = 3, S1 = 21,
dan T1 = -32. Dapat dibuktikan bahwa 21 × 279 + (-32) × 183 = 3 adalah benar.

Universitas Sumatera Utara

17

2.4.

Polynomial Ring

Sebuah ring ℝ adalah satu himpunan simbol R dan dua operasi binari, yaitu

penjumlahan (+) dan perkalian (×) yang memenuhi kondisi berikut ini:

1. R dengan operator + adalah group Abel: notasi 0 dipakai untuk merepresentasikan
identitas penjumlahan.
-

∀a,b ∈ R : a + b = b + a (komutatif)

∀a,b,c ∈ R : (a + b) + c = a + (b + c) (asosiatif)

yang unik e ∈ R : ∀a ∈ R : a + e = e + a = a, elemen e disebut elemen identitas.

∀a ∈ R : a-1 ∈ R : a + a-1 = a-1 + a = 0 (invers)

2. Operator × memenuhi aksioma komutatif dan distributif. Identitas untuk perkalian
dinotasikan sebagai 1.
-

∀a,b ∈ R : a × b = b × a (komutatif)

∀a,b,c ∈ R : a × (b + c) = (a × b) + (a × c) (distributif)

Polynomial ring adalah ring yang dibentuk dari himpunan polinomial dalam

satu atau lebih variabel dengan koefisien yang berasal dari ring lain. Jika ℤ adalah

ring bilangan integer, maka ring polinomial dari ℤ dinotasikan sebagai ℤ[X]/m(X)

yaitu himpunan polinomial dengan nilai koefisien dalam integer dengan m(X) adalah
irreducible polynomial dari ring ℤ[X].

Polynomial ring ℤ[X]/(XN-1) adalah sebuah ring polinomial dengan elemen-

elemen berkoefisien bilangan integer yang berderajat maksimal N-1, ring ini memiliki

irreducible polynomial XN-1. Irreducible polynomial adalah polinomial yang tidak

bisa difaktorkan lagi ke dalam bentuk polinomial lain dengan kata lain tidak bisa habis
dibagi kecuali dengan dirinya sendiri. Polinomial ini akan digunakan untuk mereduksi
polinomial yang memiliki derajat lebih besar atau sama dengan N.
Sebuah ring (ℤ/pZ)[X]/(XN-1) memiliki karakteristik dan operasi yang sama
dengan ring ℤ[X]/(XN-1), kecuali setiap koefisien dari polinomial pada ring
(ℤ/pZ)[X]/(XN-1) akan direduksi dengan modulo p.

Universitas Sumatera Utara

18

Beberapa operasi penting di dalam sebuah ring polinomial (ℤ/pZ)[X]/(XN-1)
adalah penjumlahan polinomial, pengurangan polinomial, perkalian polinomial,
pembagian polinomial, dan invers polinomial.

2.4.1. Penjumlahan dan Pengurangan Polinomial pada (ℤ/pℤ)[X]/(XN-1)
Polinom dalam (ℤ/pℤ)/(XN-1) dapat dilakukan operasi pertambahan dengan

polinom lain dengan cara menambahkan koefisien dengan derajat yang bersesuaian.
Polinom c sebagai hasil penjumlahan dari dua buah polinom a,b
diformulasikan sebagai berikut:
� =

� +

� , dengan

=

+

(ℤ/pℤ)[X]/(XN-1)



Pengurangan polinomial dilakukan dengan cara yang sama seperti pada
operasi penjumlahan dengan mengurangkan koefisien dengan derajat yang
bersesuaian. Polinom c sebagai hasil pengurangan dari dua buah polinom a,b
(ℤ/pℤ)[X]/(XN-1) diformulasikan sebagai berikut:
� =

� −

� , dengan

=





Contoh 2.4 Jika N = 3, polinom a = 2 – X + 3X2 dan polinom b = 1 + 2X – X2
Temukan dan a+b dan a-b pada ℤ/3ℤ[X]/(XN-1).

Jawab:

N = 3, a = 2 + X + 2X2, b = 1 + 2X + X2
Hasil operasi:
a + b = (2 + X + 2X2) + (1 + 2X + X2)
= (3 + 3X + 2X2) mod 3
= 2X2
a – b = (2 + X + 2X2) + (1 + 2X + X2)
= (1 – X + X2) mod 3
= 1 + 2X + X2

Universitas Sumatera Utara

19

2.4.2. Perkalian Polinomial pada (ℤ/pℤ)[X]/(XN-1)
Perkalian dua buah polinom a dan b dalam ring (ℤ/pℤ)[X]/(XN-1) dilakukan

sama dengan perkalian polinom biasa yaitu jumlah perkalian tiap suku polinom

pertama dengan polinom kedua. Tiap perkalian xi dan xj menghasilkan xi+j. Perkalian
polinomial akan menghasilkan sebuah polinom yang berderajat lebih besar dari N-1.
Jika terjadi kasus derajat polinomial hasil perkalian lebih dari N-1, maka proses
reduksi dengan modular polinomial irredusibel dilakukan.
Contoh 2.5 Jika N = 3, polinom a = 2 – X + 2X2 dan polinom b = 1 + 2X – X2
Temukan dan a × b pada ℤ/3ℤ[X]/(XN-1).
Jawab:

N = 3, a = 2 + X + 3X2, b = 1 + 2X + X2
Hasil operasi:
a × b = (2 + X + 2X2) × (1 + 2X + X2)
= 2 + 5X + 8X2 + 5X3 + 2X4
Polinom hasil perkalian terdapat 5X3 dan 2X4 (melebihi derajat yang
diperbolehkan yaitu N-1=3-1=2) diperlukan reduksi terhadap hasil perkalian.
Perhatikan nilai irreducible polynomial adalah m(X) = XN-1, karena m(X) = 0,
makan 0 = X3-1 sehingga X3 = 1. Oleh karena itu 7X3 dan 3 X4 dapat direduksi
menjadi:
2X4 = 2X×X3 = 2X×1 = 2X, dan
5X3 = 5.1 = 5, sehingga hasil perkalian polinom a dan b menajdi:
= 2 + 5X + 8X2 + 5 + 2X
= (7 + 7X + 8X2) mod 3 = 1 + X + 2X2

Metode paling mudah yang dapat digunakan untuk mengimplementasikan
perkalian polinomial dalam ring (ℤ/pℤ)[X]/(XN-1) adalah Low Hamming Weight
Polynomials. Polinom c sebagai hasil perkalian polinomial a,b

diformulasikan sebagai berikut:
� =

� ×

� , dengan

=

+ =



��� �

×

(ℤ/pℤ)[X]/(XN-1)


Universitas Sumatera Utara

20

Pseudocode dari algoritma Low Hamming Weight Polynomials adalah sebagai

berikut.

Tabel 2.3 Pseudocode Algoritma Low Hamming Weight Polynomials
Input
Output
Step
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

p and a,b (ℤ/pℤ)[X]/(XN-1)
c (ℤ/pℤ)[X]/(XN-1)
Operation
r←a
q←b
if deg r ≠ deg q then
return false
c ← lc(b) //lc = leading coefficient
N ← deg r
c←0
k ← N–1
i ← N−1
While k ≥ 0 do
c[k] ← 0
j←k+1
While i ≥ 0 do
if j equals N
j=0
if a[i]≠0 and b[j]≠0 then
c[k] = c[k] + a[i]×b[j]
c[k] = c[k] mod p
j = j+1
i = i-1
end while
k = k-1
end while
return c

2.4.3. Pembagian Polinomial pada (ℤ/pℤ)[X]/(XN-1)
Polinom a dapat dibagi dengan polinom b yang berderajat sama atau lebih kecil
menghasilkan polinom q dan polinom sisa pembagian r yang memenuhi relasi
×

+ .

=

Metode termudah yang dapat digunakan untuk melakukan pembagian
polinomial pada ring (ℤ/pℤ)[X]/(XN-1) adalah menggunakan algoritma Euclidean

Division yang dinyatakan sebagai berikut.

Universitas Sumatera Utara

21

Tabel 2.4 Pseudocode Algoritma Euclidean Division
a, b ≠ 0
q, r

Input
Output
Step
1
2
3
4
5

Operation
q←0
r←a
d ← deg b
c ← lc(b) //lc=leading coefficient
while deg r ≥ d do
lc r
s←
X gr−
c
q←q+s
r ← r – s×b
end while
return q, r

6
7
8
9
10

Contoh 2.6 Jika N = 5, polinom a = 2 + X + 2X4 dan polinom b = 1 + 2X + X2
Temukan polinom q dan r jika a = qb + r pada ℤ/3ℤ[X]/(XN-1).
Jawab:

N = 3, a = 2 + X + 3X4, b = 1 + 2X + X2
a / b = 2 + X + 2X4 / 1 + 2X + X2
q = 2X2 + 2X
r = 2X + 2

2.4.4. Invers Polinomial pada (ℤ/pℤ)[X]/(XN-1)
Algoritma Extended Euclidean dapat digunakan untuk menemukan faktor persekutuan
terbesar dari dua polinom a dan b pada ring (ℤ/pℤ)[X]/(XN-1) dan polinom u dan v
sehingga memenuhi persamaan

×

+

×

=

= gcd ,

.

Invers polinom a pada (ℤ/pℤ)[X]/(XN-1) adalah a-1 pada (ℤ/pℤ)[X]/(XN-1)

sehingga a × a-1 = 1. Tidak semua polinom pada ring (ℤ/pℤ)[X]/(XN-1) memiliki
invers. Polinom yang memiliki invers hanyalah polinom yang faktor persekutuan
terbesarnya satu dengan iredusibel polinomial atau gcd(a, m(X)) = 1. Jika b = m(X) =
(XN-1) dan gcd(a, (XN-1) = 1, maka:
×

+ �� −

Karena � � −

×

×

=

=

= gcd , � � −



�� −

, maka:

=

Universitas Sumatera Utara

22

×

= , sehingga u adalah invers dari a pada (ℤ/pℤ)[X]/(XN-1).
Penggunaan algoritma Extended Euclidean untuk menemukan invers dari

polinom a ∈ (ℤ/pℤ)[X]/(XN-1) dengan b = m(X) = (XN-1) dinyatakan pada tabel
berikut.

Tabel 2.5 Pseudocode Algoritma Extended Euclidean pada (ℤ/pℤ)[X]/(XN-1)
Input
Output
Step
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

2.5.

a, b ≠ 0
u

Operation
If b = 0 then
return 1, 0, a
u←1
d←a
v1 ← 0
v3 ← b
While v3 ≠ 0 do
v3/d → v3 = d × q + t3
t1 ← u – q × v 1
u ← v1
d ← v3
v1 ← t1
v3 ← t3
v ← (d – a × u)/b
if deg d = 0 then
return u
Else
return false

Algoritma NTRUEncrypt

Algoritma NTRUEncrypt pertama kali diperkenalkan ke publik pada tahun 1996
dalam sebuah acara yang bernama CRYPTO’96. Algoritma ini dibuat oleh tiga orang
matematikawan dari Universitas Brown, Amerika Serikat, yaitu Jeffrey Hoffstein, Jill
Pipher dan Joseph Silverman. Ketiga matematikawan ini selanjutnya mendirikan
NTRU Cryptosystems, Inc yang memegang hak paten dari algoritma NTRUEncrypt.
Perusahaan ini kemudian diakuisisi oleh Security Innovation, Inc pada tahun 2009 [9].

Oleh penciptanya, algoritma NTRUEncrypt diklaim lebih cepat, efisien dan
lebih aman dibandingkan dengan algoritma kunci publik lainnya. Narasimham Challa

Universitas Sumatera Utara

23

dan Jayaram Pradhan (2007), dalam jurnal yang dimuat dalam International Journal
of Computer Science and Network Security (IJCSNS) VOL.7 No.8, Augustus 2007,

berjudul Performance Analysis of Public Key Cryptographic Systems RSA and NTRU ,
menunjukkan bahwa algoritma NTRUEncrypt lebih cepat, mudah dalam penciptaan
kunci, enkripsi, dan dekripsi, serta lebih sedikit menggunakan memori dibandingkan
dengan algoritma RSA [2].

Algoritma NTRUEncrypt menggunakan prinsip aritmetika modulo pada
polynomial ring (ℤ/pZ)[X]/(XN-1), di mana koefisien pada polinomial akan direduksi

dengan modulo p. penjumlahan, perkalian, dan invers polinomial adalah komponen
dasar yang digunakan pada algoritma ini.

Proses penting pada implementasi algoritma NTRUEncrypt adalah penentuan
parameter yang digunakan dan pembangkitan kunci privat dan kunci publik, proses
enkripsi, dan proses dekripsi.

2.5.1. Parameter dalam NTRUEncrypt

Ada tiga parameter utama yang digunakan dalam algoritma NTRUEncrypt yaitu tiga
buah bilangan integer N, p, dan q, di mana N adalah derajat polinom, kemudian p dan
q adalah modulus kecil dan besar yang akan digunakan untuk mereduksi koefisien
polinomial, di mana q > p dan relatif prima satu sama lain atau gcd(p, q) = 1.
N : dimensi dari polinomial yang digunakan (polinom akan memiliki derajat N–1), N
merupakan bilangan prima.
p : small modulus, koefisien dari polinomial akan direduksi dengan modulo p, p
adalah bilangan prima.
q : large modulus, koefisien dari polinomial akan direduksi dengan modulo q, q
merupakan bilangan kelipatan 2.

Menyangkut masalah keamanan, NTRU Cryptosystems, Inc merekomendasikan
penggunaan parameter standar EES (Escrowed Encryption Standard) pada
implementasi algoritma NTRUEncrypt sesuai dengan data pada tabel berikut.

Universitas Sumatera Utara

24

Tabel 2.6 Standar Parameter pada algoritma NTRUEncrypt
Parameter set

ees401ep1
ees541ep1
ees659ep1
ees449ep1
ees613ep1
ees761ep1
ees677ep1
ees887ep1
ees1087ep1
ees1087ep2
ees1171ep1
ees1499ep1

Security level

112
112
112
128
128
128
192
192
192
256
256
256

N

401
541
659
449
613
761
677
887
1087
1087
1171
1499

q

p

df

11

3
3
3
3
3
3
3
3
3
3
3
3

113
49
38
134
55
42
157
81
63
120
106
79

2
211
211
211
211
211
211
211
211
211
211
211

Keterangan: df adalah nilai yang akan digunakan untuk membangkitkan polinomial f pada
proses pembangkitan kunci privat.

2.5.2.

Keys Generation

Karena algoritma ini menggunakan skema kunci yang asimetri, maka dalam proses pembuatan
kunci akan dibuat dua buah tipe kunci, yaitu kunci publik dan kunci privat. Langkah-langkah
pembangkitan kunci pada NTRUEncrypt adalah sebagai berikut:
1. Tentukan parameter N, p, q dan df. Tabel 2.5 dapat digunakan untuk menentukan
parameter yang digunakan berdasarkan level keamanan yang bersesuaian.
2. Secara acak bangkitkan dua polinom kecil f dan g dari ring (ℤ/pℤ)[X]/(XN-1).

Polinom kecil berarti setiap koefisien pada polinom akan direduksi dengan modulo p,
sehingga nilai koefisien akan berada di range (0, 1, 2, …, p-1). Karena nilai p yang akan
digunakan adalah 3, maka range menjadi (0, 1, 2). Untuk memudahkan perhitungan
penjumlahan dan perkalian polinomial, maka nilai 2 akan diganti menjadi -1. Metode
yang dapat digunakan untuk membangkitkan polinomial acak f adalah dengan
mendistribusikan secara acak nilai 1 sebanyak df, nilai -1 sebanyak df-1, selebihnya nilai
0 ke dalam koefisien polinomial. Polinomial g dapat dibangkitkan dengan cara yang sama
menggunakan parameter dg yang dihasilkan dari nilai N/3. Polinomial g akan memiliki dg
koefisien bernilai 1, dg koefisien bernilai 1, dan sisanya adalah 0.

3. Isi dari polinom f dan g bersifat rahasia karena jika salah satunya diketahui oleh pihak
lain, maka orang dapat mendekripsikan pesan. Langkah selanjutnya adalah menghitung
invers dari f modulus p (fp) dan invers dari f modulus q (fq), yang memenuhi relasi f*f p =
1(modulus p) dan f*fq = 1(modulus q).

Universitas Sumatera Utara

25

Tidak semua polinomial dalam ring (ℤ/pℤ)[X]/(XN-1) memiliki invers, Jika ternyata nilai
invers tidak ditemukan, maka harus dicari lagi nilai f yang lain.

4. Langkah terakhir adalah menghitung kunci publik (polinom H) dengan rumus berikut:
H = p × fq× g (modulo q)

Setelah menyelesaikan 3 langkah diatas maka diperoleh pasangan polinom f dan H,
polinom f merupakan kunci privat dan polinom H sebagai kunci publik.

Contoh 2.7 Generate sepasang kunci privat dan publik pada algoritma NTRUEncrypt.
Jawab:
Kunci privat dan publik dapat dibangkitkan dengan langkah-langkah berikut:
1. Parameter set (N, p, q, df) = (11, 3, 32, 4)
2. Bangkitkan polinomial acak f pada ring (ℤ/3ℤ)[X]/(XN-1) yang memiliki 4 koefisien
bernilai 1, 3 koefisien bernilai -1, dan sisanya 0.
f = –X + X2 + X3 – X4 + X7 – X8 + X9

Bangkitkan polinomial acak g pada ring (ℤ/3ℤ)[X]/(XN-1) yang memiliki 3 koefisien

bernilai 1, 3 koefisien bernilai -1, dan sisanya 0.
g = 1 –X2 – X6 + X7 + X8 –X9 + X11

3. Invers polinomial f modulo p (fp) dan f modulo q (fq) adalah:
fp = X + 2X2 + 2X4 + X5 + X7 + X8 + X9 + X10
fq = X + 2X2 + 3X3 + 2X4 + X5 + 30X7 + 30X8 + 30X9 + 30X10
4. Kunci publik polinom H
H = 3 × (X + 2X2 + 3X3 + 2X4 + X5 + 30X7 + 30X8 + 30X9 + 30X10) × (1 –X2 – X6 + X7 +
X8 –X9 + X11) (modulo 32)
= 12 + 9X + 9X2 + 3X3 + 26X4 + 26X5 + 20X6 + 20X7 + 29X7 + 6 X10
Pasangan kunci yang dihasilkan adalah kunci privat f = –X + X2 + X3 – X4 + X7 – X8 + X9,
dan kunci publik H = 12 + 9X + 9X2 + 3X3 + 26X4 + 26X5 + 20X6 + 20X7 + 29X7 + 6 X10.

2.5.3.

Proses Enkripsi

Setelah kunci privat dan publik dibuat, langkah selanjutnya adalah mengenkripsi pesan.
Langkah – langkah pada proses enkripsi adalah sebagai berikut:
1. Ubah pesan ke dalam bentuk polinomial kecil m pada ring (ℤ/pℤ)[X]/(XN-1). Polinom m
akan memiliki koefisien pada range (-1, 0, 1). Metode untuk mengubah pesan ke dalam
polinomial akan dijelaskan pada bab selanjutnya.

Universitas Sumatera Utara

26

2. Bangkitkan polinom kecil acak r pada ring (ℤ/pℤ)[X]/(XN-1). polinom ini adalah “blinding
value” yang digunakan untuk menyamarkan pesan (sama dengan teknik yang digunakan

dalam algoritma ElGamal yang menggunakan nilai acak ketika melakukan enkripsi).
3. Enkripsi polinomial m dengan rumus berikut:
e = r × H + m(modulo q)
Polinom e adalah pesan terenkripsi yang akan dikirimkan.

Contoh 2.8 Gunakan kunci publik polinom H yang dihasilkan pada contoh 2.7 untuk
mengenkripsi pesan string “z?”.
Jawab:
pesan = “z?”
H = 12 + 9X + 9X2 + 3X3 + 26X4 + 26X5 + 20X6 + 20X7 + 29X7 + 6 X10
Langkah-langkah untuk mengenkripsi pesan adalah sebagai berikut:
1. Pesan string “z?” diubah ke dalam bentuk polinomial m menjadi:
m = 1 – X – X2 + X4 + X5 – X6 + X7 – X10
2. Polinom r sebagai blinding value:
r = X – 1X4 + X5 + X6 + X7 – 1X9 – X10
3. Polinom e hasil enkripsi:
e

=

(X–X4+X5+X6+X7–X9–X10)×(12+9X+9X2+3X3+26X4+26X5+20X6+20X7+

29X7+6X10)+(1–X–X2+X4+X5–X6+X7–X10)(mod 32)
= 9X 4X + 16X2 13X4 + 28X5 + 26X6 + 19X7 + 9X8 + 23X9 + 13X10
Polinomial baru hasil enkripsi adalah 9X 4X + 16X2 13X4 + 28X5 + 26X6 + 19X7 + 9X8 +
23X9 + 13X10.

2.5.4.

Proses Dekripsi

Setelah pesan terenkripsi sampai kepada penerima, tahap selanjutnya adalah pendekripsian
pesan ke bentuk semula menggunakan kunci privat penerima. Langkah-langkah pada proses
dekripsi adalah sebagai berikut:
1. Hitung nilai polinom a dengan rumus berikut:
a = f × e (modulo q).
2. Hitung nilai polinom b dengan rumus berikut:
b = a (modulo p).
3. Hitung nilai polinom c dengan rumus berikut:
c = fp × b (modulo p)

Universitas Sumatera Utara

27

Jika proses dekripsi berhasil, maka akan dihasilkan polinom c yang harus sama
dengan polinom m. Polinom c perlu dikonversi ke dalam bentuk string agar dapat
dibaca. Metode untuk mengkonversi polinomial ke dalam string akan dibahas pada
bab selanjutnya.

Contoh 2.9
Gunakan kunci privat yang dihasilkan pada contoh 2.7 untuk mendekripsi polinomial
e yang dihasilkan pada contoh 2.8.
Jawab
f = –X + X2 + X3 – X4 + X7 – X8 + X9
fq = fq = X + 2X2 + 3X3 + 2X4 + X5 + 30X7 + 30X8 + 30X9 + 30X10

e = 9X 4X + 16X2 13X4 + 28X5 + 26X6 + 19X7 + 9X8 + 23X9 + 13X10
Proses dekripsi polinom e adalah sebagai berikut:
1. Polinom a = f × e (modulo q)
a = (–X + X2 + X3 – X4 + X7 – X8 + X9) × (9X 4X + 16X2 13X4 + 28X5 + 26X6 +
19X7 + 9X8 + 23X9 + 13X10) (modulo 32)
= -3 + X + 6X2 + 5X3 – 5X4 – 2X7 – 2X8 – 3X9 - X10
2. Polinom b = a (modulo p)
b = – 3 + X + 6X2 + 5X3 – 5X4 – 2X7 – 2X8 – 3X9 - X10(modulo 3)
= X – X3 + X4 – X7 X8 – X10
3. Polinom c = fp × b (modulo p)
c = 1 – X – X2 + X4 + X5 – X6 + X7– X10
Polinom c yang dihasilkan sama dengan polinom m = 1 – X – X2 + X4 + X5 – X6 + X7 – X10,
sehingga proses enkripsi dan dekripsi berhasil. Polinom c perlu dikonversi kembali ke dalam
bentuk string agar dapat dibaca oleh penerima. Konversi ini akan menghasilkan string “z?”.

2.6.

Base64 Encoding

Internet mail didesain untuk mentransfer data plaintext ASCII saja. Karakter-karakter
non-printable pada ASCII maupun standar lainnya akan mengalami kendala ketika

dikirimkan melalui media email. Umumnya karakter-karakter tersebut akan berubah

Universitas Sumatera Utara

28

menjadi simbol-simbol lain yang respresentasinya berbeda. Salah satu cara yang dapat
dilakukan untuk mencegah hal ini adalah menerapkan base64 encoding.

Base64 encoding akan merubah deretan plaintext ASCII ke bentuk lain yang

merupakan karakter-karakter universal (printable). Dengan merubah data ke bentuk
printable, diharapkan tidak terjadi perubahan maupun kehilangan data ketika

dikirimkan melalui media telekomunikasi.

Langkah awal dalam proses base64 encoding adalah mendefinisikan karakterkarakter ASCII ke dalam bentuk biner dan menyatukannya. Selanjutnya deretan biner
tersebut dikelompokkan ke dalam deretan 6 bit. Setiap deret kemudian dikonversi ke
bilangan desimal. Setelah diperoleh bentuk desimal data kemudian disubstitusi dengan
karakter yang indeksnya bilangan desimal tersebut pada sebuah himpunan karakter
yang berisikan 64 buah karakter printable ASCII. Himpunan karakter tersebut
ditunjukkan pada tabel berikut.

Tabel 2.7 Himpunan Karakter pada Base64 Encoding
Indeks Karakter Indeks
0
A
16
1
B
17
2
C
18
3
D
19
4
E
20
5
F
21
6
G
22
7
H
23
8
I
24
9
J
25
10
K
26
11
L
27
12
M
28
13
N
29
14
O
30
15
P
31
Padding (masing-masin 2 bit)

Karakter Indeks Karakter Indeks Karakter
Q
32
g
48
w
R
33
h
49
x
S
34
i
50
y
T
35
j
51
z
U
36
k
52
0
V
37
l
53
1
W
38
m
54
2
X
39
n
55
3
Y
40
o
56
4
Z
41
p
57
5
a
42
q
58
6
b
43
r
59
7
c
44
s
60
8
d
45
t
61
9
e
46
u
62
+
f
47
v
63
/
=

Universitas Sumatera Utara

29

Prinsip kerja algoritma base64 encoding dapat digambarkan sebagai berikut.

Deretan Input biner

11001010 00110110 01010111 11000101

Pengelompokan (6 bit) 110010 100011 011001 010111 110001 padding-(0000)01
Deretan output

y

j

Z

X

9

A==

Gambar 2.3 Proses Base64 Encoding

Karena jumlah bit input tidak habis dibagi 6, diperlukan padding sebanyak 4
bit, sehingga output hasil encoding adalah yjZX9A==.

Untuk mengembalikan data ke deretan bit semula diperlukan infomasi
mengenai panjang bit sebelum di-encoding. Dengan informasi ini deretan bit hasil
konversi karakter ke bentuk biner dikelompokkan dengan panjang masing-masing
sama dengan panjang bit data sebelum di-encode. Sebelum proses konversi dilakukan
akan dicek terlebih dahulu padding yang disimbolkan dengan karakter ’=’. Bila
terdapat padding maka karakter terakhir di-decode sepanjang selisih 6 dengan panjang
bit padding. Himpunan karakter yang digunakan pada proses decoding sama dengan

himpunan karakter yang digunkan pada proses encoding. Untuk data pada contoh
akhir input ditemukan simbol ‘=’ sebanyak 2 karakter, hal ini menunjukkan bahwa
terdapat padding sepanjang 4 bit. Dengan demikian karakter terakhir hanya dikonversi
sepanjang 2 bit. Bila panjang bit tiap karakter sebelum di-encode adalah 8 bit, maka
diperoleh output sebagai berikut.
Deretan Input

y

j

Z

X

9

A

Konversi (6 bit)

110010 100011 011001 010111 110001 01

Deretan output

11001010 00110110 01010111 11000101
Gambar 2.4 Proses Base64 Decoding

Universitas Sumatera Utara

30

2.7.

Microsoft Outlook

Microsoft Outlook adalah aplikasi email klien buatan Microsoft yang biasanya
dibundel dalam paket Microsoft Office. Microsoft Outlook cukup banyak digunakan
karena kecepatan dan konfigurasi koneksi email yang mudah [10].

Gambar berikut menunjukkan tampilan awal dari aplikasi Microsoft Outlook
2010.

Gambar 2.5 Aplikasi Microsoft Outlook 2010

Seperti perangkat lunak Microsoft lainnya, perangkat ini juga dapat
ditingkatkan kemampuannya melalui perangkat tambahan (extension) atau dikenal
juga dengan istilah add-in. add-in dapat dibuat dengan menggunakan bahasa
pemrograman Visual Basic atau Visual C#.

Universitas Sumatera Utara

31

2.8.

Unified Modelling Language

UML (Unified Modeling Language) adalah metode pemodelan secara visual sebagai
sarana untuk merancang dan atau membuat software berorientasi objek. Karena UML
ini merupakan bahasa visual untuk pemodelan bahasa berorientasi objek, maka semua
elemen dan diagram berbasiskan pada paradigma object oriented.

Pada akhir tahun 1980 hingga awal tahun 1990 bahasa pemograman
berorientasi objek berkembang pesat, sehingga kebutuhan akan metode dan analisis
sistem berorentasi objek semakin besar. Oleh karena kebutuhan tersebut, maka pada
tahun 1994 Booch dan Rumbaugh memulai menggabungkan metode

relasional

mereka. Pada 1995 pertama kali draft bahasa Unified dirilis, dan pada tahun 1996
metode tersebut diberi nama UML.

UML menyediakan sepuluh macam diagram untuk memodelkan aplikasi
berorientasi objek, yaitu:
1. Use Case Diagram untuk memodelkan proses bisnis.
2. Conceptual Diagram untuk memodelkan konsep-konsep yang ada di dalam
aplikasi.
3. Sequence Diagram untuk memodelkan pengiriman pesan antar objek.
4. Collaboration Diagram untuk memodelkan interaksi antar objek.
5. State Diagram untuk memodelkan perilaku objek di dalam sistem.
6. Activity Diagram untuk memodelkan struktur objek.
7. Class Diagram untuk memodelkan struktur kelas.
8. Object Diagram untuk memodelkan struktur objek.
9. Component Diagram untuk memodelkan komponen objek.
10. Deployment Diagram untuk memodelkan distribusi aplikasi.
Beberapa diagram yang akan digunakan untuk menganalisis dan merancang
sistem pada penelitian ini adalah use case diagram, activity diagram, sequence
diagram, dan class diagram.

Universitas Sumatera Utara

32

2.8.1. Use Case Diagram

Use case diagram secara grafis menggambarkan interaksi antara sistem dan pengguna

(pengguna juga dapat berupa sistem eksternal yang berinteraksi dengan sistem yang
sedang dianalisis). Dengan kata lain, use case diagram secara grafis mendeskripsikan
siapa yang menggunakan sistem dan dengan cara apa pengguna mengharapkan
interaksi dengan sistem itu. Use case naratif digunakan untuk menggambarkan secara
tekstual urutan langkah-langkah dari setiap interaksi. Sebuah use case diagram terdiri
dari actor dan use case itu sendiri [17].

Actor adalah segala sesuatu yang perlu berinteraksi dengan sistem untuk

pertukaran informasi. Use case adalah urutan langkah-langkah yang secara tindakan
saling terkait (skenario), baik terotomatisasi maupun secara manual, untuk melengkapi
satu fungsi tertentu. Use case menggambarkan fungsi-fungsi sistem dari sudut
pandang pengguna eksternal dan dalam sebuah cara dan terminologi yang mereka
pahami. Contoh sebuah diagram use case dapat dilihat pada gambar berikut.

Gambar 2.6 Contoh sebuah Use Case Diagram

Universitas Sumatera Utara

33

2.8.2. Activity Diagram

Activity diagram digunakan untuk menggambarkan secara grafis aliran proses bisnis,

langkah-langkah sebuah use case atau logika behavior (metode) objek. Diagram ini
juga dapat digunakan untuk memodelkan action yang akan dilakukan saat sebuah
operasi dieksekusi dan memodelkan hasil dari action tersebut. Diagram ini serupa
dengan flowchart dimana secara grafis diagram ini menggambarkan rangkaian aliran
aktivitas baik proses bisnis atau use case. Diagram ini berbeda dengan flowchart
dimana diagram ini menyediakan sebuah mekanisme untuk menggambarkan kegiatan
yang tampak secara parallel. Contoh sebuah activity diagram dapat dilihat pada
gambar 2.7.

Gambar 2.7 Contoh sebuah Activity Diagram

2.8.3. Sequence Diagram

Sequence diagram digunakan untuk menggambarkan dengan sangat detail interaksi

antar objek dalam sistem sepanjang waktu. Sebuah sequence diagram memodelkan
logika sebuah use case dengan cara menggambarkan interaksi pesan di antara objekobjek dalam rangkaian waktu. Masing-masing objek (participant) digambarkan
dengan simbol objek UML, referensi pada use case digambarkan dengan lifeline-

Universitas Sumatera Utara

34

sebuah garis vertikal. Behaviour atau operasi yang perlu dilakukan oleh masingmasing objek digambarkan dengan kotak segi empat pada lifeline objek. Kotak-kotak
tersebut menggambarkan kode program. Anak panah antara garis menggambarkan
interaksi atau pesan yang telah dikirim kepada sebuah objek tertentu untuk
menginvokasi salah satu dari operasinya untuk memenuhi sebuah permintaan. Respon
dari sebuah objek digambarkan dengan garis panah putus-putus horizontal yang
arahnya berlawanan dengan garis panah pesan yang dikirimkan [17].

Gambar 2.8 Contoh sebuah Sequence Diagram

2.8.4. Class Diagram

Class diagram menggambarkan struktur dari class, atribut-atribut dari class, dan

hubungan antar class. Pada class diagram akan dijelaskan korelasi antar class dalam
sebuah sistem dan bagaimana mereka saling terkait untuk mencapai sebuah tujuan [9].
Class memiliki 3 area pokok (utama) yaitu : nama, atribut, dan operasi. Nama

berfungsi untuk memberi identitas pada sebuah kelas, atribut fungsinya adalah untuk

Universitas Sumatera Utara

35

member karakteristik pada data yang dimiliki suatu objek di dalam kelas, sedangkan
operasi fungsinya adalah memberikan sebuah fungsi ke sebuah objek.

Gambar 2.9 Contoh sebuah Class Diagram

2.9.

Kompleksitas Algoritma

Dalam matematika dan komputasi, algoritma merupakan kumpulan perintah untuk
menyelesaikan suatu masalah. Perintah-perintah ini dapat diterjemahkan secara
bertahap dari awal hingga akhir. Masalah tersebut dapat berupa apa saja, dengan
catatan untuk setiap masalah, ada kriteria kondisi awal yang harus dipenuhi sebelum
menjalankan algoritma.

Kompleksitas dari suatu algoritma merupakan ukuran seberapa banyak
komputasi yang dibutuhkan algoritma tersebut untuk menyelesaikan masalah. Secara
informal, algoritma yang dapat menyelesaikan suatu permasalahan dalam waktu yang
singkat memiliki kompleksitas yang rendah, sementara algoritma yang membutuhkan
waktu lama untuk menyelesaikan masalahnya mempunyai kompleksitas yang tinggi.

Universitas Sumatera Utara

36

Kompleksitas yang digunakan untuk menganalisis sebuah algoritma dapat
dikategorikan ke dalam dua kelompok yaitu kompleksitas waktu (time complexity) dan
kompleksitas ruang (space complexity). Kompleksitas waktu, T(n), diukur dari jumlah
tahapan yang dibutuhkan untuk menjalankan algoritma sebagai fungsi dari masukan n.
Kompleksitas ruang, S(n), diukur dari memori yang digunakan oleh struktur data yang
terdapat di dalam algoritma sebagai fungsi dari ukuran masukan n.

Dalam menganalisis sebuah algoritma digunakan beberapa notasi asimtotik
yaitu notasi O(n) (Big-O) yang menunjukkan batas bawah (lower bound), Ω(n) (BigOmega ) yang menunjukkan batas atas (upper bound), serta Θ(n) (Big-Tetha ) yang

menunjukkan batas atas dan batas bawah.

Selanjutnya analisis yang digunakan untuk mengkaji algoritma dalam
penelitian ini adalah analisis dengan notasi asimtotik Big-O (Upper Bound).

2.9.1. Notasi Big-O

Notasi Big-O menggunakan kajian asimtotik batas atas (upper bound asymptotic).
Notasi ini digunakan untuk menunjukkan relasi antara hubungan input terhadap
penggunaan sumber daya ketika sebuah algoritma dieksekusi. Notasi Big-O
diperkenalkan oleh Paul Bachman pada tahun 1984.

Untuk sebuah fungsi g(n), diperoleh notasi Big-O O(g(n)) sebagai berikut,
O(g(n)) = { f(n) : terdapat konstanta positif c dan n0, sehingga diperoleh 0 < f(n) <
cg(n) , untuk semua n > n0 }.

Untuk memperoleh notasi f(n) sebagai notasi Big-O dari fungsi g(n) dapat
digunakan tiga teorema berikut.
1. Teorema pertama. Jika ditemukan sebuah konstanta positif K sehingga
f(n)< K×g(n) diperoleh f(n) = O(g(n)) dengan menggunakan dua aturan sederhana

berikut.

a. Rubah semua konstanta koefisien dari n dalam f(n) menjadi bilangan 1.

Universitas Sumatera Utara

37

b. Ambil pangkat tertinggi pada f(n). Urutan kompleksitas pangkat dari terendah
ke tertinggi adalah sebagai berikut
(1), (log n), (n), (n log n), (n log n log log n), (n 2), (n3),…,(nk), (2n), (n!), (nn)

2. Teorema kedua.
Jika f1(n) = O(g1(n)) dan f2(n) = O(g2(n)), maka
f1(n) + f2(n) = O(g1(n) + g2(n))

Teorema Ketiga.
Jika f1(n) = O(g1(n)) dan f2(n) = O(g2(n)), maka
f1(n) × f2(n) = O(g1(n) × g2(n))

Sebagai contoh, diberikan sebuah fungsi g(n) = (2n + 10n5) + n log2 n + 100
maka dengan menggunakan ketiga teorema tersebut diperoleh notasi Big-O sebagai
berikut.
1. Atur semua koefisien n menjadi bilangan 1 diperoleh g(n)= (2n + n5) + n log2 n + 1
2. Dengan melihat urutan tingkat kompleksitas didapatkan O(g(n)) =

2 n.

Universitas Sumatera Utara