Big-oh Big- Digital Signature Algorithm DSA

2.8.1 Big-oh

Ο 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 gn, kita definisikan Ogn sebagai big-oh dari n, sebagai himpunan: Ogn = {fn : ada konstanta positif c dan n , sedemikian rupa untuk semua n ≥ n , seh ingga 0 ≤ fn ≤ cgn}. fn secara intuitif merupakan himpunan seluruh fungsi yang rate of growth-nya adalah sama atau lebih kecil dari gn. gn adalah asymptotic upper bound untuk fn.

2.8.2 Big-

omega Ω Defenisi kedua dalam pengukuran kompleksitas suatu masalah adalah big omega. Weiss dan Mark Allen, 1996 :161. Universitas Sumatera Utara Gambar 2.3. Grafik fungsi big-omega Untuk fungsi gn, kita definisikan Ωgn sebagai big-omega dari n, sebagai himpunan: Ωgn = {fn : ada konstanta positif c dan n , sedemikian rupa untuk semua n ≥ n , sehingga 0 ≤ cgn ≤ fn }. fn secara intuitif merupakan himpunan seluruh fungsi yang rate of growth-nya adalah sama atau lebih tinggi dari gn. gn adalah asymptotic lower bound untuk fn.

2.8.3 Big theta

Θ Definisi ketiga dalam pengukuran kompleksitas suatu masalah adalah big theta. Weiss dan Mark Allen, 1996 :161. Universitas Sumatera Utara Gambar 2.4. Grafik fungsi big-theta Untuk fungsi gn, kita definisikan Θgn sebagai big-theta dari n, sebagai himpunan: Θgn = {fn : ada konstanta positif c 1 , c 2 dan n , sedemikian rupa untuk semua n ≥ n , sehingga 0 ≤ c 1 gn ≤ fn ≤ c 1 gn}. fn merupakan Θgn pada nilai antara c 1 sampe c 2 . gn adalah asymptotically tight bound untuk fn. Secara intuitif merupakan himpunan seluruh fungsi yang rate of growth-nya adalah sama dengan gn.

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 mentransformasikan data masukan input menjadi data keluaran output. Pertimbangan dalam pemilihan algoritma yang harus diperhatikan adalah sebagai berikut: 1 Algoritma harus benar. Artinya algoritma akan memberikan keluaran yang dikehendaki dari sejumlah masukan yang diberikan. Tidak peduli sebagus Universitas Sumatera Utara apapun algoritma, apabila memberikan keluaran yang salah maka algoritma tersebut tidak benar. 2 Kita harus mengetahui seberapa baik hasil yang dicapai oleh algoritma tersebut. Hal ini penting terutama pada algoritma untuk menyelesaikan suatu masalah yang memerlukan aproksimasi hasil hasil yang hanya berupa pendekatan. Algoritma yang baik harus mampu memberikan hasil yang sedekat mungkin dengan nilai yang sebenarnya. 3 Efisiensi waktu. Algoritma memberikan keluaran yang benar paling mendekati, tetapi harus menunggu berjam-jam untuk mendapatkan keluarannya, maka algoritma tersebut dinilai buruk dan tidak akan digunakan. Setiap orang menginginkan keluaran yang cepat.

2.9.1 Digital Signature Algorithm DSA

Digital Signature Algorithm DSA merupakan algoritma kriptografi yang didesain untuk otentikasi pesan dengan menggunakan teknologi kunci publik dan fungsi hash SHA-1. Keamanan algoritma ini terletak pada kesulitan komputasi logaritma diskrit pada field prime GFp. Menurut Stallings 2003, algoritma ini didedikasikan hanya untuk tanda tangan digital bukan enkripsi. Secara singkat, DSA digunakan untuk oleh pengirim signatory untuk membuat tanda tangan pada pesan, kemudian diverifikasi oleh penerima verifier untuk memeriksa keaslian tanda tangan tersebut. Dengan asumsi masing-masing signatory memiliki kunci privat dan publik. Kunci privat digunakan pada proses pembentukan tanda tangan digital signature generation dan kunci publik digunakan pada proses verifikasi tanda tangan digital signature verification. DSA beroperasi pada panjang kunci yang bervariasi dari 512 bit sampai dengan 1024 bit. Khusus untuk penelitian ini, penggunaan akan dibatasi hanya pada panjang 80 bit. Tiga proses utama algoritma DSA, terdiri atas pembentukan sepasang kunci, pembentukan tanda tangan digital, dan proses verifikasi tanda tangan digital. Menezes et al. 1996. Universitas Sumatera Utara

2.9.1.1 Pembentukan sepasang kunci

