Analisis ImplementasiDigital Signature Standard menggunakan Fungsi Hash SHA-256, SHA-384 dan Tiger

(1)

ANALISIS IMPLEMENTASI

DIGITAL SIGNATURE STANDARD

MENGGUNAKAN FUNGSI

HASH

SHA-256, SHA-384 DAN TIGER

FERRARO S.OCTORA GINTING

DEPARTEMEN ILMU KOMPUTER

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

INSTITUT PERTANIAN BOGOR

BOGOR

2012


(2)

ABSTRACT

Security method of data transmission process has been growing rapidly with the science of cryptography. Cryptography can provide security services that includes security aspects like confidentiality, data integrity, authentication and non-repudiation. Modern cryptography uses a key that must be kept secret to overcome the problem of cryptographic security. Problem in the use of the same key by two entities that communicate with each other in exchanging messages is a way to distribute the key. This problem can be overcome by using public-key cryptography, which allows users to communicate securely without a shared secret key. Digital signature is the application of public-key cryptography. When accessing important digital documents, it is necessary to verify the signature given.

Implementation of digital signature always requires a hash function. Hash function used in this research namely SHA-256, SHA-384 and Tiger. Federal Information Processing Standards (FIPS) set the cryptographic standard for digital signatures is the Digital Signature Standard (DSS). Algorithms included in the DSS are the Digital Standard Algorithm (DSA), Ron Rives, Adi Shamir, and Leonard Adleman (RSA) and Elliptic Curve Digital Signature Algorithm (ECDSA). Performance testing of the three algorithms is done by making an application using a computer programming language C++. Implementation program using C++ class library for cryptographic scheme that is Crypto++ Library 5.6.0. Class libraries used in the classes functions for digital signatures. On the application of digital signatures generated, conducted tests is done by combining each hash function algorithm with each of the DSS in order to compare their performance in terms of time and memory usage. Against the test results are then analyzed using statistical tests. The result shows that pair of Tiger hash function and DSA algorithm is the best combination.


(3)

ANALISIS IMPLEMENTASI

DIGITAL SIGNATURE STANDARD

MENGGUNAKAN FUNGSI

HASH

SHA-256, SHA-384 DAN TIGER

FERRARO S.OCTORA GINTING

Skripsi

Sebagai salah satu syarat untuk memperoleh gelar Sarjana Komputer pada

Program Studi Ilmu Komputer

DEPARTEMEN ILMU KOMPUTER

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

INSTITUT PERTANIAN BOGOR

BOGOR

2012


(4)

Judul Skripsi : Analisis ImplementasiDigital Signature Standard menggunakan Fungsi Hash

SHA-256, SHA-384 dan Tiger Nama : Ferraro S.Octora Ginting

NIM : G64076026

Menyetujui:

Pembimbing I, Pembimbing II,

Shelvie Nidya Neyman, S.Kom., M.Si

NIP. 19770206 200501 2 002 NIP. 19700719 199802 1 001

Aziz Kustiyo, S.Si., M.Kom

Mengetahui:

Ketua Departemen Ilmu Komputer,

NIP. 196607021993021 001 Dr. Ir. Agus Buono, M.Si., M.Kom.


(5)

RIWAYAT HIDUP

Penulis dilahirkan di Medan pada tanggal 26 Oktober 1984, dari ayah Drs. Bethesda Ginting dan ibu Nurmala BR. Sitepu, S.Pd. Penulis merupakan putri pertama dari tiga bersaudara.

Tahun 2003 penulis lulus dari SMU CAHAYA Medan dan diterima masuk Program DiplomaInstitut Pertanian Bogor (IPB) melalui jalur Undangan Seleksi Masuk IPB (USMI). Penulis memilih Program Studi Elektronika dan Teknologi Komputer, Departemen Fisika, Fakultas Matematika dan Ilmu pengetahuan Alam.

Pada tahun 2006 penulis lulus dari Program Diplomadengan predikat Cum Laudedan langsung mendapat kesempatan bekerja di PT. Telkomsel dengan posisi kerja sebagai Frontliner. Pada tahun 2008 penulis mengundurkan diri dari tempat bekerja tersebut dan pada tahun yang sama diterima bekerja di PT. Bank Mandiri Tbk. sebagai Frontliner.

Pada tahun 2007, penulis melanjutkan pendidikan ke jenjangSarjanaDepartemen Ilmu Komputer IPB.Karya yang dihasilkan hanya ada pada pembuatan laporan dari tugas mata kuliah tertentu, walaupun demikian laporan-laporan tersebut juga merupakan bagian dari perjalanan pendidikan program Sarjana penulis. Pada awal tahun 2010 penulis mendapat kesempatan bekerja di PT. VARNION yang bergerak di bidang Internet Service Provider, dengan menempati posisi sebagai

AdvisorTechnical Support jaringan komputer dan pada awal tahun 2011 penulis lulus sebagai CPNS di Pemprov. DKI Jakarta sebagai pranata komputer.


(6)

PRAKATA

Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Kuasa atas segala karunia-Nya sehingga karya ilmiah ini berhasil diselesaikan. Tema yang dipilih dalam penelitian yang dilaksanakan sejak bulan Agustus 2009 ini adalah kriptografi, dengan judul Analisis Implementasi Digital Signature StandardMenggunakan Fungsi Hash SHA-256, SHA-384 dan Tiger.

Rasa terima kasih penulis sampaikan kepada semua pihak yang telah memberikan pengajaran ilmu yang bermanfaat dan dukungan baik moral maupun material kepada penulis yaitu:

1. Ayahanda Drs. Bethesda Ginting dan Ibunda Nurmala Br.Sitepu, S.Pd., untuk seluruh peranannya dalam setiap sendi kehidupan ini,

2. Ibu Shelvie Nidya Neyman, S.Kom., M. Si.selaku pembimbing, Bapak Aziz Kustiyo, S.Si., M.Kom., Ibu Dr. Ir. Sri Nurdiati, M.Sc. dan Bapak Dr. Ir. Agus Buono, M.Si., M.Kom.serta semua staf dosen dan non dosen di Institut Pertanian Bogor yang telah banyak memberikan ilmu, saran dan motivasi,

3. Saudara kandungku Dewi Srirezky Ginting dan Christian Faraday Ginting serta keluargaku yang lainnya, atas dukungan semangat dan nasihat-nasihatnya,

4. Teman-teman Diploma, Ekstensi Ilmu Komputer dan semua Varnion team yang senantiasa membuat hikmah persahabatan atau pertemanan,kehangatan dan keceriaan, diantaranya Ligan Diposentono, Eko Adinugroho,Jaka P., Ai, Eka Hayana, Arifa Desfamita, Hanissa, Disty Tata Ceria, Annisa, Fazriah, Uchu, Abu, Aang Nahrowi, Wahyono, Fadhly, Dedy, Christ Ferdian, Jaka, Inez, Rudi Rahman, Irfa Dzulfarizi dan sebagainya.

Semoga Tuhan Yang Maha Kuasa membalasnya dengan pahala yang berlipat. Penulis menyadari bahwa penelitian ini masih banyak kekurangan, namun semoga karya ilmiah ini dapat bermanfaat.

Bogor, Juli2012


(7)

vii

DAFTAR ISI

Halaman

DAFTAR TABEL ... viii

DAFTAR GAMBAR ... viii

DAFTAR LAMPIRAN ... ix

PENDAHULUAN Latar Belakang ... 1

Tujuan Penelitian ... 1

Ruang Lingkup Penelitian ... 1

Manfaat Penelitian ... 1

TINJAUAN PUSTAKA KriptografiModern ... 2

Kriptanalisis ... 2

Kriptografi Kunci-Publik ... 2

Pembangkit Aliran-Kunci ... 2

Pembangkit Bilangan Acak Semu ... 3

PemodelanFungsi Hash ... 3

Tanda Tangan Digital ... 4

DSA (Digital Standard Algorithm) ... 4

RSA (Ron Rives, Adi Shamir, and Leonard Adleman) ... 4

ECDSA (Elliptic Curve Digital Signature Algorithm) ... 5

Serangan Keamanan Kriptografi Kunci-Publik ... 6

Analisis Ragam (Anova) ... 6

METODE PENELITIAN Data ... 6

Metodologi ... 6

HASIL DAN PEMBAHASAN Pengambilan Data Uji ... 7

Perancangan Aplikasi Tanda Tangan Digital ... 7

Perancangan DSA ... 8

Perancangan RSA ... 8

Perancangan ECDSA ... 9

Implementasi Pembuatan Aplikasi Tanda Tangan Digital ... 9

Pengujian Aplikasi Tanda Tangan Digital ... 11

Analisis Hasil Pengujian ... 11

Analisis Ragam Waktu Proses Signing dan Waktu Proses Verifying ... 12

Analisis Penggunaan Memori Proses Signing dan Proses Verifying ... 18

KESIMPULAN ... 21

SARAN ... 22

DAFTAR PUSTAKA ... 22


(8)

viii

DAFTAR TABEL

Halaman

1. Spesifikasi fungsi hash SHA-256, SHA-384 dan Tiger ... 3

2. Skenario pengujian penggabungan algoritme tanda tangan digital dengan fungsi hash ... 7

3. Uji Anovawaktu prosessigningdengan ukuran file 5MB... 13

4. Uji Anovawaktu prosessigningdengan ukuran file 10MB... 13

5. Uji Anovawaktu prosessigningdengan ukuran file 20MB... 13

6. Uji Anovawaktu prosessigningdengan ukuran file 40MB... 13

7. Uji Anovawaktu prosessigningdengan ukuran file 80MB... 13

8. Perbandingan perlakuan hasil waktu prosessigningdengan ukuran file 5MB ... 14

9. Perbandingan perlakuan hasil waktu prosessigningdengan ukuran file 10MB ... 14

10. Perbandingan perlakuan hasil waktu prosessigningdengan ukuran file 20MB ... 14

11. Perbandingan perlakuan hasil waktu prosessigningdengan ukuran file 40MB ... 14

12. Perbandingan perlakuan hasil waktu prosessigningdengan ukuran file 80MB ... 15

13. Uji Anovawaktu prosesverifyingdengan ukuran file 5MB ... 15

14. Uji Anovawaktu prosesverifyingdengan ukuran file 10MB ... 16

15. Uji Anovawaktu prosesverifyingdengan ukuran file 20MB ... 16

16. Uji Anovawaktu prosesverifyingdengan ukuran file 40MB ... 16

17. Uji Anovawaktu prosesverifyingdengan ukuran file 80MB ... 16

18. Perbandingan perlakuan hasil waktu prosesverifyingdengan ukuran file 5MB ... 16

19. Perbandingan perlakuan hasil waktu prosesverifyingdengan ukuran file 10MB ... 17

20. Perbandingan perlakuan hasil waktu prosesverifyingdengan ukuran file 40MB ... 17

21. Perbandingan perlakuan hasil waktu prosesverifyingdengan ukuran file 80MB ... 17

22. Ringkasan hasil pengujian penggunaan memori pada proses signing ... 18

23. Ringkasan hasil pengujian penggunaan memori pada proses verifying ... 18

DAFTAR GAMBAR

Halaman 1. Diagramkriptografi kunci-publik ... 2

2. Diagrampenggunaan pembangkit aliran kunci ... 3

3. Struktur umum fungsi hash ... 3

4. Diagramtanda tangan digital menggunakan fungsi hash satu arah ... 4

