• Tidak ada hasil yang ditemukan

Analisis Perbandingan Digital Signature Algorithm dan Gost Digital Signature Algorithm Pada Tanda Tangan Digital File .Txt

N/A
N/A
Protected

Academic year: 2017

Membagikan "Analisis Perbandingan Digital Signature Algorithm dan Gost Digital Signature Algorithm Pada Tanda Tangan Digital File .Txt"

Copied!
87
0
0

Teks penuh

(1)

DAFTAR PUSTAKA

Asmayunita. 2014. Aplikasi Otentikasi Dokumen Menggunakan Algoritma GOST Digital Signature. Skripsi. Universitas Sumatera Utara.

Budiman, M.A. 2014. Aplikasi Otentikasi Dokumen dengan GOST Digital Signature Algorithm. (Online) repository.usu.ac.id / bitstream / 123456789/42424 / 7 / Cover.pdf (24 Juli 2016).

Cormen, T.H., Leiserson, C.E., Rivest, R.L. 2001. Introduction to Algorithms. 2nd Edition. The MIT Press: London

Cormen, T.H., Leiserson, C.E., Rivest, R.L. 2009. Introduction to Algorithms. 3rd Edition. The MIT Press: London.

Hadi, Ahmaddul. 2013. Perancangan Sistem Pengamanan Dokumen Pada Sistem Informasi Akademik Dengan Menggunakan Digital Signature. Jurnal Teknologi Informasi & Pendidikan. 2086-4981(6): 194-195.

Kurniawan, Y. 2004. Kriptografi Keamanan Internet dan Jaringan Komunikasi. Informatika: Bandung.

Menezes, A., Van Oorschot, Paul, & Vanstone, S. 1996. Handbook of Applied Cryptography. CRC Press Inc.

Mollin, R.A. 2007. An Introduction to Cryptography. 2nd Edition. Taylor &Francis Group: LLC. United State of America.

Munir, Rinaldi. 2004. Diktat Kuliah IF5054 Kriptografi. Informatika: Bandung. Putra, Anton Gumala. 2014. Analisis Perbandingan Algoritma Greedy & Bruto Force

Dalam Pencarian Kartu Tertinggi Pada Kartu Remi. Skripsi. Universitas Sumatera Utara.

Schneir, Bruce. 1996. Applied Cryptography. 2nd Edition. John Wiley & Son: New York.

(2)

Edition. Pearson Education: New Jersey.

(3)

BAB 3

ANALISIS DAN PERANCANGAN

3.1 Analisis Sistem

Analisis sistem bertujuan melakukan identifikasi masalah-masalah dalam pembuatan sistem sehingga sistem yang dirancang berjalan dengan baik. Sistem ini akan melakukan penandatanganan file .txt dengan menggunakan fungsi hash yang terdapat pada Digital Signature Algorithm dan GOST digital signature algorithm.

3.1.1 Analisis masalah

Implementasi sebuah algoritma bisa diterapkan kedalam berbagai hal. Salah satunya dalam kriptografi terhadap integritas data yaitu tanda tangan digital. Di penelitian ini penulis akan menganalisis pseudocode dari setiap algoritma untuk menentukan perbandingan big theta algoritma dan menguji algoritma dengan melihat running time-nya.

(4)

menjaga integritas DSA & data dari sebuah file .txt GOST DSA

Masalah dalam Menandatangi file .txt

file .txt Visual C# 2010

Material Mesin

Gambar 3.1. Diagram Ishikawa untuk analisis masalah

3.2 Pemodelan Sistem

3.2.1 Unified Modeling Language (UML)

UML (Unifield Modelling Language) digunakan sebagai bahasa pemodelan untuk mendesain dan merancang sistem penandatangan file .txt dengan Digital Signature Algorithm dan GOST digital signature algorithm. Model UML yang digunakan antara lain use case diagram, activity diagram dan sequence diagram.

3.2.1.1 Use case diagram

Berikut use case diagram yang terdapat pada aplikasi tanda tangan digital:

Gambar 3.2. Use case diagram tanda tangan digital Tabel 3.1. Skenario use case pembentukan sepasang kunci

(5)

Actor Pengirim

Description Pengirim menginput kunci privat kemudian memilih button Bangkitkan Kunci. Simpan file sepasang kunci

Condition Terbentuk sepasang kunci privat dan kunci publik

Tabel 3.2. Skenario use case pembentukan tanda tangan digital Identifikasi

Use case Pembuatan Tanda Tangan

Actor Pengirim

Description Pengirim meng-input file .txt yang akan ditanda-tangani kemudian memilih botton Buat Tanda Tangan. Simpan nilai tanda tangan yang dihasilkan.

Condition File telah ditanda-tangani dan siap untuk dikirim ke penerima.

Tabel 3.3. Skenario use case verifikasi tanda tangan digital Identifikasi

Use case Verifikasi Tanda Tangan

Actor Penerima

Description Penerima telah menerima file dari si pengirim untuk diverifikasi dengan memilih button Verifikasi agar terbukti keasliannya.

Condition File valid atau invalid

3.2.1.2 Activity diagram

(6)

Gambar 3.3. Activity diagram pembentukan sepasang kunci

(7)

Gambar 3.5. Activity diagram verifikasi tanda tangan digital

3.2.1.3 Sequence diagram

Sequence diagram menggambarkan interaksi antar objek di dalam dan di sekitar sistem (termasuk user, display, dan sebagainya) berupa message yang digambarkan terhadap waktu. Sequence diagram terdiri atas dimensi vertikal (waktu) dan dimensi horizontal (objek-objek yang terkait). Sequence diagram biasa digunakan untuk menggambarkan skenario atau rangkaian langkah-langkah yang dilakukan sebagai respons dari sebuah event untuk menghasilkan output tertentu.

(8)

Gambar 3.6. Sequence diagram pembentukan sepasang kunci

Gambar 3.7. Sequence diagram pembentukan tanda tangan digital

(9)

3.2.2 Flowchart Sistem

Flowchart sistem merupakan bagan yang menunjukkan alur kerja atau apa yang sedang dikerjakan di dalam sistem secara keseluruhan dan menjelaskan urutan dari prosedur-prosedur yang ada di dalam sistem. Berikut flowchart tahapan proses yang dilakukan untuk memberikan tanda tangan digital pada file .txt dengan menggunakan fungsi hash:

mulai

pembentukan sepasang kunci

pembentukan tanda tangan digital

verifikasi tanda tangan digital

status dokumen masukkan file

dokumen

selesai

Gambar 3.9. Flowchart tanda tangan digital file .txt

3.3 Analisis Algoritma

Analisis algoritma dilakukan untuk menduga besarnya sumber daya waktu yang dibutuhkan untuk sembarang ukuran masukan n (Cormen et al, 1990 ed 2). Kompleksitas, T(n), didefenisikan sebagai waktu yang dibutuhkan oleh suatu algoritma untuk menyelesaikan proses dengan input berukuran n.

3.3.1 Analisis algoritma sieve of erathosthenes

Sebagai contoh, kita akan menentukan sekumpulan bilangan prima dari 2 sampai dengan 100, larik bilangan ini dapat kita lihat dibawah ini:

(10)

Tabel 3.4. List bilangan 2 sampai 100

2 3 4 5 6 7 8 9 10

11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

2) Bilangan terkecil yang tidak dicoret adalah bilangan prima, yaitu 2. 3) Coret semua kelipatan bilangan 2 dalam larik.

Tabel 3.5. List kelipatan bilangan 2 dicoret

2 3 4 5 6 7 8 9 10

11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 49 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

4) Ulangi langkah 2 dan 3 sampai mencapai √ (pembulatan) = 10.

 3 adalah bilangan prima, coret semua kelipatan 3 dalam larik. Tabel 3.6. List kelipatan bilangan 3 dicoret

(11)

11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 49 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

 5 adalah bilangan prima, coret semua kelipatan 5 dalam larik. Tabel 3.7. List kelipatan bilangan 5 dicoret

2 3 4 5 6 7 8 9 10

11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 49 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

 7 adalah bilangan prima, coret semua kelipatan 7 dalam larik. Tabel 3.8. List kelipatan bilangan 7 dicoret

2 3 4 5 6 7 8 9 10

11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

31 32 33 34 35 36 37 38 39 40

(12)

5) Semua bilangan yang belum dicoret adalah bilangan prima. Tabel 3.9. List bilangan prima dari 2 sampai 100

2 3 4 5 6 7 8 9 10

11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

31 32 33 34 35 36 37 38 39 40

41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60

61 62 63 64 65 66 67 68 69 70

71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

Kesimpulannya, bilangan prima antara 2 sampai dengan 100 adalah 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, dan 97. Apabila diimplementasikan dalam pseudocode, hasilnya dapat dilihat pada prosedur dibawah ini:

Tabel 3.10. Pseudocode pembangkit bilangan prima

1 Function : sieveoferatosthenes ( input N : integer ) output 2 3 4 5 6 7 8 9 10 11 12 13

{Mencetak semua bilangan yang kurang dari atau sama dengan N yang merupakan bilangan prima

Masukan: sembarang bilangan

Keluaran: semua bilangan prima ≤ N dicetak

}

Deklarasi i, j : integer

T : array [2…N] of boolean

Algoritma

{inisialisasi larik}

for i ← 2 to sqrt(N) do

Ti ← true

(13)

14 15 16 17 18 19 20 21 22 23 end for

{menyaring bilangan prima}

