• 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!
25
0
0

Teks penuh

(1)

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.

(2)

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

(3)

tangan diverifikasi untuk dibuktikan keotentikannya dengan cara berikut (Ahmaddul, 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

(4)

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:

(5)

keamanan nilai hash maka seharusnya terdapat kemungkinan yang sangat kecil 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.

(6)

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.

2.3.1 Algoritma sieve of eratosthenes

(7)

matematikawan bernama Eratosthenes ini, sesuai dengan namanya, melakukan 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 GreatestCommonDivisor (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:

(8)

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

Proses pembentukan message digest dengan menggunakan algoritma SHA-1 terdiri dari lima langkah (Stallings 2003):

(9)

Input pesan pada algoritma SHA-1 dibagi menjadi blok-blok yang

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

(10)

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

(11)

- Blok pesan ditransformasi dari 16 subblok 32 bit (M0 sampai M15) 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

(12)

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.

(13)

kompleksitas yang rendah, sementara algoritma yang membutuhkan waktu lama untuk 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.

(14)

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

(15)

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

(16)

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

(17)

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 mentransformasikan data masukan (input) menjadi data keluaran (output).

Pertimbangan dalam pemilihan algoritma yang harus diperhatikan adalah sebagai berikut:

(18)

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 DigitalSignatureAlgorithm (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 GF(p).

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

(19)

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-1)/q 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-1)/q mod p ………. (3) Dimana h adalah bilangan bulat dengan 1 < h < p - 1, dan (h(p-1)/q 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 = gxmod 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-1)/3301 mod 59419 g = 18870

3) Tentukan kunci rahasia x, yang dalam hal ini x < q. x = 3223

(20)

y = 188703223 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 = (gk mod p) mod q ………... (5) dan

s = (k-1(H(m) + 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 H(m) = 4321.

2) Tentukan bilangan acak k < q. k = 997.

k-1 = 99759419-2 mod 59419 k-1 = 2907 mod 59419

3) Hitung r dan s sebagai berikut: r = (18870997 mod 59419) mod 3301 r = 848

s = (2907 (4321 + 3223 * 848)) mod 3301

(21)

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 u1 dengan rumus:

u1 = (H(m) * w) mod q……….. (8)

3) Hitung nilai u2 dengan rumus:

u2= (r*w) mod q ……….. (9) 4) Hitung nilai v dengan rumus:

v = ((gu1 * yu2) 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 = 1833301-2 mod 3301 w = 469

2) Hitung nilai u1 :

u1 = (4321 * 469) mod 3301.

(22)

u1 = 3036

3) Hitung nilai u2:

u2 = (848 * 469) mod 3301

u2 = 397712 mod 3301

u2 = 1592

4) Hitung nilai v:

v = ((188703036 * 292451592) mod 59419) mod 3301 v = 848 mod 3301

v = 848

Karena v = r, maka tanda tangan sah.

2.9.2 GOST digital signature algorithm

GOST atau Gosudarstvenny Standard yang artinya standard pemerintah, adalah algoritma kriptografi dari negara Uni Soviet dahulu (sekarang sudah terpecah menjadi sejumlah negara dengan Rusia sebagai negara terbesar) (Munir, 2004). Algoritma ini dikembangkan pada tahun 1970 yang merupakan sebuah algoritma block chiper dengan panjang 64 bit, sedangkan panjang kuncinya 256 bit. GOST dibuat oleh Soviet sebagai alternatif terhadap algoritma enkripsi standard Amerika Serikat, DES. GOST secara struktural mirip dengan DSA. GOST digital signature algorithm menggunakan fungsi hash SHA-256.

Masyarakat perbankan Prancis telah menstadardisasi RSA. National Institute of Standardization Technology (NIST) mengusulkan suatu modifikasi ElGamal dan Schnorr sebagai standar tanda tangan digital (Digital Signature Standard [DSS]) mereka dan skema tanda tangan didasarkan pada kurva elips yang sampai saat ini menjadi standar IEEE. Pada tahun 1999 federasi Rusia mengeluarkan standar tanda tangan digital GOST digital signature algorithm atau sering disebut GOST 34,10-94. Algoritma ini sangat mirip dengan Digital Signature Algorithm (DSA).

2.9.2.1 Pembentukan sepasang kunci