5. Tahapan penelitian ... 7

6. Tampilan antarmuka apikasi ... 8

7. Inheritance diagram untuk DSA ... 8

8. Inheritance diagram untuk RSA ... 9

9. Inheritance diagram untuk ECDSA ... 9

10. Diagram tahapan identifikasi penggunaanmemori ... 10

11. Perbandingan waktu proses signingalgoritme DSA, RSA dan ECDSA ... 13

12. Perbandingan waktu proses verifyingalgoritme DSA, RSA dan ECDSA ... 15

13. Perbandingan penggunaan memori proses signing DSA, RSA dan ECDSA ... 18


(9)

ix

DAFTAR LAMPIRAN

Halaman

1. Hasil Pengujian Aplikasi Tanda Tangan Digital ... 24

2. Data Hasil Pengujian Aplikasi Tanda Tangan Digital ... 25

3. Tampilan Software Minitab... 26

4. Hasil UjiNormal Probability Plot dan Test for Equal Variences Pada Proses Signing (dengan hasil data tidak menyebar normal) ... 27

5. Data Waktu Proses Signing yang Telah Ditransformasi Menggunakan Logaritma Natural .. 28

6. Data Waktu Proses Verifying yang Telah Ditransformasi Menggunakan Logaritma Natural 29 7. Hasil UjiNormal Probability Plot dan Test for Equal Variences Pada Proses Signing (dengan hasil data menyebar normal) ... 30

8. Hasil UjiNormal Probability Plot dan Test for Equal Variences Pada Proses Verifying (dengan hasil data menyebar normal) ... 31

9. Plot Interaksi Waktu proses Signing ... 32

10. Plot Interaksi Waktu proses Verifying ... 33

11. Algoritme Komputasi Hash SHA-256 ... 34

12. Algoritme Komputasi Hash SHA-384 ... 35

13. Algoritme Komputasi HashTiger ... 36

14. Potongan Kode Program Template Class untuk Proses Signing dan Verifying ... 37

15. Kode Program Fungsi Signing DSA ... 39

16. Potongan Kode Program Template class yang digunakan pada DSA ... 41

17. Kode Program Fungsi Signing RSA ... 43

18. Potongan Kode Program Template class yang digunakan pada RSA ... 44

19. Kode Program Fungsi Signing ECDSA ... 46

20. Potongan Kode Program Template class yang digunakan pada ECDSA ... 47

21. Tampilan Menu Aplikasi Tanda Tangan Digital ... 49


(10)

1

PENDAHULUAN

Latar Belakang

Kriptografi berperan penting dalam layanan keamanan seperti kerahasiaan, integritas data, otentikasi dan pencegahan penyangkalan. Kriptografi modern menggunakan kunci yang harus dirahasiakan untuk mengatasi masalah keamanan kriptografi. Permasalahan dalam penggunaan satu kunci yang sama oleh dua entitas yang saling berkomunikasi untuk bertukar pesan adalah cara mendistribusikan kunci. Permasalahan ini dapat diatasi dengan penggunaan kriptografi kunci-publik, yang memungkinkan pengguna berkomunikasi secara aman tanpa perlu berbagi kunci rahasia.

Tandatangan digital merupakan aplikasi dari kriptografi kunci-publik. Pada saat mengakses suatu dokumen digital penting, maka dibutuhkan verifikasi terhadap tandatangan yang diberikan, sehinggakeamanan informasi identitas pengirim lebih diutamakan karena bersifat pribadi. Tandatangan digitalmemiliki kunci yang terdiri dari kunci publik dan kunci privat.

Implementasi tandatangan digital selalu memerlukan fungsi hash. Fungsi hash yaitu fungsi yang menerima masukan string yang panjangnya sembarang dan mengonversinya menjadi string keluaran yang panjangnya tetap. Fungsi hash menghasilkan keluaran yang dinamakan Message Digest(MD).Federal Information Processing Standards (FIPS) menetapkan standar kriptografi untuk tandatangan digital adalah Digital Signature Standard (DSS). Algoritme yang termasuk ke dalam DSS yaitu Digital Standard Algorithm

(DSA), Ron Rives, Adi Shamir, dan Leonard Adleman(RSA) dan Elliptic Curve Digital Signature Algorithm (ECDSA).

Penelitianini memeriksa kecocokan pemasangan DSS dengan fungsi hash,yang diperlukanuntuk menemukan pengaruh kinerja yang dihasilkan. Penelitian ini merupakan pengembangan dari penelitian sebelumnyayang dilakukan oleh Tamici (2007) dari Institut Teknologi Bandungyang berjudul Analisis Kinerja Kriptografi Secure Hash Standard

(SHS) dan Digital Signature Standard

(DSS).Penelitian tersebut menggabungkan antara DSS dengan fungsi hash.Setiap fungsi

hashdikombinasikan dengan masing-masing DSS.Pengembangan pada penelitian ini dilakukan terhadap fungsi hash yang digunakan, yaitu penambahan fungsi hashTiger dan pengurangan fungsi hash yang termasuk kategori SHS.Pada penelitian

sebelumnyatahapanimplementasi menggunakan perangkat lunak Matlab 7.0.3sedangkan penelitian ini menggunakan bahasa pemrograman C++ dengan memanfaatkan

framework skema kriptografi yaitu

(Crypto++Library 5.6.0). Tujuan Penelitian

Tujuan dari penelitian ini yaitu:

1 Merancang aplikasi

penggabunganantaraDSS (DSA, RSA dan ECDSA) dengan fungsi hash yaitu SHA-256, SHA-384 dan Tiger.

2 Merancang aplikasi yang berfungsi menerima masukan berupa filedengan format teks, executable dan gambar.

3 Membandingkan kinerja untuk masing-masing hasil pengujian penggabungan DSSdengan fungsi hashdari segi waktu dan penggunaan memori.

4 Menganalisis ragamhasil

pengujianmenggunakan uji statistik. Ruang Lingkup Penelitian

Ruang lingkupdari penelitian ini adalah: 1 Data contoh yang digunakan sebagai

masukan adalah filedengan format teks yaitu huruf, angka dan simbol, fileexecutableserta gambar.

2 Algoritme tandatangan digital yang digunakan yaitu DSA, RSA dan ECDSA. 3 Fungsi hash yang digunakan yaitu

SHA-256, SHA-384 dan Tiger.

4 Implementasi pembuatan aplikasi tanda tangan digital menggunakan bahasa pemrograman C++,dengan memanfaatkan

framework skema kriptografi yaitu

(Crypto++ Library 5.6.0). Manfaat Penelitian

Penelitian ini diharapkan bermanfaat untuk menemukan pengaruh dari ketigamasing-masing fungsi hash terhadap DSS dan menemukan teknik terbaik diantara keduanya.Hal ini dilakukan dengan cara membandingkan hasil pengujian terhadap beberapa parameter dan kondisi,sehingga menemukan kelebihan dan kekurangan dari hasil penggabungan tersebut. Dengan demikian dapat disimpulkan kombinasi antara DSS dengan fungsi hash yang mana yang terbaik kinerjanya.Manfaat lain adalah hasil implementasi berupa program aplikasi komputer yang dapat digunakan oleh penggunauntuk memberikan tandatangan terhadap dokumen digital penting dan dapat digunakan untuk memverifikasi keabsahan dari dokumen tersebut.


(11)

2

TINJAUAN PUSTAKA

Kriptografi Modern

Kriptografi merupakan ilmu dan seni untuk menjaga keamanan pesan. Kriptografi modern menggunakan gagasan yang sama seperti kriptografi klasik (permutasi dan transposisi) namun berbeda penekanannya. Kode program kriptografi klasik menggunakan kode program yang sederhana, sedangkan kode program kriptografi modern dibuat sedemikian kompleks sehingga sangat sulit memecahkan cipherteks tanpa mengetahui kunci (Munir 2006).

Kode program kriptografi modern umumnya beroperasi dalam mode bit dibandingkan mode karakter. Operasi dalam mode bit berarti semua data dan informasi (baik kunci, plainteks, dan

cipherteks) dinyatakan dalam rangkaian (string) bit biner, 0 dan 1. Pada umumnya kode program kriptografi modern memproses data dalam bentuk blok-blok bit. Rangkaian bit yang dipecah menjadi beberapa blok bit dapat ditulis dalam sejumlah cara,tergantungkepada panjang blok.

Kode program kunci-simetrinyaberoperasi dalam mode bit dan dapat dikelompokkan menjadi dua kategori yaitu:

1 Cipher Aliran (Stream Cipher)

Kode program kriptografi beroperasi pada

plainteks atau cipherteks dalam bentuk bit tunggal,yang dalam hal ini rangkaian bit dienkripsikan/didekripsikan bit per bit.Cipher aliran mengenkripsi satu bit setiap kali.

2 Cipher Blok (Block Cipher)

Kode program kriptografi yang beroperasi padaplainteks atau cipherteks dalam bentuk blok bit, yang dalam hal ini rangkaian bit dibagi menjadi blok-blok bit yang panjangnya sudah ditentukan sebelumnya. Ada beberapa prinsip dalam merancang

Cipher blok yaitu:

• Prinsip Confusion dan Diffusion dari Shannon.

Cipher berulang (Iterated Cipher). • Jaringan Feistel(Feistel Network). • Kunci lemah (Weak Key). • Kotak-S (S-Box).

Contoh kode programyang menggunakan teknik cipher blok yaituDES, Triple DES, IDEA, RC5 dan AES.

Kriptanalisis

Kriptanalisis adalah studi teknik matematis yang mencoba mematahkan teknik kriptografi, dan lebihumum lagi terhadap suatu sistem keamanan informasi. Sementara kriptanalis

merupakan orang yang menggeluti kriptanalisis (Menezes dkk. 1996).

Keamanan sistem secara eksklusif ditentukan oleh kunci, maka panjang kunci menentukan keamanan sistem. Semakin panjang kunci,maka sejumlah kemungkinan yang harus diduga semakin besar dan faktor kerja (work

factor) untuk menemukan kunci semakin

besar.Faktor kerja untuk memecahkan sistem secara exhaustive search meningkat secara eksponensial dengan bertambahnya panjang kunci (Munir2006).

Kriptografi Kunci-Publik

Nama lain dari kriptografi kunci-publik yaitu Asymmetric kriptografi merupakan sebuah model enkripsi dengan kunci publik dan kunci privat, yang artinya untuk melakukan enkripsi diperlukan kunci publik sedangkan untuk dekripsi diperlukan kunci privat.Kunci untuk enkripsi diumumkan kepada publik dan disimbolkan dengan e, sedangkan kunci untuk dekripsi bersifat rahasia dan disimbolkan dengan d (Munir 2006).Diagram kriptografi kunci-publik tersebut dapat dilihat pada Gambar 1.

Ada dua permasalahan matematika yang sering dijadikan dasar pembangkitan sepasang kunci pada kriptografi kunci-publik, yaitu: 1 Perkalian vs pemfaktoran. Mengalikan dua

buah bilangan primaa x b = n mudah, tetapi sebaliknya memfaktorkan n menjadi faktor-faktor primanya lebih sulit.

2 Perpangkatan vs logaritmik diskrit. Melakukan perpangkatan modulob = axmod

n mudah, tetapi menemukan x dari ax = b

(mod n) lebih sulit.

Enkripsi Ee (m) = c