for i ← 2 to sqrt(N) do if (Ti) then

j ← i * i

while j <= N do Tj ← false j ← j + i end while

end if end for

{Mencetak bilangan prima}

for i ← 2 to N do

if (Ti) then output (i) end if

end for

Pada algoritma Sieve of Eratosthenes, pengecekan tidak dilakukan pada setiap n, dikarenakan penyaringan dengan memanfaatkan bilangan yang telah dicek sebelumnya, yaitu dengan mencoret terlebih dahulu bilangan kelipatannya sehingga tidak perlu dicek ulang kembali. Ini menyebabkan adanya faktor logaritma pada kompleksitas sieve of eratosthenes. Pada akhirnya, algoritma ini mempunyai

kompleksitas Θ ((n log n)(log log n)).

3.3.2 Analisis algoritma SHA-1

Fungsi hash SHA-1 digunakan pada proses pembentukan tanda tangan digital dan verifikasi tanda tangan digital DSA. SHA-1 adalah fungsi hash satu-arah yang dibuat oleh NIST dan digunakan bersama DSS (Digital Signature Standard). Oleh NSA, SHA-1 dinyatakan sebagai standard fungsi hash satu-arah. SHA didasarkan pada MD4 yang dibuat oleh Ronald L. Rivest dari MIT.

(14)

berikut:

1) Message padding

2) Penambahan panjang bit (padding bits). 3) Inisialisasi penyangga (buffer) message digest. 4) Pengolahan pesan dalam blok berukuran 512 bit. 5) Output

Berikut flowchart proses pembentukan message digest menggunakan fungsi hash SHA-1:

Gambar 3.10. Flowchart pembentukan message digest SHA-1

Untuk menghitung kompleksitas waktu rata-rata suatu algoritma digunakan

notasi big Θ. Berikut perhitungan kompleksitas algoritma menggunakan notasi big Θ. Tabel 3.11. Notasi big Θ pada pseudocode fungsi hash SHA-1

line Syntax notasi

2 // inisialisasi penyangga

(15)

4 Int B = 0xEFCDAB89 C1 (1)

5 Int C = 0x98BADCFE C1 (1)

6 Int D = 0x10325476 C1 (1)

7 Int E = 0xC3D2E1F0 C1 (1)

8 // pemprosesan awal / padding bit

9 Append sebuah bit “1” ke pesan C2 (1)

10 While panjang pesan (dalam bit) kongruen dengan 448 (modulo 512) do

C3 (n)

11 Append bit “0”ke pesan C2 (1)

12 Endwhile

13 Append panjang pesan (sebelum padding) as ke 64-bit big-endian integer to pesan

C2 (1)

14 // proses pesan dalam blok-blok yang berukuran 512 bit

15 bagi pesan ke dalam blok-blok berukuran 512 bit C4 (1)

16 For (tiap blok) do C1 (n)

17 Bagi tiap blok ke dalam 16 buah sub-blok 32 bit C4 (1) 18 // ekspansi 16 buah sub-blok 32-bit menjadi 80 buah

sub-blok 32 bit

19 For (i=16; i<=79; i++) do C1 (64)

20 W[i] = (w[i-3] xor w[i-14] xor w[i-16]) leftrotate 1

C1 (1)

21 Endfor

22 // inisialisasi peubah penyangga

23 Int a = A C1 (1)

24 Int b = B C1 (1)

25 Int c = C C1 (1)

26 Int d = D C1 (1)

27 Int e = E C1 (1)

28 //proses utama

29 For (i=0; i<=79; i++) do C1 (80)

30 If (0<=i<=19) then C1 (1)

31 f = (b and c) or ((not b) and d) C1 (1)

32 k = 0x5A827999 C1 (1)

33 Else If (20<=i<=39) do C1 (1)

34 f = b xor c xor d C1 (1)

(16)

39 Else If (60<=i<=79) do C1 (1)

40 f = b xor c xor d C1 (1)

41 k = 0xCA62C1D6 C1 (1)

42 Endif

43 Temp = (a leftrotate 5) + f +e +k +w[i] C1 (1)

44 e = d C1 (1)

45 d = c C1 (1)

46 c = b leftrotate 30 C1 (1)

47 b = a C1 (1)

48 a = temp C1 (1)

49 Endfor

50 //jumlahkan blok-blok ini

51 A = A + a C1 (1)

52 B = B + b C1 (1)

53 C = C + c C1 (1)

54 D = D +d C1 (1)

55 E = E + e C1 (1)

56 Endfor

57 Int digest = A append B append C append D append E C1 (1) T(n) = 179C1 + C1 (n) + 3C2 + C3 (n) + 2C4

T(n) = n T(n) = Θ(n).

Langkah 1, 2, 3 dan 4 memiliki waktu eksekusi konstan karena hampir tidak terpengaruh oleh ukuran input, misalkan c. langkah 4 terdiri dari 80 operasi untuk setiap 512 bit blok pesan. Jadi untuk blok input berukuran n diperlukan waktu eksekusi 80n. Kompleksitas waktu dari proses hash pesan dengan menggunakan algoritma SHA-1

adalah Θ(n).

3.3.3 Analisis algoritma SHA-256

Algoritma SHA-256 memiliki langkah-langkah yang hampir sama dengan SHA-1, hanya pada langkah pemprosesan, algoritma SHA-256 membutuhkan 64 operasi untuk setiap 512 bit blok pesan. Berikut perhitungan kompleksitas algoritma menggunakan

(17)

Tabel 3.12. Notasi big Θ pada pseudocode fungsi SHA-256

line Syntax notasi

3 // Inisialisasi variable

4 h[0…7] := 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19

C1 (8)

5 // Inisialisasi tabel round constants

6 k[0..63] := 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2

C1 (64)

7 Pre-processing:

append bit '1' ke pesan

append k bits '0', dimana k adalah the angka minimum >= 0 sedemikian sehingga pesan yang dihasilkan panjang (dalam bit) adalah kongruen

dengan 448 (mod 512)

append panjang pesan (sebelum preprocessing), dalam bit, sebagai 64-bit bigendian integer

C2 (1)

8 // Proses pesan dalam suksesif 512-bit chunks: 9 pecah pesan menjadi 512-bit chunks

for each chunk

break chunk into sixteen 32-bit bigendian

(18)

11 for i from 16 to 63

s0 := (w[i-15] rightrotate 7) xor (w[i-15] rightrotate 18) xor (w[i-15]

rightshift 3)

s1 := (w[i-2] rightrotate 17) xor (w[i-2] rightrotate 19) xor (w[i-2]

rightshift 10)

w[i] := w[i-16] + s0 + w[i-7] + s1

C1 (48)

12 //Inisialisasi nilai hash untuk chunk ini: 13 a := h0

b := h1 c := h2 d := h3 e := h4 f := h5 g := h6 h := h7

C1 (8)

14 Main loop:

for i from 0 to 63

s0 := (a rightrotate 2) xor (a rightrotate 13) xor (a rightrotate 22)

maj := (a and b) xor (a and c) xor (b and c) t2 := s0 + maj

s1 := (e rightrotate 6) xor (e rightrotate 11) xor (e rightrotate 25)

ch := (e and f) xor ((not e) and g) t1 := h + s1 + ch + k[i] + w[i] h := g

g := f f := e e := d + t1 d := c c := b b := a

a := t1 + t2

C1 (64)

15 //Tambahkan hash dari chunk ke hasil:

(19)

h1 := h1 + b h2 := h2 + c h3 := h3 + d h4 := h4 + e h5 := h5 + f h6 := h6 + g h7 := h7 + h

17 //Nilai hash final (big-endian):

18 digest = hash = h0 append h1 append h2 append h3 append h4 append h5 append

h6 append h7

C1 (1)

T(n) = 201C1 + C2 + C3 (n) T(n) = n

T(n) = Θ(n).

3.3.4 Analisis digital signature algorithm (DSA)

Algoritma DSA digunakan pada proses pemberian nilai tanda tangan digital dan proses verifikasi. Tanda tangan digital DSA berbentuk sepasang besar angka yang ditampilkan komputer sebagai string dan digit biner. Tanda tangan digital dihitung dengan menggunakan sejumlah aturan dan sejumlah parameter sehingga identitas pemilik dan integritas data dapat diverifikasi. Pembentukan tanda tangan menggunakan kunci privat untuk membuat tanda tangan digital, sedangkan kunci publik yang berkorespondensi dengan kunci privat namun tidak sama digunakan untuk memverifikasi tanda tangan. Setiap user memiliki sepasang kunci privat dan publik. Kunci publik dapat disebar secara umum, sedangkan kunci privat hanya milik user pribadi. DSA menggunakan fungsi hash SHA-1 (Secure Hash Algorithm) untuk mengubah pesan menjadi message digest yang berukuran 160 bit. Tetapi dalam hal ini penulis hanya menggunakan fungsi hash sederhana.

3.3.4.1Analisis proses pembentukan sepasang kunci DSA

(20)

kunci pada algoritma DSA:

mulai

bangkitkan p dan q

p dan q = prima? dan (p-1) mod q =0

p dan q prima

bilangan acak h ya

tidak

