• Tidak ada hasil yang ditemukan

Implementasi Algoritma Kunci Publikntruencrypt Pada Add-In Microsoft Outlook

N/A
N/A
Protected

Academic year: 2017

Membagikan "Implementasi Algoritma Kunci Publikntruencrypt Pada Add-In Microsoft Outlook"

Copied!
31
0
0

Teks penuh

(1)

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.

(2)

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

(3)

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 sebanyak-banyaknya 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].

(4)

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.

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.

Plaintext Enkripsi Dekripsi Plaintext

Kunci

(5)

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.

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.

Plaintext Enkripsi Dekripsi Plaintext

Kunci Publik

Ciphertext

(6)

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

(7)

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.

(8)

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)

(9)

Contoh 2.2 Temukan gcd(120, 36)

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

Tabel 2.1 Pseudocode Algoritma Euclid

Input a, b

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).

(10)

Tabel 2.2 Pseudocode Algoritma Extented Euclid

Berdasarkan algoritma pada tabel 2.2 nilai-nilai variabel dapat dirunut dari awal sampai kondisi while terpenuhi.

Pada iterasi terakhir nilai gcd(279, 183), s dan t ditemukan, yaitu nilai A = 3, S1 = 21,

(11)

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

(12)

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 (ℤ/pℤ)[X]/(XN-1)

diformulasikan sebagai berikut:

� = � + � , dengan = + �

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

(13)

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

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,

(14)

Pseudocode dari algoritma Low Hamming Weight Polynomials adalah sebagai berikut.

Tabel 2.3 Pseudocode Algoritma Low Hamming Weight Polynomials Input p and a,b (ℤ/pℤ)[X]/(XN-1)

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

(15)

Tabel 2.4 Pseudocode Algoritma Euclidean Division

4 c ← lc(b) //lc=leading coefficient 5 while deg r ≥ d do

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:

× + �� × = = gcd , � =

(16)

× = , 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

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].

(17)

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.

(18)

Tabel 2.6 Standar Parameter pada algoritma NTRUEncrypt

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*fp =

(19)

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

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

(20)

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

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).

(21)

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

(22)

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

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 karakter-karakter 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 Karakter Indeks Karakter Indeks Karakter

(23)

Prinsip kerja algoritma base64encoding dapat digambarkan sebagai berikut.

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.

Gambar 2.4 Proses Base64 Decoding

Pengelompokan (6 bit) 110010 100011 011001 010111 110001 padding-(0000)01 Deretan Input biner 11001010 00110110 01010111 11000101

Deretan output y j Z X 9 A==

Deretan Input y j Z X 9 A

Konversi (6 bit) 110010 100011 011001 010111 110001 01

(24)

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

(25)

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 Diagramuntuk memodelkan interaksi antar objek. 5. State Diagramuntuk memodelkan perilaku objek di dalam sistem. 6. Activity Diagram untuk memodelkan struktur objek.

7. Class Diagramuntuk memodelkan struktur kelas. 8. Object Diagram untuk memodelkan struktur objek.

9. Component Diagram untuk memodelkan komponen objek. 10.Deployment Diagram untuk memodelkan distribusi aplikasi.

(26)

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.

(27)

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

(28)

-sebuah garis vertikal. Behaviour atau operasi yang perlu dilakukan oleh masing-masing 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

(29)

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.

(30)

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) ( Big-Omega) 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-OO(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.

(31)

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), (n2), (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 log

2 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 log 2 n + 1

Gambar

Gambar 2.1 Skema Kriptografi Simetri
Gambar 2.2 Skema Kriptografi Asimetri
Tabel 2.1 Pseudocode Algoritma Euclid
Tabel 2.2 Pseudocode Algoritma Extented Euclid
+7

Referensi

Dokumen terkait

Kualitas layanan dapat dinilai dengan lima indikator yaitu wujud layanan internet banking yang jelas, perlakuan baik oleh pihak bank dalam menyelesaikan masalah yang

Semenjak kecil kita sudah diajarkan untuk berkterampilan mengolah pelastik botol bekas menjadi sebuah mainan plastik yang mempunyai nilai jual Mengurangi penggunaan bahan baku

Pembelajaran Sejarah Berbasis Pendekatan Multikultural dan Perspektif Sejarah Lokal, Nasional, Global, untuk Integrasi Bangsa (Studi Kuasi Eksperimental Terhadap

Dalam penelitiannya Astohar (2016) tentang Pengaruh Capital Adequacy Ratio (CAR) dan Financing to Deposit Ratio terhadap Profitabilitas Perbankan Syariah di

Penelitian ini menghasilkan blueprint data architecture yang dapat digunakan sebagai acuan untuk pengembangan sistem informasi akademik untuk mendukung dan

Dari data yang diperoleh dapat disimpulkan bahwa umpan limbah pH 6, tekanan operasi -200 mBar don kecepatan putaran labu pemanas /4 rpm ada/ah kondisi operasi terbaik untuk

Kinerja merupakan bagian pendukung dalam kelancaran proses kerja dalam suatu perusahaan. Kinerja yang dimaksud adalah kinerja sistem, kinerja dapat diukur dari

Kedua jenis perwakilan, baik perwakilan diplomatik maupun perwakilan konsuler merupakan perwakilan luar negeri sebuah negara yang sama.. Perbedaanya terletak pada