Dekripsi Dd (c) = m

Cipherteks, c

Plainteks, m Plainteks, m Kunci publik, e Kunci privat, d

Gambar 1 Diagram kriptografi kunci-publik (Munir 2006).

Pembangkit Aliran-Kunci

Aliran kunci dibangkitkan dari sebuah pembangkit yang dinamakan pembangkit aliran- kunci (keystream generator) (Munir 2006).Pembangkit aliran-kunci dapat membangkitkan bit-bit kunci (keystream) berbasis bit per bit atau dalam bentuk blok-blok bit.Pembangkit aliran- kunci diimplementasikan sebagai sebuah prosedur kode program,


(12)

3 sehingga bit-bit kunci dapat dibangkitkan oleh

pengirim dan penerima pesan. Prosedur tersebut menerima masukan sebuah kunci U.Jika panjang kunci U adalah n bit, maka bit-bit kunci tidak akan berulang sampai 2n – 1 bit.Pembangkit aliran-kunci tidak boleh mulai dengan kondisi awal yang sama agar tidak menghasilkan kembali bit-bit kunci yang sama pada setiap iterasi. Oleh karena itu, beberapa teknik menggunakan umpan (seed) disimbolkan dengan Z atau disebut juga vektor inisialisasi (VI). Diagrampenggunaan pembangkit bit aliran kunci ditunjukkan pada Gambar 2.

Keystream Generator

Pengirim

U Z

Keystream ki

ª Pi Keystream Generator Penerima Z U

Keystream ki

ª Pi

ci

Plainteks Enkripsi Cipherteks Dekripsi Plainteks

Gambar 2Diagram penggunaan pembangkit aliran kunci (Munir 2006).

Pembangkit Bilangan Acak Semu

Bilangan acak (random) banyak digunakan di dalam kriptografi, misalnya untuk pembangkitan elemen-elemen kunci, pembangkitan vektor inisialisasi, pembangkitan parameter kunci di dalam sistem kriptografi kunci-publik dan sebagainya (Munir 2006). Tidak ada prosedur komputasi yang benar-benar menghasilkan deret bilangan acak secara sempurna. Bilangan acak yang dihasilkan dengan rumus-rumus matematika adalah bilangan acak semu (pseudo) karena bilangan acak yang dibangkitkan dapat berulang kembali secara periodik. Pembangkitan deret bilangan acak seperti itu disebut pseudo-random number generator (PRNG).

Berikut ini adalah beberapa teknik pembangkit bilangan acak:

1 Linear Congruential Generator (LCG). 2 Cryptographically Secure Pseudorandom

Generator (CSPRNG). 3 Blum Blum Shut (BBS). 4 CSPRNG Berbasis RSA. 5 CSPRNG Berbasis Chaos.

Pemodelan Fungsi Hash

Fungsi hash adalah fungsi yang menerima masukan string yang panjangnya sembarang dan mengonversinya menjadi string keluaran yang panjangnya tetap (Munir 2006). Keluaran fungsi hash disebut juga nilai hash atau pesan

ringkas atau message digest(MD). Aplikasi fungsi hash antara lain untuk memverifikasi kesamaan salinan suatu arsip dengan arsip aslinya yang tersimpan di dalam sebuah

database terpusat.

Fungsi hash satu-arah (One-way Hash) adalah fungsi hash yang bekerja dalam satu arah, pesan yang sudah diubah menjadi MD tidak dapat dikembalikan lagi menjadi pesan semula.Struktur umum fungsi hash ditunjukkan pada Gambar 3.

. . .

CVL-1 n f YL-1 b n CVL f IV= CV0 n b Y0 CV1 n f b Y1 n

Gambar 3Struktur umum fungsi hash (Stalling 2003).

Struktur pada gambar tersebut merupakan proses iterasi fungsi hash, yang ditemukan oleh Merkle, dan merupakan struktur fungsi hash

yang banyak digunakan saat ini. Fungsi hash

menerima sebuah masukan pesan dan membaginya ke sejumlah L blok dengan masing-masing blok panjangnyab bit (Y0 sampai

YL-1). Jika diperlukan, blok terakhir (final block) dapat digabungkan (padded) dengansejumlah bit. Blok terakhir juga merupakan jumlah panjang masukan untuk fungsi hash.Algoritme hashmelibatkan penggunaan iterasi fungsi kompresi, f, yang mengambil dua input (n-bit input dari langkah sebelumnya, yang disebut chaining variabel(CV), dan sebuah b-bit blok) dan menghasilkan outputn-bit. Pada awal proses

hashing, CV yang memiliki nilai awal yang

specified sebagai bagian dari algoritme. Nilai akhir dari CVadalah nilai hash atau MD (Stalling 2003).

Fungsi hashterdiri atas beberapa jenis, pada penelitian ini digunakan hanya tigacontoh fungsi hash yaitu SHA-256, SHA-384 dan Tiger. Tiger dirancang oleh Ross Anderson dan Eli Biham pada tahun 1996. Tiger dirancang untuk dapat bekerja pada mesin 64 bit tapi dapat juga berkerja pada mesin 32 bit (Ismaliansyah 2006). Spesifikasi dari ketiga fungsi hash


(13)

4 Tabel1 Spesifikasi fungsi hash 256,

SHA-384 dan Tiger

Tanda Tangan Digital

Tandatangan digitaltujuannya mirip dengan tandatangan yang dihasilkan tulisan tangan. Tujuannya untuk memberikan suatu alat yang digunakan oleh entitas untuk mengikat identitasnya menjadi satu bagian dari informasi(Menezes dkk.1996).

Sistem kriptografi kunci-publik cocok untuk pemberian tandatangan digital menggunakan fungsi hash(Munir 2006).Penandatanganan pesan dengan cara mengenkripsinyaselalu memberikan dua fungsi yaitu kerahasiaan dan otentikasi.Pada beberapa kasus, yang dibutuhkan hanya otentikasi saja, sehingga tandatangan digitaldengan sistem kunci-publikini dapat menyelesaikan masalah non-repudiation.Diagram tandatangan digital menggunakan fungsi hash ditunjukkan pada Gambar 4. Message Fungsi Hash Message Digest (MD) Encrypt Signature Message Signature Private Key Signature Decrypt Message Signature Message Fungsi Hash Message Digest (MD) Message Digest (MD) = Public Key Signer Verifier ?

Gambar 4 Diagram tanda tangan digital menggunakan fungsi hash satu arah (Munir 2006).

Tandatangan digital yang termasuk ke dalam standar DSS, yaitu:

1 DSA

DSA tidak dapat digunakan untuk enkripsi,tetapi dikhususkan untuk tandatangan digital. Fungsi utama DSA adalah:

• Pembentukantanda tangan (signature generation).

• Pemeriksaan keabsahan tanda tangan (signature verifying).

Tingkat keamanan DSA berdasarkan pada kemampuan komputasi dari logaritma diskret dalam subgrup urutan prima Zp*.

DSA memunyai beberapa prosedur kode programsebagai berikut:

• Prosedur pembangkitan sepasang kunci, langkah-langkah prosedur ini yaitu:

- Dipilih bilangan prima p dan q, yang dalam hal ini (p-1) mod q = 0.

- Dihitung g = h(p-1)/q mod p, yang dalam hal ini 1<h<p-1 dan h(p-1)/q

mod p>1.

- Ditentukan kunci privatx, dalam hal ini x<q.

- Dihitung kunci publik y = gx mod p. Prosedur menghasilkan2 kunci yaitukunci publik (p, q, g, y) dan kunci privat (p, q, g, x).

• Prosedur pembangkitan tanda tangan (Signing), sebagai berikut:

- Mengubah pesan m menjadi MD dengan fungsi hash, H.

- Ditentukan bilangan acak k<q. - Tandatangan dari pesan m adalah

bilangan r dan s kemudian dihitung dengan persamaan berikut:

r = (gk mod p) mod q s = (k-1(H(m) +x * r)) mod q

- Pengiriman pesan mdisertai dengan tandatangan r dan s.

• Prosedur verifikasi keabsahan tanda tangan (verifying), dengan cara berikut:

- Verifikasi dengan persamaandi bawah ini:

w = s-1 mod q

u1 = (H(m) * w) mod q u2 = (r * w) mod q

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

- Apabila hasil perbandingan v dan

rsama maka tandatangan sah, yang berarti dokumen yang dikirim benar sesuai dengan aslinya.

2 RSA

RSA melibatkan kunci publik dan kunci privat. Keamanan algoritme RSA terletak pada sulitnya memfaktorkan bilangan besar menjadi faktor-faktor prima. Pemfaktoran dilakukan untuk memperoleh kunci privat. Selama pemfaktoran bilangan besar menjadi faktor-faktor prima belum ditemukan, maka keamanan RSA tetap terjamin.Prosedur tandatangan digital pada RSA adalah sebagai berikut:

• Prosedur pembangkitan sepasang kunci, dengan langkah-langkah sebagai berikut (Rasyid 2007):

Pesan Blok Word MD

SHA-256 < 264 512 32 256 SHA-384 < 2128 1024 64 384

TIGER < 264 512 64 192


(14)

5 - Dipilih bilangan prima p dan q,

panjangnya diperkirakan sama. - Dihitung n = p * q, n digunakan

sebagai modulus untuk kunci privat dan kunci publik.

- Dihitung (n) = (p− 1)(q− 1).

- Dipilih angka acak e, 1<e<(n), dimana lcg(e,(n)) = 1, artinya

edengan(n) saling prima satu dengan yang lain.

- Digunakan algoritmeEuclidian untuk menghitung integer unik d. 1<d<(n), dimana e * d≡ 1 (mod(n)).

Prosedur akan menghasilkan 2 kunci yaitu kunci publik mengandung modulus n dan eksponen e dan kunci privat mengandungmodulus n dan eksponen d.

• Prosedur pembangkitan tandatangan (signing)adalah sebagai berikut:

- Mengubah pesan m menjadi MD dengan fungsi hash, H.

- Hitung H(m), sebuah integer pada kisaran [0, n-1].

- Tanda tangan untuk pesan m adalah

skemudian dihitung dengan persamaan berikut:

Hitung s = H(m)d mod n.

- Pengiriman pesan m disertai dengan tanda tangan s.

• Prosedur verifikasi keabsahan tanda tangan (verifying), dengan cara sebagai berikut:

- Ekstraksi pesan m dan s.

- Hitung nilai MD’ dari pesan m yang diterima.

- Ambil kunci publik yaitu n dan e. - Hitung H(m) = semod n, sehingga

diperoleh MD.

- Bandingkan MD’ dan MD, jika MD’ = MD maka tanda tangan sah.

3 ECDSA

ECDSA adalah salah satu algoritme yang diterapkan dalam pembuatan tanda tangan digital yang menggunakan analogi kurva elips yaitu Elliptic Curve Cryptoystem

(ECC).Pada algoritme ini digunakan permasalahan matematika logaritma diskret kurva elips, tingkat keamanan dihitung berdasarkan panjang kunci.ECDSA mempunyai 3 konsep dasar penting yang meliputi (Triwinarko2004):

• Bidang terbatas Fp dan F2m

• Kurva Eliptik • Tanda tangan digital

Pendefinisian persamaan untuk operasi penjumlahan dan penggandaan titik kurva eliptik pada penelitian ini, terbatas untuk mendefinisikan persamaan kurva eliptik pada bidang terbatas Fp, dengan fungsi sebagai berikut :