1<h<p-1 dan (h^((p-1)/q)

mod p > 1

tidak

h diterima

g = h^((p-1)/q) mod p ya

bilangan acak x

x < q ?

x diterima

y = g^x mod p ya

kunci privat = (p, q, g, x) kunci publik = (p, q, g, y)

selesai

tidak

Gambar 3.11. Flowchart pembentukan sepasang kunci DSA

Berikut perhitungan kompleksitas algoritma menggunakan notasi big Θ.

Tabel 3.13. Notasi big Θ pseudocode pembentukan sepasang kunci DSA

line Syntax notasi

9 Repeat C1 (n)

10 p ← Probablyprime (p)//fungsi pembangkit nilai acak bilangan prima

(21)

11 q ← Probablyprime (q) //prima C2 (n)

12 Until (((p – 1) mod q) = 0) C2 (n)

13 Endrepeat

14 Repeat { C1 (n)

15 h ← random () } //fungsi pembangkit bilangan acak C2 (n)

16 Until ((1 < h < p) and ((h ^ ((p – 1) / q ) mod p ) > 1)

C3 (n)

17 Endrepeat

18 g ← h ^ ((p – 1) / q ) mod p C2 (1)

19 Repeat { C1 (n)

20 x ← random () } //fungsi pembangkit bilangan acak C2 (n)

21 Until (x < q ) C3 (n)

22 Endrepeat

23 y ← (g ^ x) mod p C2 (1)

24 kv ← p, q, g, x C2 (1)

25 kb ← p, q, g, y C2 (1)

T(n) = 3C1(n) + 4C2 + 5C2 (n) + 2C3 (n) T(n) = n

T(n) = Θ(n).

3.3.4.2Analisis proses pembentukan tanda tangan digital DSA

(22)

bilangan acak k

k < q ?

k diterima

r = (g^k mod p) mod q ya

m, r, s

selesai pesan m, kunci privat (p, q, g, x)

ubah pesan m dengan fungsi hash

s = (k^-1(H(m) + xr)) mod q r = 0?

tidak

ya tidak

Gambar 3.12. Flowchart pembentukan tanda tangan digital DSA

Berikut perhitungan kompleksitas algoritmanya menggunakan notasi big Θ. Tabel 3.14. Notasi big Θ pseudocode pembentukan tanda tangan digital DSA

line Syntax notasi

9 m ← m C1 (1)

10 p ← p C1 (1)

11 q ← q C1 (1)

12 g ← g C1 (1)

13 x ← x C1 (1)

(23)

15 Repeat C2 (n)

16 K ← random () C1 (n)

17 Until (k < q) {cek k < q} C1 (n)

18 Endrepeat

19 r ← (g ^ k mod p) mod q C1 (1)

20 s ← (k ^ -1 (H(m) + x * r)) mod q C1 (1)

21 m ← m C1 (1)

22 p ← p C1 (1)

T(n) = 9C1 + 3C1 (n) + C2 (n) T(n) = n

T(n) = Θ(n).

3.3.4.3 Analisis proses verifikasi tanda tangan digital DSA

(24)

v = r? pesan m (m, r, s) kunci publik (p, q, g, y)

w = s-1 mod q

U1 = (H(m) * w) mod q

U2 = (r*w) mod q

v = ((gu1 * yu2) mod p) mod q

tidak

selesai ya dokumen tidak

valid

dokumen valid

Gambar 3.13. Flowchart verifikasi tanda tangan digital DSA

Berikut perhitungan kompleksitas algoritmanya menggunakan notasi big Θ:

Tabel 3.15. Notasi big Θ pseudocode verifikasi tanda tangan digital DSA

line Syntax notasi

9 m ← m C1 (1)

10 r ← r C1 (1)

11 s ← s C1 (1)

12 p ← p C1 (1)

13 q ← q C1 (1)

14 g ← g C1 (1)

15 y ← y C1 (1)

16 w ← s ^ -1 mod q C1 (1)

17 u1 ← (h(m) * w) mod q {hashing pesan m menggunakan fungsi SHA-1}

C1 (n)

18 u2 ← (r * w) mod q C1(1)

(25)

20 if v = r then C1(1)

21 valid ← true C1(1)

22 Else

23 valid ← false C1(1)

24 Endif

T(n) = 13C1 + C1 (n) T(n) = n

T(n) = Θ(n)

3.3.5 Analisis GOST digital signature algorithm (GOST DSA)

Analisis kinerja GOST DSA terdiri dari 3 tahap yaitu pembentukan sepasang kunci, pembentukan tanda tangan digital (signing) dan verifikasi tanda tangan digital.

Pada proses pembentukan sepasang kunci, sistem akan menghasilkan kunci privat yang akan digunakan untuk proses pembentukan tanda tangan digital dan kunci publik yang akan dibutuhkan pada saat verifikasi tanda tangan digital.

Pada proses pembentukan tanda tangan digital, sistem pertama sekali akan melakukan proses hashing terhadap dokumen yang ingin diberi tanda tangan digital sehingga menghasilkan keluaran hash yang disebut message digest. Kemudian message digest dienkripsi menggunakan kunci privat dan menghasilkan tanda tangan digital. Kemudian pengirim mengirimkan dokumen yang telah diberi tanda tangan digital dan kunci publik kepada penerima. Pada proses verifikasi, penerima akan melakukan hashing dokumen kembali untuk mendapatkan message digest, maka secara paralel tanda tangan digital akan didekripsi menggunakan kunci publik. Message digest yang dihasilkan oleh penerima akan sama dengan message digest yang dikirimkan. Jika berbeda maka dipastikan bahwa dokumen telah diubah oleh pihak lain. Proses terakhir adalah sistem akan menampilkan status dari dokumen tersebut.

3.3.5.1 Analisis proses pembentukan sepasang kunci GOST DSA

(26)

bangkitkan p dan q

p dan q = prima? dan (p-1) mod q =0

p dan q prima

hitung a dimana a ^q mod p =1 ya

tidak

bilangan acak x

x < q ?

x diterima

y = a^x mod p ya

kunci privat = (p, q, a, x) kunci publik = (p, q, a, y)

selesai

tidak

Gambar 3.14. Flowchart pembentukan sepasang kunci GOST DSA Berikut perhitungan kompleksitas algoritmanya menggunakan notasi big Θ:

Tabel 3.16. Notasi big Θ pseudocode pembentukan sepasang kunci GOST DSA

line syntax notasi

9 Repeat C1 (n)

10 p ← Probablyprime (p)//fungsi pembangkit nilai acak bilangan prima

C2 (n)

11 q ← Probablyprime (q) //prima C2 (n)

12 Until ((p – 1) mod q) = 0 C2 (n)

13 Endrepeat

14 Repeat { C1 (n)

15 a ← random () } //fungsi pembangkit bilangan acak C2 (n)

16 Until (a < p – 1) C3 (n)

(27)

18 a ^ q mod p ← 1 C2 (1)

19 Repeat { C1 (n)

20 x ← random () } //fungsi pembangkit bilangan acak C2 (n)

21 Until (x < q ) C3 (n)

22 Endrepeat

23 y ← (a ^ x) mod p C2 (1)

24 kv ← p, q, a, x C2 (1)

25 kb ← p, q, a, y C2 (1)

T(n) = 3C1(n) + 4C2 + 5C2 (n) + 2C3 (n) T(n) = n

T(n) = Θ(n).

3.3.5.2Analisis proses pembentukan tanda tangan digital GOST DSA

(28)

bilangan acak k

k < q ?

k diterima

r = (a^k mod p) mod q ya

m, r, s

selesai pesan m, kunci privat (p, q, a, x)

ubah pesan m dengan fungsi hash

s = (k(H(m) + xr)) mod q r = 0?

tidak

ya tidak

Gambar 3.15. Flowchart pembentukan tanda tangan digital GOST DSA

Berikut perhitungan kompleksitas algoritmanya menggunakan notasi big Θ:

Tabel 3.17. Notasi big Θ pseudocode pembentukan tanda tangan digital GOST DSA

line syntax notasi

9 m ← m C1 (1)

10 p ← p C1 (1)

11 q ← q C1 (1)

12 a ← a C1 (1)

13 x ← x C1 (1)

14 H(m) ← SHA-256(m) C1 (n)

15 Repeat C2 (n)

16 k ← random () C1 (n)

17 until (k < q) {cek k < q} C1 (n)

(29)

19 r ← (g ^ k mod p) mod q C1 (1) 20 s ← (k ^ -1 (H(m) + x * r)) mod q C1 (1)

21 m ← m C1 (1)

22 p ← p C1 (1)

T(n) = 9C1 + 3C1 (n) + C2 (n) T(n) = n

T(n) = Θ(n).

3.3.5.3Analisis proses verifikasi tanda tangan digital GOST DSA

Proses verifikasi sebuah dokumen dan tanda tangan digital dibutuhkan untuk membuktikan keaslian dokumen yang secara langsung juga dapat membuktikan keaslian pengirim. Berikut flowchart untuk verifikasi tanda tangan pada algoritma GOST digital signature:

mulai

v = H(m)q-2 mod q

z1 = (s*v) mod q

z2 = ((q – r) * v) mod q

u = ((a z1 * y z2) mod p) mod q

u = r?

dokumen valid ya

dokumen tidak valid tidak

(30)
[image:30.595.106.508.147.513.2]

Berikut perhitungan kompleksitas algoritmanya menggunakan notasi big Θ:

Tabel 3.18. Notasi big Θ pseudocode verifikasi tanda tangan digital GOST DSA

line Syntax Notasi

9 m ← m C1 (1)

10 r ← r C1 (1)

11 s ← s C1 (1)

12 p ← p C1 (1)

13 q ← q C1 (1)

14 a ← a C1 (1)

15 y ← y C1 (1)

16 w ← s ^ -1 mod q C1 (1)

17 u1 ← (h(m) * w) mod q {hashing pesan m menggunakan fungsi SHA-256}

C1 (n)

18 u2 ← (r * w) mod q C1 (1)

19 v ← (((a ^ z1) * (y ^ z2)) mod p) mod q) C1 (1)

20 if v = r then C2 (1)

21 valid ← true C1 (1)

22 Else

23 valid ← false C1 (1)

24 Endif

T(n) = 12C1 + C1 (n) + C2 T(n) = n

T(n) = Θ(n).

3.4 Analisis Running Time

(31)

3.5 Perancangan Antar Muka (Interface)

Perancangan antar muka adalah desain tampilan yang menghubungkan pengguna (user) dengan komputer dengan bantuan program. Salah satu syarat pembuatan antar muka adalah berorientasi pada kemudahan dalam penggunaannya (user friendly) serta informatif.

Aplikasi yang akan dibuat adalah aplikasi tanda tangan digital yang dapat dijalankan oleh user sebagai pengirim dan user sebagai penerima. Aplikasi yang terdapat pada user sebagai pengirim dirancang untuk proses pembentukan sepasang kunci, dan pembentukan tanda tangan digital, sedangkan aplikasi untuk user sebagai penerima dirancang untuk proses verifikasi dokumen dan tanda tangan digital.

Untuk memudahkan user dalam mengoperasikan aplikasi ini, maka rancangan antar muka menggunakan tab control pada masing-masing aplikasi dari kedua user. Tab ini akan tampil apabila user memilih salah satu tab.

3.5.1 Rancangan halaman pengirim

Halaman ini terdiri dari dua tab, yaitu tab pembentukan sepasang kunci dan pembentukan tanda tangan.

(32)
[image:32.595.112.505.89.417.2]

Gambar 3.17. Rancangan halaman pembentukan sepasang kunci

Seperti yang terlihat pada gambar 3.17. rancangan dari halaman pembentukan kunci ini berfungsi untuk melakukan proses pembentukan sepasang kunci yaitu kunci privat dan kunci publik yang nantinya akan digunakan untuk melakukan proses berikutnya. Berikut adalah fungsi-fungsi yang terdapat didalam halaman.

1. Button ini digunakan untuk melakukan pembentukan kunci. 2. Textbox ini digunakan untuk menampilkan bilangan prima p. 3. Textbox ini digunakan untuk menampilkan bilangan sub prima q. 4. Textbox ini digunakan untuk menampilkan bilangan acak g.

5. Textbox ini digunakan untuk menampilkan hasil dari kunci privat yang didapat. 6. Textbox ini berfungsi untuk menampilkan hasil dari kunci publik yang didapat. 7. Button ini digunakan untuk menentukan tempat penyimpanan kunci privat dan

kunci publik direktori.

8. Textbox ini digunakan untuk menampilkan direktori penyimpanan kunci privat dan publik.

1

2

3

4

5

6

8

7

9

(33)

9. Button ini digunakan untuk menyimpan kunci privat dan kunci publik kedalam direktori.

10. Label ini digunakan untuk menampilkan hasil dari uji running time pada saat program dijalankan.

[image:33.595.132.502.178.492.2]

Berikut ini adalah rancangan dari halaman pembentukan tanda tangan digital:

Gambar 3.18. Rancangan halaman pembentukan tanda tangan digital

Berdasarkan gambar 3.18. rancangan halaman ini digunakan untuk pembentukan tanda tangan digital DSA. Pada proses ini user membutuhkan kunci privat yang digunakan untuk mengenkripsi file yang telah di hash sehingga menghasilkan tanda tangan digital. Adapun fungsi-fungsi yang terdapat didalam rancangan pada halaman ini adalah seperti yang dijelaskan berikut.

1. Button ini digunakan untuk memasukkan file.

2. Textbox ini digunakan untuk menampilkan tempat penyimpanan file.

3. Textbox ini digunakan untuk menampilkan nilai message digest dari isi pesan yang didapat saat proses hash dilakukan.

4. Button ini digunakan untuk proses pembuatan tanda tangan digital. 1 2

3

4

5

6

7

8 9

(34)

tangan r, s.

8. Textbox ini digunakan untuk menampilkan direktori penyimpanan m, r, dan s. 9. Button ini digunakan untuk menyimpan m, r dan s kedalam direktori.

10. Label ini digunakan untuk menampilkan hasil dari uji running time pada saat program dijalankan.

3.5.2. Rancangan halaman penerima

[image:34.595.128.503.300.611.2]

Pada rancangan ini user sebagai penerima hanya bisa melakukan proses verifikasi tanda tangan digital. Berikut adalah rancangan halaman verifikasi tanda tangan digital:

Gambar 3.19. Rancangan halaman verifikasi tanda tangan digital

Berdasarkan gambar 3.19. rancangan halaman ini digunakan untuk pembentukan tanda tangan digital GOST DSA. Pada proses ini user membutuhkan kunci privat yang digunakan untuk mengenkripsi dokumen yang telah di hash sehingga menghasilkan tanda tangan digital. Adapun fungsi-fungsi yang terdapat didalam rancangan pada halaman ini adalah seperti yang dijelaskan berikut.

1. Button ini digunakan untuk memasukkan file txt yang telah ditanda tangani.

Status

1

2 3

4

5 6

7

8

9

(35)

2. Button ini digunakan untuk memasukkan file kunci publik penanda tangan. 3. Textbox ini digunakan untuk menampilkan nama file txt.

4. Textbox ini digunakan untuk menampilkan nama file kunci publik.

5. Button ini digunakan untuk memasukkan file tanda tanda tangan yang dikirim si pengirim.

6. Textbox ini digunakan untuk menampilkan nama file tanda tangan digital. 7. Button ini digunakan untuk memverifikasi tanda tangan digital.

8. Textbox ini berfungsi untuk menampilkan nilai v.

9. Textbox ini digunakan menampilkan status tanda tangan valid atau tidak. 10. Label ini berfungsi untuk menampilkan hasil dari uji running time pada saat

(36)

BAB 4

IMPLEMENTASI DAN PENGUJIAN ALGORITMA

4.1 Implementasi Algoritma

Setelah melewati tahapan pada analisis perbandingan algoritma, maka tahap selanjutnya adalah implementasi dan pengujian algoritma. Pada bab ini akan menjelaskan tentang proses pengimplementasian algoritma kedalam Bahasa pemrograman dan melakukan pengujian dengan menjalankan program yang sebagai inputan berupa file txt yang hendak diberi tanda tangan.

4.1.1 Spesifikasi perangkat keras dan perangkat lunak

Spesifikasi perangkat keras yang digunakan dalam pengujian sistem adalah: 1. Processor Intel® Core™ i5

2. Memory (RAM) : 2 GB DDR3 3. Hardisk 500GB.

Sedangkan spesifikasi perangkat lunak yang digunakan dalam pembuatan sistem adalah software windows 8 profesional dan visual C# 2013.

4.1.2 Tampilan implementasi algoritma

(37)

4.1.2.1 Halaman pembentukan sepasang kunci

[image:37.595.152.485.150.419.2]

Pada halaman ini pengirim dapat melakukan proses pembentukan kunci yang ditunjukkan pada gambar 4.1. berikut.

Gambar 4.1. Tampilan halaman pembentukan sepasang kunci

Seperti yang terlihat pada gambar 4.1. pada halaman ini akan dilakukan proses pembentukan sepasang kunci, yaitu kunci privat dan kunci publik. Pada halaman ini user akan menginput kunci privat dan sistem akan membentuk sepasang kunci ketika button Bangkitkan dipilih. Maka sepasang kunci akan dikirimkan dalam bentuk file kedalam direktori yang dipilih oleh pengguna.

Proses pembentukan kunci yang dilakukan menghasilkan rangkaian bilang desimal dengan panjang tertentu. Pada halaman ini dibutuhkan parameter bilangan prima, parameter bilangan sub prima, dan parameter g untuk menghasilkan sepasang kunci. Sepasang kunci yang dihasilkan pada halaman ini akan dibutuhkan untuk proses selanjutnya, yaitu proses pembentukan tanda tangan digital dan proses verifikasi tanda tangan digital.

(38)
[image:38.595.149.484.83.356.2]

Gambar 4.2. Tampilan halaman pembentukan tanda tangan digital

Berdasarkan gambar 4.2. halaman ini digunakan untuk melakukan proses pembentukan tanda tangan digital. Pada halaman ini pengguna terlebih dahulu memasukkan file dokumen yang ingin diberi tanda tangan digital dan file kunci privat yang didapat pada proses sebelumnya, yaitu pada proses pembentukan sepasang kunci.

Pada proses ini, sistem akan melakukan proses hashing pada dokumen yang dimasukkan ketika pengguna memilih button Browse. Proses ini akan menghasilkan message digest yang kemudian dienkripsi oleh kunci privat sehingga membentuk tanda tangan digital. Setelah tanda tangan digital terbentuk sistem akan menyimpan tanda tangan tersebut ke direktori penyimpanan sebelum dikirim ke penerima untuk diverifikasi.

4.1.2.3 Halaman verifikasi tanda tangan digital

Pada sistem ini user sebagai penerima dapat melakukan proses verifikasi file untuk membuktikan apakah file tersebut masih asli atau sudah diubah oleh pihak yang tidak bertanggung jawab.

(39)

publik. Kemudian sistem akan menampilkan apakah dokumen tersebut asli “valid” atau

[image:39.595.149.486.125.400.2]

sudah diubah “tidak valid”.

Gambar 4.3. Tampilan halaman verifikasi tanda tangan digital

4.2 Pengujian Algoritma

Implementasi pengujian sistem algoritma DSA dan GOST digital signature dilakukan dengan menggunakan bahasa pemrograman visual C#. Dari hasil pengujian ini dilakukan pengukuran waktu pembentukan dan verifikasi tanda tangan pada DSA dan GOST digital signature. Tujuan pengukuran ini adalah untuk membandingkan kinerja (kecepatan) algoritma DSA dan GOST digital signature terhadap tanda tangan digital file .txt. Pengukuran dilakukan sebanyak 10 kali dengan menggunakan ukuran input yang berbeda.

Tabel 4.1. Waktu proses pembentukan tanda tangan DSA dan GOST DSA

File .txt Ukuran Input (KB) DSA (ms) GOST digital signature (ms)

Input1 2006 1108 1124

Input2 2513 1192 1221

[image:39.595.119.517.641.751.2]
(40)

Input6 11371 2193 2234

Input7 15545 2375 2401

Input8 21428 2982 3043

Input9 28120 3799 3892

Input10 50157 4412 4576

[image:40.595.118.517.86.212.2]

Berdasarkan tabel 4.1. dengan meningkatnya ukuran file, running time eksekusi proses pembentukan tanda tangan baik DSA dan GOST digital signature mengalami peningkatan. Hal ini terjadi karena semakin besar panjang blok pesan maka ukuran iterasi proses yang dilakukan pun akan semakin besar. Untuk menggambarkan peristiwa ini, diberikan grafik hubungan antara DSA dan GOST digital signature terhadap proses pembentukan tanda tangan.

Gambar 4.4. Grafik DSA dan GOST DSA terhadap proses pembentukan tanda tangan

Tabel 4.2. Waktu proses verifikasi tanda tangan DSA dan GOST DSA

File .txt Ukuran Input (KB) DSA (ms) GOST digital signature (ms)

Input1 2006 1467 1532

Input2 2513 1503 1594

Input3 3509 1751 1806

0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000

2006 2513 3509 3740 4428 11371 15545 21428 28120 50157

Ru n n in g T im e (m s)

[image:40.595.105.510.353.583.2]

Ukuran Input (KB)

Grafik DSA dan GOST digital signature terhadap proses pembentukan tanda tangan

[image:40.595.109.508.654.739.2]
(41)

Input4 3740 1896 1968

Input5 4428 2003 2111

Input6 11371 2443 2677

Input7 15545 2648 2812

Input8 21428 3217 3402

Input9 28120 4145 4306

Input10 50157 4924 5122

[image:41.595.108.511.82.234.2]

Berdasarkan tabel 4.2. dengan meningkatnya ukuran file, running time eksekusi proses verifikasi tanda tangan baik DSA dan GOST digital signature mengalami peningkatan. Hal ini terjadi karena proses verifikasi harus melakukan empat operasi modular eksponensial, sehingga proses verifikasi harus melakukan perhitungan yang lambat dalam implementasi.

Gambar 4.5. Grafik DSA dan GOST DSA terhadap proses verifikasi tanda tangan

0 1000 2000 3000 4000 5000 6000

2006 2513 3509 3740 4428 11371 15545 21428 28120 50157

Ru

n

n

in

g T

im

e

(m

s)

[image:41.595.106.508.355.586.2]

Ukuran Input (KB)

Grafik DSA dan GOST digital signature terhadap proses verifikasi tanda tangan

(42)

BAB 5

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Setelah melalui proses penyelesaian skripsi yang berjudul “Analisis Perbandingan

Digital Signature Algorithm dan GOST Digital Signature Algorithm Pada Tanda Tangan Digital File .TXT”, penulis dapat menarik kesimpulan sebagai berikut:

1) Tanda tangan digital merupakan teknik yang sangat tepat digunakan untuk menjamin keaslian suatu dokumen serta menghindari adanya penyangkalan bahwa seseorang telah menandatangani suatu dokumen. Teknik ini jauh lebih canggih dan lebih efisien daripada tanda tangan yang dilakukan secara manual. 2) Analisis teori menyimpulkan bahwa DSA dan GOST digital signature algorithm memiliki perbedaan komputasi dalam proses pembentukan sepasang kunci tetapi hasil komputasi yang didapatkan sama. DSA didesain untuk dapat melakukan pembentukan tanda tangan seefisien mungkin melalui penggunaan perkalian modular di dalam prosesnya. Akan tetapi, invers dari beberapa parameternya memiliki efisiensi yang rendah. DSA dan GOST digital signature algorithm melakukan empat operasi modular eksponensial pada proses verifikasi, akibatnya proses verifikasi tanda tangan menjadi lambat dalam implementasinya.