Terdapat tiga parameter publik yang diketahui oleh sekelompok grup atau organisasi pada algoritma ini, yaitu p, q, dan g. Parameter p adalah bilangan prima dengan panjang 80 bit, q adalah bilangan sub prima yang merupakan faktor dari p - 1, dan g diperoleh dari persamaan h p-1q dengan h adalah bilangan bulat antara 1 sampai p - 1 dengan batasan g harus lebih besar dari 1. Selanjutnya, kunci privat x dibentuk dari bilangan bulat antara 1 sampai q - 1 yang dipilih secara acak. Adapun proses pembentukan kunci privat dengan publik selengkapnya adalah sebagai berikut: 1 Pilih sebuah bilangan prima p, dengan batasan 80 bit. Parameter p bersifat publik. 2 Pilih sebuah bilangan sub prima q dan merupakan faktor dari p - 1. Parameter q bersifat publik. 3 Hitung kunci publik g, dengan rumus: g = h p-1q mod p ……………………………. 3 Dimana h adalah bilangan bulat dengan 1 h p - 1, dan h p-1q mod p 1. 4 Pilih secara acak bilangan bulat x, dimana x q. Parameter x bersifat privat. 5 Kemudian hitung nilai y dengan rumus: y = g x mod p ………………………………… 4 6 Kunci privat p, q, g, x dan kunci publik p, q, g, y. Kunci privat x digunakan untuk pembentukan tanda tangan digital, sedangkan kunci publik y diberikan kepada siapa saja yang ingin memverifikasi tanda tangan pengirim. Berikut contoh perhitungan untuk pembentukan sepasang kunci DSA: 1 Pilih bilangan prima p dan q, yang dalam hal ini p -1 mod q = 0. p = 59419 q = 3301 memenuhi 3301 18 = 59419 – 1 2 Misal h = 100 maka: g = 100 59419-13301 mod 59419 g = 18870 3 Tentukan kunci rahasia x, yang dalam hal ini x q. x = 3223 4 Hitung kunci publik y: Universitas Sumatera Utara y = 18870 3223 mod 59419 y = 29245 5 Maka: Kunci privat = {59419, 3301, 18870, 3223} Kunci publik = {59419, 3301, 18870, 29245}

2.9.1.2 Pembentukan tanda tangan digital

Proses pembentukan tanda tangan digital signature generation pada DSA dimulai dari transformasi pesan M menjadi message digest yang dilakukan oleh fungsi hash SHA- 1. Pada algoritma ini pesan dengan panjang sembarang ditransformasikan kedalam ukuran yang tetap, kemudian proses dilanjutkan dengan menggunakan message digest, kunci privat pengirim bersama dengan parameter k identifier sebagai input. Untuk penjelasannya sebagai berikut: 1 Ubah pesan m menjadi message digest dengan fungsi hash SHA-1. 2 Pilih sebuah bilangan acak prima. Parameter k digunakan sebagai identifier penanda unik yang membedakan tiap kali penanda-tangan pesan dilakukan. 3 Kemudian hitung: r = g k mo d p mod q …………………........... 5 dan s = k -1 Hm + xr mod q …………………… 6 4 Kirim pesan m beserta tanda-tangan r dan s. Berikut contoh perhitungan untuk pembentukan tanda tangan DSA: 1 Hitung nilai hash dari pesan, misal Hm = 4321. 2 Tentukan bilangan acak k q. k = 997. k -1 = 997 59419-2 mod 59419 k -1 = 2907 mod 59419 3 Hitung r dan s sebagai berikut: r = 18870 997 mod 59419 mod 3301 r = 848 s = 2907 4321 + 3223 848 mod 3301 s = 2907 2737425 mod 3301 Universitas Sumatera Utara s = 183 4 Kirim pesan m dan tanda tangan r dan s. Output dari persamaan diatas adalah r dan s, yang merupakan tanda tangan digital dari pesan m. sebelum ditransmisikan, pengirim harus memeriksa, jika r = 0 atau s = 0, maka nilai k harus dibangkitkan ulang dan tanda tangan digital dihitung kembali. Jika r dan s tidak sama dengan nol, maka tanda tangan digital dapat ditransmisikan bersama dengan pesan m.

2.9.1.3 Proses verifikasi tanda tangan digital

Sebelum melakukan proses verifikasi pada pesan yang ditanda-tangani, parameter p, q dan g beserta dengan kunci publik dikirim. Untuk memverifikasi tanda tangan digital, verifier pertama memeriksa apakah 0 r ’ q dan 0 s’ q. jika kedua kondisi tersebut tidak dipenuhi maka tanda tangan digital harus ditolak. Sebaliknya, jika kedua kondisi terpenuhi, verifier melakukan: 1 Hitung nilai w dengan rumus: w = s -1 mod q …………………………………. 7 2 Hitung nilai u 1 dengan rumus: u 1 = Hm w mod q…………………………….. 8 3 Hitung nilai u 2 dengan rumus: u 2 = rw mod q ……………………………….. 9 4 Hitung nilai v dengan rumus: v = g u1 y u2 mod p mod q ………………………. 10 Apabila nilai v = r, maka tanda tangan sah belum ada diubah. Sebaliknya apabila nila v tidak sama dengan r maka telah ada pihak yang merubah tanda tangan tersebut. Berikut contoh perhitungan untuk verifikasi tanda tangan DSA: 1 Hitung nilai w: w = 183 -1 mod 3301 w = 183 3301-2 mod 3301 w = 469 2 Hitung nilai u 1 : u 1 = 4321 469 mod 3301. u 1 = 2026549 mod 3301 Universitas Sumatera Utara u 1 = 3036 3 Hitung nilai u 2 : u 2 = 848 469 mod 3301 u 2 = 397712 mod 3301 u 2 = 1592 4 Hitung nilai v: v = 18870 3036 29245 1592 mod 59419 mod 3301 v = 848 mod 3301 v = 848 Karena v = r, maka tanda tangan sah.

2.9.2 GOST digital signature algorithm