Fungsi prime field Fp: y2 = x3 + ax + b (1) Pada ECDSA ada 3 operasi matematika, yaitu:

• Operasi penambahan (addition), yakni operasi penjumlahan dua buah titik yang berbeda. Ada beberapa sifat-sifat operasi penambahan pada kurva eliptik yaitu:

- P + φ = φ + P = P untuk setiap P∈ E(Fp)

Jika P(x.y)∈ E(Fp), maka (x,y) + (x,-y) = φ(titik(x,-y) ∈ E(Fp) dinotasikan sebagai -P, disebutsebagai negatif dari P),

- Misalkan P(x1,y1)∈ E(Fp), Q(x2,y2)∈E(Fp), dan P ≠± Q, maka P + Q = (x3,y3).

x3 = - x1 - x2 (2)

y3 = (x1-x3) -y1 (3)

• Operasi penggandaan (doubling), yakni penjumlahan dua titik yang sama. Misalkan P(x1,y1)∈ E(Fp), maka P + P = 2P = (x3,y3).

x3 = - 2x1 (4)

y3 = (x1 – x3) – y1 (5)

• Perkalian skalar (scalar multiplication), yakni operasi penambahan yang dilakukan secara berulangterhadap titik yang sama di sepanjang kurva eliptik. Perkalian skalar nP adalah hasil penambahan P sejumlah n kali, sehingga, 3P = P+P+P.

Dalam protokol ECDSA, pihak pengirim yang melakukan tanda tangan digital, memiliki parameter domain kurva eliptik berupa D ={q,FR,a,b,G,n,h} dan pasangan kunci-kunci rahasiadAserta kunci publik QA. Kemudian pihak penerima yang melakukan verifikasi terhadap tanda tangan,memiliki salinan dokumen D yang otentik dankunci publik QA. Proses tanda tangan digital sebagai berikut:


(15)

6 • Prosedur pembangkitan sepasang kunci,

langkah-langkah prosedur ini yaitu: - Dipilihsebuah bilangan bulat acakdA,

yang nilainya diantara [1, n-1]. - Dihitung QA = dA * G = (x1,y1). - Kunci rahasia = dAdan kunci publik =

QA.

• Prosedur pembangkitan tanda tangan (signing), sebagai berikut:

- Dipilih sebuah bilangan bulat acakk, yang nilainya diantara [1, n-1]. - Menghitung QA = k*G = (x1,y1) dan r

= x1 modn, jika r = 0, maka kembali ke langkah pertama.

- Dihitungk-1 mod n. - Dihitung e = Hash(m).

- Dihitung s = k-1 {e + dA * r} mod n. Tandatangan untuk pesan m adalah (r, s).

• Prosedur verifikasi keabsahan tanda tangan (verifying), dengan cara sebagai berikut:

- Memverifikasi bahwa r dan s adalah bilangan bulat antara [1, n-1]. - Dihitung e = Hash(m).

- Dihitung w = s-1 mod n.

- Dihitung u1 = ew mod n dan u2 = rw

mod n.

- Dihitung u1 * G + u2 * QA = (x1, y1). - Dihitung v = x1 mod n.

- Menerima tanda tangan jika dan hanya jika v = r.

Serangan Keamanan Kriptografi Kunci-Publik

Serangan keamanan pada sistem kriptografi kunci publik maksudnya adalah serangan yang dilakukan berdasarkan teknik atau cara yang digunakan dalam menemukan kunci. Munir (2006) mengemukakan, berdasarkan teknik yang digunakan, serangan dibagi menjadi dua yaitu:

Exhaustive attack atau brute force attack

Serangan untuk mengungkap plainteks atau kunci dengan mencoba semua kemungkinan kunci. Semakin panjang kunci maka waktu

exhaustive search yang dibutuhkan semakin lama.

Analytical attack

Analisis dapat menggunakan pendekatan matematik dan statistik dalam menemukan kunci. Secara statistik misalnya menggunakan teknik analisis frekuensi, sedangkan secara matematik dengan memecah persamaan-persamaan matematika dari kode program kriptografi yang mengandung peubah yang merepresentasikan plainteks atau kunci.

Analisis Ragam (Anova)

Analisis ragammerupakan suatu uji perhitungan yang diterapkan untuk data yang dihasilkan oleh eksperimen yang dirancang pada variabel yang terkontrol.Contoh analisis

ragam yaitu rancanganfaktorial.Rancanganfaktorial adalah

suatu rancangan yang perlakuannya terdiri atas semua kemungkinan kombinasi level dari faktor. Faktor merupakan variabel yang dikontrol oleh peneliti. Faktor terdiri dari beberapa level. Maka perlakuana adalah level dari faktor atau merupakan kombinasi level dari faktor. Tujuan dari rancangan faktorial adalah untuk melihat interaksi antara faktor, adakalanya saling sinergi terhadap respons (positif), namun adakalanya keberadaan salah satu faktor justru menghambat kinerja dari faktor lain (negatif) (Setiawan 2009).

Ada 2 penerapan rancanganfaktorial yaitu pada rancangan acak lengkap (RAL) dan rancangan acak kelompok lengkap (RAKL). Pada penelitian ini menerapkan rancanganfaktorial RAL. Penggunaan RAL yaitu ketika kondisi lingkungan yang dihadapi adalah homogen atau tidak ada faktor lain yang mempengaruhi respon di luar faktor yang dicoba atau diteliti(Walpole 1990).

Untuk mempermudah pengolahan data digunakan software statistik yang berfungsi untuk menganalisis data secara cepat dan akurat. Salah satunya adalah Minitab. Minitab adalah program komputer yang dirancang untuk melakukan pengolahan statistik. Minitab mengombinasikan kemudahan penggunaan layaknya Microsoft Excel dengan kemampuannya melakukan analisis statistik yang kompleks.Minitab memberikan beberapa kelebihan dalam mengolah data untuk Analysis of Variance (ANOVA), di antaranya Minitab memberikan fasilitas membuat grafik statistik secara mudah dan menampilkannya dalam bentuk lebih menarik, informatif dan sekaligus melibatkan konsep probabilitas (Triyanto 2009).

METODE PENELITIAN

Data

Data yang diberipenandatanganan digital adalah fileyang berisi karakter dengan format teks (.pdf)berupa huruf, angka dan simbol,file executable (.exe) serta masukanfile berupa gambar (.bmp).Besar ukuran file dibuat beragam untuk masing-masing tipe file .Masing-masing tipe file terdiri dari 5 file yakni, file

dengan ukuran 5MB, 10MB, 20MB, 40MB dan 80MB. Dengan demikian, jumlah data yang


(16)

7 diberi penandatanganan digital berjumlah 15 file

yang masing-masing filemengalami 3 kali perulangan.

Metodologi

Metode yang digunakan dalam penelitian inimencakup studi literaturdari berbagai sumber, implementasi pembuatan aplikasi tanda tangan digital yang merupakan penerapan hasil studi pustaka mengenai kriptografi kunci-publik, tanda tangan digital, fungsi

hashdankode program yang termasuk ke dalam DSS, pengujian hasil implementasi menggunakan bahasa pemrograman C++dan penyusunan dokumentasi laporan hasil penelitian.Pengujian terhadap aplikasi yang bertujuan memperoleh gambaran kinerja sistem kriptografitandatangan digital, terdiri atasduakomponenyaitu:

• Pengujian hasil penggabungan algoritme tanda tangan digital dengan fungsi hashpada program aplikasi tanda tangan digital yang meliputi identifikasi waktu proses dan identifikasi penggunaan memori,

• Analisis keragaman terhadap hasil yang diperolehdari identifikasi waktu proses. Aplikasitanda tangan digital inidiimplementasikan menggunakan Crypto++ Library 5.6.0. Modul tersebut merupakan

library yang bersifat open sourceyang khusus dirancang untuk skema kriptografi. Tahapan penelitian ini ditunjukkan dengandiagrampada Gambar5.

Gambar 5 Tahapan penelitian.

HASIL DAN PEMBAHASAN

1. Pengambilan DataUji

Data yang digunakan pada penelitian ini adalah data dengan tipe fileyang secara umum sering dipakai dalam kehidupan sehari-hari. Data contoh yang dikumpulkan yaitu file yang berisi karakter dengan format teks berupa huruf, angka dan simbol, file executable serta masukan

file berupa gambar.

Besar ukuran file untuk sebuah data uji diambil kelipatan dua dari ukuran file data uji sebelumnya. Misalnya ukuran data kedua dua kali lebih besar dibandingkan data pertama, ukuran data ketiga lebih besar dua kali dibandingkan data kedua dan seterusnya sampai berjumlah lima buah data untuk masing-masing tipe file. Kelipatan dua ini diambil dengan asumsi bahwa dengan bertambahnya ukuran

plainteks maka akan dapat dilihat dengan jelas perbedaan hasil kinerja dari aplikasi tanda tangan digital yang akan diberikan perlakuan pertukaran penggunaan fungsi hash. Data uji pertama pada penelitian ini berukuran 5 MB dan maksimal ukuran file data uji yaitu 80 MB untuk data uji kelima.

2. Perancangan AplikasiTanda Tangan


(17)

8 Aplikasi yang dibuat memiliki fungsi utama

sebagai berikut:

1 Menerima masukan data file yang tersimpan didalam hardisk pengguna dari sebuah alamat direktori tertentu.

2 Membangkitkan sepasang kunci yaitu kunci privat dan kunci publik (key generation). 3 Membuat tanda tangan digital untuk sebuah

masukan file tertentu (signature generation). 4 Memverifikasi keabsahan pemilik tanda

tangan ataupun file yang diperiksa (signature verifying).

Implementasiaplikasi tanda tangan digital inimenggunakan sistem operasi Microsoft Windows. Pengujian penggabungan antaraalgoritme tanda tangan digital dengan fungsi hash dibuat menurut skenariopengujian yang ditunjukkan pada Tabel 2.

Tabel2Skenario pengujian penggabungan algoritme tanda tangan digital dengan fungsi hash.

Perancangan aplikasi tanda tangan digital mengacukepada fungsi utama aplikasi, yang juga merupakan urutan proses pemberian tanda tangan terhadap sebuah dokumen digital. Masing-masing perancangan digambarkan dengan algoritme pemanggilan kelas-kelas yang terdapat pada Crypto++ Library. Rancangan tampilan antarmuka aplikasi simulasi ditunjukkan pada Gambar 6.

Header

- Pembangkitan Kunci

- Pembangkitan Tanda Tangan (SHA-256) - Pembangkitan Tanda Tangan (SHA-384) - Pembangkitan Tanda Tangan (TIGER) - Verifikasi Tanda Tangan (SHA-256) - Verifikasi Tanda Tangan (SHA-384) - Verifikasi Tanda Tangan (TIGER)

1. DSA

2. RSA

- Pembangkitan Kunci

- Pembangkitan Tanda Tangan (SHA-256) - Pembangkitan Tanda Tangan (SHA-384) - Pembangkitan Tanda Tangan (TIGER) - Verifikasi Tanda Tangan (SHA-256) - Verifikasi Tanda Tangan (SHA-384) - Verifikasi Tanda Tangan (TIGER)

3. ECDSA

- Pembangkitan Kunci