3) Dari analisis algoritma, didapatkan DSA dan GOST digital signature algorithm

memiliki kompleksitas pada lingkup Θ(n), yang berlaku bagi proses

pembentukan dan verifikasi tanda tangan. Dengan begitu dapat disimpulkan bahwa DSA dan GOST digital signature algorithm merupakan algoritma tanda tangan digital yang cukup efisien di dalam operasinya.

(43)

merupakan algoritma yang cepat dan efisien dalam implementasi untuk tanda tangan digital pada file .txt.

5) Dari segi keamanan secara kriptografi, algoritma SHA-256 lebih aman dibandingkan SHA-1 dikarenakan putaran operasi untuk setiap 512 bit blok pesan dan message digest yang dihasilkan lebih panjang.

5.2 Saran

Penulis ingin memberikan beberapa saran yang mungkin berguna untuk pengembangan lebih lanjut yaitu:

1) Ruang lingkup penelitian ini dibatasi pada algoritma DSA dan GOST digital signature algorithm untuk panjang modulus kunci 80 bit. Penelitian selanjutnya dapat dikembangkan dengan menggunakan dua alternatif ukuran kunci yang lain yaitu kunci 512 bit dan 1024 bit.

2) Kompleksitas yang dibahas hanya kompleksitas waktu algoritmanya saja, diharapkan pada penelitian selanjutnya dapat menganalisis kompleksitas ruang algoritma tersebut.

