ANALISIS IMPLEMENTASIDIGITAL 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
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. Keywords: Cryptography, Digital Signatures, Hash Functions, Crypto + + Library, Anova
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
Judul Skripsi
:
Nama NIM
: :
Analisis ImplementasiDigital Signature Standard menggunakan Fungsi Hash SHA-256, SHA-384 dan Tiger Ferraro S.Octora Ginting G64076026
Menyetujui: Pembimbing I,
Pembimbing II,
Shelvie Nidya Neyman, S.Kom., M.Si NIP. 19770206 200501 2 002
Aziz Kustiyo, S.Si., M.Kom NIP. 19700719 199802 1 001
Mengetahui: Ketua Departemen Ilmu Komputer,
Dr. Ir. Agus Buono, M.Si., M.Kom. NIP. 196607021993021 001
Tanggal Lulus :
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.
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
Ferraro S.Octora Ginting
DAFTAR ISI Halaman DAFTAR TABEL .............................................................................................................................. viii DAFTAR GAMBAR ......................................................................................................................... viii DAFTAR LAMPIRAN....................................................................................................................... ix PENDAHULUAN Latar Belakang ............................................................................................................................. Tujuan Penelitian ......................................................................................................................... Ruang Lingkup Penelitian ............................................................................................................ Manfaat Penelitian ........................................................................................................................
1 1 1 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 LAMPIRAN ....................................................................................................................................... 23
vii
DAFTAR TABEL Halaman 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Spesifikasi fungsi hash SHA-256, SHA-384 dan Tiger ......................................................... 3 Skenario pengujian penggabungan algoritme tanda tangan digital dengan fungsi hash ........ 7 Uji Anovawaktu prosessigningdengan ukuran file 5MB........................................................ 13 Uji Anovawaktu prosessigningdengan ukuran file 10MB...................................................... 13 Uji Anovawaktu prosessigningdengan ukuran file 20MB...................................................... 13 Uji Anovawaktu prosessigningdengan ukuran file 40MB...................................................... 13 Uji Anovawaktu prosessigningdengan ukuran file 80MB...................................................... 13 Perbandingan perlakuan hasil waktu prosessigningdengan ukuran file 5MB ........................ 14 Perbandingan perlakuan hasil waktu prosessigningdengan ukuran file 10MB ...................... 14 Perbandingan perlakuan hasil waktu prosessigningdengan ukuran file 20MB ...................... 14 Perbandingan perlakuan hasil waktu prosessigningdengan ukuran file 40MB ...................... 14 Perbandingan perlakuan hasil waktu prosessigningdengan ukuran file 80MB ...................... 15 Uji Anovawaktu prosesverifyingdengan ukuran file 5MB ..................................................... 15 Uji Anovawaktu prosesverifyingdengan ukuran file 10MB ................................................... 16 Uji Anovawaktu prosesverifyingdengan ukuran file 20MB ................................................... 16 Uji Anovawaktu prosesverifyingdengan ukuran file 40MB ................................................... 16 Uji Anovawaktu prosesverifyingdengan ukuran file 80MB ................................................... 16 Perbandingan perlakuan hasil waktu prosesverifyingdengan ukuran file 5MB ...................... 16 Perbandingan perlakuan hasil waktu prosesverifyingdengan ukuran file 10MB .................... 17 Perbandingan perlakuan hasil waktu prosesverifyingdengan ukuran file 40MB .................... 17 Perbandingan perlakuan hasil waktu prosesverifyingdengan ukuran file 80MB .................... 17 Ringkasan hasil pengujian penggunaan memori pada proses signing .................................... 18 Ringkasan hasil pengujian penggunaan memori pada proses verifying ................................. 18
DAFTAR GAMBAR Halaman 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Diagramkriptografi kunci-publik .......................................................................................... 2 Diagrampenggunaan pembangkit aliran kunci ....................................................................... 3 Struktur umum fungsi hash .................................................................................................... 3 Diagramtanda tangan digital menggunakan fungsi hash satu arah ........................................ 4 Tahapan penelitian ................................................................................................................. 7 Tampilan antarmuka apikasi .................................................................................................. 8 Inheritance diagram untuk DSA ............................................................................................ 8 Inheritance diagram untuk RSA ............................................................................................ 9 Inheritance diagram untuk ECDSA ....................................................................................... 9 Diagram tahapan identifikasi penggunaanmemori ................................................................. 10 Perbandingan waktu proses signingalgoritme DSA, RSA dan ECDSA ................................ 13 Perbandingan waktu proses verifyingalgoritme DSA, RSA dan ECDSA .............................. 15 Perbandingan penggunaan memori proses signing DSA, RSA dan ECDSA ......................... 18 Perbandingan penggunaan memori proses verifying DSA, RSA dan ECDSA ...................... 18
viii
DAFTAR LAMPIRAN Halaman 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Hasil Pengujian Aplikasi Tanda Tangan Digital ................................................................... Data Hasil Pengujian Aplikasi Tanda Tangan Digital .......................................................... Tampilan Software Minitab.................................................................................................... Hasil UjiNormal Probability Plot dan Test for Equal Variences Pada Proses Signing (dengan hasil data tidak menyebar normal) .......................................................................... Data Waktu Proses Signing yang Telah Ditransformasi Menggunakan Logaritma Natural .. Data Waktu Proses Verifying yang Telah Ditransformasi Menggunakan Logaritma Natural Hasil UjiNormal Probability Plot dan Test for Equal Variences Pada Proses Signing (dengan hasil data menyebar normal) ................................................................................... Hasil UjiNormal Probability Plot dan Test for Equal Variences Pada Proses Verifying (dengan hasil data menyebar normal) .................................................................. Plot Interaksi Waktu proses Signing ...................................................................................... Plot Interaksi Waktu proses Verifying .................................................................................... Algoritme Komputasi Hash SHA-256 ................................................................................... Algoritme Komputasi Hash SHA-384 ................................................................................... Algoritme Komputasi HashTiger ........................................................................................... Potongan Kode Program Template Class untuk Proses Signing dan Verifying...................... Kode Program Fungsi Signing DSA ...................................................................................... Potongan Kode Program Template class yang digunakan pada DSA .................................... Kode Program Fungsi Signing RSA ...................................................................................... Potongan Kode Program Template class yang digunakan pada RSA .................................... Kode Program Fungsi Signing ECDSA ................................................................................. Potongan Kode Program Template class yang digunakan pada ECDSA ............................... Tampilan Menu Aplikasi Tanda Tangan Digital .................................................................... Ilustrasi Proses Kerja Aplikasi Tanda Tangan Digital ...........................................................
24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 41 43 44 46 47 49 50
ix
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 SHA256, SHA-384 dan Tiger. 2 Merancang aplikasi yang berfungsi menerima masukan berupa filedengan format teks, executable dan gambar. 3 Membandingkan kinerja untuk masingmasing 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 SHA256, 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 ketigamasingmasing 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.
1
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 faktorfaktor primanya lebih sulit. 2 Perpangkatan vs logaritmik diskrit. Melakukan perpangkatan modulob = axmod n mudah, tetapi menemukan x dari ax = b (mod n) lebih sulit. Kunci privat, d
Kunci publik, e
Plainteks, m
Enkripsi Ee (m) = c
Cipherteks, c
Dekripsi Dd (c) = m
Plainteks, m
Gambar 1 Diagram kriptografi kunci-publik (Munir 2006). Pembangkit Aliran-Kunci Aliran kunci dibangkitkan dari sebuah pembangkit yang dinamakan pembangkit alirankunci (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,
2
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.
U
Z Z
Keystream Generator
U
ci
ª
Enkripsi
Y1 b
YL-1 b
Cipherteks
ª Dekripsi
IV= CV0
n
f
n CV1
f
n
...
n
f
n
CVL
CVL-1
Gambar 3Struktur umum fungsi hash (Stalling 2003).
Keystream ki
Keystream ki Pi Plainteks
Y0 b
Penerima
Pengirim Keystream Generator
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.
Pi 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.
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 tersebut ditunjukkan pada Tabel1.
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
3
Tabel1 Spesifikasi fungsi hash SHA-256, SHA384 dan Tiger Tipe hash
Pesan
Spesifikasi Ukuran (bits) Blok Word
64
MD
SHA-256
<2
512
32
256
SHA-384
< 2128
1024
64
384
TIGER
< 264
512
64
192
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 kuncipublikini dapat menyelesaikan masalah nonrepudiation.Diagram tandatangan digital menggunakan fungsi hash ditunjukkan pada Gambar 4. Signer
Message
Verifier
Message
Message
Signature
Signature
Message
Fungsi Hash Signature Fungsi Hash
Message Digest (MD) Public Key
Private Key
Decrypt Encrypt
Signature
Message Digest (MD)
? =
Message Digest (MD)
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
1. - Ditentukan kunci privatx, dalam hal ini x
4
•
•
- 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
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), E(Fp), - Misalkan P(x1,y1)∈ Q(x2,y2)∈E(Fp), dan P ≠± Q, maka P + Q = (x3,y3).
•
•
x3 =
- x1 - x2
y3 =
(x1-x3) -y1 (3)
(2)
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:
5
•
•
•
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 = Q A. 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 KunciPublik 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.Masingmasing tipe file terdiri dari 5 file yakni, file dengan ukuran 5MB, 10MB, 20MB, 40MB dan 80MB. Dengan demikian, jumlah data yang
6
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 kuncipublik, 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 Digital
7
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.
Skenario 1 2 3 4 5 6 7 8 9
Algoritme DSA DSA DSA RSA RSA RSA ECDSA ECDSA ECDSA
Fungsi Hash SHA-256 SHA-384 Tiger SHA-256 SHA-384 Tiger SHA-256 SHA-384 Tiger
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
-
1. DSA 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)
-
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)
-
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
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 SHA-256, SHA384 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.
8
Struktur template untuk skema aplikasi DSA, dalam penggunaan class library pada Crypto++ ditunjukkan pada Gambar 7. DL_SignatureKeys_GFP
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.
DL_SS< DL_SignatureKeys_GFP, DL_Algorithm_GDSA , DL_SignatureMessageEncodingMethod_DSA, H>
RSA
GDSA
TF_SS<STANDARD, H, RSA>
Gambar 7Inheritance diagram untuk DSA (Anonim 2009). RSASS<STANDARD, H>
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 SHA-256, SHA384 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
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, n1]. Fungsi hash yang digunakan dipertukarkan diantara SHA-256, SHA384 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.
9
DL_Keys_ECDSA< EC >
DL_SS, DL_Algorithm_ECDSA < EC >, DL_SignatureMessageEncodingMethod_DSA, H>
ECDSA<EC, H>
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.
10
Identifikasi ID Proses
Buka Proses
Tidak
End
Ya
Akses Objek Informasi Memori Proses
Baca Ukuran Memori
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
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
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
11
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
12
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 (pvalue> 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 (pvalue> 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. 1600.00
1408.40
1400.00 1200.00 Waktu (ms)
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.
1000.00 800.00 600.00 400.00
586.87
666.00 513.80
468.67
394.47
274.47
265.87
193.40
200.00 0.00 DSA
SHA-256
Gambar
SHA-384
RSA
TIGER
Digital Signature
ECDSA
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
Derajat Jumlah Kuadrat F hitung F DIST (P) bebas Kuadrat (SS) Tengah (MS) (0.05) 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 Total 26 7.38137 Sumber
13
Tabel4Uji ANOVAwaktu prosessigningdengan ukuran file10MB Derajat Jumlah Kuadrat F hitung Sumber F DIST (P) bebas Kuadrat (SS) Tengah (MS) (0.05) 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 Tabel
5Uji ANOVAhasil waktu prosessigningdengan ukuran file 20MB Kuadrat F hitung Derajat Jumlah Sumber F DIST (P) bebas Kuadrat (SS) Tengah (MS) (0.05) 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
Tabel 6Uji ANOVAwaktu prosessigningdengan ukuran file 40MB Derajat Jumlah Kuadrat bebas Kuadrat (SS) Tengah (MS) Algoritme 2 1.10460 0.55230 Hash 2 6.75570 3.37780 Algoritme *Hash 4 0.59800 0.14950 Galat 18 0.01000 0.00060 Total 26 8.46830 Sumber
F hitung F DIST (P) (0.05) 991.56 0.000 6,064.56 0.000 268.43 0.000
Tabel
7Uji ANOVA waktu prosessigningdengan ukuran file 80MB Derajat Jumlah Kuadrat F hitung F DIST (P) Sumber bebas Kuadrat (SS) Tengah (MS) (0.05) 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
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 DSA-Tiger RSA-Tiger ECDSA-Tiger DSA-256 RSA-256 ECDSA-256 DSA-384 RSA-384 ECDSA-384 3.6 3.8 4.0 4.2 4.4 4.5 4.6 4.7 5.5
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 ratarata yang tidak mirip dengan perlakuan lain. Tabel 9Perbandingan perlakuan hasil waktu prosessigningdengan ukuran file 10MB
14
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, DSA-SHA-256, RSA-SHA-256, ECDSA-SHA-256, DSA-SHA-384, RSA-SHA384 dan ECDSA-SHA384 karena ke-7 perlakuan ini memiliki nilai rata-rata yang tidak mirip dengan perlakuan lain. Tabel 12Perbandingan perlakuan hasil waktu prosessigningdengan ukuran file 80MB 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
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 ratarata yang tidak mirip dengan perlakuan lain. Tabel 10Perbandingan perlakuan hasil waktu prosessigningdengan ukuran file 20MB 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
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 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
Dari Tabel 11 di atas diketahui bahwa perlakuan yang berbeda nyata dari segi waktu prosessigningdengan ukuran file 40MB adalah
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-SHA384 dan ECDSA-SHA384 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 RSATiger dengan ECDSA-Tiger. Kesamaan ini terjadi dalam berbagai ukuran file kecuali file ukuran 5MB. Pada ukuran 5MB ECDSA-Tiger lebih mirip dengan DSASHA-256. Pada Lampiran 9 disertakan salah satu hasil plot interaksi data watu proses signing dengan ukuran file 5MB. Dari hasil plot interaksi
15
tersebut dapat dilihat bahwa terdapat interaksi baik dari faktor algoritme maupun faktor fungsi hash.
Tabel
Analisis Waktu Proses Verifying
Derajat Jumlah Kuadrat F hitung F DIST (P) bebas Kuadrat (SS) Tengah (MS) (0.05) 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
Hasil perbandingan waktu proses verifying ditunjukkan pada Gambar 12. Dari hasil tersebuttampak bahwa algoritme DSA dengan fungsi hashTiger terlihat lebih baik dibandingkan yang lain. 1488.87
1600.00
14Uji ANOVAwaktu prosesverifyingdengan ukuran file 10MB
Sumber
1400.00
Waktu (ms)
1200.00 1000.00 800.00 600.00 400.00
588.67
971.73 847.07 807.00 688.80
Tabel 712.60
193.87
0.00 RSA
DSA
ECDSA
Digital Signature
Gambar
SHA-384
12
TIGER
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
Derajat Jumlah Kuadrat F hitung F DIST (P) bebas Kuadrat (SS) Tengah (MS) (0.05) 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
396.67
200.00
SHA-256
15Uji ANOVAwaktu prosesverifyingdengan ukuran file20MB
13Uji ANOVAwaktu prosesverifyingdengan ukuran file 5MB
Derajat Jumlah Kuadrat F hitung F DIST (P) bebas Kuadrat (SS) Tengah (MS) (0.05) 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
Tabel
16Uji ANOVAwaktu prosesverifyingdengan ukuran file40MB
Derajat Jumlah Kuadrat F hitung F DIST (P) bebas Kuadrat (SS) Tengah (MS) (0.05) 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
Tabel
Sumber
Sumber Algoritme Hash Algoritme *Hash Galat Total
17Uji ANOVAwaktu prosesverifyingdengan ukuran file80MB Derajat Jumlah Kuadrat F hitung F DIST (P) bebas Kuadrat (SS) Tengah (MS) (0.05) 2 5.35310 2.67650 1,725.53 0.000
2 4 18 26
2.41790 0.62010 0.02790 8.41900
1.20890 0.15500 0.00160
779.38 99.94
0.000 0.000
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
16
memberikan kesimpulan bahwa algoritme dan fungsi hash menimbulkan perbedaan nyata pada proses verifying. Kesimpulan lain yang dapat diambil adalah: • Faktor Algoritme Karena 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 verifying pada ukuran file 5MB, 10MB, 20MB, 40MB dan 80MB. • Faktor Fungsi Hash Karena 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 verifying pada ukuran file 5MB, 10MB, 20MB, 40MB dan 80MB. • Interaksi Algoritme x Fungsi Hash Karena 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 hash yang berbeda, yang artinya ada pengaruh interaksi antara faktor algoritme dan faktor fungsi hash terhadap waktu proses verifying pada ukuran file 5MB, 10MB, 20MB, 40MB dan 80MB. Seperti halnya pada bagian analisis waktu proses signing sebelumnya, pada analisis waktu proses verifying juga dilakukan analisis GLM menggunakan metode uji Tukey untuk mengetahui perlakuan mana saja yang berbeda nyata. Ringkasan hasil perbandingan menggunakan uji Tukey tersebut untuk waktu proses verifying dapat dilihat pada Tabel 18 s/d 21 di bawah ini. Tabel 18Perbandingan perlakuan hasil waktu prosesverifyingdengan ukuran file 5MB
Dari Tabel 18 di atas diketahui bahwa perlakuan yang berbeda nyata dari segi waktu prosesverifyingdengan ukuran file 5MB adalah DSA-Tiger, DSA-SHA-256 dan ECDSASHA384 karena ke-3 perlakuan ini memiliki nilai rata-rata yang tidak mirip dengan perlakuan lain. Tabel 19Perbandingan perlakuan hasil waktu prosesverifyingdengan ukuran file 10MB DSA-Tiger DSA-256 DSA-384 RSA-Tiger ECDSA-Tiger RSA-256 ECDSA-256 RSA-384 ECDSA-384 4.22 4.91 5.27 5.28 5.36 5.50 5.56 5.71 6.20
Dari Tabel 19 di atas diketahui bahwa perlakuan yang berbeda nyata dari segi waktu prosesverifyingdengan ukuran file 10MB adalah DSA-Tiger, DSA-SHA-256, RSA-SHA384 dan ECDSA-SHA384 karena ke-4 perlakuan ini memiliki nilai rata-rata yang tidak mirip dengan perlakuan lain. Untuk perbandingan perlakuan waktu proses verifying dengan ukuranfile 20MB, semua perlakuan berbeda nyata karena tidak ada perlakuan yang mirip satu sama lain. Tabel 20Perbandingan perlakuan hasil waktu prosesverifyingdengan ukuran file 40MB DSA-Tiger DSA-256 DSA-384 RSA-Tiger ECDSA-Tiger RSA-256 ECDSA-256 RSA-384 ECDSA-384 5.51 6.22 6.62 6.78 6.81 6.97 6.99 7.12 7.54
DSA-Tiger DSA-256 DSA-384 RSA-Tiger ECDSA-Tiger RSA-256 ECDSA-256 RSA-384 ECDSA-384 3.63 4.22 4.62 4.80 4.91 4.95 5.00 5.17 5.59
Dari Tabel 20 di atas diketahui bahwa perlakuan yang berbeda nyata dari segi waktu prosesverifyingdengan ukuran file 40MB adalah DSA-Tiger, DSA-SHA-256, DSA-SHA-384, RSA-SHA384 dan ECDSA-SHA384 karena ke-
17
5 perlakuan ini memiliki nilai rata-rata yang tidak mirip dengan perlakuan lain.
5.2. Analisis Penggunaan Memori Proses Signing dan Proses Verifying
Tabel 21Perbandingan perlakuan hasil waktu prosesverifyingdengan ukuran file 80MB
Analisis tahap ini merupakan analisis pada hasil pengujianyang membandingkan memori baik pada saat proses signing maupun verifying.
DSA-Tiger DSA-256 DSA-384 RSA-Tiger ECDSA-Tiger RSA-256 ECDSA-256 RSA-384 ECDSA-384 6.17 6.91 7.31 7.49 7.52 7.62 7.69 7.83 8.24
Analisis Penggunaan Memori Proses Signing Ringkasan data penggunaan memori pada proses signing terdapat pada Tabel 22. Agar lebih jelas, hasil perbandingan untuk penggunaan memori signingdisajikan berupa grafik pada Gambar 13. Dari hasil tersebut, sudah tampak jelas perbedaan ketiganya. Tabel 22Data ringkasan penggunaan memori pada proses signing Memori Signing (KB) Rata-rata Baris Fungsi Hash (KB) DSA RSA ECDSA
Pada Lampiran 10 disertakan salah satu hasil plot interaksi data watu proses verifying dengan ukuran file 5MB. Dari hasil plot interaksi tersebut dapat dilihat bahwa terdapat interaksi baik dari faktor algoritme maupun faktor fungsi hash.
SHA-256
54,169.87
1,976.00
2,969.33
19,705.07
SHA-384
54,193.87
1,976.00
2,969.60
19,735.20
TIGER
54,206.40
1,976.00
2,973.60
19,718.67
Rata-rata Kolom
54,190.04
1,998.04
2,970.84
60000.00
54193.87 54206.40 54169.87
50000.00 40000.00 Memori(KB)
Dari Tabel 21 di atas diketahui bahwa perlakuan yang berbeda nyata dari segi waktu prosesverifyingdengan ukuran file 80MB adalah DSA-Tiger, DSA-SHA-256, DSA-SHA-384, RSA-SHA384 dan ECDSA-SHA384 karena ke5 perlakuan ini memiliki nilai rata-rata yang tidak mirip dengan perlakuan lain. Dari Tabel 18 s/d 21 dapat diambil kesimpulan sebagai berikut: • Perlakuan yang paling berbeda nyata adalah DSA-Tiger, DSA-SHA-256 dan ECDSA-SHA-384 karena dalam berbagai ukuran file ke-2 perlakuan ini memeiliki nilai nilai rata-rata yang tidak memiliki kemiripan dengan perlakuan lain. • Dalam berbagai ukuran file kombinasi DSA-Tiger pada proses verifyingmenghasilkan nilai rata-rata paling kecil yang artinya DSA-Tiger merupakan kombinasi terbaik karena melakukan proses verifyingpaling cepat. • Dalam berbagai ukuran file kombinasi ECDSA-SHA-384 pada proses verifyingmenghasilkan nilai rata-rata paling besar yang artinya ECDSA-SHA-384 merupakan kombinasi terburuk karena melakukan proses verifyingpaling lama. • Perlakuan yang paling mirip adalah RSATiger dengan ECDSA-Tiger dan RSASHA-256 dengan ECDSA-SHA-256. Kesamaan ini terjadi dalam berbagai ukuran file kecuali file ukuran 20MB.
30000.00 20000.00 10000.00
1976.00 1976.00 1976.00
2973.60 2969.60 2969.33
RSA
ECDSA
0.00 DSA
Digital Signature SHA-256
SHA-384
TIGER
Gambar 13 Perbandingan penggunaan memori proses signing DSA, RSA dan ECDSA. Dari hasil identifikasi penggunaan memori untuk proses signingdapat disimpulkan bahwa algoritme tandatangan digital yang sangat mempengaruhi. Jika diperhatikan antar fungsi hash pada masing-masing algoritme hasilnya tidak jauh berbeda, namun jika dipandang berdasarkan algoritme terdapat perbedaan jumlah memori yang dibutuhkan dalam jumlah yang besar untuk proses signing. Analisis Verifying
Penggunaan
Memori
Proses
Ringkasan data penggunaan memori pada proses verifyingterdapat pada Tabel 23. Agar lebih jelas, hasil perbandingan untuk
18
penggunaan memori signing ditunjukkan berupa grafik batang pada Gambar 14. Dari hasil tersebut, sudah tampak jelas perbedaan ketiganya. Tabel 23Data ringkasan penggunaan memori pada proses verifying
Fungsi Hash
Memori Verifying (KB)
Rata-rata Baris (KB)
DSA
RSA
ECDSA
SHA-256
53,476.00
1,980.00
2,300.00
19,252.00
SHA-384
53,480.00
1,980.00
2,296.00
19,252.00
TIGER
53,484.00
1,979.73
2,296.00
19,253.24
Rata-rata Kolom
53,480.00
1,979.91
2,297.33
60,000.00
53,480.00 53,484.00 53,476.00
Memori (KB)
50,000.00 40,000.00 30,000.00 20,000.00
2,296.00 1,980.00 1,980.00 2,296.00 2,300.00 1,980.00
10,000.00 DSA SHA-256
SHA-384
RSA
ECDSA
Digital Signature
Gambar 14 Perbandingan penggunaan memori proses verifying DSA, RSA dan ECDSA. Dari hasil identifikasi memori untuk proses verifyingdapat disimpulkan bahwa algoritme tandatangan digital yang sangat mempengaruhi. Jika diperhatikan antar fungsi hash pada masing-masing algoritme hasilnya tidak jauh berbeda, namun jika dipandang berdasarkan algoritme terdapat perbedaan jumlah memori yang dibutuhkan dalam jumlah yang besar untuk proses verifying. Identifikasi Penyebab Perbedaan dari Hasil Waktu Proses dan Penggunaan Memori Identifikasi penyebab perbedaan hasil yang diperoleh pada penelitian ini, terbagi menjadi dua bagian, yaitu: 1 Identifikasi Fungsi Hash Dari hasil pengujian ini, diperoleh suatu gambaran bahwa pemilihan fungsi hash cukup memberikan kontribusi perbedaan kecepatan pada proses signing maupun verifying. Hal ini disebabkan oleh cara pendistribusian fungsi
hash yang memiliki perbedaan pada desain, kapasitas masukan blok dan jumlah putaran. [FIPS-HASH] mengemukakan pada SHA256 terjadi penambahan bit-bit pengganjal kedalam blok pesan agar panjangnya kelipatan 512-bit, sebelum dilakukan proses komputasi hash. Komputasi SHA-256 dilakukan pada 32-bit words. Keluaran dari setiap blok digabungkan dengan keluaran blok berikutnya. Dengan demikian akhirnyadiperoleh message digest. Desain pada SHA-256 adalah serial artinya setiap blok diproses setelah blok sebelumnya diproses. Algoritmenya menggunakan message schedule berjumlah 64 kali putaran dan 8 working variables 32-bit words. Algoritme SHA-256 ditunjukkan pada Lampiran 11. Inisial hashvalueH(0) SHA-256 adalah sebagai berikut: H0(0) = 6a09e667 H1(0)= bb67ae85 H2(0) = 3c6ef372 H3(0) = a54ff53a H4(0) = 510e527f H5(0) = 9b05688c H6(0) = 1f83d9ab H7(0) = 5be0cd19 Pada SHA-384 blok pesan berukuran 1024 bit. Komputasi SHA-384 dilakukan pada 64 bit words. Desain pada SHA-384 adalah serial artinya setiap blok diproses setelah blok sebelumnya diproses. Algoritmenya menggunakan message schedule berjumlah 80 kali putaran dan 8 working variables 64-bit words. Algoritme SHA-384 ditunjukkan pada Lampiran 12. Inisial hashvalueH(0) SHA-384 adalah sebagai berikut: H0(0) = cbbb9d5dc1059ed8 H1(0)= 629a292a367cd507 H2(0) = 9159015a3070dd17 H3(0) = 152fecd8f70e5939 H4(0) = 67332667ffc00b31 H5(0) = 8eb44a8768581511 H6(0) = db0c2e0d64f98fa7 H7(0) = 47b5481dbefa4fa4 [TIGER] mengemukakan, pada fungsi hashTiger blok pesan berukuran 512-bit. Komputasi Tiger dilakukan pada 64-bit words. Tiger menggunakan tiga register 64-bit yang disebut dengan a, b dan c sebagai nilai hash intermediate. Register-register ini diinisialisasi sebagai H(0)yaitu: a = 0x0123456789ABCDEF b = 0xFEDCBA9876543210 c = 0xF096A5B4C3B2E187 Setiap 512-bit blok pesan sebelumnya dipecahmenjadi delapan 64-bit words x0, x1, …, x7, dankomputasinya berubah dari hi
19
menjadi hi+1.Komputasi ini mengandung tiga tahapan dan diantara tahapan tersebut terdapat key schedule, suatu transformasi dari data masukan yangmencegah para penyerang memaksakan masukanyang mirip pada tiga putaran tadi. Akhirnyaada suatu tahapan feedforward dimana nilai barudari a, b, dan c dikombinasikan dengan nilaiinisial untuk memberikan nilai hi+1. Efisiensi dari fungsi Tiger berdasarkan pada desainnya yang paralel. Dalam setiap putaran dalam Tiger, operasi lookup terhadap delapan tabel dapat dilaksanakan secara paralel, sehingga compiler dapat membuat penggunaan yang optimal bagi pipeline. AlgoritmeTiger dapat dilihat pada Lampiran 13. Penggunaan memori untuk menjalankan proses hashing dari ketiga fungsi hash tersebut, tidak terdapat perbedaan yang nyata. Hal ini terjadi karena ketiganya memiliki jumlah putaran proses hash yang tidak banyak dan operasi yang dilakukan adalah operasi bitwise sederhana dengan menggunakan operator logika seperti AND, OR, NOT dan XOR. 2 Identifikasi Algoritme Tanda Tangan Digital Berdasarkan hasil pengujian, perbedaan nyata pada ketiga algoritme ada pada proses signing, proses verifying danjumlah penggunaan memori. Secara perhitungan matematis tampak dalam grafik bahwa DSA yang paling baik, kemudian RSA dan yang paling terakhir adalah ECDSA. Perbedaan tersebut disebabkanmetode pada pendistribusian nilai hash untuk signaturefile secara algoritmik dan juga disebabkan lingkungan pengembangan aplikasi kriptosistem untuk digital signature. Jika ditinjau dari metode pendistribusian nilai hash untuk signaturefile secara algoritmik, perbedaan tiap algoritmeterutama dikarenakan bedanya operasi komputasi yang digunakan. Pada algoritme DSA, perhitungan komputasi dilakukan secara eksponensial gk mod p. Nilai ini, tidak bergantung pada pesan yang akan ditandatangani sehingga dapat dihitung sebelumnya, walaupun DSA harus menghitung inverse perkalian untuk mencari nilai s. Algoritmeeuclidean dipakai untuk menghitung nilai inverse dari k-1 mod q. Operasi yang dijalankan pada DSA adalah operasi perpangkatan bilangan bulat. Bilangan bulat yang menjadi pangkat merupakan bilangan yang kurang dari q. Kunci privat digunakan pada proses untuk operasi pertambahan dan perkalian, ketika mencari s. Pada algoritme RSA, operasi komputasi yang dijalankan sama dengan DSA yaitu operasi perpangkatan bilangan bulat yang besar,
secara eksponensial pada aritmatika modular. Pangkat bilangan bulat pada RSA menggunakan kunci privat untuk signing dan kunci publik untuk proses verifying, sehingga jumlah komputasinya menjadi lebih tinggi dibandingkan DSA. Pada algoritme ECDSA, [CERTICOM] mengemukakan, secara konseptual ECDSA sama halnya dengan DSA, hanya saja mengganti sub kelompok dari order q yang dihasilkan oleh g dengan sub kelompok titik pada kurva eliptik yang dihasilkan oleh G. Satusatunya perbedaan yang signifikan antara ECDSA dan DSA adalah dalam proses generasi r. Pada DSA hal ini dilakukan dengan mod p dan mengambil unsur acak X = mengurangi modulo q, sehingga diperoleh sebuah integer dalam interval [1, q-1]. Pada ECDSA, r dihasilkan pada interval [1, n-1], dengan mengambil x-koordinat dari titik acak kG dan mengurangi modulo n. Hasil dari pengujian aplikasi tandatangan digital ECDSA menunjukkan ada perbedaan waktu dengan DSA dan RSA. Hal tersebut dikarenakan selainpada algoritmenya terdapat proses perpangkatan bilangan bulat dan perhitungan inversi, terdapat juga proses komputasi untuk perhitungan scalar multiplicationuntuk perkalian skalar antara titik dengan bilangan bulat yang besar. Pada ECDSA ada 3 operasi matematika, yaitu: • Operasi penambahan (addition), yakni operasi penjumlahan dua buah titik berbeda pada kurva eliptik yang menghasilkan titik ke tiga pada kurva eliptik. Contohnya, penjumlahan titi P dan Q. • Operasi penggandaan (doubling), yakni penjumlahan dua titik yang sama. Contohnya, penjumlahan titik P dan titik P maka sama dengan 2P . • Perkalian skalar (scalar multiplication), yakni operasi penambahan yang dilakukan secara berulangterhadap titik yang sama di sepanjang kurva eliptik. Contohnya, jika n adalah suatu integer positif dan P suatu titik pada kurva eliptik, perkalian skalar nP adalah hasil penambahan P sejumlah n kali. Dengan demikian 3P = P+P+P sehingga 3P=2P+P.Maka pada setiap proses scalar multiplication, terdapat pula operasi doubling. Operasi matematika yang dominan pada ECDSA adalah operasi scalar multiplication. Hal tersebut salah satunya ditemukan pada proses pembangkitan sepasang kunci.
20
Selanjutnya, jika ditinjau dari lingkungan pengembangan aplikasi kriptosistem, implementasi DSA, RSA dan ECDSA secara garis besar menggunakan dua metode pendekatan yang berbeda. Hal inilah yang menyebabkan adanya perbedaan yang nyata pada penggunaan memori pada ketiga algoritme tersebut. Pada RSA dan ECDSA menggunakan konsep Filter, sedangkan pada DSA sebaliknya. [CRYPTO] mengemukakan Filter adalah sebuah kelas dasar abstrak dari BufferedTransformation. Ia menerapkan fungsi attachment (lampiran) yang sifatnya hanya mendeklarasikan, tetapi tidak diimplementasikan pada BufferedTransformation. Attachment adalah konsep yang sudah maju dan sangat praktis dalam penggunaannya. Dengan Filter dan fungsi lampiran mereka, banyak fungsi elegan diciptakan, dalam jumlah kode program yang relatif lebih sedikit. Pada saat sebuah objek yang diturunkan dari BufferedTransformation, katakanlah B, dikaitkan pada sebuah objek yang diturunkan dari Filter, katakanlah F, ketika sebuah data dikirim ke F melalui salah satu metode misalnya Put(), maka F akan melakukan proses tertentu pada data ini, dan akan menyalurkan hasil keluarannya pada B, dengan memanggil fungsi Put() pada B. Pada saat ada sebuah metode misalnya Get() dipanggil pada F, maka F cukup menyalurkannya pada B, dan B mengembalikan nilai data hasilnya. Jika B adalah filter lain yang diturunkan, ia akan melakukan hal yang sama, membentuk rantai attachment, yang pasti berakhir dengan sebuah objek BufferedTransformation. Contohnya sebagai berikut: char const* zInputFile = ...; char const* zOutputFile = ...; SHA hash; FileSource(zInputFile, true, new HashFilter(hash, new FileSink(zOutputFile), true));
Potongan kode diatas membuka file yang diidentifikasi oleh sebuah variablezInputFile(melalui filesource), kemudian feed ke modul hash SHA (melalui HashFilter), dan menyimpan data asli bersama dengan digest yang telah dihitung ke sebuah fileyang diidentifikasi oleh zOutputFile (melalui FileSink). Jika parameter true dibaris terakhir diabaikan, nilai default false akan berlaku, dan hanya digestyang akan disimpan ke file output, tanpa data asli yang telah dihitung digest-nya.
Potongan kode program class template untuk filter proses signer dan verifying, dapat dilihat pada Lampiran14. Metode attachment merupakan sebuah konstruktor. Semua kelas yang berasal dari Filter dan kelas Filter itu sendiri, mengambil parameter bentuk BufferedTransformation*.Parameter ini menentukan pointer ke setiap objek yang berasal dari BufferedTransformation, yang harus terpasang ke objek yang sedang dibangun. Sebuah pointer yang terpasangparameter attachment, akan menjadi milik sebuah objek setelah dimulai hubungan. Saat ini, standar untuk membuat objek adalah MessageQueue. MessageQueue akan menyimpan semua data yang diterima melalui metode Put(),yang nantinya akan ditemukembalikan melalui metode Get(), melalui urutan yang sama setelah data diterima. Metode yang sering dipakai pada kelas SignerFilter dan Filter adalah VerifierFilter.SignerFilter adalah fungsi yang merangkum kelas yang diturunkan dari PK_Signer untuk menerapkan tandatangan digital pada sebuah data masukan. File tandatangan digital akan ditransfer ke transformasi terlampir. VerifierFilter juga adalah fungsi yang merangkum kelas yang diturunkan dari PK_Verifier, yaitu untuk memverifikasi tandatangan digital dari input data. File tandatangan, melewati VerifierFilter melalui metode PutSignature(). Namun dalam prakteknya, akan lebih mudah menggunakan SignMessage()danVerifyMessage(), yang merupakan metode pada objekPK_Signer danPK_Verifier. Berdasarkan penjelasan diatas, maka diperoleh suatu kesimpulan. Pada DSA digunakan metode SignMessage() dalam proses signing dan VerifyMessage() dalam proses verifying. Proses berjalan lebih cepat karena proses komunikasi antar metode untuk parsing data lebih sedikit, namun terjadi penurunan kinerja pada penggunaan memori.Hal tersebut berkaitan dengan manajemen pointer, yang mana pada metode tersebut pada prakteknya lebih banyak penggunaan temporary buffer. Hal tersebut berakibat pada saat terjadi proses iterasi, sehingga setiap iterasi sampai harus dibuat semacam pengendali buffer. Pengontrolan memori pointer pada metode ini bersifat auto. Contoh potongan kode program yang lengkap untuk fungsi signing DSA ditunjukkan pada
21
Lampiran15.ContohpotonganTemplate class yang digunakan pada DSA ditunjukkan pada Lampiran16. Pada RSA dan ECDSA digunakan metode Filter yang menerapkan sistem penanganan memori bernama BufferedTransformation. Memori yang digunakan untuk menjalankan setiap tahapan proses signing dan verifying sedikit sehingga dinilai lebih efisien dalam penggunaan resource. Class tersebut sejenis perangkat untuk optimasi buffer output. Pointer untuk mengakses data lebih cepat dan life time object lebih jelas kapan harus idle atau hancur. Objek BufferedTransformationmemerlukan aliran byte sebagai masukan, dan menyimpan hasil keluarannya pada sebuah buffer internal dengan tujuan dapat ditemukembalikan jika nanti dibutuhkan. Sehingga tidak mengulang proses kembali ke awal. Namun pada prakteknya banyak message data yang di-parsing dari satu fungsi ke fungsi yang lain. Hal tersebut mengakibatkan waktu yang dibutuhkan untuk menjalankan serangkaian proses signing atau verifying menjadi lebih lama. Contoh potongan kode program yang lengkap untuk fungsi signing RSA ditunjukkan pada Lampiran17. Contoh potongan Template class yang digunakan pada RSA ditunjukkan pada Lampiran18. Contoh potongan kode program yang lengkap untuk fungsi signing ECDSA ditunjukkan pada Lampiran19. Contoh potongan Template class yang digunakan pada ECDSA ditunjukkan pada Lampiran20. Pada Lampiran 21 dapat dilihat tampilan menu aplikasi tanda tangan digital. Sementara pada Lampiran 22 disertakan ilustrasi singkat bagaimana aplikasi ini bekerja. Pada ilustrasi tersebut diambil contoh file masukan 1.pdf dan proses penandatanganan menggunakan algoritme RSA dengan fungsi hash SHA-256.
KESIMPULAN Pada penelitian ini telah dirancang aplikasi tanda tangan digital menggunakan fungsi hash yaitu SHA-256, SHA-384 dan Tiger dengan DSS yaitu DSA, RSA, dan ECDSA menggunakan pustaka kelas C++ untuk skema kriptografi. Aplikasi tersebut dapat menerima masukan berupa file dengan format teks, executable dan gambar. Dari hasil pengujianmenggunakan uji statistik diketahui bahwa untuk identifikasi kinerja waktu proses signingdan verifyingyang memiliki perbedaan nyata adalah faktor algoritme (karena cara atau metode
pendistribusian nilai hash untuk signature file secara algoritmik dan perangkat pengembangan aplikasi kriptosistem untuk digital signature), faktor fungsi hash (karena cara pendistribusian fungsi hash yang memiliki perbedaan pada desain, kapasitas masukan blok dan jumlah putaran)serta interaksi antara faktor algoritme dan faktor fungsi hash. Dalam berbagai ukuran file kombinasi algoritme DSA dengan fungsi hashTiger merupakan kombinasi terbaik karena melakukan proses signingdan verifyingpaling cepat. Sebaliknya, kombinasi ECDSA dengan fungsi hash SHA-384 pada proses signingverifyingmerupakan kombinasi terburuk karena melakukan proses signingdan verifyingpaling lama. Pada proses signing perlakuan yang paling mirip adalah RSA-Tiger dengan ECDSA-Tiger. Pada proses verifying perlakuan yang paling mirip adalah RSA-Tiger dengan ECDSA-Tiger dan RSA-256 dengan ECDSA-256. Semakin besarukuran file semakin sedikit pula perlakuan yang memiliki kemiripan, demikian pula sebaliknya. Untuk identifikasi penggunaan memori signingdan verifyingyang memiliki perbedaan nyata adalah algoritme tandatangan digital yang dipengaruhi oleh ukuran file, sementara fungsi hash tidak berpengaruh atau tidak memiliki perbedaan nyata.Pada DSA yang tidak menerapkan konsep filter, semakin besar ukuran file, maka semakin besar pula jumlah memori yang dibutuhkan, berlaku sebaliknya pada RSA dan ECDSA yang menerapkan konsep filter.
SARAN Pada penelitian selanjutnya dalam rangka pengembangan untuk pemahaman pada aplikasi kriptosistem maka perlu diadakan pengidentifikasian dalam analisis pembangkitan sepasang kunci dan penggunaan lingkungan pengembangan yang lain selain Crypto++ Library, jika memungkinkan dilakukan perbandingan diantara keduanya. Selain itu dapat diadakan juga penelitian yang tidak memanfaatkan konsep filter yang merupakan suatu kelebihan dari aplikasi Crypto++ Library untuk RSA dan ECDSA, sehingga diketahui pola perbedaan lain dari segi waktu pemrosesan dan penggunaan memori.
DAFTAR PUSTAKA Anonim. Manual Crypto++ Library 5.6.0 API Reference. http://www.cryptopp.com, [11 Mei 2009].
22
Ismaliansyah MK. 2006. Kriptanalisis Pada Tiger. http://www.informatika.org/~rinaldi/Kriptog rafi/2006-2007/Makalah2/Makalah-057.pdf, [25 Februari 2011]. Menezes A., Van Oorschot P., & Vanstone S. 1996. Hanbook of Applied Cryptography. CRCPress Inc.www.cacr.math.uwaterloo.ca/hac.[15Jun i 2009]. Munir Bandung:Informatika.
R.2006.Kriptografi.
Rasyid MF. 2007. Tanda Tangan Digital Majemuk dengan Kunci Publik Tunggal dengan Algoritma RSA dan El Gamal. http://www.informatika.org/~rinaldi/Kriptog rafi/2007-2008/Makalah2/MakalahIF50542007-B-039.pdf, [September 2009]. Setiawan A. 2009. Percobaan Faktorial. http://smartstat.wordpress.com/2009/12/23/s lide-rancangan-faktorial, [30 September 2010] Stalling W. 2003. Cryptography and Network Security Principles and Practice. Third Edition. New Jersey: Pearson Education. Walpole RE. 1990. Pengantar Statistika. Sumantri B, penerjemah. Jakarta. PT. Gramedia. Terjemahan dari: Introduction to Statistics. Triwinarko A. 2004. Elliptic Curve Digital Signature Algorithm (ECDSA). http://www.infomatika.org/~rinaldi/TA/Mak alah_TA%20Andy%20T.pdf, [September 2009]. Triyanto. 2009. Pengenalan Minitab. http://trie.staff.fkip.uns.ac.id/files/2010/03/ MINITAB-14.pdf, [07 Januari 2011].
23
LAMPIRAN
Lampiran 1 Hasil Pengujian Aplikasi Tanda Tangan Digital No
Uraian
DSA
1.
2.
User Input Process Function Output
Tidak ada
Hasil Uji
RSA Pembangkitan Kunci (Key Generation) Panjang kunci dalam bit, Tidak ada random seed
CreateDSAKeys()
GenerateRSAKey()
CreateECDSAKeys()
Kunci Privat dan Publik
Kunci Privat dan Publik
Kunci Privat dan Publik
Sukses
Sukses
Sukses
Pembangkitan tanda Tangan (Signature Generation) User Kunci Privat dan File pesan Kunci Privat dan File Kunci Privat dan File pesan Input pesan SignMessageECDSA_256( Process SignDSAMessage_256() RSASignFile_256() ) Function Output - Signature file - Signature file - Signature file
- Waktu proses dan jumlah memori yang digunakan Hasil Uji 3.
ECDSA
Sukses
- Waktu proses dan jumlah memori yang digunakan Sukses
- Waktu proses dan jumlah yang memori digunakan Sukses
Verifikasi Tanda Tangan (Signature Verifying) User Kunci Publik dan File pesan Kunci Publik dan File Kunci Publik dan File pesan Input pesan VerifyMessageECDSA_25 Process VerifyDSAMessage_256() RSAVerifyFile_256() 6() Function Output - Informasi hasil verifikasi - Informasi hasil - Informasi hasil verifikasi - Waktu proses dan jumlah verifikasi - Waktu proses dan jumlah - Waktu proses dan memori yang digunakan memori yang digunakan jumlah memori yang digunakan Hasil Sukses Sukses Sukses Uji
25
Lampiran 2Data Hasil Pengujian Aplikasi Tanda Tangan Digital No Tipe Hash Perulangan 1
SHA-256
Ukuran (Bytes)
Tipe File
3
SHA-384
TIGER
RSA
Waktu Verification (ms)
ECDSA
DSA
RSA
ECDSA
Memori Signing (KB) DSA
RSA
MemoriVerifying (KB)
ECDSA
DSA
RSA
ECDSA
1
5.270.016
EXE
68
88
93
78
140
93
11.424
1.976
2.968
10.732
1.980
2.300
2
5.127.245
PDF
78
83
94
63
145
151
11.424
1.976
2.972
10.732
1.980
2.300
3
5.119.536
BMP
67
78
93
66
140
156
11.428
1.976
2.968
10.732
1.980
2.300
4
10.357.440
EXE
135
156
166
135
250
265
19.644
1.976
2.968
18.952
1.980
2.300
5
10.259.143
PDF
140
156
171
141
249
255
19.648
1.976
2.972
18.952
1.980
2.300
6
10.243.640
BMP
130
156
177
135
240
266
19.648
1.976
2.968
18.952
1.980
2.300
7
20.758.285
EXE
265
312
317
265
526
546
36.088
1.976
2.968
35.392
1.980
2.300
8
20.486.360
PDF
255
307
338
266
520
541
36.088
1.976
2.968
35.392
1.980
2.300
9
20.492.996
BMP
266
312
348
266
520
542
36.088
1.976
2.968
35.392
1.980
2.300
10
40.668.080
EXE
500
604
604
510
1.083
1.104
68.964
1.976
2.972
68.272
1.980
2.300
11
40.978.851
PDF
500
599
676
505
1.067
1.088
68.964
1.976
2.968
68.272
1.980
2.300
12
41.041.160
BMP
510
604
656
500
1.072
1.083
68.964
1.976
2.968
68.272
1.980
2.300
13
83.562.496
EXE
1.020
1.208
1.370
1.016
1.817
2.265
134.724
1.976
2.972
134.032
1.980
2.300
14
81.951.720
PDF
994
1.188
1.297
1.010
2.156
2.176
134.728
1.976
2.972
134.032
1.980
2.300
15
81.922.776
BMP
989
1.179
1.307
994
2.180
2.127
134.724
1.976
2.968
134.032
1.980
2.300
394,47
468,67
513,80
396,67
807,00
843,87
Rata-rata 2
Waktu Signing (ms) DSA
54.169,87 1.976,00 2.969,33
53.476,00 1.980,00 2.300,00
1
5.120.421
EXE
109
125
266
99
203
286
11.448
1.976
2.968
10.736
1.980
2.296
2
5.127.245
PDF
104
119
235
98
161
265
11.448
1.976
2.968
10.736
1.980
2.296
3
5.119.536
BMP
109
109
244
110
161
260
11.452
1.976
2.968
10.736
1.980
2.296
4
10.240.844
EXE
203
219
494
198
322
495
19.672
1.976
2.968
18.956
1.980
2.296
5
10.259.143
PDF
203
219
463
197
301
494
19.672
1.976
2.972
18.956
1.980
2.296
6
10.243.640
BMP
203
223
463
193
286
495
19.672
2.968
2.976
18.956
1.980
2.296
7
20.481.689
EXE
380
437
969
385
619
984
36.112
1.976
2.968
35.396
1.980
2.296
8
20.486.360
PDF
380
442
907
385
609
963
36.108
1.976
2.972
35.396
1.980
2.296
9
20.492.996
BMP
375
432
901
380
614
979
36.112
1.976
2.968
35.396
1.980
2.296
10
40.963.380
EXE
744
849
1.869
760
1.260
1.885
68.988
1.976
2.968
68.276
1.980
2.296
11
40.978.851
PDF
750
844
1.786
750
1.239
1.890
68.992
1.976
2.968
68.276
1.980
2.296
12
41.041.160
BMP
755
859
1.797
760
1.239
1.917
68.988
1.976
2.968
68.276
1.980
2.296
13
81.926.762
EXE
1.515
1.729
3.619
1.525
2.573
3.895
134.748
1.976
2.968
134.036
1.980
2.296
14
81.951.720
PDF
1.484
1.692
3.567
1.495
2.495
3.760
134.748
1.976
2.968
134.036
1.980
2.296
15
81.922.776
BMP
1.489
1.692
3.546
1.495
2.494
3.765
134.748
1.976
2.976
134.036
1.980
2.296
Rata-rata
586,87
666,00
1.408,40 588,67
971,73
1.488,87
54.193,87 2.042,13 2.969,60
53.480,00 1.980,00 2.296,00
1
5.120.421
EXE
41
47
57
42
125
156
11.464
1.976
2.972
10.740
1.980
2.296
2
5.127.245
PDF
36
52
62
32
120
135
11.460
1.976
2.972
10.740
1.980
2.296
3
5.119.536
BMP
36
47
62
41
120
140
11.464
1.976
2.972
10.740
1.980
2.296
4
10.240.844
EXE
67
88
93
67
180
218
19.684
1.976
2.972
18.960
1.980
2.296
5
10.259.143
PDF
67
94
94
72
213
208
19.680
1.976
2.972
18.960
1.980
2.296
6
10.243.640
BMP
73
93
94
67
197
213
19.684
1.976
2.976
18.960
1.980
2.296
7
20.481.689
EXE
135
172
182
135
437
458
36.120
1.976
2.972
35.400
1.980
2.296
8
20.486.360
PDF
130
172
177
130
432
448
36.120
1.976
2.976
35.400
1.980
2.296
9
20.492.996
BMP
125
172
182
135
432
448
36.124
1.976
2.972
35.400
1.980
2.296
10
40.963.380
EXE
244
338
344
250
906
932
69.000
1.976
2.972
68.280
1.980
2.296
11
40.978.851
PDF
245
349
354
250
880
901
69.004
1.976
2.976
68.280
1.980
2.296
12
41.041.160
BMP
250
338
349
245
880
901
69.004
1.976
2.972
68.280
1.980
2.296
13
81.926.762
EXE
490
682
693
494
1.765
1.896
134.760
1.976
2.976
134.040
1.980
2.296
14
81.951.720
PDF
478
672
687
479
1.838
1.828
134.764
1.976
2.976
134.040
1.980
2.296
15
81.922.776
BMP
484
672
687
469
1.807
1.828
134.764
1.976
2.976
134.040
1.976
2.296
193,40
265,87
274,47
193,87
688,80
712,60
Rata-rata
54.206,40 1.976,00 2.973,60
53.484,00 1.979,73 2.296,00
26
Lampiran 3 Tampilan Software Minitab
27
Lampiran 4Hasil UjiNormal Probability Plot dan Test for Equal VariencesPada Proses Signing(dengan hasil data tidak menyebar normal)
28
Lampiran 5 Data Waktu Proses Signing yang Telah Ditransformasi Menggunakan Logaritma Natural Time Signing (ms) LN Time Signing (ms) Fungsi Algoritme File File File File File Hash 5 10 20 80 File 5 MB File 10 MB File 20 MB File 40 MB 40 MB
MB
MB
MB
MB
File 80 MB
SHA256
DSA
68
135
265
500 1020 4.21951
4.90527
5.57973
6.21461
6.92756
SHA256
DSA
78
140
255
500
994 4.35671
4.94164
5.54126
6.21461
6.90174
SHA256
DSA
67
130
266
510
989 4.20469
4.86753
5.58350
6.23441
6.89669
SHA384
DSA
109
203
380
744 1515 4.69135
5.31321
5.94017
6.61204
7.32317
SHA384
DSA
104
203
380
750 1484 4.64439
5.31321
5.94017
6.62007
7.30250
SHA384
DSA
109
203
375
755 1489 4.69135
5.31321
5.92693
6.62672
7.30586
TIGER
DSA
41
67
135
244
490 3.71357
4.20469
4.90527
5.49717
6.19441
TIGER
DSA
36
67
130
245
478 3.58352
4.20469
4.86753
5.50126
6.16961
TIGER
DSA
36
73
125
250
484 3.58352
4.29046
4.82831
5.52146
6.18208
SHA256
RSA
88
156
312
604 1208 4.47734
5.04986
5.74300
6.40357
7.09672
SHA256
RSA
83
156
307
599 1188 4.41884
5.04986
5.72685
6.39526
7.08003
SHA256
RSA
78
156
312
604 1179 4.35671
5.04986
5.74300
6.40357
7.07242
SHA384
RSA
125
219
437
849 1729 4.82831
5.38907
6.07993
6.74406
7.45530
SHA384
RSA
119
219
442
844 1692 4.77912
5.38907
6.09131
6.73815
7.43367
SHA384
RSA
109
223
432
859 1692 4.69135
5.40717
6.06843
6.75577
7.43367
TIGER
RSA
47
88
172
338
682 3.85015
4.47734
5.14749
5.82305
6.52503
TIGER
RSA
52
94
172
349
672 3.95124
4.54329
5.14749
5.85507
6.51026
TIGER
RSA
47
93
172
338
672 3.85015
4.53260
5.14749
5.82305
6.51026
SHA256
ECDSA
93
166
317
604 1370 4.53260
5.11199
5.75890
6.40357
7.22257
SHA256
ECDSA
94
171
338
676 1297 4.54329
5.14166
5.82305
6.51619
7.16781
SHA256
ECDSA
93
177
348
656 1307 4.53260
5.17615
5.85220
6.48616
7.17549
SHA384
ECDSA
266
494
969 1869 3619 5.58350
6.20254
6.87626
7.53316
8.19395
SHA384
ECDSA
235
463
907 1786 3567 5.45959
6.13773
6.81014
7.48773
8.17948
SHA384
ECDSA
244
463
901 1797 3546 5.49717
6.13773
6.80351
7.49387
8.17358
TIGER
ECDSA
57
93
182
344
693 4.04305
4.53260
5.20401
5.84064
6.54103
TIGER
ECDSA
62
94
177
354
687 4.12713
4.54329
5.17615
5.86930
6.53233
TIGER
ECDSA
62
94
182
349
687 4.12713
4.54329
5.20401
5.85507
6.53233
29
Lampiran 6 Data Waktu Proses Verifying yang Telah Ditransformasi Menggunakan Logaritma Natural Time Verifying (ms) Fungsi Algoritme File 5 File File File File Hash 10 80 20 40 MB
MB
MB
MB
MB
LN Time Verifying (ms) File 5 MB
File 10 MB
File 20 MB
File 40 MB
File 80 MB
SHA256
DSA
78
135
265
510 1016 4.35671 4.90527 5.57973 6.23441 6.92363
SHA256
DSA
63
141
266
505 1010 4.14313 4.94876 5.58350 6.22456 6.91771
SHA256
DSA
66
135
266
500
SHA384
DSA
99
198
385
760 1525 4.59512 5.28827 5.95324 6.63332 7.32975
SHA384
DSA
98
197
385
750 1495 4.58497 5.28320 5.95324 6.62007 7.30988
SHA384
DSA
110
193
380
760 1495 4.70048 5.26269 5.94017 6.63332 7.30988
TIGER
DSA
42
67
135
250
494 3.73767 4.20469 4.90527 5.52146 6.20254
TIGER
DSA
32
72
130
250
479 3.46574 4.27667 4.86753 5.52146 6.17170
TIGER
DSA
41
67
135
245
469 3.71357 4.20469 4.90527 5.50126 6.15060
SHA256
RSA
140
250
526 1083 1817 4.94164 5.52146 6.26530 6.98749 7.50494
SHA256
RSA
145
249
520 1067 2156 4.97673 5.51745 6.25383 6.97261 7.67601
994 4.18965 4.90527 5.58350 6.21461 6.90174
SHA256
RSA
140
240
520 1072 2180 4.94164 5.48064 6.25383 6.97728 7.68708
SHA384
RSA
210
322
619 1260 2573 5.34711 5.77455 6.42811 7.13887 7.85283
SHA384
RSA
161
301
609 1239 2495 5.08140 5.70711 6.41182 7.12206 7.82204
SHA384
RSA
161
286
614 1239 2494 5.08140 5.65599 6.41999 7.12206 7.82164
TIGER
RSA
125
180
437
906 1765 4.82831 5.19296 6.07993 6.80904 7.47591
TIGER
RSA
120
213
432
880 1838 4.78749 5.36129 6.06843 6.77992 7.51643
TIGER
RSA
120
197
432
880 1807 4.78749 5.28320 6.06843 6.77992 7.49942
SHA256
ECDSA
141
265
546 1104 2265 4.94876 5.57973 6.30262 7.00670 7.72533
SHA256
ECDSA
151
255
541 1088 2176 5.01728 5.54126 6.29342 6.99210 7.68524
SHA256
ECDSA
156
266
542 1083 2127 5.04986 5.58350 6.29527 6.98749 7.66247
SHA384
ECDSA
286
495
984 1885 3895 5.65599 6.20456 6.89163 7.54168 8.26745
SHA384
ECDSA
265
494
963 1890 3760 5.57973 6.20254 6.87005 7.54433 8.23217
SHA384
ECDSA
260
495
979 1917 3765 5.56068 6.20456 6.88653 7.55852 8.23350
TIGER
ECDSA
135
218
458
932 1896 4.90527 5.38450 6.12687 6.83733 7.54750
TIGER
ECDSA
135
208
448
901 1828 4.90527 5.33754 6.10479 6.80351 7.51098
TIGER
ECDSA
140
213
448
901 1828 4.94164 5.36129 6.10479 6.80351 7.51098
30
Lampiran 7 Hasil UjiNormal Probability Plot dan Test for Equal Variences Pada Proses Signing (dengan hasil data menyebar normal)
31
Lampiran 8Hasil UjiNormal Probability Plot dan Test for Equal Variences Pada Proses Verifying (dengan hasil data menyebar normal)
32
Lampiran 9 Plot Interaksi Waktu proses Signing
33
Lampiran 10 Plot Interaksi Waktu proses Verifying
34
Lampiran 11AlgoritmeKomputasi HashSHA-256 Setelah dilakukan praproses, setiap blok pesan, M(1), M(2), ..., M(N), diproses lebih lanjut sesuai urutan, mengikuti langkah-langkah sebagai berikut: For i=1 to N: { 1. Mempersiapkan penjadwalan pesan, {Wt}: 0 = 2.
t 15
16 t 63
Inisialisasi delapan working variables, a, b, c, d, e, f, g, dan h, dengan (i-1)st nilai hash: a = H0(i-1) b = H1(i-1) c = H2(i-1) d = H3(i-1) e = H4(i-1) f = H5(i-1) g = H6(i-1) h = H7(i-1)
3.
4.
For t = 0 to 63: { T1 = h + T2 = h=g g=f f=e e = d + T1 d=c c=b b=a a = T1 + T2 } Hitung
+ Ch(e, f, g) + + Maj (a, b, c)
nilai hash
+
:
H0(i) = a + H0(i-1) H1(i) = b + H1(i-1) H2(i) = c + H2(i-1) H3(i) = d + H3(i-1) H4(i) = e + H4(i-1) H5(i) = f + H5(i-1) H6(i) = g + H6(i-1) H7(i) = h + H7(i-1) } Setelah dilakukan proses sampai dengan ||
||
, hasil message digest 256-bit dari pesan, M, adalah ||
||
||
||
||
35
Lampiran 12Algoritme Komputasi Hash SHA-384 Setelah dilakukan praproses, setiap blok pesan, M(1), M(2), ..., M(N), diproses lebih lanjut sesuai urutan, mengikuti langkah-langkah sebagai berikut: For i = 1 to N: { 1. Mempersiapkan penjadwalan pesan, {Wt}: 0 = 2.
t 15
16 t 79
Inisialisasi delapan working variables, a, b, c, d, e, f, g, dan h, dengan (i-1)st nilai hash: a = H0(i-1) b = H1(i-1) c = H2(i-1) d = H3(i-1) e = H4(i-1) f = H5(i-1) g = H6(i-1) h = H7(i-1)
3.
4.
For t = 0 to 79: { T1 = h + T2 = h=g g=f f=e e = d + T1 d=c c=b b=a a = T1 + T2 } Hitung
+ Ch(e, f, g) + + Maj (a, b, c)
nilai hash
+
:
H0(i) = a + H0(i-1) H1(i) = b + H1(i-1) H2(i) = c + H2(i-1) H3(i) = d + H3(i-1) H4(i) = e + H4(i-1) H5(i) = f + H5(i-1) H6(i) = g + H6(i-1) H7(i) = h + H7(i-1) } Setelah dilakukan proses sampai dengan ||
, hasil message digest384-bit dari pesan, M, adalah ||
||
||
||
36
Lampiran 13Algoritme Komputasi Hash Tiger Register H0 yaitu: a = 0x0123456789ABCDEF c = 0xF096A5B4C3B2E187
b = 0xFEDCBA9876543210
save_abc pass(a,b,c,5) key_schedule pass(c,a,b,7) key_schedule pass(b,c,a,9) feedforward keterangan, 1. 2.
save_abcmenyimpan nilai dari aa = a; bb = b;
cc = c;
pass(a,b,c,mul) adalah round(a,b,c,x0,mul); round(b,c,a,x1,mul); round(c,a,b,x2,mul); round(a,b,c,x3,mul); round(b,c,a,x4,mul); round(c,a,b,x5,mul); round(a,b,c,x6,mul); round(b,c,a,x7,mul); round(a,b,c,x,mul) adalah c ^= x ; a -= t1[c_0] ^ t2[c_2] ^ t3[c_4] ^ t4[c_6] ; b += t4[c_1] ^ t3[c_3] ^ t2[c_5] ^ t1[c_7] ; b *= mul;
3.
key_schedule adalah x0 -= x7 ^ 0xA5A5A5A5A5A5A5A5; x1 ^= x0; x2 += x1; x3 -= x2 ^ ((~x1)<<19); x4 ^= x3; x5 += x4; x6 -= x5 ^ ((~x4)>>23); x7 ^= x6; x0 += x7; x1 -= x0 ^ ((~x7)<<19); x2 ^= x1; x3 += x2; x4 -= x3 ^ ((~x2)>>23); x5 ^= x4; x6 += x5; x7 -= x6 ^ 0x0123456789ABCDEF;
4.
feedforward adalah a ^= aa ;
b -= bb ;
c += cc ;
Hasil register a, b, c adalah 192 bits nilai hash
37
Lampiran 14 Potongan Kode Program Template Class untuk Proses Signing dan Verifying class CRYPTOPP_DLL FileSource : public SourceTemplate { public: typedef FileStore::Err Err; typedef FileStore::OpenErr OpenErr; typedef FileStore::ReadErr ReadErr; FileSource(BufferedTransformation *attachment = NULL) : SourceTemplate(attachment) {} FileSource(std::istream &in, bool pumpAll, BufferedTransformation *attachment = NULL) : SourceTemplate(attachment) {SourceInitialize(pumpAll, MakeParameters(Name::InputStreamPointer(), &in));} FileSource(const char *filename, bool pumpAll, BufferedTransformation *attachment = NULL, bool binary=true) : SourceTemplate(attachment) {SourceInitialize(pumpAll, MakeParameters(Name::InputFileName(), filename)(Name::InputBinaryMode(), binary));} std::istream* GetStream() {return m_store.GetStream();} }; //! Filter Wrapper for PK_Signer class CRYPTOPP_DLL SignerFilter : public Unflushable { public: SignerFilter(RandomNumberGenerator &rng, const PK_Signer &signer, BufferedTransformation *attachment = NULL, bool putMessage=false) : m_rng(rng), m_signer(signer), m_messageAccumulator(signer.NewSignatureAccumulator(rng)), m_putMessage(putMessage) {Detach(attachment);} std::string AlgorithmName() const {return m_signer.AlgorithmName();} void IsolatedInitialize(const NameValuePairs ¶meters); size_t Put2(const byte *begin, size_t length, int messageEnd, bool blocking); private: RandomNumberGenerator &m_rng; const PK_Signer &m_signer; member_ptr m_messageAccumulator; bool m_putMessage; SecByteBlock m_buf; }; //! Filter Wrapper for PK_Verifier class CRYPTOPP_DLL SignatureVerificationFilter : public FilterWithBufferedInput { public: class SignatureVerificationFailed : public Exception { public: SignatureVerificationFailed() : Exception(DATA_INTEGRITY_CHECK_FAILED, "VerifierFilter: digital signature not valid") {} };
38
Lampiran 14 Lanjutan enum Flags {SIGNATURE_AT_END=0, SIGNATURE_AT_BEGIN=1, PUT_MESSAGE=2, PUT_SIGNATURE=4, PUT_RESULT=8, THROW_EXCEPTION=16, DEFAULT_FLAGS = SIGNATURE_AT_BEGIN | PUT_RESULT}; SignatureVerificationFilter(const PK_Verifier &verifier, BufferedTransformation *attachment = NULL, word32 flags = DEFAULT_FLAGS); std::string AlgorithmName() const {return m_verifier.AlgorithmName();} bool GetLastResult() const {return m_verified;} protected: void InitializeDerivedAndReturnNewSizes(const NameValuePairs ¶meters, size_t &firstSize, size_t &blockSize, size_t &lastSize); void FirstPut(const byte *inString); void NextPutMultiple(const byte *inString, size_t length); void LastPut(const byte *inString, size_t length); private: const PK_Verifier &m_verifier; member_ptr m_messageAccumulator; word32 m_flags; SecByteBlock m_signature; bool m_verified; };
39
Lampiran 15 Kode Program Fungsi Signing DSA bool SignDSAMessage_256(const char *privFilename, const char *messageFilename, const char *signatureFilename) { try { // Crypto++ Load Private Key GDSA<SHA256>::Signer signer; PrivateKey& privateKey = signer.AccessPrivateKey(); privateKey.Load(FileSource(privFilename, true)); // Ambil file pesan string narrow; FileSource( messageFilename, true, new StringSink( narrow ) ); // Sign the Message // Set up for SignMessage() byte* s = new byte[ signer.MaxSignatureLength() ]; if( !s ) { return false; } // Sign... AutoSeededRandomPool prng; size_t length = signer.SignMessage( prng, (const byte*) narrow.c_str(), narrow.length(), s ); // 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 DSA (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 size_t length = signer.SignMessage( prng, (const byte*) narrow.c_str(), narrow.length(), s ); } 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 );
40
Lampiran 15 Lanjutan 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); // Convenience string signature( (const char*)s, length ); // Save the Signature on Message // sofs: signature filestream ofstream sofs; sofs.open(signatureFilename, ios_base::binary | ios_base::trunc ); // Save Signature on Message sofs.write( (const char*)signature.c_str(), (int)length ); // Cleanup sofs.close(); }catch( CryptoPP::Exception& ex ){ cerr << "Peringatan Error:" << endl; cerr << " " << ex.what() << endl; return false; }catch( std::exception& ex ){ cerr << "Peringatan Error:" << endl; cerr << " " << ex.what() << endl; return false; } return true; }
41
Lampiran 16Potongan Kode Program Template class yang digunakan pada DSA //! DSA-1363 template struct GDSA : public DL_SS< DL_SignatureKeys_GFP, DL_Algorithm_GDSA, DL_SignatureMessageEncodingMethod_DSA, H> { }; //! Discrete Log Based Signature Scheme template > class DL_SS : public KEYS { typedef DL_SignatureSchemeOptions SchemeOptions; public: static std::string StaticAlgorithmName() {return SA::StaticAlgorithmName() + std::string("/EMSA1(") + H::StaticAlgorithmName() + ")";} //! implements PK_Signer interface typedef PK_FinalTemplate> Signer; //! implements PK_Verifier interface typedef PK_FinalTemplate> Verifier; }; struct DL_SignatureKeys_GFP { typedef DL_GroupParameters_GFP GroupParameters; typedef DL_PublicKey_GFP PublicKey; typedef DL_PrivateKey_GFP PrivateKey; }; //! GDSA algorithm template class DL_Algorithm_GDSA : public DL_ElgamalLikeSignatureAlgorithm { public: static const char * CRYPTOPP_API StaticAlgorithmName() {return "DSA-1363";} void Sign(const DL_GroupParameters¶ms, 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¶ms, const DL_PublicKey&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;
42
Integer u2 = (r * w) % q;
Lampiran 16 Lanjutan // 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; };
43
Lampiran 17 Kode Program Fungsi Signing RSA void RSASignFile_256(const char *privFilename, const char *messageFilename, const char *signatureFilename) { FileSource privFile(privFilename, true, new HexDecoder); // 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 RSA (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 RSASS::Signer priv(privFile); FileSource f(messageFilename, true, new SignerFilter(GlobalRNG(), 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); }
44
Lampiran 18 Potongan Kode Program Template class yang digunakan pada RSA //! RSA signature scheme with appendix /*! See documentation of PKCS1v15 for a list of hash functions that can be used with it. */ template struct RSASS : public TF_SS<STANDARD, H, RSA> { }; //! Trapdoor Function Based Signature Scheme template > // VC60 workaround: doesn't work if KEYS is first parameter class TF_SS : public KEYS { public: //! see SignatureStandard for a list of standards typedef STANDARD Standard; typedef typename Standard::SignatureMessageEncodingMethod MessageEncodingMethod; typedef TF_SignatureSchemeOptions SchemeOptions; static std::string CRYPTOPP_API StaticAlgorithmName() { return std::string(KEYS::StaticAlgorithmName()) + "/" + MessageEncodingMethod::StaticAlgorithmName() + "(" + H::StaticAlgorithmName() + ")";} //! implements PK_Signer interface typedef PK_FinalTemplate> Signer; //! implements PK_Verifier interface typedef PK_FinalTemplate> Verifier; }; struct PKCS1v15 : public SignatureStandard, public EncryptionStandard { typedef PKCS_EncryptionPaddingScheme EncryptionMessageEncodingMethod; typedef PKCS1v15_SignatureMessageEncodingMethod SignatureMessageEncodingMethod; }; class CRYPTOPP_DLL PKCS1v15_SignatureMessageEncodingMethod : public PK_DeterministicSignatureMessageEncodingMethod { public: static const char * CRYPTOPP_API StaticAlgorithmName() { return "EMSA-PKCS1-v1_5";} size_t MinRepresentativeBitLength(size_t hashIdentifierSize, size_t digestSize) const{return 8 * (digestSize + hashIdentifierSize + 10);} void ComputeMessageRepresentative(RandomNumberGenerator &rng, const byte *recoverableMessage, size_t recoverableMessageLength, HashTransformation &hash, HashIdentifier hashIdentifier, bool messageEmpty, byte *representative, size_t representativeBitLength) const; struct HashIdentifierLookup { template struct HashIdentifierLookup2 {
45
Lampiran 18 Lanjutan static HashIdentifier Lookup(){ return HashIdentifier(PKCS_DigestDecoration::decoration, PKCS_DigestDecoration::length); } }; }; }; template class PKCS_DigestDecoration { public: static const byte decoration[]; static const unsigned int length; }; // PKCS_DigestDecoration can be instantiated with the following // classes as specified in PKCS#1 v2.0 and P1363a class SHA1; class RIPEMD160; class Tiger; class SHA224; class SHA256; class SHA384; class SHA512; namespace Weak1 { class MD2; class MD5; } // end of list template class CRYPTOPP_NO_VTABLE TF_ObjectImpl : public TF_ObjectImplBase { public: typedef KEY_CLASS KeyClass; const KeyClass & GetKey() const {return m_trapdoorFunction;} KeyClass & AccessKey() {return m_trapdoorFunction;} private: KeyClass m_trapdoorFunction; };
46
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); }
47
Lampiran 20 Potongan Kode Program Template class yang digunakan pada ECDSA //! ECDSA template struct ECDSA : public DL_SS< DL_Keys_ECDSA<EC>, DL_Algorithm_ECDSA<EC>, DL_SignatureMessageEncodingMethod_DSA, H> { }; //! Discrete Log Based Signature Scheme template > class DL_SS : public KEYS { typedef DL_SignatureSchemeOptions SchemeOptions; public: static std::string StaticAlgorithmName() {return SA::StaticAlgorithmName() + std::string("/EMSA1(") + H::StaticAlgorithmName() + ")";} //! implements PK_Signer interface typedef PK_FinalTemplate> Signer; //! implements PK_Verifier interface typedef PK_FinalTemplate> Verifier; }; //! ECDSA keys template struct DL_Keys_ECDSA { typedef DL_PublicKey_EC<EC> PublicKey; typedef DL_PrivateKey_WithSignaturePairwiseConsistencyTest< DL_PrivateKey_EC<EC>, ECDSA<EC>> PrivateKey; }; template class DL_PrivateKey_WithSignaturePairwiseConsistencyTest : public BASE { public: void GenerateRandom(RandomNumberGenerator &rng, const NameValuePairs ¶ms) { 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 }
48
Lampiran 20 Lanjutan //! ECDSA algorithm template class DL_Algorithm_ECDSA : public DL_Algorithm_GDSA { public: static const char * CRYPTOPP_API StaticAlgorithmName() {return "ECDSA";} }; //! GDSA algorithm template class DL_Algorithm_GDSA : public DL_ElgamalLikeSignatureAlgorithm { public: static const char * CRYPTOPP_API StaticAlgorithmName() {return "DSA-1363";} void Sign(const DL_GroupParameters¶ms, 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¶ms, const DL_PublicKey&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; }
49
Lampiran 21 Tampilan Menu Aplikasi Tanda Tangan Digital
50
Lampiran 22 Ilustrasi Proses Kerja Aplikasi Tanda Tangan Digital Menyiapkan file 1.pdf
Menjalankan cryptest.exe pada command prompt
Pembangkitan Kunci
b) Memberi masukan : -
a) Diketik : cryptest rgk
c) Diperoleh :
panjang kunci seed nama kunci private nama kunci public
-
kunci private kunci public
Membuat Tandatangan (signing)
a) Diketik : cryptest rsign_256 privatekeyfile messagefile signaturefile
b) Diperoleh :
d) Dikirim :
c) Dicatat : - waktu signing
file tandatangan pesan asli
- jumlah memori
file 1.pdf
file tandatangan pesan asli
Verifikasi keabsahan (verifying)
a) Diketik : cryptest rverif_256 publickeyfile messagefile signaturefile
b) Proses : membanding kan. Jika sama, maka pesan masih asli
c) Dicatat : - waktu verifying file tandatangan pesan asli
file tandatangan pesan yang diterima
- jumlah memori
51
Penguji :
Dr. Sugi Guritman
52