- Pembangkitan Tanda Tangan (SHA-256) - Pembangkitan Tanda Tangan (SHA-384) - Pembangkitan Tanda Tangan (TIGER) - Verifikasi Tanda Tangan (SHA-256) - Verifikasi Tanda Tangan (SHA-384) - Verifikasi Tanda Tangan (TIGER)

Gambar 6 Tampilan antarmuka aplikasi.

2.1 Perancangan DSA

• Pembangkitan kunci (key generation), bagian ini berfungsi untuk membangkitkan kunci privat dan kunci publik. Kunci dibuat menggunakan seed

yang dibangkitkan dari random number generator yang didalamnya memuat teknik subtitusi dan transformasi. Kunci privat dan publik, diakses dari pustaka kelas DSA. Penelitian ini menggunakan

random number generator dari sistem operasi. Panjang kunci L yaitu 512 ≤ L

100, dan harus kelipatan 64,

• Pembangkitan tanda tangan (signature generation), pada tahap iniberfungsi untuk membangkitkan signatureuntuk

file masukan dari pengguna, untuk proses ini diperlukan seed yang berasal dari pseudo random number generator

(PRNG), kunci privat yang berasal dari

key generationdan informasi nilai panjang maksimum signature. Fungsi

hash yang digunakan

dipertukarkandiantara 256, SHA-384 dan Tiger,

• Verifikasi tanda tangan (signature verifying), pada blok ini fungsinya untuk memverifikasi signature dengan kunci publik dan membandingkan dengan

filemessage aslinya, apakah message

yang diterima sama dengan hasil verifikasi atau tidak. Jika tidak berarti

file yang diterima tersebut sudah mengalami pengubahan data. DSA didasarkan pada kode program ElGamal, yang meletakkan keamanannya pada sulitnya menghitung logaritma diskret. Skenario Algoritme Fungsi Hash

1 DSA SHA-256 2 DSA SHA-384 3 DSA Tiger 4 RSA SHA-256 5 RSA SHA-384 6 RSA Tiger 7 ECDSA SHA-256 8 ECDSA SHA-384 9 ECDSA Tiger


(18)

9 Struktur template untuk skema aplikasi

DSA, dalam penggunaan class library pada Crypto++ ditunjukkan pada Gambar 7.

Gambar 7Inheritance diagram untuk DSA (Anonim 2009).

2.2 Perancangan RSA

• Pembangkitan kunci (key generation), pada blok ini berfungsi untuk membangkitkan kunci privat dan kunci publik. Sepasang kunci dibangkitkan dari dua bilangan prima p dan q. Nilai modulus n untuk menentukan kunci privat dan kunci publik. Untuk kunci publik e dipilih bilangan yang relatif prima terhadap modulus n. Selanjutnya ditentukan kunci privatd, menggunakan algoritme Euclidian dengan persamaan

e.d = 1(mod (n)). Nilai n tidak bersifat rahasia, sebab diperlukan dalam perhitungan enkripsi atau dekripsi,

• Pembangkitan tanda tangan (signature generation), pada bagian blok ini berfungsi untuk membangkitkan

signature menggunakan kunci privat dan modulus n.Pada proses ini dibutuhkan pula akses random number generator.

Signature file yang dihasilkan berisi sebuah nilai dalam bentuk format heksadesimal. Pengubahan nilai acak dari format yang terenkripsi menjadi nilai dalam bentuk format heksadesimal menggunakan sebuah decoder. Fungsi

hash yang digunakan 256, SHA-384 dan Tiger,

• Verifikasi tanda tangan (signature verifying), bagian blok ini berfungsi untuk memverifikasi signature

menggunakan kunci publik. Signature file diubah dari format heksadesimal menjadi format terenkripsi menggunakan

encoder. Proses verifikasi memeriksa

message yang diberikan, apakah

message yang diterima sama dengan hasil verifikasi atau tidak. Jika tidak berarti file yang diterima tersebut sudah mengalami pengubahan data. Keamanan RSA terletak pada sulitnya memfaktorkan bilangan besar menjadi

faktor-faktor primanya atau dalam istilah lain Integer Factorization Problem

(IFP).

Struktur template untuk skema aplikasi RSA, dalam penggunaan class library pada Crypto++ ditunjukkan pada Gambar 8.

Gambar 8Inheritance diagram untuk RSA (Anonim 2009).

2.3 Perancangan ECDSA

• Pembangkitan kunci (key generation), pembuatan key ECDSA dilakukan dengan pencarian parameter domain kurva elliptik Fp, G (base point coordinat), p(prima), n(order). Pada penelitian ini menggunakan kurva elliptik pada bidang terbatas Fp (prime field), karena disesuaikan dengan rekomendasi NIST yang memiliki jumlah polynomial lebih sedikit sehingga lebih efisien. Fungsi penjumlahan dan penggandaan titik kurva koordinat Fp ditunjukkan pada Persamaan 1.

• Pembangkitan tanda tangan (signature generation), bagian blok ini berfungsi untuk membangkitkan signature dengan kunci privat key dan modulus n.Proses

signaturememilih bilangan bulat

randomk, rangenilainya diantara [1, n-1]. Fungsi hash yang digunakan dipertukarkan diantara 256, SHA-384 dan Tiger.

• Verifikasi tanda tangan (signature verifying), bagian blok ini berfungsi untuk memverifikasi signature dengan kunci public. Pesan yang baru diterima diperiksa keabsahannya dengan menggunakan signature file yang sudah disepakati dengan penerima. Jika tidak sesuai, maka pesan itu telah mengalami pengubahan. Keamanan ECDSA terletak pada permasalahan logaritma diskret kurva eliptik dalam istilah lainnya

Elliptic Curve Discrete Logarithm Problem (ECDLP).

Struktur template untuk skema aplikasi ECDSA, dalam penggunaan class library pada Crypto++ ditunjukkan pada Gambar 9.

GDSA <H>

DL_SS< DL_SignatureKeys_GFP, DL_Algorithm_GDSA <Integer>, DL_SignatureMessageEncodingMethod_DSA, H>

DL_SignatureKeys_GFP

RSASS<STANDARD, H> TF_SS<STANDARD, H, RSA>


(19)

10 Gambar 9Inheritance diagram untuk ECDSA

(Anonim 2009).

Pada algoritme kurva eliptik titik input berperan sebagai pembuatsignature, selanjutnya dipetakan menjadi titik output pada proses verifikasi. Pendefinisian persamaan untukoperasi penjumlahan dan penggandaan titik kurva eliptik pada penelitian ini,terbatas untuk mendefinisikan persamaan kurva eliptik pada bidang terbatas Fp.

3. Implementasi PembuatanAplikasi Tanda

Tangan Digital

Implementasi aplikasi tanda tangan digital dibuat menggunakan bahasa pemrograman C++ dengan memanfaatkan library open source

untuk skema kriptografi, yaitu Crypto++

Library.Aplikasi ini dapat dijalankan melalui aplikasi command prompt.Menu-menu yang digunakan meliputi tiga operasi proses yaitu pembangkitan sepasang kunci, pembuatan tandatangan dan verifikasi tanda tangan.

Dalam pembuatan aplikasipada penelitian ini, ada beberapa hal yang harus diperhatikan: • Pembangkit bilangan acak yang

digunakan.Pertama, Operating system random numbergenerator untuk DSA dan ECDSA. Pada objek tersebut bersifat

automatic dan tidak mendefinisikan

parameter-parameter yang berkaitan dengan

key generation seperti panjang kunci dalam bit dan pendefinisian seed. Librarysistem

operasi yang digunakan

CRYPTOPP_WIN32_AVAILABLE dengan memanfaatkan kelas kriptografi yang bernama

MicrosoftCryptoProviderdan

fungsiyang dipanggil yaitu CryptGenRandom.Kedua, Randomness

pool yang dapat menghasilkan

pseudorandom bytes berkualitas

menggunakan incorporate entropy.Objek kelas tersebut memanfaatkan fungsi timer

untuk mengambil nilai waktu current. Selain itu, mendukung juga pendefinisian parameter masukan seed awal dan

penentuan panjang kunci.Pembangkit ini digunakan pada RSA.

• Proses signing dan verifyingmenggunakan

class library sesuai dengan skema algoritme tandatangan digital. Penggunaan fungsi hash

dipertukarkan diantara SHA-256, SHA-384 dan Tiger. Pada proses signing dan

verifyingitu, terdapat pencatatan waktu yang dibutuhkan untuk menjalankan proses dan jumlah memori yang terpakai.

• Pembacaan waktu yang digunakan untuk menjalankan proses signing atau

verifyingadalah perhitungan waktu akhir atau setelah proses selesai dijalankan dikurangi waktu sesaat sebelum proses mulai berjalan. Fungsi waktu yang digunakan dari sistem operasi bernama

GetTickCount(). Fungsi tersebut

memiliki tingkat keakuratan sampai dengan

milisecond.

• Identifikasi jumlah memori yang digunakan untuk menjalankan proses signing atau

verifying, digambarkan dalam tahapan yang dapat dilihat pada Gambar 10. Tahap pertama yaitu identifikasi proses yang sedang berjalan menggunakan GetCurrentProcessId(), selanjutnya membuka proses dengan id yang telah didapatkan sebelumnya menggunakan fungsi OpenProcess(). Jika tidak berhasil maka program langsung dihentikan, jika sebaliknya dilanjutkan dengan mengakses informasi memori yang digunakan oleh proses tersebut dengan dilakukan pemanggilan fungsi GetProcessMemoryInfo(), hasil yang diperoleh disimpan ke dalam sebuah variabel yang selanjutnya bertindak sebagai sebuah objek. Setelah semua proses signing

ataupun verifyingselesai dijalankan, maka dilakukan pengaksesan metode-metode yang berperan menyajikan informasi pagefile usage dan working set size memory. Setelah pencatatan selesai dilakukan maka objek tersebut dihapus.

ECDSA<EC, H>

DL_SS<DL_Keys_ECDSA< EC >, DL_Algorithm_ECDSA < EC >, DL_SignatureMessageEncodingMethod_DSA, H>


(20)

11 Identifikasi ID Proses

Akses Objek Informasi Memori Proses

Baca Ukuran Memori

Buka Proses End Ya

Tidak

Hapus Objek

Gambar 10Diagram tahapan identifikasipenggunaan memori. Dalam mengakses fungsi memori dibutuhkan sebuah file library Application Programming Interface (API) yang bernama Process Status API (PSAPI). Kelas yang

diakses adalah PROCESS_MEMORY_CONTERS. Struktur dari

kelas tersebut mengacu pada sintak di bawah ini.

typedef struct

_PROCESS_MEMORY_COUNTERS { DWORD cb;

DWORD PageFaultCount; SIZE_T PeakWorkingSetSize; SIZE_T WorkingSetSize; SIZE_T QuotaPeakPagedPoolUsage; SIZE_T QuotaPagedPoolUsage; SIZE_T QuotaPeakNonPagedPoolUsage; SIZE_T QuotaNonPagedPoolUsage; SIZE_T PagefileUsage; SIZE_T PeakPagefileUsage; } PROCESS_MEMORY_COUNTERS, *PPROCESS_MEMORY_COUNTERS;

Keterangan masing-masing anggota fungsi dari kelas adalah sebagai berikut:

-cb:Ukuran dari struktur, dalambytes, -PageFaultCount: Jumlahpage faults,

-PeakWorkingSetSize: Set ukuran untuk suatu pekerjaan puncak, dalambytes,