(44)

BAB 2

LANDASAN TEORI

2.1 Kriptografi

Secara etimologi kata kriptografi (cryptography) berasal dari bahasa Yunani, yaitu kryptos yang artinya tersembunyi dan graphein yang artinya tulisan. Definisi kriptografi adalah ilmu yang mempelajari metode untuk mengirimkan pesan secara rahasia (dalam bentuk dienkripsi atau disamarkan), sehingga hanya penerima pesan yang dapat membaca dan memahami pesan tersebut (Mollin, 2007). Tujuan kriptografi meliputi empat aspek sebagai berikut (Kurniawan, 2004):

1) Kerahasiaan (confidentiality)

Kerahasiaan merupakan tujuan kriptografi untuk menjaga agar informasi atau pesan yang ada tidak dapat dibaca oleh pihak-pihak yang tidak berhak.

2) Integritas data (data integrity)

Integritas data merupakan tujuan kriptografi untuk menjamin bahwa pesan masih asli atau belum pernah dimanipulasi oleh pihak yang tidak berhak selama proses pengiriman.

3) Otentikasi (authentication)

Otentikasi merupakan tujuan kriptografi yang berhubungan dengan identifikasi. Dalam hal ini akan diidentifikasi tentang kebenaran pihak-pihak yang berkomunikasi. Hal ini berkaitan erat dengan keaslian sumber pesan.

4) Anti penyangkalan (non-repudiation)

(45)

1) Menandatangani pesan (message signature)

Pesan ditandangani oleh pengirim. Pemberian tanda tangan adalah secara digital. Pesan yang sudah ditanda-tangani menunjukkan bahwa pesan tersebut otentik (baik otentik isi maupun otentik pengirim).

2) Menggunakan MAC (Message Authentication Code)

MAC adalah kode yang ditambahkan (append) pada pesan. Kode tersebut dibangkitkan oleh suatu algoritma, dan bergantung pada pesan dan kunci rahasia.

2.2 Tanda Tangan Digital (Digital Signature)

Tanda tangan digital (digital signature) adalah suatu mekanisme untuk menggantikan tanda tangan secara manual pada dokumen kertas (Ahmaddul, 2013). Yang dimaksud dengan tanda tanda digital bukanlah tanda tangan yang di-digitisasi dengan alat scanner, tetapi suatu nilai kriptografis yang bergantung pada pesan dan pengirim pesan (hal ini kontras dengan tanda tangan pada dokumen kertas yang bergantung hanya pada pengirim dan selalu sama untuk semua dokumen) (Munir, 2004).

Kegunaan tanda tangan adalah menyatakan pengesahan (data integrity) atas apa yang tercantum dalam dokumen tersebut dan menyatakan pertanggungjawaban penandatanganan (data original) atas apa yang tertulis dalam dokumen tersebut serta untuk mencegah suatu saat penandatangan mengingkari apa yang tertulis didokumen bertanda tangan (non-repudiation). Adapun aspek keamanan dan kerahasiaan (confidentiality) bukan disediakan dengan sistem tanda tangan digital, tetapi tanda tangan yang telah dienkripsikan terlebih dahulu menghasilkan sebuah public key dengan algoritma tertentu. Jika digital signature yang telah dienkripsi menggunakan kunci publik y, maka pada proses mendekripsikan kembali dengan kunci pribadi y bukan dengan kunci pribadi x (Ahmaddul, 2013).

