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

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

Situmorang, Kaspar. 2006. Analisis Keamanan Dan Kinerja Algoritma Digital Signature Algorithm (DSA) Pada Proses Pembentukan dan Verifikasi Tanda Tangan Digital. Skripsi. Institut Pertanian Bogor.


(2)

Edition. Pearson Education: New Jersey.

Syafriadi, Muhammad. 2006. Analisis Kecepatan dan Keamanan Algoritma Secure Hash Algorithm 256 (SHA-256) Untuk Otentikasi Pesan Teks. Skripsi. Institut Pertanian Bogor


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

Untuk mengidentifikasi masalah tersebut digunakan diagaram ishikawa (fishbone diagram). Diagram ishikawa adalah sebuah alat grafis yang digunakan untuk mengeksplorasi dan menampilkan pendapat tentang komponen inti suatu kondisi dalam organisasi. Diagram ini juga dapat menyusuri sumber-sumber penyebab suatu masalah. Identifikasi masalah menggunakan diagram ini akan membantu menganalisis kebutuhan sistem yang akan dikembangkan. Berikut adalah diagram Ishikawa analisis masalah penandatangan file .txt pada gambar 3.1.


(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

Identifikasi 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

Activity diagrams menggambarkan berbagai alir aktivitas dalam sistem yang sedang dirancang, bagaimana masing-masing alir berawal, decision yang mungkin terjadi, dan bagaimana mereka berakhir. Activity diagram juga dapat menggambarkan proses paralel yang mungkin terjadi pada beberapa eksekusi. Berikut activity diagram yang terdapat pada aplikasi tanda tangan digital ini:


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

Sequence diagram pada aplikasi tanda tangan digital ini terbagi menjadi beberapa bagian, yaitu:


(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

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


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

SHA-1 disebut aman (secure) karena dirancang sedemikian rupa sehingga secara komputasi tidak mungkin menemukan pesan yang berkoresponden dengan message digest yang diberikan. Algoritma SHA-1 menerima masukan berupa pesan dengan ukuran maksimum 264 bit (2.147.483.648 gigabyte) dan menghasilkan message


(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

Sepasang kunci diperlukan untuk membangkitkan nilai tanda tangan digital pada dokumen dan memverifikasi keabsahan dokumen. Kunci-kunci tersebut adalah kunci


(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

Tanda tangan digital (digital signature) merupakan protokol yang dijalankan untuk dapat memverifikasi keaslian dan keutuhan dari pesan yang akan dikirimkan dalam suatu saluran komunikasi. Berikut flowchart dari prosedur pembentukan tanda tangan digital pada algoritma 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

Proses verifikasi adalah proses memastikan keaslian si pengirim. Artinya apakah yang mengirimkan itu asli dari orang yang bersangkutan. Berikut flowchart untuk verifikasi pada algoritma 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

Proses pembentukan sepasang kunci pada algoritma GOST digital signature ini dapat dilihat pada flowchart dari gambar 3.13. dimana proses ini akan menghasilkan sepasang kunci yang akan berguna untuk melakukan proses selanjutnya.


(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

Proses pembentukan tanda tangan digital merupakan proses hashing menggunakan SHA-256 yang dilakukan pada dokumen untuk mendapatkan message digest yang nantinya akan dienkripsi oleh kunci privat sehingga menghasilkan tanda tangan digital. Berikut flowchart untuk proses pembentukan tanda tangan pada algoritma GOST digital signature:


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

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

Analisis algoritma berfungsi untuk melihat faktor efisiensi dan efektifitas dari algoritma tersebut. Analisis algoritma dapat dilakukan terhadap suatu algoritma dengan melihat running time. Running time dari suatu algoritma adalah satuan waktu yang ditempuh atau diperlukan oleh suatu algoritma dalam menyelesaikan suatu masalah. Instruksi-instruksi program dieksekusi baris demi baris secara berurutan. Operasi yang dianalisis adalah operasi aritmatika dasar yaitu penjumlahan, pengurangan, perkalian dan operasi assignment, serta diasumsikan lamanya waktu eksekusi setiap operasi tersebut dalam satuan waktu.


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

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 10


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

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

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

Untuk mengetahui apakah penelitian ini telah memenuhi tujuan penelitian yang disampaikan pada bab 1, maka diperlukanlah pengujian sistem terhadap aplikasi yang dibangun dalam penelitian ini. Pada pengujian sistem terdapat dua tahapan yang dilakukan yaitu pengujian sistem pada aplikasi yang akan digunakan oleh pengirim, dan pengujian sistem pada aplikasi yang akan digunakan oleh penerima.


(37)

4.1.2.1 Halaman pembentukan sepasang kunci

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)

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.

Sistem akan melakukan proses hashing file kembali untuk menghasilkan message digest seperti yang dilakukan pada proses pembentukan tanda tangan digital, maka secara paralel tanda tangan digital yang diterima tadi akan didekripsi oleh kunci


(39)

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

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


(40)

Input6 11371 2193 2234

Input7 15545 2375 2401

Input8 21428 2982 3043

Input9 28120 3799 3892

Input10 50157 4412 4576

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)

Ukuran Input (KB)

Grafik DSA dan GOST digital signature terhadap proses pembentukan tanda tangan


(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

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)

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.

4) Dari analisis pengujian sistem dengan melihat running time-nya, DSA lebih cepat dibandingkan GOST digital signature algorithm. Dengan demikian DSA


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

3) File yang ditanda-tangani hanya berupa file .txt. Diharapkan untuk penelitian selanjutnya dapat menandatangani file .doc, .xls, .pdf, dan lain sebagainya.


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

Anti penyangkalan merupakan tujuan kriptografi untuk mencegah pihak yang mengirim pesan melakukan penyangkalan terhadap pesan yang dikirimnya. Tiga masalah yang terakhir dapat diselesaikan dengan teknik otentikasi pesan (message authentication) atau disingkat otentikasi saja. Dua alternatif yang digunakan untuk otentikasi dengan cara:


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

Teknik yang digunakan untuk membentuk tanda tangan digital adalah dengan fungsi hash dan melibatkan algoritma kriptografi kunci publik. Mula-mula pesan M ditransformasikan oleh fungsi hash H menjadi pesan ringkas h. Pesan ringkas tersebut dienkripsi dengan kunci privat (PK). Pengirim pesan: S = ESK(h). Hasil enkripsi (S) inilah yang disebut tanda tangan digital. Tanda tangan digital dapat ditambahkan pada pesan atau terpisah dari pesan dan dikirim secara bersamaan. Ditempat penerima, tanda


(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

Berikut cara kerja tanda tangan digital:

Gambar 2.1. Sistem kerja tanda tangan digital

Tanda tangan digital dibuat dengan menggunakan teknik kriptografi, suatu cabang dari matematika terapan yang menangani tentang pengubahan suatu informasi menjadi bentuk lain yang tidak dapat dimengerti dan dikembalikan seperti semula.


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

2) Otentikasi dokumen: Tanda tangan digital juga mengidentikkan dokumen yang ditandatangani dengan tingkat kepastian dan ketepatan yang jauh lebih tinggi daripada tanda tangan di atas kertas.


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

Sebagai contoh misalkan isi pesan adalah “abc”, maka ubah pesan tersebut ke dalam kode ASCII-nya, yaitu: a=97, b=98, c=99. Kemudian ubah representasi desimal dari kode ASCII tersebut ke dalam representasi binernya, yaitu: 01100001 | 01100010 | 01100011, panjang pesan asli ini (K) adalah 24 bit. Karena panjang bit pesan asli kurang dari 448 bit, maka dilakukan proses


(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

Langkah ini terdiri dari empat round, masing-masing round terdiri dari 20 operasi sehingga untuk setiap satu blok akan dilakukan operasi sebanyak 80 kali. Berdasarkan contoh sebelumnya (pesan terdiri dari 1 blok), maka operasi dibawah ini akan dilakukan sebanyak 80 kali.


(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

Setelah semua blok 512 bit dari pesan selesai diproses maka akan dihasilkan output. Blok terakhir menghasilkan message digest dari pesan yang dimasukkan


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

Algoritma memiliki kompleksitas, dimana ukuran kompleksitas merupakan acuan utama, untuk mengetahui kecepatan dari algoritma tersebut. Kompleksitas dari suatu algoritma merupakan ukuran seberapa banyak komputasi yang dibutuhkan


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

Selanjutnya, running time dari algoritma adalah jumlah dari running time setiap perintah yang dieksekusi. Sebuah perintah yang membutuhkan ci langkah n waktu untuk


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

Kompleksitas waktu asimptotik terdiri dari tiga macam. Pertama, keadaan terbaik (best case) dinotasikan dengan Ω(g(n)) (Big-Omega), keadaan rata-rata (average case) dilambangkan dengan notasi Θ(g(n)) (Big-Theta) dan keadaaan terburuk (worst case) dilambangkan dengan Ο(g(n)) (Big- Οh).


(58)

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 (Ω)

Defenisi kedua dalam pengukuran kompleksitas suatu masalah adalah big omega. (Weiss dan Mark Allen, 1996 :161).


(59)

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 (Θ)

Definisi ketiga dalam pengukuran kompleksitas suatu masalah adalah big theta. (Weiss dan Mark Allen, 1996 :161).


(1)

vi

ABSTRAK

File .TXT merupakan dokumen elektronik yang memiliki sifat terbuka yaitu isinya dapat dibaca dan diubah oleh pihak-pihak yang tidak berhak. Hal ini menyebabkan faktor keamanan dari file sangat tidak terjamin. Untuk mengamankan sebuah file tersebut dapat dilakukan dengan teknik kriptografi, salah satunya adalah tanda tangan digital. Tanda tangan digital merupakan suatu mekanisme untuk menjamin keaslian suatu file dan menjaga supaya pengirim file dalam suatu waktu tidak dapat menyangkal bahwa dirinya telah mengirimkan file tersebut. Oleh karena itu, dengan adanya tanda tangan digital maka keaslian pengirim dan integritas data file terjamin. Dengan tujuan tersebut, dirancanglah sebuah aplikasi tanda tangan digital agar memudahkan pengguna untuk menvalidasi data file. Algoritma yang digunakan pada aplikasi ini adalah algoritma DSA dan GOST Digital Signature. Algoritma ini menggunakan fungsi hash SHA-1 dan SHA-256 yang mengubah pesan dengan panjang sembarang menjadi pesan ringkas (message digest) dengan panjang tetap (160 bit dan 256 bit), sehingga jika ada satu karakter saja dari isi file yang diubah maka kunci publik yang tersedia tidak dapat memverifikasi file. Hal ini membuktikan bahwa file tersebut sudah tidak asli. Algoritma yang digunakan tidak saja harus benar, namun juga harus efisien dalam penggunaan waktu. Efisiensi waktu dari algoritma tersebut dapat dilihat dari kompleksitas waktu rata-ratanya yang dilambangkan dengan notasi big theta (Θ). Running time dari suatu algoritma berbeda-beda tergantung pada panjang input yang diberikan. Dengan demikian, analisis running time algoritma tersebut dapat menentukan waktu proses komputasi terhadap ukuran input (n) yang diberikan.

Kata Kunci : kriptografi, fungsi hash, tanda tangan digital, DSA, GOST digital signature, big theta, running time.


(2)

vii

A COMPARATIVE ANALYSIS DIGITAL SIGNATURE ALGORITHM AND GOST DIGITAL SIGNATURE ALGORITHM AT

DIGITAL SIGNATURE FILE .TXT

ABSTRACT

File .txt is electric document that has an extrovert which the content could be read and modified easily by everybody. It causes the safety factor of the file is not very secure. In order to it, we can use cryptography techniques, which one of a digital signature. Digital signature are a way to ensure the authenticity of a file and keep saving it, in order to the sender could not deny that he had sent the file. Therefore the presence of a digital signature so the authenticity of the sender and file data integrity is assured. With these goal, designed a digital signature application that enables users to validate the file. Algorithms that used in this application are DSA and GOST Digital Signature Algorithm. These algorithm use the SHA-1 and SHA-256 hash function that converts the document message from the length message into short message (message digest) with a fixed length (160 bits and 256 bits), so if there is one character only from the content file that altered the available public key can’t verified the file. This authenticate that the file is not original. Algorithm used not only correct but also efficient in the use of time. Efficiency of the algorithm can be seen from average time complexity that symbol is big theta notation (Θ). Running time from an algorithm is different from depending on the length of a given input. Therefore, analysis running time of algorithm can determine time computing process to the size (n) of a given input.

Keyword: cryptography, hash function, digital signature, DSA, GOST digital signature, big theta, running time


(3)

viii

DAFTAR ISI

Halaman

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak vi

Abstract vii

Daftar Isi viii

Daftar Tabel x

Daftar Gambar xi

Bab 1 Pendahuluan

1.1 Latar Belakang 1

1.2 Rumusan Masalah 2

1.3 Batasan Masalah 2

1.4 Tujuan Penelitian 3

1.5 Manfaat Penelitian 3

1.6 Metodologi Penelitian 3

1.7 Sistematika Penulisan 4

Bab 2 Landasan Teori

2.1 Kriptografi 6

2.2 Tanda Tangan Digital 7

2.2.1 Cara kerja tanda tangan digital 8

2.3 Bilangan Prima 11

2.3.1 Algoritma sieve of eratosthenes 11

2.4 Greatest Common Divisor (GCD) 12

2.5 Logaritma Diskrit 12

2.6 Fungsi Hash 12

2.6.1 Fungsi hash SHA-1 13

2.6.2 Fungsi hash SHA-2 16

2.7 Kompleksitas Algoritma 17

2.7.1 Kompleksitas waktu algoritma 18

2.8 Notasi Asimptotik 19

2.8.1 Big-oh (Ο) 19

2.8.2 Big-omega (Ω) 20

2.8.3 Big-theta (Θ) 21

2.9 Algoritma 22

2.9.1 Digital signature algorithm 23

2.9.1.1 Pembentukan sepasang kunci 24

2.9.1.2 Pembentukan tanda tangan digital 25 2.9.1.3 Proses verifikasi tanda tangan digital 26 2.9.2 GOST digital signature algorithm 27


(4)

ix

2.9.2.1 Pembentukan sepasang kunci 27

2.9.2.2 Pembentukan tanda tangan digital 28

2.9.2.3 Proses verifikasi tanda tangan digital 29 Bab 3 Analisis Dan Perancangan 3.1 Analisis Sistem 31 3.1.1 Analisis masalah 31 3.2 Pemodelan Sistem 32 3.2.1 Unified Modeling Language (UML) 32 3.2.1.1 Use case diagram 32

3.2.1.2 Activity diagram 33 3.2.1.3 Sequence diagram 35

3.2.2 Flowchart sistem 37 3.3 Analisis Algoritma 37 3.3.1 Analisis algoritma sieve of erathosthenes 38

3.3.2 Analisis algoritma SHA-1 41

3.3.3 Analisis algoritma SHA-256 44 3.3.4 Analisis digital signature algorithm (DSA) 47

3.3.4.1 Analisis proses pembentukan sepasang kunci DSA 47

3.3.4.2 Analisis pembentukan tanda tangan digital DSA 49

3.3.4.3 Analisis proses verifikasi tanda tangan digital DSA 51

3.3.5 Analisis GOST digital signature algorithm (GOST DSA) 52 3.3.5.1 Analisis proses pembentukan sepasang kunci GOST 53 3.3.5.2 Analisis pembentukan tanda tangan digital GOST 54 3.3.5.3 Analisis proses verifikasi tanda tangan digital GOST 56 3.4 Analisis Running Time 57 3.5 Perancangan Antar Muka (Interface) 58 3.5.1 Rancangan halaman pengirim 58 3.5.2 Rancangan halaman penerima 61 Bab 4 Implementasi Dan Pengujian Algoritma 4.1 Implementasi Algoritma 63

4.1.1 Spesifikasi perangkat keras dan perangkat lunak 63

4.1.2 Tampilan implementasi algoritma 63 4.1.2.1 Halaman pembentukan sepasang kunci 64 4.1.2.2 Halaman pembentukan tanda tangan digital 64 4.1.2.3 Halaman verifikasi tanda tangan digital 65

4.2 Pengujian Algoritma 66

Bab 5 Kesimpulan

5.1 Kesimpulan 69

5.2 Saran 70

Daftar Pustaka 71


(5)

x

DAFTAR TABEL

Halaman Tabel 3.1. Skenario use case pembentukan sepasang kunci 32 Tabel 3.2. Skenario use case pembentukan tanda tangan digital 33 Tabel 3.3. Skenario use case verifikasi tanda tangan digital 33

Tabel 3.4. List bilangan 2 sampai 100 38

Tabel 3.5. List kelipatan bilangan 2 dicoret 38

Tabel 3.6. List kelipatan bilangan 3 dicoret 38

Tabel 3.7. List kelipatan bilangan 5 dicoret 39

Tabel 3.8. List kelipatan bilangan 7 dicoret 39

Tabel 3.9. List bilangan prima dari 2 sampai 100 40

Tabel 3.10. Pseudocode pembangkit bilangan prima 40

Tabel 3.11. Notasi big Θ pada pseudocode fungsi hash SHA-1 42 Tabel 3.12. Notasi big Θ pada pseudocode fungsi hash SHA-256 45 Tabel 3.13. Notasi big Θ pada pseudocode pembentukan sepasang kunci DSA 48 Tabel 3.14. Notasi big Θ pada pseudocode pembentukan tanda tangan DSA 50 Tabel 3.15. Notasi big Θ pada pseudocode verifikasi tanda tangan digital DSA 52 Tabel 3.16. Notasi big Θ pada pseudocode sepasang kunci GOST DSA 54 Tabel 3.17. Notasi big Θ pada pseudocode tanda tangan digital GOST DSA 55 Tabel 3.18. Notasi big Θ pada pseudocode verifikasi tanda tangan GOST DSA 57 Tabel 4.1. Waktu proses pembentukan tanda tangan DSA dan GOST DSA 66 Tabel 4.2. Waktu proses verifikasi tanda tangan DSA dan GOST DSA 67


(6)

xi

DAFTAR GAMBAR

Halaman

Gambar 2.1. Sistem kerja tanda tangan digital 8

Gambar 3.1. Diagram ishikawa untuk analisis masalah 32 Gambar 3.2. Use case diagram tanda tangan digital 32 Gambar 3.3. Activity diagram pembentukan sepasang kunci 34 Gambar 3.4. Activity diagram pembuatan tanda tangan digital 34 Gambar 3.5. Activity diagram verifikasi tanda tangan digital 35 Gambar 3.6. Sequence diagram pembentukan sepasang kunci 36 Gambar 3.7. Sequence diagram pembentukan tanda tangan 36 Gambar 3.8. Sequence diagram verifikasi tanda tangan 36 Gambar 3.9. Flowchart tanda tangan digital file .txt 37 Gambar 3.10. Flowchart pembentukan message digest SHA-1 42 Gambar 3.11. Flowchart pembentukan sepasang kunci DSA 48 Gambar 3.12. Flowchart pembentukan tanda tangan digital DSA 50 Gambar 3.13. Flowchart verifikasi tanda tangan digital DSA 51 Gambar 3.14. Flowchart pembentukan sepasang kunci GOST DSA 53 Gambar 3.15. Flowchart pembentukan tanda tangan digital GOST DSA 55 Gambar 3.16. Flowchart verifikasi tanda tangan digital GOST DSA 56 Gambar 3.17. Rancangan halaman pembentukan sepasang kunci 59 Gambar 3.18. Rancangan halaman pembentukan tanda tangan digital 60 Gambar 3.19. Rancangan halaman verifikasi tanda tangan digital 61 Gambar 4.1. Tampilan halaman pembentukan sepasang kunci 64 Gambar 4.2. Tampilan halaman pembentukan tanda tangan digital 65 Gambar 4.3. Tampilan halaman verifikasi tanda tangan digital 66 Gambar 4.4. Garifk DSA dan GOST terhadap proses pembentukan tanda tangan 67 Gambar 4.5. Garifk DSA dan GOST terhadap proses verifikasi tanda tangan 68