-WorkingSetSize: Set ukuran untuk suatu pekerjaan yang sedang berlangsung, dalambytes,

-QuotaPeakPagedPoolUsage: kuota memori maksimum atau puncak yang telah dialokasikan untuk keseluruhan pemakaian, dalambytes,

-QuotaPagedPoolUsage: kuota memori yang sedang digunakan yang telah dialokasikan pada keseluruhan pemakaian, dalambytes,

-QuotaPeakNonPagedPoolUsage: kuota memori maksimum atau puncak yang belum

dialokasikan terhadap keseluruhan pemakaian, dalambytes,

- QuotaNonPagedPoolUsage: kuota memori yang sedang berlangsung digunakan dan belum dialokasikan terhadap keseluruhan pemakaian, dalambytes,

- PagefileUsage: Jumlah ruang memori yang dialokasikan untuk sebuah pagefile, dalambytes,

- PeakPagefileUsage: Jumlah ruang memori puncak atau maksimum yang dialokasikan untuk sebuah pagefile, dalambytes.

4. Pengujian AplikasiTanda Tangan Digital

Pengujian terhadap aplikasi tanda tangan digital dilakukan dengan memberikan masukan dan mengamati hasil keluarannya.Bilangan prima merupakan salah satu parameter dalam algoritme kriptografi kunci-publik. Bilangan prima ini disarankan berukuran sangat besar sehingga penggunaan tipe data bilangan bulat yang besar mutlak diperlukan. Semua bahasa pemrogaman tidak menyediakan tipe data bilangan bulat yang panjang. Salah satu cara untuk mengatasi tipe data tersebut adalah membuat primitif aritmatika bilangan bulat yang besar. Bilangan tersebut disimpan dalam tipe string, dengan setiap angkanya diperlakukan sebagai karakter.Hasil pengujian dapat dilihat pada Lampiran 1. Pada Lampiran 1 diinformasikan bahwa telah dilakukan pengujian terhadap aplikasi tanda tangan digital terhadap 3 proses yakni, pembangkitan kunci (key generation), pembangkitan tanda tangan (signature generation) dan verifikasi tanda tangan (signature verifying) dengan hasil uji sukses.

Untuk proses pembangkitan kunci, menghasilkan keluaran berupa kunci privat dan kunci publik. Proses pembangkitan tanda tangan menghasilkan keluaran berupa signature file, waktu proses dan jumlah memori yang digunakan. Proses verifikasi tanda tangan keluarannya berupa informasi hasil verifikasi, yakni verifikasi telah sukses dilakukan, serta waktu proses dan jumlah memori yang digunakan.

5. Analisis Hasil Pengujian

Pada bagian ini dijelaskan hasil pengujian terhadap aplikasi tandatangan digital. Metode yang digunakan untuk mengidentifikasi kesimpulanumum dari hasil pengujianuntuk waktu proses dilakukanmelalui uji statistik, sementara hasil pengujian untuk penggunaan memori tidak secara statistik karena hasilnya sudah cukup berbeda nyata.Data hasil pengujian pada penelitian ini dapat dilihat pada Lampiran


(21)

12 2. Analisis data hasil pengujian terbagi kedalam

dua bagian yakni analisis terhadap hasil waktu proses signing dan waktu proses verifying, kemudian analisis terhadap hasil identifikasi penggunaan memori baik pada saat proses

signing maupun verifying.

Analisis hasil waktu proses signing dan waktu proses verifyingdilihat dari segi keragaman data hasil pengujian menggunakan teknik analisis ragam.Perancangan yang digunakan adalah rancangan faktorial dalam Rancangan Acak Lengkap (RAL). Dengan rancangan tersebut akan didapatkan sebuah nilai respon dari hasil pengujian dengan beberapa perlakuan dalam lingkungan yang sama. Pada penelitian ini hanya dilakukan pada satu lingkungan, yaitu pada sebuah komputer, dengan dua faktor yaitu faktor algoritme yang terdiri dari 3 level (DSA, ECDSA dan RSA) dan faktor fungsi hash yang terdiri dari 3 level (SHA-256, SHA-384 dan Tiger), sehingga ada 9 perlakuan.

Taraf nyata (α) yang digunakan pada pengujian ini adalah 5% atau 0.05. Taraf nyata merupakan peluang menolak H0 yang pada

hakekatnya benar. Besarnya α ditentukan berdasarkan konvensi para ahli yaitu 1% dan 5%. Secara pragmatis α diartikan sebagai taraf kekeliruan atau resiko salah dalam mengambil

kesimpulan penelitian. Dengan memperkecil α,

berarti memperkecil resiko salah dalam mengambil kesimpulan. Dengan menggunakan

α=0.05 pada pengujian ini, maka resiko salah dalam pengambilan kesimpulan adalah 5%.

Lawan dari α adalah taraf kepercayaan, yaitu seberapa besar dapat dipercaya kesimpulan yang diambil dalam sebuah penelitian. Pada penelitian ini dengan α=5%, maka taraf kepercayaan 95% merupakan angka minimal yang harus dicapai data yang diperoleh agar dapat menolak H0. Hipotesis penelitian ini

meliputi H0 yaitu rerata perlakuan adalah sama

dan H1 yaitu satu atau lebih pasangan rerata

perlakuan adalah berbeda.

Proses pengolahan data untuk analisis ragam dilakukan dengan menggunakan software

Minitab. Data masukannya adalah data hasil pengujian pada aplikasi yang telah dibuat sebelumnya. Data tersebut merupakan data waktu dalam melakukan proses signing dan

verifying menggunakan aplikasi yang telah dihasilkan sebelumnya. Pada data waktu tersebut terlebih dahulu dilakukan transformasi data menggunakan logaritma natural (ln) terlebih dahulu agar data tersebut dinyatakan memenuhi syarat asumsi analisis ragam. Setelah data memenuhi syarat asumsi tersebut, kemudian dapat dilanjutkan proses analisis

ragam menggunakan fungsi-fungsi pada

software Minitab yang akan dijelaskan lebih lanjut pada bagian analisis ragam waktu proses

signing dan waktu proses verifying.

Analalisis berikutnya adalah analisis hasil identifikasi penggunaan memori baik pada saat proses signing maupun verifying.Data ini diperoleh dari keterangan jumlah memori yang dibutuhkan pada saat dilakukan proses signing

dan verifying pada aplikasi yang telah dibuat sebelumnya. Data yang telah dicatat, diolah menggunakan microsoft office excel yang disajikan berupa grafik untuk mempermudah pengamatan. Analisis ini tidak dapat menggunakan teknik analisis ragam dikarenakan datanya tidak memenuhi dua syarat asumsi analisis ragam, sebab datanya tidak menyebar normal dan ragamnya tidak bersifat homogen.

Metrik pengukuran untuk analisisyang digunakan dalam penelitian ini adalah sebagai berikut:

1 Waktu proses signing dan verifying

Waktu proses pada penelitian ini didefinisikan sebagai lama waktu yang diperlukan dalam menjalankan proses

signing untuk pembuatan signature filedan prosesverifyingberfungsi untuk memeriksa keabsahan tandatangan. Fungsi yang digunakan untuk pembacaan waktu proses ini adalah GetTickCount(). Perhitungan untuk waktu proses ditunjukkan pada persamaan 6.

Waktu = Waktu Akhir – Waktu Awal (6) 2 Jumlah memori yang terpakai untuk proses

signing dan verifying

Pembacaaan jumlah memori yang sudah terpakai untuk menjalankan proses

signingdenganGetProcessMemoryInfo . Fungsi tersebut dapat memperoleh keterangan pemakaian memori dari suatu proses pekerjaan tertentu.

5.1.Analisis Ragam Waktu Proses Signing

dan Waktu Proses Verifying

Analisis tahap ini merupakan analisis pada hasil pengujianyang membandingkan kinerja algoritme tandatangan digital secara umum pada penggunaan fungsi hash SHA-256, SHA-384 dan Tiger pada ukuran file tertentu yang meliputi waktu proses signing dan waktu proses

verifying. Metode yang digunakan adalah perancangan faktorial dengan dua faktor yaitu algoritme yang terdiri atas 3 taraf (DSA, ECDSA dan RSA) dan faktor fungsi hash yang terdiri atas 3 taraf (SHA-256, SHA-384 dan Tiger). Proses pengolahan data untuk analisis ragam dilakukan dengan menggunakan


(22)

13

softwareMinitab. Tampilan software tersebut dapat dilihat pada Lampiran 3.

Dua syarat minimal data dinyatakan memenuhi asumsi dalam analisis ragam adalah:

- Data menyebar normal. - Ragam bersifat homogen.

Untuk mengetahui data hasil pengujian memenuhi ke-2 asumsi tersebut, maka terlebih dahulu dilakukan pengujian menggunakan data yang telah diperoleh.Pada penelitian ini dilakukan pengujian pada data waktu proses

signing dengan ukuran file 5Mb. Pengujian dilakukan dengan melakukan dua uji, yaitu

normal probability plot dan test for equal variences.

Normal probability plot merupakan sebuah pengujian yang dilakukan untuk menentukan apakah data menyebar normal atau tidak. Hasil pengujian ini dapat dilihat pada Lampiran 4. Pada Lampiran 4 terlihat bahwa p-value (nilai probabilitas) lebih kecil dari 0.01 (p-value< 0.01) yang berarti bahwa data tidak menyebar normal karena seharusnya p-value≥ α, (dengan nilai α=0.05).

Test for equal variences dilakukan untuk mengetahui apakah ragam data memenuhi asumsi kehomogenan atau tidak. Hasil pengujian ini terdapat pada Lampiran 4. Pada Lampiran 4, terlihat bahwa p-value adalah 0.000, seharusnya p-value≥ α yang artinya

ragam data tidak homogen sehingga tidak memenuhi asumsi kehomogenan.

Dengan demikian untuk solusinya harus dilakukan transformasi data menggunakan logaritma natural (ln) terlebih dahulu terhadap data asli. Data waktu proses signingyang telah mengalami proses transformasi dapat dilihat pada Lampiran 5, sementara data waktu proses

verifying yang telah mengalami proses

transformasi dapat dilihat pada Lampiran 6.Setelah diperoleh hasil data yang telah mengalami proses transformasi, maka dilakukan kembali 2 tes tersebut terhadap contoh data dari masing-masing waktu proses signing dan

verifying.

Untuk waktu proses signinghasil ke-2 tes tersebut dapat dilihat pada Lampiran7. Pada lampiran tersebut dari hasil normal probability plot diperoleh p-value lebih besar dari 0.15 ( p-value> 0.15), karena nilai p-value lebih besar

dari α berarti data menyebar normal. Demikian

pula pada hasil Test for equal variences

diperolehp-value= 0.399, karena nilai p-value lebih besar dari α berarti data memenuhi asumsi kehomogenan.

Untuk waktu proses verifying hasil ke-2 tes tersebut dapat dilihat pada Lampiran8. Pada lampiran tersebut dari hasil normal probability

plot diperoleh p-value lebih besar dari 0.073 ( p-value> 0.073), karena nilai p-value lebih besar

dari α berarti data menyebar normal. Demikian

pula pada hasil test for equal variences

diperoleh p-value = 0.063, karena nilai p-value lebih besar dari α berarti data memenuhi asumsi

kehomogenan.

Analisis Waktu Proses Signing