(46)

2013):

1) Tanda tangan digital S didekripsi dengan menggunakan kunci publik (PK) pengirim pesan, menghasilkan pesan-ringkas semula h, sebagai berikut: h = DPK(S).

2) Pengirim kemudian mengubah pesan M menjadi pesan ringkas h’ dengan menggunakan fungsi hash yang sama dengan fungsi hash yang digunakan oleh pengirim.

3) Jika h’ = h, berarti tanda tangan yang diterima otentik berasal dari pengirim yang benar.

2.2.1 Cara kerja tanda tangan digital

[image:46.595.123.500.364.671.2]

Berikut cara kerja tanda tangan digital:

Gambar 2.1. Sistem kerja tanda tangan digital

(47)

Tanda tangan digital menggunakan “public key cryptography” (kriptografi kunci publik), dimana algoritmanya menggunakan dua buah kunci, yang pertama adalah kunci untuk membentuk tanda tangan digital atau mengubah data ke bentuk lain yang tidak dapat dimengerti, dan yang kedua digunakan untuk verifikasi tanda tangan digital ataupun mengembalikan pesan ke bentuk semula. Konsep ini juga dikenal sebagai “assymmetric cryptosystem” (sistem kriptografi non simetris).

Sistem kriptografi ini menggunakan kunci privat, yang hanya diketahui oleh penandatangan dan digunakan untuk membentuk tanda tangan digital, serta kunci publik, yang digunakan untuk verifikasi tanda tangan digital. Jika beberapa orang ingin memverifikasi suatu tanda tangan digital yang dikeluarkan oleh seseorang, maka kunci publik tersebut harus disebarkan ke orang-orang tersebut. Kunci privat dan kunci publik ini sesungguhnya secara matematis ‘berhubungan’ (memenuhi persamaan-persamaan dan kaidah-kaidah tertentu). Walaupun demikian, kunci privat tidak dapat ditemukan menggunakan informasi yang didapat dari kunci publik.

Proses lain yang tak kalah penting adalah “fungsi hash”, digunakan untuk membentuk sekaligus memverifikasi tanda tangan digital. Fungsi hash adalah sebuah algoritma yang membentuk representasi digital atau semacam “sidik jari” dalam bentuk “nilai hash” (hash value) dan biasanya jauh lebih kecil dari dokumen aslinya dan unik hanya berlaku untuk dokumen tersebut. Perubahan sekecil apapun pada suatu dokumen akan mengakibatkan perubahan pada “nilai hash” yang berkorelasi dengan dokumen tersebut. Fungsi hash yang demikian disebut juga “fungsi hash satu arah”, karena suatu nilai hash tidak dapat digunakan untuk membentuk kembali dokumen aslinya.

Oleh karenanya, fungsi hash dapat digunakan untuk membentuk tanda tangan digital. Fungsi hash ini akan menghasilkan “sidik jari” dari suatu dokumen (sehingga unik hanya berlaku untuk dokumen tersebut) yang ukurannya jauh lebih kecil daripada dokumen aslinya serta dapat mendeteksi apabila dokumen tersebut telah diubah dari bentuk aslinya.

Penggunaan tanda tangan digital memerlukan dua proses, yaitu dari pihak penandatangan serta dari pihak penerima. Secara rinci kedua proses tersebut dapat dijelaskan sebagai berikut:

(48)

bahwa tanda tangan digital yang sama dapat dihasilkan dari dua dokumen serta kunci privat yang berbeda.

2) Verifikasi tanda tangan digital adalah proses pengecekan tanda tangan digital dengan mereferensikan ke dokumen asli dan kunci publik yang telah diberikan, dengan cara demikian dapat ditentukan apakah tanda tangan digital dibuat untuk dokumen yang sama menggunakan kunci privat yang berkorespondensi dengan kunci publik.

Untuk menandatangani sebuah dokumen atau informasi lain, penandatangan pertama-tama membatasi secara tepat bagian-bagian mana yang akan ditandatangani. Informasi yang dibatasi tersebut dinamakan “message”. Kemudian aplikasi tanda tangan digital akan membentuk nilai hash menjadi tanda tangan digital menggunakan kunci privat. Tanda tangan digital yang terbentuk adalah unik baik untuk message dan juga kunci privat.

Umumnya, sebuah tanda tangan digital disertakan pada dokumennya dan juga disimpan dengan dokumen tersebut juga. Bagaimanapun, tanda tangan digital juga dapat dikirim maupun disimpan sebagai dokumen terpisah, sepanjang masih dapat diasosiasikan dengan dokumennya. Karena tanda tangan digital bersifat unik pada dokumennya, maka pemisahan tanda tangan digital seperti itu merupakan hal yang tidak perlu dilakukan.

Proses pembentukan dan verifikasi tanda tangan digital memenuhi unsur-unsur paling penting yang diharapkan dalam suatu tujuan legal, yaitu:

1) Otentikasi penandatangan: Jika pasangan kunci publik dan kunci privat berasosiasi dengan pemilik sah yang telah didefinisikan, maka tanda tangan digital akan dapat menghubungkan/mengasosiasikan dokumen dengan penandatangan. Tanda tangan digital tidak dapat dipalsukan, kecuali penandatangan kehilangan kontrol dari kunci privat miliknya.

(49)

3) Penegasan: Membuat tanda tangan digital memerlukan penggunaan kunci privat dari penandatangan. Tindakan ini dapat menegaskan bahwa penandatangan setuju dan bertanggung jawab terhadap isi dokumen.

4) Efisiensi: Proses pembentukan dan verifikasi tanda tangan digital menyediakan tingkat kepastian yang tinggi bahwa tanda tangan yang ada merupakan tanda tangan sah dan asli dari pemilik kunci privat. Dengan tanda tangan digital, tidak perlu ada verifikasi dengan melihat secara teliti (membandingkan) antara tanda tangan yang terdapat di dokumen dengan contoh tanda tangan aslinya seperti yang biasa dilakukan dalam pengecekan tanda tangan secara manual.

2.3 Bilangan Prima

Bilangan prima adalah suatu bilangan bulat positif yang hanya habis dibagi bilangan 1 (satu) dan bilangan itu sendiri. Misalnya angka 7, karena 7 habis dibagi 1 tetapi 7 tidak habis dibagi bilangan bulat positif yang lain, dapat disimpulkan bahwa 7 merupakan bilangan prima. Semua bilangan prima merupakan bilangan ganjil kecuali angka 2. 2 adalah satu-satunya bilangan prima yang genap, karena bilangan genap selain 2 pasti habis dibagi 2 yang menyebabkan bilangan tersebut tidak memenuhi syarat dari definisi bilangan prima.

Semua bilangan bulat lebih besar dari satu yang bukan merupakan bilangan prima disebut bilangan komposit. Dapat dikatakan, bilangan komposit merupakan bilangan yang mempunyai lebih dari 2 faktor bilangan bulat positif. Misalnya angka 9. Karena angka 9 habis dibagi 1, 3, dan 9, dapat disimpulkan bahwa 9 bukan merupakan bilangan prima tetapi bilangan komposit.

Bilangan prima secara matematis jumlahnya tidak terhingga. Hal ini telah dibuktikan oleh Euclid (300 SM) dalam buku IX Elements. Jadi, sebanyak apapun kita menghitung, kita pasti akan menemukan bilangan prima walaupun makin besar bilangan prima maka jarak suksesornya akan makin besar juga, sehingga bilangan prima menjadi semakin jarang pada bilangan besar.

(50)

penyaringan terhadap suatu kumpulan bilangan menjadi kumpulan bilangan prima dengan mengeliminasi bilangan yang bukan bilangan prima. Lebih jelasnya, metode Sieve of Eratosthenes digambarkan pada langkah-langkah berikut:

1) Terdapat sebuah larik bilangan dari 2 sampai N.

2) Bilangan terkecil yang tidak dicoret adalah bilangan prima. 3) Coret bilangan ini dan semua kelipatan bilangan ini dalam larik.

4) Ulangi langkah 2 dan 3 sampai semua bilangan dalam larik telah dicoret. Kita dapat menerapkan teorema tentang bilangan komposit yang telah disebutkan sebelumnya ke dalam metode ini untuk membuatnya lebih mangkus, sehingga langkah-langkahnya menjadi:

1) Terdapat sebuah larik bilangan dari 2 sampai N.

2) Bilangan terkecil yang tidak dicoret adalah bilangan prima. 3) Coret semua kelipatan bilangan ini dalam larik.

4) Ulangi langkah 2 dan 3 sampai mencapai √� (pembulatan). 5) Semua bilangan yang belum dicoret adalah bilangan prima.

2.4 Greatest Common Divisor (GCD)

Faktor persekutuan terbesar (Greatest Common Divisor) dari dua bilangan bulat a dan b, dimana keduanya tidak sama dengan nol, adalah bilangan bulat terbesar yang membagi habis a dan b dinotasikan dengan GCD (a, b). Dua buah bilangan a dan b disebut relatif prima apabila GCD (a, b) = 1 (Kaspar, 2006).

2.5 Logaritma Diskrit

Logaritma diskrit adalah fungsi kebalikan dari persamaan eksponensial pada aritmatika modular yang dinyatakan pada persamaan:

u = gx mod n ………..(1) Bilangan bulat x dikatakan sebagai logaritma diskrit dari u dengan basis g mod n atau lebih lengkapnya dapat dinyatakan:

(51)

Banyak skema kriptografi yang meletakkan dasar keamanannya pada kesulitan alami di dalam komputasi logaritma diskrit, diantaranya adalah skema kriptografi kunci publik ElGamal, Digital Signature Algorithm (DSA) dan skema kriptografi Cramer-Shoup (Stallings. 2003).

2.6 Fungsi Hash

Fungsi hash merupakan fungsi yang menerima masukan string yang panjangnya sembarang kemudian mentransformasikannya menjadi string keluaran yang panjangnya tetap (fixed). Umumnya berukuran jauh lebih kecil daripada ukuran string semula. Fungsi hash (dilambangkan dengan h(k)) bertugas untuk mengubah k (key) menjadi suatu nilai dalam interval [0....X], dimana "X" adalah jumlah maksimum dari record-record yang dapat ditampung dalam tabel. Jumlah maksimum ini bergantung pada ruang memori yang tersedia. Fungsi hash yang ideal adalah mudah dihitung dan bersifat acak, agar dapat menyebarkan semua key. Dengan key yang tersebar, berarti data dapat terdistribusi secara seragam tabrakan dapat dicegah. Sehingga kompleksitas waktu model hash dapat mencapai Θ(1), dimana kompleksitas tersebut tidak ditemukan pada struktur model lain.

Ada dua macam fungsi hash. Pertama adalah fungsi hash tanpa kunci, fungsi hash semacam ini dapat dihitung oleh siapa saja. Kedua adalah fungsi hash dengan kunci, hanya orang yang memiliki kunci saja yang dapat menghitung message digest yang dihasilkan (Menezes et al. 1996).

2.6.1 Fungsi hash SHA-1

SHA-1 merupakan algoritma hash standar yang digunakan pada DSA. Algoritma ini dirancang oleh NIST pada tahun 1993. Algoritma SHA-1 mampu menerima input pesan maksimal 264 bit dan menghasilkan message digest dengan panjang 160 bit. SHA-1 aman karena didesain untuk tidak memungkinkan mendapatkan pesan yang berhubungan dengan message digest, atau untuk menemukan dua pesan yang berbeda yang menghasilkan message digest yang sama (Menezes et. al 1996).

(52)

masing panjangnya adalah 512 bit. Akibat pembagian ini maka jumlah bit pada blok terakhir akan lebih kecil atau sama dengan 512 bit. Selanjutnya blok terakhir ini akan mengalami message padding. Proses pembentukan message padding:

1) Input pesan yang masuk dalam bentuk American Standard Code for Information Interchange (ASCII) diubah kedalam rangkaian bit, dan kemudian dihitung panjang rangkaian bit (K).

2) Selanjutnya rangkaian bit ini dibagi menjadi blok-blok dengan panjang masing-masing 512 bit. Blok terakhir panjangnya akan lebih kecil atau sama dengan 512 bit.

3) Pada blok terakhir pesan, dilakukan penambahan bit-bit isian (padding). Bit yang digunakan sebagai bit isian adalah bit “1” diikuti sejumlah bit “0” sehingga:

- Jika panjang blok terakhir pesan lebih kecil dari 448 bit, maka tambahkan bit “1” pada posisi bit paling akhir, diikuti dengan beberapa bit “0” sehingga total panjang bit setelah proses tersebut adalah 448 bit.

- Jika panjang blok terakhir pesan lebih besar atau sama dengan 448 bit, maka tambahkan bit “1” pada posisi bit paling akhir diikuti dengan beberapa bit “0” sehingga total panjang bit setelah proses tersebut adalah 512 bit. Kemudian buat 448 bit baru yang isinya bit “0”.

- Jika panjang blok terakhir pesan sama dengan 512 bit, maka buat blok baru untuk menampung proses message padding. Bit pertama dari blok baru diisi bit “1”, sedangkan bit-bit berikutnya diisi dengan bit “0” sampai dengan panjang bit 448.

(53)

padding dengan menambahkan “1” pada posisi bit paling akhir, dan tambahkan “0” sehingga panjang total bit setelah proses padding ini adalah 448 bit. 2. Penambahan panjang bit

Setelah proses message padding, jumlah bit blok terakhir adalah 448 bit. Representasikan K ke dalam bilangan biner untuk memperoleh 64 bit terakhir, agar total panjang blok terakhir 512 bit. Urutan bit paling kanan dijadikan low order. Jika K > 264 maka hanya low order dari 64 bit saja yang akan digunakan. Misalkan panjang pesan asli (K) = 24 bit dan direpresentasikan ke dalam bilangan biner 16 bit adalah 00000000 | 00011000. Nilai ini dijadikan 64 bit sehingga: 00000000 | 00000000 | 00000000 | 00000000 | 00000000 | 00000000 | 00000000 | 00011000

Nilai di atas ditambahkan pada langkah (1), sehingga total panjang bit adalah 512 bit. Berdasarkan contoh pada langkah 1 dan 2, didapatkan banyaknya blok pada pesan adalah satu.

3. Inisialisasi buffer

Untuk menyimpan nilai inisialisasi awal digunakan buffer H0, H1, H2, H3, H4, sedangkan untuk menyimpan nilai proses sementara digunakan buffer A, B, C, D, E. Nilai H0, H1, H2, H3, H4 sebagai inisialisasi awal adalah:

H0 = 67 45 23 01 H1 = EF CD AB 89 H2 = 98 BA DC FE H3 = 10 32 54 76 H4 = C3 D2 E1 F0

Nilai inisialisasi awal untuk H0, H1, H2, H3, H4 ini merupakan standar untuk implementasi algoritma SHA-1.

4. Memproses tiap blok (512) bit dari pesan

(54)

menjadi 80 subblok 32 bit (W0 sampai W79) menggunakan langkah berikut:

Wt = Mt untuk t = 0-15

Wt = ROTL1 (Wt-3 XOR Wt-8 XOR Wt-14 XOR Wt-16) untuk t=16 sampai t=79, dengan ROTLn (x) adalah operasi geser kiri putar melingkar dari x sebanyak n posisi.

- Variable kerja untuk menyimpan nilai hash ke i-l:

A = H0(i-l), B = H1(i-l), C = H2(i-l), D = H3(i-l), E = H4 E = H4(i-l) - Untuk setiap round didefenisikan fungsi ft:

ft(B,C,D) = (B AND C) XOR ((NOT B) AND D), untuk operasi t=0-19

ft(B,C,D) = B XOR C XOR D, untuk operasi t=20-39

ft(B,C,D) = (B AND C) XOR (B AND D) XOR (C AND D), untuk operasi t=40-59

ft(B,C,D) = B XOR C XOR D, untuk operasi t=60-79 - Diperlukan deret konstanta K(0), K(1),…K(79)

Kt = 5A827999, untuk operasi t = 0-19 Kt = 6ED9EBA1, untuk operasi t = 20-39 Kt = 8F1BBCDC, untuk operasi t = 40-59 Kt = CA62C1D6, untuk operasi t = 60-79

Nilai konstanta untuk K(0), K(1),…,K(79) merupakan standar untuk implementasi algoritma SHA-1

- Untuk setiap satu langkah operasi pada SHA-1, t=0 sampai t=79 dilakukan:

TEMP = ROTL5 (A) + ft (A, B, C) + E + Wt + Kt E=D; D=C; C=ROTL30(B); B=A; A=TEMP;

- Hasil akhir adalah: H0 = A + H0(i-l), H1 = B + H1(i-l), H2 = C + H2(i-l), H3 = C + H3(i-l), H4 = D + H4(i-l)

5. Output

(55)

yaitu buffer H0, H1, H2, H3, H4. Panjang message digest yang dihasilkan adalah 160 bit dan masing-masing buffer terdiri dari delapan digit heksadesimal.

2.6.2 Fungsi hash SHA-2

Algoritma SHA-2 merupakan pengembangan dari algoritma SHA-1 yang memuat banyak perubahan. Algoritma ini didesain oleh National Security Agency (NSA) of United States dan dipublikasikan pada tahun 2001 oleh NIST sebagai standar bagi pemrosesan informasi federal bagi Amerika Serikat atau yang biasa disebut Federal Information Processing Standard (FIPS).

Algoritma SHA-2 ini terdiri dari beberapa algoritma berdasarkan panjang bit yang digunakan/dihasilkan sebagai nilainya yaitu SHA-224, SHA-256, SHA-384, SHA-512. Algoritma SHA-2 ini menggunakan beberapa operasi dasar dalam teknik kriptografi, yaitu operasi AND, OR, XOR, SHIFT (right), dan ROTATE (right). SHA-2 ini mengacu pada SHA-256.

SHA-256 adalah salah satu algoritma fungsi hash yang relatif masih baru. Algoritma ini dirancang oleh The National Institute of Standards and Technology (NIST) pada tahun 2002. SHA-256 menghasilkan message digest dengan panjang 256 bit.

2.7 Kompleksitas Algoritma

Satu jenis masalah dapat mempunyai banyak algoritma penyelesaian. Algoritma yang digunakan tidak saja harus benar, namun juga harus efisien. Efisiensi suatu algoritma dapat diukur dari kebutuhan ruang memori dan waktu eksekusi algoritma. Algoritma yang efisien adalah algoritma yang meminimumkan kebutuhan ruang dan waktu. Dengan menganalisis beberapa algoritma untuk satu jenis masalah, dapat diidentifikasi satu algoritma yang paling efisien. Besaran yang digunakan untuk menjelaskan model pengukuran ruang dan waktu ini adalah kompleksitas algoritma.