Proses pembentukan kunci pada GOST Digital Signature Algorithm adalah sebagai berikut (Schneier, 1996):

(23)

2) Hitung a dimana

aq mod p = 1 ……….. (11) dan a < p - 1.

3) Tentukan kunci privat x dimana x < q. 4) Hitung kunci publik y, dengan rumus:

y = ax mod p ……….. (12) 5) Kunci publik (p, q, a, y) dan kunci privat (p, q, a, x).

Berikut contoh perhitungan untuk pembentukan sepasang kunci GOST 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) Hitung a:

188703301 mod 59419 = 1 a = 18870

Lemma: Misalkan p dan q adalah bilangan prima, dimana q habis dibagi oleh p -1, h adalah bilangan bulat positif < p, dan g = h(p-1)/q mod p. Maka gq mod p = 1.

Bukti: gq mod p = (h(p-1)/q mod p)q mod p = h(p-1) mod p

= 1

3) Tentukan kunci rahasia x, yang dalam hal ini x < q. x = 3223

4) Hitung kunci publik y: y = 188703223 mod 59419 y = 29245

5) Maka:

Kunci privat = {59419, 3301, 18870, 3223} Kunci publik = {59419, 3301, 18870, 29245}

2.9.2.2 Pembentukan tanda tangan digital

Diketahui kunci publik (p, q, a, y) dan kunci privat (p, q, a, x) (Schneier, 1996):

(24)

2) Tentukan bilangan acak k dimana k < q. 3) Hitung tanda tangan r, dengan rumus:

r = (ak mod p) mod q ………... (13)

4) Hitung tanda tangan s, dengan rumus:

s = (xr + k(H(m))) mod q ………. (14) 5) Kirim pesan beserta tanda tangan r dan s.

Berikut contoh perhitungan untuk pembentukan tanda tangan GOST DSA: 1) Hitung nilai hash dari pesan, misal H(m) = 4321.

2) Tentukan bilangan acak k < q. k = 997.

3) Hitung r :

r = (18870997 mod 59419) mod 3301 r = 848

4) Hitung s :

s = (3223 * 848 + 997 * 4321) mod 3301

s = (2733104 + 4308037) mod 3301

s = 108

5) Kirim pesan m dan tanda tangan r dan s.

2.9.2.3 Proses verifikasi tanda tangan digital

Sebelum diverifikasi, harus dipastikan tersedia kunci publik pengirim (y), nilai p, q dan a beserta pesan yang bertandatangan r dan s. Penerima memeriksa terlebih dahulu apakah 0 < r < q dan 0 < s < q, kemudian hitung:

1) Hitung nilai v, dengan rumus:

v = H(m)q-2 mod q …...……….… (15)

2) Hitung nilai z1, dengan rumus:

z1 = (s*v) mod q ………... (16)

3) Hitung nilai z2, dengan rumus:

z2 = ((q – r) * v) mod q ……….…… (17)

4) Hitung nilai u, dengan rumus:

(25)

Berikut contoh perhitungan untuk verifikasi tanda tangan GOST DSA: 1) Hitung nilai v:

v = 43213301-2 mod 3301 v = 1356

2) Hitung nilai z1 :

z1 = (108 * 469) mod 3301.

z1 = 146448 mod 3301

z1 = 1204

3) Hitung nilai z2:

z2 = ((3301-848) * 1356) mod 3301

z2 = 3326268 mod 3301

z2 = 2161

4) Hitung nilai u:

u = ((188701204 * 292452161) mod 59419) mod 3301 u = 848 mod 3301

u = 848

Gambar

Gambar 2.1. Sistem kerja tanda tangan digital
Gambar 2.2. Grafik fungsi big-oh
Gambar 2.3. Grafik fungsi big-omega
Gambar 2.4. Grafik fungsi big-theta

Referensi

Dokumen terkait

Berdasarkan hal diatas, pada Tugas Akhir ini telah dirancang dan direalisasikan antena slot waveguide , terdiri dari delapan buah slot yang memiliki orientasi vertikal

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

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

Dari hasil observasi penguasaan kemampuan afektif, secara umum terjadi peningkatan prosentase jumlah siswa yang memenuhi aspek-aspek yang di amati melalui penerapan model siklus

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

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

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