Pada proses signing untuk masing-masing algoritme, satu sama lain memiliki kinerja waktu yang hampir sama. Identifikasi kinerja waktu, dapat juga ditinjau dari penggunaan fungsi hash. Hasil perbandingan waktu proses

signing ditunjukkan pada Gambar 11. Dari hasil tersebuttampak bahwa algoritme DSA dengan fungsi hashTiger terlihat lebih baik dibandingkan yang lain.

Gambar 11 Perbandingan waktu proses

signingalgoritme DSA, RSA dan ECDSA.

Namun hasil itu belum menunjukkan secara pasti bahwa ketiga algoritme memang berbeda nyata dalam hal kinerja. Perbedaan yang cukup signifikan dapat terlihat juga pada penggunaan fungsi hash. Oleh karena itu, dilakukan uji Anova.

Tabel uji Anovauntuk waktu proses signing

dapat dilihat pada Tabel 3 s/d 7 di bawah ini. Tabel 3Uji ANOVAwaktu prosessigningdengan

ukuran file 5MB

394.47 468.67

513.80

586.87 666.00

1408.40

193.40 265.87 274.47

0.00 200.00 400.00 600.00 800.00 1000.00 1200.00 1400.00 1600.00

DSA RSA ECDSA

Wa k tu ( m s) Digital Signature SHA-256 SHA-384 TIGER

Sumber

Derajat

bebas

Jumlah

Kuadrat (SS)

Kuadrat

Tengah (MS)

F hitung

(0.05)

F DIST (P)

Algoritme

2

1.31272

0.65636

186.41

0.000

Hash

2

5.59948

2.79974

795.15

0.000

Algoritme *Hash

4

0.40578

0.10144

28.81

0.000

Galat

18

0.06338

0.00352


(23)

14 Tabel4Uji ANOVAwaktu prosessigningdengan

ukuran file10MB

Tabel 5Uji ANOVAhasil waktu

prosessigningdengan ukuran file 20MB

Tabel 6Uji ANOVAwaktu prosessigningdengan ukuran file 40MB

Tabel 7Uji ANOVA waktu

prosessigningdengan ukuran file 80MB

Dari Tabel 3 s/d 7 uji ANOVAwaktu proses

signing di atas dapat dilihat bahwa nilai P (probabilitas) yang dihasilkan semuanya lebih

kecil dari α (dengan α=0.05).Hasil ini memberikan kesimpulan bahwa algoritme dan fungsi hash menimbulkan perbedaan nyata pada proses signin. Kesimpulan lain yang dapat diambil adalah:

• Faktor Algoritme

F (P) (0.000) < α (0.05), maka tolak H0

pada taraf nyata 5%. Artinya dengan nilai tersebut, minimal ada satu diantara 3 level faktor algoritme yang menyebabkan

perbedaan waktu proses signing pada ukuran file 5MB, 10MB, 20MB, 40MB dan 80MB.

• Faktor Fungsi Hash

F (P) (0.000) < α (0.05), maka tolak H0

pada taraf nyata 5%. Artinya dengan nilai tersebut, minimal ada satu diantara 3 level faktor fungsi hash yang menyebabkan perbedaan waktu proses signing pada ukuran file 5MB, 10MB, 20MB, 40MB dan 80MB.

• Interaksi Algoritme x Fungsi Hash

F (P) (0.000) < α (0.05), maka tolak H0

pada taraf nyata 5%, karena dengan nilai tersebut, minimal ada sepasang dari level faktor algoritme dan fungsi hashyang berbeda, yang artinya ada pengaruh interaksi antara faktor algoritme dan faktor fungsi hashterhadap waktu proses signing

pada ukuran file 5MB, 10MB, 20MB, 40MB dan 80MB.

Setelah sebelumnya dengan uji ANOVAtelah diketahui ada atau tidaknya perbedaan nyata dari perlakuan yang diamati, maka pada ujiGeneral Linear Model (GLM) dapat juga diketahui perbandingan interaksi perlakuan dengan metode uji Tukey. Uji Tukey digunakan untuk mengetahui perlakuan mana saja yang berbeda nyata. Perbandingannya berdasarkan nilai rata-rata (mean) yang diperoleh dari uji Balanced ANOVA. Ringkasan hasil perbandingan menggunakan uji Tukey tersebut untuk waktu proses signingdapat dilihat pada Tabel 8 s/d 12di bawah ini.

Tabel 8Perbandingan perlakuan hasil waktu prosessigningdengan ukuran file 5MB

Dari Tabel 8 di atas diketahui bahwa perlakuan yang berbeda nyata dari segi waktu prosessigningdengan ukuran file 5MB adalah DSA-Tiger, RSA-Tiger dan ECDSA-SHA384 karena ke-3 perlakuan ini memiliki nilai rata-rata yang tidak mirip dengan perlakuan lain. Tabel 9Perbandingan perlakuan hasil waktu

prosessigningdengan ukuran file 10MB Sumber Derajat bebas Jumlah Kuadrat (SS) Kuadrat Tengah (MS) F hitung (0.05) F DIST (P) Algoritme 2 0.99007 0.49503 581.88 0.000 Hash 2 6.39729 3.19865 3,759.79 0.000 Algoritme *Hash 4 0.57854 0.14463 170.01 0.000 Galat 18 0.01531 0.00085

Total 26 7.98121

Sumber Derajat bebas Jumlah Kuadrat (SS) Kuadrat Tengah (MS) F hitung (0.05) F DIST (P) Algoritme 2 1.08610 0.54300 756.68 0.000 Hash 2 6.61690 3.30850 4,610.12 0.000 Algoritme *Hash 4 0.57850 0.14460 201.53 0.000 Galat 18 0.01290 0.00070

Total 26 8.29440

Sumber Derajat bebas Jumlah Kuadrat (SS) Kuadrat Tengah (MS) F hitung (0.05) F DIST (P) Algoritme 2 1.10460 0.55230 991.56 0.000 Hash 2 6.75570 3.37780 6,064.56 0.000 Algoritme *Hash 4 0.59800 0.14950 268.43 0.000 Galat 18 0.01000 0.00060

Total 26 8.46830

Sumber Derajat bebas Jumlah Kuadrat (SS) Kuadrat Tengah (MS) F hitung (0.05) F DIST (P) Algoritme 2 1.14120 0.57060 2,636.15 0.000 Hash 2 6.85600 3.42800 16,000.00 0.000 Algoritme *Hash 4 0.54170 0.13540 625.60 0.000 Galat 18 0.00390 0.00020

Total 26 8.54280

DSA-Tiger RSA-Tiger ECDSA-Tiger DSA-256 RSA-256 ECDSA-256 DSA-384 RSA-384 ECDSA-384


(24)

15 Dari Tabel 9 di atas diketahui bahwa

perlakuan yang berbeda nyata dari segi waktu prosessigningdengan ukuran file 10MB adalah DSA-Tiger, DSA-SHA-256, RSA-SHA-256, ECDSA-SHA-256 dan ECDSA-SHA384 karena ke-5 perlakuan ini memiliki nilai rata-rata yang tidak mirip dengan perlakuan lain. Tabel 10Perbandingan perlakuan hasil waktu

prosessigningdengan ukuran file

20MB

Dari Tabel 10 di atas diketahui bahwa perlakuan yang berbeda nyata dari segi waktu prosessigningdengan ukuran file 20MB adalah DSA-Tiger, DSA-SHA-256, DSA-SHA-384, RSA-SHA-384 dan ECDSA-SHA384 karena ke-5 perlakuan ini memiliki nilai rata-rata yang tidak mirip dengan perlakuan lain.

Tabel 11Perbandingan perlakuan hasil waktu prosessigningdengan ukuran file

40MB

Dari Tabel 11 di atas diketahui bahwa perlakuan yang berbeda nyata dari segi waktu prosessigningdengan ukuran file 40MB adalah

DSA-Tiger, DSA-SHA-256, RSA-SHA-256, ECDSA-SHA-256, DSA-SHA-384, RSA-SHA-384 dan ECDSA-SHARSA-SHA-384 karena ke-7 perlakuan ini memiliki nilai rata-rata yang tidak mirip dengan perlakuan lain.

Tabel 12Perbandingan perlakuan hasil waktu prosessigningdengan ukuran file

80MB

Dari Tabel 12 di atas diketahui bahwa perlakuan yang berbeda nyata dari segi waktu prosessigningdengan ukuran file 80MB adalah DSA-Tiger, DSA-SHA-256, RSA-SHA-256, ECDSA-SHA-256, DSA-SHA-384, RSA-SHA-384 dan ECDSA-SHARSA-SHA-384 karena ke-7 perlakuan ini memiliki nilai rata-rata yang tidak mirip dengan perlakuan lain.

Dari Tabel 8 s/d 12dapat diambil kesimpulan sebagai berikut:

• Perlakuan yang paling berbeda nyata adalah DSA-Tiger dan ECDSA-SHA-384 karena dalam berbagai ukuran file ke-2 perlakuan ini memiliki nilai rata-rata yang tidak mirip dengan perlakuan lain.

• Dalam berbagai ukuran filekombinasi

DSA-Tiger pada proses

signingmenghasilkan nilai rata-rata paling kecil yang artinya DSA-Tiger merupakan kombinasi terbaik karena melakukan proses

signing paling cepat.

• Dalam berbagai ukuran file kombinasi ECDSA-SHA-384 pada proses signing

menghasilkan nilai rata-rata paling besar yang artinya ECDSA-SHA-384 merupakan kombinasi terburuk karena melakukan proses signing paling lama.

• Perlakuan yang paling miripadalah RSA-Tiger dengan ECDSA-RSA-Tiger. Kesamaan ini terjadi dalam berbagai ukuran file kecuali

file ukuran 5MB. Pada ukuran 5MB ECTiger lebih mirip dengan DSA-SHA-256.

Pada Lampiran 9 disertakan salah satu hasil plot interaksi data watu proses signing dengan ukuran file 5MB. Dari hasil plot interaksi

DSA-Tiger RSA-Tiger ECDSA-Tiger DSA-256 RSA-256 ECDSA-256 DSA-384 RSA-384 ECDSA-384

4.23 4.51 4.53 4.90 5.04 5.14 5.31 5.39 6.15

DSA-Tiger RSA-Tiger ECDSA-Tiger DSA-256 RSA-256 ECDSA-256 DSA-384 RSA-384 ECDSA-384

4.86 5.14 5.19 5.56 5.73 5.81 5.93 6.07 6.83

DSA-Tiger RSA-Tiger ECDSA-Tiger DSA-256 RSA-256 ECDSA-256 DSA-384 RSA-384 ECDSA-384 5.50 5.83 5.85 6.22 6.40 6.46 6.61 6.74 7.50

DSA-Tiger RSA-Tiger ECDSA-Tiger DSA-256 RSA-256 ECDSA-256 DSA-384 RSA-384 ECDSA-384 6.18 6.51 6.53 6.90 7.08 7.18 7.31 7.44 8.18


(25)

16 tersebut dapat dilihat bahwa terdapat interaksi

baik dari faktor algoritme maupun faktor fungsi

hash.

Analisis Waktu Proses Verifying

Hasil perbandingan waktu proses verifying

ditunjukkan pada Gambar 12. Dari hasil tersebuttampak bahwa algoritme DSA dengan fungsi hashTiger terlihat lebih baik dibandingkan yang lain.