(56)

menyelesaikan masalahnya mempunyai kompleksitas yang tinggi. Kompleksitas algoritma terdiri dari dua macam yaitu kompleksitas ruang dan kompleksitas waktu. Dalam penelitian ini yang dibahas hanya kompleksitas waktu.

Kompleksitas waktu dinyatakan oleh T(n), diukur dari jumlah tahapan komputasi yang dibutuhkan untuk menjalankan algoritma sebagai fungsi dari ukuran masukan n, dimana ukuran masukan n merupakan jumlah data yang diproses oleh sebuah algoritma. Dengan menggunakan kompleksitas waktu dapat ditentukan laju peningkatan waktu yang diperlukan algoritma, seiring dengan meningkatnya ukuran masukan n. Karena kompleksitas waktu menjadi hal yang sangat penting, maka analisis kompleksitas algoritma tanda tangan digital akan dilakukan terhadap running time algoritma tersebut.

2.7.1 Kompleksitas waktu algoritma

Untuk menentukan kompleksitas waktu suatu algoritma, diperlukan ukuran masukan n serta running time algoritma tersebut. Pada umumnya, running time algoritma meningkat seiring dengan bertambahnya ukuran n. Sehingga, running time suatu algoritma dapat dinyatakan sebagai fungsi dari n. Ukuran masukan n untuk suatu algoritma bergantung pada masalah yang diselesaikan oleh algoritma tersebut.

Running time algoritma pada masukan n tertentu merupakan jumlah operasi atau langkah yang dieksekusi. Selanjutnya, jumlah waktu yang konstan diperlukan untuk mengeksekusi setiap baris pseudocode (kode semu). Satu baris dapat memiliki jumlah waktu yang berbeda dari baris lain. Namun asumsikan bahwa setiap pelaksanaan baris ke-i membutuhkan waktu sebesar ci, dimana ci adalah konstanta.

Dalam menentukan running time suatu baris pada pseudocode (kode semu), kalikan konstanta ci dengan jumlah waktu yang diperlukan untuk mengeksekusi baris tersebut. Untuk kasus dimana terdapat perintah loop, while atau for dengan panjang n, maka perintah tersebut dieksekusi dengan waktu n + 1. Sedangkan untuk baris berisi komentar, dinyatakan sebagai baris yang tidak dieksekusi, sehingga jumlah waktu untuk baris tersebut adalah nol.

(57)

dieksekusi akan memiliki pengaruh besar ci n pada running time total (T(n)). Setelah diperoleh bentuk fungsi T(n), dapat ditentukan bentuk dari algoritma tersebut dengan menggunakan notasi asimptotik Ο. Dengan ditentukannya bentuk algoritma, maka dapat diramalkan berapa besar peningkatan running time jika ukuran masukan n ditingkatkan.

Berdasarkan waktu eksekusi program, T(n) dapat menentukan growth rate-nya, yaitu laju pertumbuhan waktu terhadap variasi ukuran input. Sebagai contoh, analisis suatu algoritma menghasilkan T(n) = an2 + bn + c, dengan a, b, c adalah suatu konstanta, maka dapat dikatakan grow rate algoritma tersebut adalah n2 yang merupakan bagian paling signifikan pada polinomial an2 + bn + c. Nilai-nilai konstanta a, b, c tergantung pada jenis komputer dan platform bahasa pemrograman yang hanya dapat ditentukan melalui percobaan eksekusi program (Kaspar, 2006).

Kompleksitas komputasi dari suatu algoritma memberikan gambaran umum bagaimana perubahan T(n) terhadap n. Kompleksitas waktu ini tidak dipengaruhi oleh faktor-faktor nonteknis implementasi seperti bahasa pemrograman ataupun sarana perangkat lunak tertentu. Dalam platform uji yang seragam suatu algoritma dengan growth rate yang rendah, misalkan log n, atau n log n, lebih cepat jika dibandingkan dengan algoritma yang memiliki growth rate lebih besar, misalnya n2, n3, n! dan nn.

2.8 Notasi Asimptotik

Untuk nilai n cukup besar, bahkan tidak terbatas, dilakukan analisis efisiensi asimptotik dari suatu algoritma untuk menentukan kompleksitas waktu yang sesuai atau disebut juga kompleksitas waktu asimptotik. Notasi yang digunakan untuk menetukan kompleksitas waktu asimptotik dengan melihat waktu tempuh (running time) algoritma adalah notasi asimptotik (asymptotic notation). Notasi asimptotik didefenisikan sebagai fungsi dengan domain himpunan bilangan asli N = {0, 1, 2, …} (Cormen et al, 2009 : 43).

(58)
[image:58.595.223.446.253.481.2]

Notasi big-oh pertama kali diperkenalkan oleh seorang teoritis bilangan bernama Paul Bachmann pada tahun 1894, didalam buku keduanya yang berjudul Analytische Zahlentheorie (“analytic number teory”). Dalam teori kompleksitas komputasi, notasi big-oh sering digunakan untuk menjelaskan bagaimana ukuran data masukan mempengaruhi sebuah kegunaan algoritma dari sumber daya komputasi (biasanya running time atau memori). Definisi pertama dalam pengukuran kompleksitas suatu masalah adalah big-oh (Weiss dan Mark Allen, 1996: 161).

Gambar 2.2. Grafik fungsi big-oh

Untuk fungsi g(n), kita definisikan O(g(n)) sebagai big-oh dari n, sebagai himpunan: O(g(n)) = {f(n) : ada konstanta positif c dan n0, sedemikian rupa untuk semua n n0, sehingga 0 ≤ f(n) ≤ cg(n)}.

f(n) secara intuitif merupakan himpunan seluruh fungsi yang rate of growth-nya adalah sama atau lebih kecil dari g(n).

g(n) adalah asymptotic upper bound untuk f(n).

2.8.2 Big-omega (Ω)

(59)
[image:59.595.204.430.84.323.2]

Gambar 2.3. Grafik fungsi big-omega

Untuk fungsi g(n), kita definisikan Ω(g(n)) sebagai big-omega dari n, sebagai himpunan:

Ω(g(n)) = {f(n) : ada konstanta positif c dan n0, sedemikian rupa untuk semua n n0, sehingga 0 ≤ cg(n) ≤ f(n) }.

f(n) secara intuitif merupakan himpunan seluruh fungsi yang rate of growth-nya adalah sama atau lebih tinggi dari g(n).

g(n) adalah asymptotic lower bound untuk f(n).

2.8.3 Big theta (Θ)

(60)
[image:60.595.200.434.84.326.2]

Gambar 2.4. Grafik fungsi big-theta

Untuk fungsi g(n), kita definisikan Θ(g(n)) sebagai big-theta dari n, sebagai himpunan: Θ(g(n)) = {f(n) : ada konstanta positif c1, c2 dan n0, sedemikian rupa untuk semua n ≥ n0, sehingga 0 ≤ c1g(n) ≤ f(n) ≤ c1g(n)}.

f(n) merupakan Θ(g(n)) pada nilai antara c1 sampe c2. g(n) adalah asymptotically tight bound untuk f(n).

Secara intuitif merupakan himpunan seluruh fungsi yang rate of growth-nya adalah sama dengan g(n).

2.9 Algoritma

Istilah algoritma pertama kali diperkenalkan oleh Abu Ja’far Muhammad ibn Musa Al -Khuwarizmi dalam buku aljabarnya. Dalam buku tersebut algoritma disebut sebagai suatu metode khusus yang digunakan untuk menyelesaikan suatu masalah. Dalam buku Introduction to Algorithms, Cormen (2009) menyatakan bahwa algoritma merupakan deretan langkah-langkah komputasi yang mentransforma

Gambar

Gambar 3.4. Activity diagram pembuatan tanda tangan digital
Tabel 3.4. List bilangan 2 sampai 100
Tabel 3.9. List bilangan prima dari 2 sampai 100
Tabel 3.11. Notasi big Θ pada pseudocode fungsi hash SHA-1
+7

Referensi

Dokumen terkait

4.1 Kesimpulan Berdasarkan pembahasan yang terdapat pada bab III mengenai spektrum laplace graf konjugasi dari grup dihedral bilangan ganjil, maka dapat diperoleh kesimpulan

4.1 Kesimpulan Berdasarkan pembahasan yang ada, maka dapat diambil kesimpulan fomula eksentrisitas total dan indeks konektivitas eksentrik dari komplemen graf konjugasi dari

Pada proses pengujian yang dilakukan dapat diketahui kemampuan dari system yang dibuat mampu mengenali segala aktifitas yang dilakukan intruder dalam usaha untuk menyusup

Tujuan penelitian ini adalah (1) Menemukan hubungan atau pengaruh dari variabel temperatur lingkungan kerja, berat badan, tingkat beban kerja terhadap denyut

Suatu organisasi yang belum menerapkan sebuah sistem di dalamnya akan mengalami kesulitan dalam melakukan pekerjaannya ataupun melakukan managemen di dalam

Melakukan diskusi cara menggunakan operasi hitung tambah, kurang, kali atau bagi dalam menyelesaikan masalah sehari-hari yang berkaitan dengan bilangan bulat dengan

dimasa yang modern ini para pengguna teknologi internet semakin berkembang, ini berdampak positif karna dapat mempermudah pekerjaan manusia tetapi dapat