Gambar 12 Perbandingan waktu proses

verifyingalgoritme DSA, RSA dan ECDSA.

Namun hasil itu belum menunjukkan secara pasti bahwa ketiga algoritme memang berbeda nyata dalam hal kinerja. Perbedaan yang cukup signifikan dapat terlihat juga pada penggunaan fungsi hash. Oleh karena itu, dilakukan uji ANOVA.

Tabel uji ANOVAuntuk waktu proses

verifyingdapat dilihat pada Tabel 13 s/d 17 di bawah ini.

Tabel 13Uji ANOVAwaktu

prosesverifyingdengan ukuran file

5MB

Tabel 14Uji ANOVAwaktu

prosesverifyingdengan ukuran file

10MB

Tabel 15Uji ANOVAwaktu

prosesverifyingdengan ukuran

file20MB

Tabel 16Uji ANOVAwaktu

prosesverifyingdengan ukuran

file40MB

Tabel 17Uji ANOVAwaktu

prosesverifyingdengan ukuran

file80MB

Dari Tabel 13 s/d 17 ujiANOVAwaktu proses verifying di atas dapat dilihat bahwa nilai P (probabilitas) yang dihasilkan semuanya lebih

kecil dari α (dengan α=0.05). Hasil ini

396.67 807.00 847.07 588.67 971.73 1488.87 193.87 688.80 712.60 0.00 200.00 400.00 600.00 800.00 1000.00 1200.00 1400.00 1600.00

DSA RSA ECDSA

Wa k t u ( m s ) Digital Signature SHA-256 SHA-384 TIGER

Sumber

Derajat

bebas

Jumlah

Kuadrat (SS)

Kuadrat

Tengah (MS)

F hitung

(0.05)

F DIST (P)

Algoritme

2

5.12322

2.56161

360.86

0.000

Hash

2

2.07623

1.03811

146.24

0.000

Algoritme *Hash

4

0.42384

0.10596

14.93

0.000

Galat

18

0.12778

0.00710

Total

26

7.75107

Sumber

Derajat

bebas

Jumlah

Kuadrat (SS)

Kuadrat

Tengah (MS)

F hitung

(0.05)

F DIST (P)

Algoritme

2

4.00703

2.00351

1,220.13

0.000

Hash

2

2.70501

1.35250

823.67

0.000

Algoritme *Hash

4

0.44140

0.11035

67.20

0.000

Galat

18

0.02956

0.00164

Total

26

7.18299

Sumber

Derajat

bebas

Jumlah

Kuadrat (SS)

Kuadrat

Tengah (MS)

F hitung

(0.05)

F DIST (P)

Algoritme

2

4.64362

2.32181

21,000.00

0.000

Hash

2

2.36470

1.18235

11,000.00

0.000

Algoritme *Hash

4

0.51334

0.12834

1,150.34

0.000

Galat

18

0.00201

0.00011

Total

26

7.52367

Sumber Derajat bebas Jumlah Kuadrat (SS) Kuadrat Tengah (MS) F hitung (0.05) F DIST (P) Algoritme 2 5.18230 2.59120 18,000.00 0.000 Hash 2 2.38860 1.19430 8,324.64 0.000 Algoritme *Hash 4 0.56850 0.14210 990.59 0.000 Galat 18 0.00260 0.00010

Total 26 8.14190

Sumber Derajat bebas Jumlah Kuadrat (SS) Kuadrat Tengah (MS) F hitung (0.05) F DIST (P) Algoritme 2 5.35310 2.67650 1,725.53 0.000 Hash 2 2.41790 1.20890 779.38 0.000 Algoritme *Hash 4 0.62010 0.15500 99.94 0.000 Galat 18 0.02790 0.00160


(1)

Lampiran 19 Kode Program Fungsi

Signing

ECDSA

void SignMessageECDSA_256( const char *privFilename, const char *messageFilename, const char *signatureFilename)

{

AutoSeededRandomPool prng;

ECDSA<ECP, SHA1>::PrivateKey privateKey; ///////////////////////////////////////////// // Load key in PKCS#9 and X.509 format LoadPrivateKey( privFilename, privateKey);

// Perhitungan Waktu Awal time_t tim=time(NULL); tm *now=localtime(&tim);

printf("\n Tanggal : %d/%02d/%02d", now->tm_year+1900, now->tm_mon+1, now->tm_mday);

mulai = now->tm_sec;

printf(" Jam : %02d:%02d:%02d\n", now->tm_hour, now->tm_min, now->tm_sec); mulai = GetTickCount();

cout<<"\n\tPROSES TANDA TANGAN ECDSA (SHA-256)...\n\n"; DWORD processId; // Id dari proses

HANDLE hProcess; // Penanganan untuk proses

PPROCESS_MEMORY_COUNTERS pMemCountr = new PROCESS_MEMORY_COUNTERS; // Memperoleh dan menampilkan proses Id saat ini

processId=GetCurrentProcessId(); // Membuka proses

if( (hProcess=OpenProcess(PROCESS_QUERY_INFORMATION, TRUE, processId)) == NULL){

cout << "Tidak dapat membuka proses : " << GetLastError() << endl; }

if( GetProcessMemoryInfo(hProcess,pMemCountr, sizeof(PROCESS_MEMORY_COUNTERS))){

// Proses Tanda Tangan

ECDSA<ECP,SHA256>::Signer priv(privateKey);

FileSource f(messageFilename, true, new SignerFilter(prng, priv, new HexEncoder(new FileSink(signatureFilename))));

}

cout << "\tId proses saat ini: " << processId << endl; printf( "\tPenggunaan Pagefile Memori(Dec): %uK\n",

pMemCountr->PagefileUsage );

printf( "\tPenggunaan Pagefile Memori(Hex): 0x%08X\n", pMemCountr->PagefileUsage );

printf( "\tPenggunaan Memori(WorkingSetSize): %uK\n\n", pMemCountr->WorkingSetSize );

delete pMemCountr;

// Perhitungan Waktu Akhir akhir = GetTickCount();

printf(" Jam : %02d:%02d:%02d\n", now->tm_hour, now->tm_min, now->tm_sec); printf(" Waktu eksekusi (GetTickCount): %d ms\n", akhir - mulai);


(2)

Lampiran 20 Potongan Kode Program

Template class

yang digunakan pada ECDSA

//! <a href="http://www.weidai.com/scan-mirror/sig.html#ECDSA">ECDSA</a> template <class EC, class H>

struct ECDSA : public DL_SS< DL_Keys_ECDSA<EC>, DL_Algorithm_ECDSA<EC>,

DL_SignatureMessageEncodingMethod_DSA, H> {

};

//! Discrete Log Based Signature Scheme

template <class KEYS, class SA, class MEM, class H, class ALG_INFO = DL_SS<KEYS, SA, MEM, H, int>>

class DL_SS : public KEYS {

typedef DL_SignatureSchemeOptions<ALG_INFO, KEYS, SA, MEM, H> SchemeOptions; public:

static std::string StaticAlgorithmName() {return SA::StaticAlgorithmName() + std::string("/EMSA1(") + H::StaticAlgorithmName() + ")";}

//! implements PK_Signer interface

typedef PK_FinalTemplate<DL_SignerImpl<SchemeOptions>> Signer; //! implements PK_Verifier interface

typedef PK_FinalTemplate<DL_VerifierImpl<SchemeOptions>> Verifier; };

//! ECDSA keys template <class EC> struct DL_Keys_ECDSA {

typedef DL_PublicKey_EC<EC> PublicKey;

typedef DL_PrivateKey_WithSignaturePairwiseConsistencyTest< DL_PrivateKey_EC<EC>, ECDSA<EC>> PrivateKey;

};

template <class BASE, class SIGNATURE_SCHEME>

class DL_PrivateKey_WithSignaturePairwiseConsistencyTest : public BASE {

public:

void GenerateRandom(RandomNumberGenerator &rng, const NameValuePairs &params) {

BASE::GenerateRandom(rng, params); if (FIPS_140_2_ComplianceEnabled()) {

typename SIGNATURE_SCHEME::Signer signer(*this); typename SIGNATURE_SCHEME::Verifier verifier(signer);

SignaturePairwiseConsistencyTest_FIPS_140_Only(signer, verifier); }

} };

void SignaturePairwiseConsistencyTest_FIPS_140_Only(const PK_Signer &signer, const PK_Verifier &verifier)

{

#if CRYPTOPP_ENABLE_COMPLIANCE_WITH_FIPS_140_2

SignaturePairwiseConsistencyTest(signer, verifier); #endif


(3)

Lampiran 20 Lanjutan

//! ECDSA algorithm template <class EC>

class DL_Algorithm_ECDSA : public DL_Algorithm_GDSA<typename EC::Point> {

public:

static const char * CRYPTOPP_API StaticAlgorithmName() {return "ECDSA";} };

//! GDSA algorithm template <class T>

class DL_Algorithm_GDSA : public DL_ElgamalLikeSignatureAlgorithm<T> {

public:

static const char * CRYPTOPP_API StaticAlgorithmName() {return "DSA-1363";} void Sign(const DL_GroupParameters<T>&params, const Integer &x, const Integer &k, const Integer &e, Integer &r, Integer &s) const

{

const Integer &q = params.GetSubgroupOrder(); r %= q;

Integer kInv = k.InverseMod(q); s = (kInv * (x*r + e)) % q; assert(!!r && !!s);

}

bool Verify(const DL_GroupParameters<T>&params, const

DL_PublicKey<T>&publicKey, const Integer &e, const Integer &r, const Integer &s) const

{

const Integer &q = params.GetSubgroupOrder(); if (r>=q || r<1 || s>=q || s<1)

return false;

Integer w = s.InverseMod(q); Integer u1 = (e * w) % q; Integer u2 = (r * w) % q;

// verify r == (g^u1 * y^u2 mod p) mod q Return r ==

params.ConvertElementToInteger(publicKey.CascadeExponentiateBaseAndPublic Element(u1, u2)) % q;

} };

class CRYPTOPP_DLL DL_SignatureMessageEncodingMethod_DSA : public PK_DeterministicSignatureMessageEncodingMethod

{

public:

void ComputeMessageRepresentative(RandomNumberGenerator &rng, const byte *recoverableMessage, size_t recoverableMessageLength,

HashTransformation &hash, HashIdentifier hashIdentifier, bool messageEmpty, byte *representative, size_t representativeBitLength) const;


(4)

(5)

Lampiran 22 Ilustrasi Proses Kerja Aplikasi Tanda Tangan Digital

Menjalankan cryptest.exe pada command prompt

file tandatangan pesan asli Menyiapkan file 1.pdf

Pembangkitan Kunci

a) Diketik : cryptest rgk

b) Memberi masukan : - panjang kunci - seed

- nama kunci private - nama kunci public

c) Diperoleh : - kunci private - kunci public

b) Diperoleh :

file tandatangan pesan asli

Membuat Tandatangan (signing)

a) Diketik :cryptest rsign_256 privatekeyfile messagefile signaturefile

c) Dicatat : - waktu signing - jumlah memori

d) Dikirim :

file 1.pdf

Verifikasi keabsahan (verifying)

a)Diketik :cryptest rverif_256 publickeyfile messagefile signaturefile

c) Dicatat : - waktu verifying - jumlah memori b) Proses :

membanding kan. Jika sama, maka

pesan masih file tandatangan

pesan yang diterima file tandatangan


(6)