Aplikasi Otentikasi Dokumen Menggunakan Algoritma Gost Digital Signature

(1)

APLIKASI OTENTIKASI DOKUMEN MENGGUNAKAN

ALGORITMA GOST DIGITAL SIGNATURE

SKRIPSI

ASMAYUNITA

091402085

PROGRAM STUDI TEKNOLOGI INFORMASI

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

MEDAN

2014


(2)

APLIKASI OTENTIKASI DOKUMEN MENGGUNAKAN

ALGORITMA GOST DIGITAL SIGNATURE

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Sarjana Teknologi Informasi

ASMAYUNITA 091402085

PROGRAM STUDI TEKNOLOGI INFORMASI

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN 2014


(3)

PERSETUJUAN

Judul : APLIKASI OTENTIKASI DOKUMEN

MENGGUNAKAN ALGORITMA GOST DIGITAL SIGNATURE

Kategori : SKRIPSI

Nama : ASMAYUNITA

Nomor Induk Mahasiswa : 091402085

Program Studi : SARJANA (S-1) TEKNOLOGI INFORMASI

Departemen : TEKNOLOGI INFORMASI

Fakultas : ILMU KOMPUTER DAN TEKNOLOGI

INFORMASI Diluluskan di Medan, 02 Juli 2014

Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

Dani Gunawan, ST., MT

M. Andri Budiman, S.T., M.Comp.Sc., M.E.M.

NIP. 19820915201221002 NIP. 197510082008011011

Diketahui/Disetujui oleh

Program Studi Teknologi Informasi Ketua,

M. Anggia Muchtar ST., MM.IT NIP 198001102008011010


(4)

PERNYATAAN

APLIKASI OTENTIKASI DOKUMEN MENGGUNAKAN ALGORITMA GOST DIGITAL SIGNATURE

SKRIPSI

Saya mengakui bahwa skripsi ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan, 02 Juli 2014

ASMAYUNITA 091402085


(5)

PENGHARGAAN

Puji dan syukur saya panjatkan kepada Allah SWT yang telah memberikan rahmat dan karunia-Nya sehingga saya berhasil menyelesaikan skripsi ini untuk memperoleh gelar Sarjana Program Studi S-1 Teknologi Informasi Universitas Sumatera Utara.

Ucapan terima kasih penulis sampaikan kepada:

1. Bapak Prof. Dr. Muhammad Zarlis dan Prof. Dr. Opim Salim Sitompul, M.Sc

selaku Dekan dan Pembantu Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara, dan semua dosen serta pegawai di Program Studi S-1 Teknologi Informasi.

2. Kepada Bapak Andri Budiman S.T., M.Comp.Sc., M.E.M dan Bapak Dani

Gunawan, ST., MT selaku pembimbing saya yang telah memberikan banyak masukan-masukan, arahan, keluangan waktu serta bimbingan yang bermanfaat untuk saya dalam menyelesaikan skripsi ini.

3. Kepada Bapak Sawaluddin, M.IT dan Bapak Baihaqi Siregar, S.T.,M.T yang

telah bersedia menjadi dosen penguji dan telah memberikan saran-saran yang baik bagi saya dalam menyelesaikan skripsi ini.

4. Teristimewa kepada Ayahanda M. Jalil dan Ibunda Asmarani yang telah

membantu saya dalam segala hal dan mendukung kebutuhan moril dan motivasi sampai saat ini. Serta seluruh keluarga saya yang telah memberikan

do’a, dukungan, dan perhatian hingga saya dapat menyelesaikan skripsi ini.

5. Sahabat saya Bang Aris, Bang Padlian, Kak Aini, Ajeng, Aya, dan yang paling

spesial Rizky Haryo yang selalu mendukung dan memberi semangat kepada saya.

6. Teman-teman seperjuangan yang selalu mendukung saya dan membantu saya

selama belajar di Program Studi Teknologi Informasi yaitu Syarah, Devi, Septi, Bagus, Buyung, Yuli, Zizi, abang-kakak senior dan seluruh teman-teman seangkatan yang tidak dapat disebutkan.

7. Bapak Urip Harahap dan Ibu Ernawati yang selalu memberi semangat.

Sekali lagi penulis mengucapkan terima kasih kepada semua pihak yang membantu dalam penyelesaian tugas akhir ini yang tidak dapat disebutkan satu persatu, terima kasih atas masukan, saran dan motivasi yang diberikan.


(6)

ABSTRAK

Dokumen merupakan sebuah data teks yang memiliki sifat terbuka yaitu isinya dapat dibaca dan diubah dengan sangat mudah oleh pihak-pihak yang tidak berhak. Hal ini menyebabkan faktor keamanan dari dokumen sangat tidak terjamin. Untuk mengamankan sebuah dokumen tersebut dapat dilakukan dengan teknik kriptografi,

salah satunya adalah tanda tangan digital. Tanda tangan digital merupakan suatu cara

untuk menjamin keaslian suatu dokumen dan menjaga supaya pengirim dokumen dalam suatu waktu tidak dapat menyangkal bahwa dirinya telah mengirimkan

dokumen tersebut. oleh karena itu dengan adanya tanda tangan digital maka keaslian

pengirim danintegritas data dokumen terjamin. dengan tujuan tersebut, dirancanglah

sebuah aplikasi tanda tangan digital agar memudahkan pengguna untuk menvalidasi

data dokumen. Algoritma yang digunakan pada aplikasi ini adalah algoritma GOST

Digital Signature. Algoritma ini menggunakan fungsi hash SHA-256 yang mengubah

pesan dokumen dengan panjang sembarang menjadi pesan ringkas (message digest)

dengan panjang tetap (256 bit), sehingga jika ada satu karakter saja dari dokumen yang diubah maka kunci publik yang tersedia tidak bisa mengverifikasi dokumen. Hal ini membuktikan bahwa dokumen sudah tidak asli. Berdasarkan pengujian yang dilakukan aplikasi ini berhasil mengvalidasi dokumen dengan membandingkan

message digest dan tanda tangan digital yang dikirimkan menggunakan kunci publik

pengirim. Apabila keduanya valid maka membuktikan bahwa dokumen otentik dan pengirim adalah pengirim yang sebenarnya.


(7)

APLICATION OF DOCUMENT AUTHENTICATION WITH GOST DIGITAL SIGNATURE ALGORITHM

ABSTRACT

Document is a text data that has an extrovert which the content could be read and modified easily by every body. It causes the safety factor of the document is not very secure. In order to it, we can use cryptographic techniques, which one of a digital signature. Digital signatures are a way to ensure the authenticity of a document and keep saving it, in order to the sender could not deny that he had sent the document. therefore the presence of a digital signature so the authenticity of the sender and document data integrity is assured. with these goal, designed a digital signature application that enables users to validate the document data. The algorithm that used in this application is GOST digital signature algorithm. This algorithm uses the SHA-256 hash function that converts the document message from the length message into short message (message digest) with a fixed length (256 bits), so if there is one character only from the document that altered the available public key can not verified the document. This authenticate that the document is not original. Based on testing performed successfully validate the application of this document by comparing the message digest and digital signature that is sent using the sender's public key. If both are valid then prove that the document is authentic and the sender is the actual sender. Keyword: cryptography, hash function, digital signature, GOST Digital Signature


(8)

DAFTAR ISI

PERSETUJUAN ... i

PERNYATAAN ... ii

PENGHARGAAN ... iii

ABSTRAK ... iv

ABSTRACT ... v

DAFTAR ISI ... vi

DAFTAR TABEL ... viii

DAFTAR GAMBAR ... iiiix BAB 1 PENDAHULUAN ... 1

1.1. Latar Belakang ... 1

1.2. Rumusan Masalah ... 2

1.3. Tujuan Penelitian ... 3

1.4. Manfaat Penelitian ... 3

1.5. Batasan Masalah... 3

1.6. Metodologi Penelitian ... 3

BAB 2 LANDASAN TEORI ... 5

2.1. Pengenalan Kriptografi ... 5

2.2. Tanda Tangan Digital ... 7

2.3. Fungsi Hash ... 9

2.4. Algoritma GOST DigitalSignature ... 11

2.4.1. Parameter GOST Digital Signature 12 2.4.2. Pembentukan Sepasang Kunci 12 2.4.3. Pembentukan Tanda Tangan Digital 13 2.4.4. Verifikasi Tanda Tangan Digital 13 2.5. Penelitian Sebelumnya ... 14

BAB 3 ANALISIS DAN PERANCANGAN SISTEM ... 16

3.1. Analisis Komponen Sistem ... 16


(9)

3.1.2. Pemodelan Sistem Relasi antar Proses ... 17

3.1.3. Pemodelan Sistem Proses Pembentukan Sepasang Kunci ... 17

3.1.4. Pemodelan Sistem Proses Pembentukan Tanda Tangan Digital .. 18

3.1.5. Pemodelan Sistem Proses Verifikasi Dokumen ... 18

3.2. Analisis Sistem ... 19

3.2.1. Cara Kerja GOST Digital Signature ... 19

3.2.2. Pembentukan Sepasang Kunci ... 21

3.2.3. Pembentukan Tanda Tangan Digital ... 22

3.2.4. Verifikasi Tanda Tangan Digital ... 23

3.3. Perancangan Antar Muka (Interface)... 24

3.3.1. Rancangan Halaman Pengirim ... 25

3.3.1.1. Rancangan Halaman Pembentukan Kunci ... 25

3.3.1.2. Rancangan Halaman Pembentukan Tanda Tangan ... 26

3.3.2. Rancangan Halaman Penerima ... 27

BAB 4 IMPLEMENTASI DAN PENGUJIAN SISTEM ... 29

4.1. Implementasi ... 29

4.1.1. Spesifikasi Perangkat Keras dan Perangkat Lunak ... 29

4.1.2. Tampilan Implementasi Sistem ... 29

4.1.2.1. Pengujian Sistem pada Pengirim ... 30

4.1.2.2. Pengujian Sistem pada Penerima ... 31

4.2. Tabulasi Hasil Uji ... 33

BAB 5 KESIMPULAN DAN SARAN ... 36

5.1. Kesimpulan ... 36

5.2. Saran ... 36

DAFTAR PUSTAKA ... 37


(10)

DAFTAR TABEL

Hal

Tabel 2.1 Tabel Penelitian Terdahulu 14

Tabel 4.1 Tabel Pengujian Message Digest dengan Variasi String 34


(11)

DAFTAR GAMBAR

Hal

Gambar 2.1. Kriptografi Simetris 6

Gambar 2.2. Kriptografi Asimetris 6

Gambar 2.3. Skema Tanda Tangan Digital 8

Gambar 2.4. Contoh Penggunaan Fungsi Hash 10

Gambar 3.1. Pemodelan Sistem Keseluruhan 15

Gambar 3.2. Sistem Relasi antar Proses 16

Gambar 3.3. Proses Pembentukan Sepasang Kunci 16

Gambar 3.4. Proses Pembentukan Tanda Tangan Digital 17

Gambar 3.5. Proses Verifikasi Dokumen 18

Gambar 3.6. Flowchart GOST Digital Signature 19

Gambar 3.7. Flowchart Pembentukan Sepasang Kunci 20

Gambar 3.8. Flowchart Pembentukan Tanda Tangan Digital 22

Gambar 3.9. Flowchart Verifikasi Tanda Tangan Digital 23

Gambar 3.10. Rancangan Halaman Pembentukan Kunci 25

Gambar 3.11. Rancangan Halaman Pembentukan Tanda Tangan Digital 26

Gambar 3.12. Rancangan Halaman Verifikasi 27

Gambar 4.1. Tampilan Halaman Pembentukan Kunci 30

Gambar 4.2. Halaman Pembentukan Tanda Tangan Digital 31

Gambar 4.3. Tampilan Tanda Tangan Valid 32

Gambar 4.4. Tampilan Tanda Tangan Tidak Valid 33


(12)

ABSTRAK

Dokumen merupakan sebuah data teks yang memiliki sifat terbuka yaitu isinya dapat dibaca dan diubah dengan sangat mudah oleh pihak-pihak yang tidak berhak. Hal ini menyebabkan faktor keamanan dari dokumen sangat tidak terjamin. Untuk mengamankan sebuah dokumen tersebut dapat dilakukan dengan teknik kriptografi,

salah satunya adalah tanda tangan digital. Tanda tangan digital merupakan suatu cara

untuk menjamin keaslian suatu dokumen dan menjaga supaya pengirim dokumen dalam suatu waktu tidak dapat menyangkal bahwa dirinya telah mengirimkan

dokumen tersebut. oleh karena itu dengan adanya tanda tangan digital maka keaslian

pengirim danintegritas data dokumen terjamin. dengan tujuan tersebut, dirancanglah

sebuah aplikasi tanda tangan digital agar memudahkan pengguna untuk menvalidasi

data dokumen. Algoritma yang digunakan pada aplikasi ini adalah algoritma GOST

Digital Signature. Algoritma ini menggunakan fungsi hash SHA-256 yang mengubah

pesan dokumen dengan panjang sembarang menjadi pesan ringkas (message digest)

dengan panjang tetap (256 bit), sehingga jika ada satu karakter saja dari dokumen yang diubah maka kunci publik yang tersedia tidak bisa mengverifikasi dokumen. Hal ini membuktikan bahwa dokumen sudah tidak asli. Berdasarkan pengujian yang dilakukan aplikasi ini berhasil mengvalidasi dokumen dengan membandingkan

message digest dan tanda tangan digital yang dikirimkan menggunakan kunci publik

pengirim. Apabila keduanya valid maka membuktikan bahwa dokumen otentik dan pengirim adalah pengirim yang sebenarnya.


(13)

APLICATION OF DOCUMENT AUTHENTICATION WITH GOST DIGITAL SIGNATURE ALGORITHM

ABSTRACT

Document is a text data that has an extrovert which the content could be read and modified easily by every body. It causes the safety factor of the document is not very secure. In order to it, we can use cryptographic techniques, which one of a digital signature. Digital signatures are a way to ensure the authenticity of a document and keep saving it, in order to the sender could not deny that he had sent the document. therefore the presence of a digital signature so the authenticity of the sender and document data integrity is assured. with these goal, designed a digital signature application that enables users to validate the document data. The algorithm that used in this application is GOST digital signature algorithm. This algorithm uses the SHA-256 hash function that converts the document message from the length message into short message (message digest) with a fixed length (256 bits), so if there is one character only from the document that altered the available public key can not verified the document. This authenticate that the document is not original. Based on testing performed successfully validate the application of this document by comparing the message digest and digital signature that is sent using the sender's public key. If both are valid then prove that the document is authentic and the sender is the actual sender. Keyword: cryptography, hash function, digital signature, GOST Digital Signature


(14)

BAB 1 PENDAHULUAN

1.1.Latar Belakang

Dalam era masyarakat berbasis informasi, sebuah data digital merupakan komponen

yang sangat vital, sehingga memerlukan pengamanan yang baik saat didistribusi ataupun saat disimpan. Akhirnya dikembangkan berbagai cara/ metode untuk mengatasi persoalan keamanan data yang pada intinya adalah cara mengantisipasi agar pihak-pihak yang tidak berhak, tidak mungkin dapat membaca atau bahkan merusak data yang bukan ditujukan padanya. Salah satu cara pengamanan data tersebut adalah dengan menerapkan kriptografi/ penyandian.

Ketika suatu algoritma kriptografi sudah dapat dipecahkan, maka diperlukan algoritma-algoritma baru yang lebih handal agar keamanan data tetap terjaga. Hal ini menyebabkan kriptografi tidak berhenti berkembang, salah satu contoh dari

perkembangan algoritma kriptografi tersebut adalah digital signature. Digital

signature atau tanda tangan digital bukanlah tanda tangan dari seseorang yang di-scan

atau dimasukkan ke komputer menggunakan scanner atau sejenisnya, tapi memiliki

fungsi sebagai penanda data yang memastikan bahwa data tersebut adalah data yang sebenarnya (tidak ada yang berubah).

Dalam dunia nyata, untuk pengamanan menjamin keaslian serta legalitas suatu dokumen digunakan tanda tangan. Tanda tangan ini merupakan suatu tanda yang bersifat unik milik seseorang dan digunakan untuk memberikan pengesahan bahwa orang tersebut setuju dan mengakui isi dari dokumen yang ditandatangani. Untuk dokumenpun dibutuhkan hal semacam ini. Oleh karena itu, diciptakan suatu sistem otentikasi yang disebut tanda tangan digital.

Tanda tangan digital merupakan suatu cara untuk menjamin keaslian suatu

dokumen elektronik dan menjaga supaya pengirim dokumen dalam suatu waktu tidak dapat menyangkal bahwa dirinya telah mengirimkan dokumen tersebut. Sebuah tanda


(15)

bahwa pesan yang dikirim benar-benar dibuat oleh pengirim yang diketahui, dan tidak

dimanipulasi dalam perjalanan. Tanda tangan digital biasanya digunakan untuk

distribusi perangkat lunak, transaksi keuangan, dan dalam kasus lain di mana penting

untuk mendeteksi pemalsuan atau gangguan. Tanda tangan digital menggunakan

algoritma-algoritma serta teknik-teknik komputer khusus dalam penerapannya.

Tujuan dari penggunaan tanda tangan digital adalah membuktikan keaslian

identitas pengirim dari suatu pesan atau penandatangan dari suatu dokumen, dan untuk memastikan isi yang asli dari pesan atau dokumen itu sudah dikirim tanpa perubahan.

Sejak ditemukannya oleh Diffie dan Hellman pada tahun 1973, banyak usulan

untuk merealisasikan tanda tangan digital. Pada tahun 1999 federasi Rusia

mengeluarkan standar GOST digital signature. Algoritma GOST digital signature

merupakan algoritma asimetris yang melingkupi sistem inisialisasi, penghasil kunci, penghasil tanda tangan dan verifikasi. Pembentuk kunci publik pada algoritma ini jauh

lebih rumit sehingga algoritma ini sangat aman (Michels et al, 1996).

Sebelumnya ada beberapa penelitian yang pernah dilakukan yang berkaitan

dengan tanda tangan digital, diantaranya yaitu Implementasi Tanda Tangan Digital

Menggunakan Fungsi Hash Algoritma SHA-256 dan RSA dalam Proses Otentikasi

Data (Saipul, 2010), Studi dan Implementasi Tanda Tangan Digital dengan

Menggunakan Algoritma Elgamal (Fernando, 2009), dan Aplikasi Kriptografi untuk

Pengamanan E-dokumen dengan Metode Hybrid: Biometrik Tandatangan dan DSA

(Digital Signature Algorithm) (Wahyuni, 2011).

1.2.Rumusan Masalah

Banyaknya pencurian dan pemalsuan yang terjadi terhadap dokumen membuat sistem keamanan jaringan perlu mengembangkan sebuah teknik sebagai penanda khusus yang memastikan bahwa dokumen tersebut adalah dokumen yang benar dan otentik dari pengirim. Dari uraian diatas, permasalahan yang diteliti yaitu bagaimana membuktikan bahwasanya dokumen tersebut otentik serta menjamin integritas dokumen bahwa dokumen yang dikirim berasal dari pengirim yang sebenarnya


(16)

3

1.3.Tujuan Penelitian

Penelitian ini bertujuan untuk membuktikan bahwasanya dokumen tersebut otentik dari pengirim dan tidak diubah oleh pihak-pihak yang tidak bertanggung jawab

dengan menggunakan algoritma GOST Digital Signature.

1.4.Manfaat Penelitian

Sistem ini dibangun menggunakan standar GOST Digital Signature yang bermanfaat

untuk membuktikan keaslian pengirim sehingga pengirim tidak bisa menyangkal telah mengirimkan dokumen tersebut. Dengan demikian membuktikan bahwa dokumen

yang diterima otentik dikirim dari pihak pengirim. Sedangkan fungsi hash yang

digunakan dalam algoritma ini berfungsi untuk menjaga agar dokumen tidak bisa diubah oleh pihak yang tidak bertanggung jawab.

1.5.Batasan Masalah

Adapun batasan masalah yang diberikan pada penelitian ini adalah sebagai berikut :

1. Dokumen yang diberi tanda tangan digital hanya file Microsoft Office

(doc,xls,ppt).

2. Pengamanan dokumen hanya meliputi otentikasi pengirim dan integritas file

sebagai hasil verifikasi pada pihak penerima.

3. Tidak membahas aspek keamanan pada jalur komunikasi yaitu pada proses

transmisi dokumen lewat internet atau media pengiriman apapun dan keamanan yang diakibatkan oleh kelalaian pengguna.

4. Tidak ada proses validasi dari pihak ketiga sebagai penjamin, yaitu infrastruktur

kunci publik manapun.

1.6.Metodologi Penelitian

Metode penelitian yang akan digunakan adalah:

1. Studi Literatur

Pada tahap ini dilakukan dengan membaca dan mempelajari buku-buku referensi, jurnal atau sumber-sumber lain yang berkaitan dengan tugas akhir ini, baik berasal dari buku maupun dari internet.


(17)

2. Analisis dan Perancangan Desain Sistem

Pada tahap ini akan dilakukan analisis penerapan algoritma pada aplikasi

kriptografi untuk otentikasi tanda tangan digital serta perancangan aplikasi, antara

lain menggambar flowchart, DFD, dan perancangan antarmuka (interface).

3. Implementasi Sistem

Pada tahap ini akan dilakukan pengkodean dan menerapkan perancangan aplikasi tersebut ke dalam bahasa pemrograman.

4. Pengujian Sistem

Pada tahap ini akan dilakukan pengujian terhadap aplikasi apakah telah memenuhi kriteria atau tidak.

5. Dokumentasi Sistem

Pada tahap ini akan dilakukan penulisan laporan mengenai aplikasi tersebut yang bertujuan untuk menunjukkan hasil penelitian ini.


(18)

BAB 2

LANDASAN TEORI

Pada bab ini, akan dibahas landasan teori mengenai teori-teori yang digunakan dan konsep yang mendukung pembahasan, serta penjelasan mengenai metode yang digunakan.

2.1.Pengenalan Kriptografi

Menurut Sadikin (2012), kriptografi adalah ilmu yang bersandarkan pada teknik matematika yang berurusan dengan keamanan informasi seperti kerahasiaan, keutuhan data dan otentikasi entitas.

Dalam kriptografi, pesan yang mempunyai makna disebut plaintext, dan

pesan yang tidak bermakna lagi disebut ciphertext. Dua proses utama dalam kriptografi adalah enkripsi dan dekripsi. Enkripsi adalah transformasi plaintext menjadi ciphertext, sedangkan transformasi sebaliknya dari cipherteks menjadi plainteks semula disebut dekripsi. Baik enkripsi maupun dekripsi, proses keduanya melibatkan penggunaan kunci (key).

Sistem kriptografi (yang terdiri atas algoritma kriptografi, kunci, plaintext, dan ciphertext) dapat digolongkan menjadi dua kelompok: sistem kriptografi simetri dan sistem kriptografi asimetris (kunci-publik). Pada sistem kriptografi simetri yang ditunjukkan pada gambar 2.1. (Munir, 2006), kunci untuk enkripsi sama dengan kunci untuk dekripsi. Sebelum melakukan pengiriman pesan, pengirim dan penerima harus memilih suatu kunci tertentu yang sama untuk dipakai bersama, dan kunci ini harus sangat rahasia bagi pihak yang tidak berkepentingan sehingga

algoritma ini disebut juga sebagai algoritma kunci rahasia (secret-key algorithm).

Contoh algoritma kriptografi simetri diantaranya adalah DES, Blowfish, Twofish, Triple-DES, IDEA, AES, LOKI, GOST, dan lain-lain.


(19)

Gambar 2.1. Kriptografi Simetris

Sedangkan pada sistem kriptografi kunci-publik seperti yang terlihat pada gambar 2.2. (Munir, 2006), kunci untuk enkripsi tidak sama dengan kunci untuk dekripsi. Kunci untuk enkripsi tidak rahasia, sehingga dinamakan juga kunci publik (public key), sedangkan kunci untuk dekripsi rahasia, sehingga dinamakan kunci privat (privat key). Pengirim pesan mengenkripsi pesan dengan menggunakan kunci publik si penerima pesan, hanya penerima pesan yang dapat mendekripsi pesan menjadi plainteks semula dengan menggunakan kunci privatnya. Contoh algoritma kriptografi asimetris diantaranya adalah RSA (

Rivest-Shamir-Adleman), DSA, dan ElGamal.

Gambar 2.2. Kriptografi Asimetris

Kriptografi terbagi atas dua kategori yaitu kriptografi klasik dan kriptografi modern. Kriptografi klasik adalah sistem kriptografi yang menggunakan penyandian kunci simetris dan menggunakan metode subtitusi (pergantian huruf) atau transposisi (pertukaran tempat). Dan kriptografi modern adalah sistem kriptografi yang menggunakan penyandian kunci asimetris (Sadikin, 2012).

Ada 4 (empat) aspek-aspek keamanan yang disediakan oleh kriptografi (Munir, 2006), yaitu:

1. Kerahasiaan

Kerahasiaan (Confidentiality) merupakan layanan yang digunakan untuk menjaga


(20)

7

kriptografi, layanan ini umumnya direalisasikan dengan cara menyandikan pesan menjadi bentuk yang tidak dapat dimengerti.

2. Integritas Data

Integritas data(integrity) merupakan layanan yang menjamin bahwa pesan masih

asli/utuh atau belum pernah dimanipulasi selama pengiriman. Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk mendeteksi manipulasi pesan oleh pihak-pihak yang tidak berhak, antara lain penyisipan, penghapusan,dan pengsubsitusian data lain kedalam pesan yang sebenarnya.

3. Otentikasi

Otentikasi (Authentication) merupakan layanan yang berhubungan dengan

identifikasi. Baik mengidentifikasi benaran pihak-pihak yang berkomunikasi

(user authentication dan entity authentication) maupun mengidentifikasi

kebenaran sumber pesan (data origin authentication). Dua pihak yang saling

berkomunikasi harus dapat mengotentikasi satu sama lain sehingga ia dapat memastikan sumber pesan. Pesan yang dikirim melalui saluran komunikasi juga harus diotentikasi asalnya. Otentikasi sumber pesan secara implisit juga memberikan kepastian integritas data, sebab jika pesan telah dimodifikasi berarti sumber pesan sudah tidak benar. Oleh karena itu, layanan integritas data selalu dikombinasikan dengan layanan otentikasi sumber pesan.

4. Anti Penyangkalan

Anti Penyangkalan (non-repudiation) merupakan layanan untuk mencegah entitas

yang berkomunikasi melakukan penyangkalan, yaitu pengiriman pesan menyangkal melakukan pengiriman atau penerimaan pesan menyangkal telah menerima pesan.

2.2.Tanda Tangan Digital

Tanda tangan digital adalah mekanisme otentikasi yang mengijinkan pemilik pesan

membubuhkan sebuah sandi pada pesannya yang bertindak sebagai tanda tangan.

Tanda tangan dibentuk dengan mengambil nilai hash dari pesan dan mengenkripsi


(21)

Prinsip yang digunakan dalam tanda tangan digital ini adalah dokumen yang dikirimkan harus ditandatangani oleh pengirim dan tanda tangan bisa diperiksa oleh penerima untuk memastikan keaslian dokumen yang dikirimkan. Fungsinya adalah

untuk melakukan validasi terhadap data yang dikirim. Tanda tangan digital

menggunakan algoritma yang disebut dengan istilah hashing algorithm. Fungsi

tersebut akan menghasilkan sebuah kombinasi karakter yang yang unik yang disebut

Message Digest. dengan cara ini pengirim bertanggungjawab terhadap isi dokumen

dan dapat di cek keaslian dokumen oleh penerima.

Keunikannya adalah jika di tengah perjalanan data mengalami modifikasi, penghapusan maupun di sadap diam-diam oleh hacker walaupun hanya 1 karakter saja,

maka message digest yang berada pada si penerima akan berbeda dengan yang

dikirimkan pada awalnya. Keunikan lainnya adalah message digest tersebut tidak bisa

dikembalikan lagi ke dalam bentuk awal seperti sebelum disentuh dengan fungsi

algoritma, sehingga disebutlah sebagai one-way hash (Sianturi, 2008).

Fungsi utama dari tanda tangan digital pada pada aspek keamanan kriptografi

adalah non-repudiation atau anti penyangkalan dimana apabila dokumen valid maka

pengirim tidak bisa menyangkal bahwa keberadaan dokumen benar dikirim oleh pengirim yang bersangkutan.

Suatu tanda tangan digital dapat digunakan di segala macam pesan, apakah itu

terenkripsi maupun tidak, sehingga penerima dapat memastikan identitas pengirim itu dan pesan tiba secara utuh.


(22)

9

Cara kerja tanda tangan digital seperti yang terlihat pada gambar 2.3. (Tulu et

all, 2004) adalah sebagai berikut:

1. Si A menggunakan proses hashing algorithm untuk mengambil nilai hash dari

sebuah pesan yang terdapat dalam sebuah dokumen yang dikirim dan

menghasilkan Message Digest.

2. Setelah dilakukan hashing, Si A melakukan sign terhadap message digest dengan

menggunakan kunci privat yang hanya diketahui oleh penandatangan dan

digunakan untuk membentuk tanda tangan digital.

3. Kemudian Si A mengirimkan tanda tangan digital bersama dokumen tersebut.

4. Si B penerima pesan yang dikirimkan oleh Si A.

5. Setelah itu Si B mengverifikasi pesan yang dikirimkan oleh Si A. Pada proses

verifikasi tersebut pesan di hashing terlebih dahulu sehingga menghasilkan

message digest dan tanda tangan digital akan di unsign menggunakan kunci

publik Si A. Jika message digest dan tanda tangan digital-nya sama, maka pesan

ini adalah asli dan pesan berasal dari pengirim yang sebenarnya. Bila pesan telah diubah oleh pihak luar, maka tanda tangan digital juga ikut berubah sehingga

kunci publik yang ada tidak akan bisa di unsign.

Proses diatas mampu membuktikan bahwasanya pesan adalah asli (message

authentication) dan orang yang mengirim adalah orang yang sebenarnya (user

authentication). Ini berarti tanda tangan digital memenuhi salah satu syarat keamanan

jaringan yaitu non-repudiation atau anti-penyanggahan.

2.3.Fungsi Hash

Fungsi hash merupakan suatu fungsi yang menerima masukan berupa string yang

panjangnya sembarang dan mengonversi masukan tersebut menjadi string yang

mempunyai panjang tetap (fixed) dan umumnya menjadi lebih kecil dari panjang

semula. Keluaran dari fungsi hash disebut juga nilai hash atau pesan-ringkas (message

digest).

Fungsi hash sering juga disebut fungsi satu arah (one way function), message

digest, fingerprint, fungsi kompresi, dan message authentication code (MAC). Fungsi

ini biasanya diperlukan bila kita menginginkan pengambilan sidik jari suatu pesan. Dinamakan fungsi kompresi karena biasanya masukan fungsi satu arah ini selalu lebih


(23)

besar dari keluarannya, sehingga seolah-olah mengalami kompresi. Namun kompresi hasil fungsi ini tidak dapat dikembalikan ke asalnya sehingga disebut sebagai fungsi

satu arah. Dinamakan sebagai message digest karena seolah-olah merupakan inti sari

pesan mestinya merupakan ringkasan pesan yang masih dipahami maknanya, sedangkan disini justru sebaliknya, malahan dengan diketahuinya sidik jari ini, justru orang diharapkan tidak tahu pesan aslinya (Kurniawan, 2004).

Masukan Nilai Hash

Gambar 2.4. Contoh Penggunaan Fungsi Hash

Pada gambar 2.4. (Munir, 2004) memperlihatkan fungsi hash yang mengubah

suatu string dengan panjang berapapun menjadi sebuah message digest yang memiliki

panjang tetap. Fungsi hash pada dasarnya bekerja satu arah, berarti pesan asli atau

pesan semula akan diubah menjadi sebuah message digest, namun message digest

yang dihasilkan tidak dapat dikembalikan menjadi pesan asli atau pesan semula kembali.

Fungsi hash satu arah merupakan fungsi satu arah (one way function) yang

dapat menghasilkan ciri (signature) dari data (berkas, stream). Perubahan satu bit saja

akan mengubah keluaran hash secara drastis. Fungsi hash biasanya digunakan untuk

menjamin integritas dan tanda tangan digital.

Salah satu fungsi hash yang sudah terstandardisasi dan banyak digunakan

adalah SHA (Secure Hash Algorithm) yang dikeluarkan oleh NIST (National Institute

of Standard and Technology).

Halo Aa6df57fb6fe377d80b4a2

57b4a92cba Nomor teleponku

08122113451

Tsu a i e jadi kata

yang populer diindonesia saat ini

A996de118c61eac496398 9aa2d73e67e 09c88f091d74b292e6f895


(24)

11

Saat ini sudah terdapat tiga generasi dari SHA dimana dari generasi tersebut juga terdapat beberapa varian lagi berdasarkan panjang bit yang dihasilkan. Ketiga varian itu adalah SHA-0 (atau yang biasa disebut SHA saja), SHA-1, dan SHA-2.

Algoritma SHA-2 merupakan pengembangan dari algoritma SHA-1 yang

memuat banyak perubahan. Algoritma ini didesain oleh National Security Agency

(NSA) of United States dan dipublikasikan pada tahun 2001 oleh NIST sebagai

standar bagi pemrosesan informasi federal bagi Amerika Serikat atau yang biasa

disebut Federal Information Processing Standard (FIPS).

Algoritma SHA-2 ini terdiri dari beberapa algoritma berdasarkan panjang bit yang digunakan/ dihasilkan sebagai nilainya yaitu SHA-224, SHA-256, SHA-384, SHA-512. Algoritma SHA-2 ini menggunakan beberapa operasi dasar dalam teknik kriptografi, yaitu fungsi AND, OR, XOR, SHIFT (right), dan ROTATE (right).

Sifat-Sifat Fungsi Hash Kriptografi:

a. Tahan preimej (Preimage resistant): bila diketahui nilai hash h maka sulit

(secara komputasi tidak layak) untuk mendapatkan m dimana h = hash(m).

b. Tahan preimej kedua (Second preimage resistant): bila diketahui input m1

maka sulit mencari input m2 (tidak sama dengan m1) yang menyebabkan

hash(m1) = hash(m2).

c. Tahan tumbukan (Collision-resistant): sulit mencari dua input berbeda m1 dan

m2 yang menyebabkan hash(m1) = hash(m2)

2.4.Algoritma GOST Digital Signature

GOST atau Gosudarstvenny Standard yang artinya standard pemerintah, adalah

algoritma kriptografi dari negara Uni Soviet dahulu (sekarang sudah terpecah menjadi sejumlah negara dengan Rusia sebagai negara terbesar) (Munir, 2004).

Algoritma ini dikembangkan pada tahun 1970 yang merupakan sebuah algoritma block chiper dengan panjang 64 bit, sedangkan panjang kuncinya 256 bit. GOST dibuat oleh Soviet sebagai alternatif terhadap algoritma enkripsi standard Amerika Serikat, DES. GOST secara struktural mirip dengan DES.

Masyarakat perbankan Prancis telah menstadardisasi RSA. National Institute

of Standardization Technology (NIST) mengusulkan suatu modifikasi ElGamal dan


(25)

mereka dan skema tanda tangan didasarkan pada kurva elips yang sampai saat ini menjadi standar IEEE. Pada tahun 1999 federasi Rusia mengeluarkan standar tanda

tangan digital GOST Digital Signature atau sering disebut GOST 34,10-94. Algoritma

ini sangat mirip dengan Digital Signature Algorithm (DSA). GOST Digital Signature

dan algoritma tanda tangan digital lainnya memiliki tiga proses utama yaitu:

1. Pembentukan sepasang kunci (Key Pair Generation)

2. Pembentukan tanda-tangan digital (Digital Signature Generation)

3. Verifikasi tanda-tangan digital (Digital Signature Verification)

2.4.1. Parameter GOST digital signature

GOST Digital Signature merupakan sebuah standar Russia digital signature yang

dikembangkan dari DSA yang telah dimodifikasi dimana menggunakan parameter dibawah ini (Schneier, 1996):

1. p, adalah bilangan prima dengan panjang antara 509 ≤ p ≥512 bit, atau 1020 ≤ p 1024 bit. Parameter p bersifat publik.

2. q, adalah bilangan prima dengan panjang 254 ≤ q ≥ 256 bit, dan q merupakan faktor dari p - 1. Parameter q bersifat publik.

3. a, merupakan bilangan yang lebih kecil dari p - 1 dimana mod p = 1.

Parameter a bersifat publik.

4. x, adalah bilangan acak yang lebih kecil dari q. Parameter x adalah kunci privat.

5. y = mod p, adalah kunci publik.

6. m, pesan yang akan diberi tanda tangan.

2.4.2. Pembentukan sepasang kunci

Proses pembentukan kunci pada GOST Digital Signature adalah sebagai berikut

(Schneier, 1996):

1. Pilih bilangan prima p dan q dimana (p–1) mod q = 0. 2. Hitung a dimana aq mod p = 1 dan a < p-1.

3. Tentukan kunci privat x dimana x < q.


(26)

13

y = mod p (2.1)

5. Kunci publik (p, q, a, y) dan kunci privat (p, q, a, x).

2.4.3. Pembentukan tanda tangan digital

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

1. Ubah pesan m menjadi message digest dengan fungsi Hash SHA menghasilkan

SHA (M).

2. Tentukan bilangan acak k dimana k < q.

3. Hitung tanda tangan r, dengan rumus:

r = (akmod p) mod q (2.2)

1. Hitung tanda tangan s, dengan rumus:

s = (xr + k(H(m))) mod q (2.3)

4. Kirim pesan beserta tanda tangan r dan s.

2.4.4. Verifikasi tanda tangan digital

Sebelum diverifikasi, harus dipastikan tersedia kunci publik pengirim (y), nilai p, q

dan a beserta pesan yang bertandatangan r dan s. Penerima memeriksa terlebih dahulu

apakah 0 < r < q dan 0 < s < q, kemudian hitung:

1. Hitung nilai v, dengan rumus:

v = H(m)q-2 mod q (2.4)

2. Hitung nilai Z1, dengan rumus:

Z1 = (sv) mod q (2.5)

3. Hitung nilai Z2, dengan rumus:

Z2 = ((q – r) * v) mod q (2.6)


(27)

u = ((a z1 * y z2) mod p) mod q (2.7) 5. Jika u = r, maka proses verifikasi berhasil.

2.5.Penelitian Sebelumnya

Beberapa penelitian dari peneliti sebelumnya yang menjadi bahan pembelajaran penulis tentang tanda tangan digital.

Supriyanto (2009) menggunakan algoritma kunci publik RSA yang mampu

memberikan sistem keamanan dokumen attachment pada sebuah e-mail untuk

menghindari jebolnya keamanan yang diterapkan e-mail standard seperti PGP. Pada

penelitian ini pengujian validitas dilakukan berdasarkan elemen dokumen XML

dengan cara membandingkan “data valid” dengan perubahan data yang menghasilkan

“data invalid”.

Budiono (2011) telah melakukan penerapan tanda tangan digital untuk

otentikasi SMS-Banking. Algoritma RSA telah berhasil diimplementasikan

menggunakan teknologi tanda tangan digital untuk transaksi SMS-Banking yang

tersimulasikan dalam perangkat lunak yang telah dibangun diatas telepon seluler

sebagai client dan perangkat lunak yang dibangun diatas komputer sebagai server.

Table 2.1. Tabel penelitian terdahulu

No Judul Pengarang Tahun Kelebihan

1. Pemakaian kriptografi

kunci publik untuk proses enkripsi dan tanda tangan

digital pada dokumen

email.

Aji Supriyanto 2009 Memberikan keamanan

otentikasi dokumen e-mail, untuk menghindari

jebolnya atau tembusnya keamanan yang diterapkakn oleh e-mail standar.


(28)

15

2. Penerapan tanda tangan

digital untuk otentikasi

SMS-Banking.

Budiono 2011 Algoritma RSA yang

berhasil diimplementasikan pada tanda tangan digital SMS telah terbukti dengan kemampuan perangkat lunak client dalam

mengoperasikan bilangan bigintiger.


(29)

BAB 3

ANALISIS DAN PERANCANGAN SISTEM

Pada bab ini, akan dibahas beberapa hal mengenai penerapan algoritma dan analisa

perancangan sistem dalam mengimplementasikan Algoritma GOST Digital Signature

dalam pembuatan tanda tangan digital sebagai otentikasi dalam pembuktian keaslian

khususnya untuk data pesan yang panjang dan sensitif.

3.1.Analisis Komponen Sistem

3.1.1. Pemodelan sistem keseluruhan

Proses ini menjelaskan pemodelan sistem keseluruhan secara sederhana yang terdapat pada aplikasi tanda tangan digital.

Sistem

Signer Verifier

- file kunci privat, kunci publik, digital signature

- Buat sepasang kunci - Signing dokumen

- Status digital signature

- Verifikasi dokumen

Gambar 3.1. Pemodelan Sistem keseluruhan

Dari gambar 3.1. dapat dijelaskan bahwasanya user sebagai pengirim dapat

melakukan proses pembentukan sepasang kunci, dan proses pembentukan tanda tangan digital kemudian sistem akan mengirim output berupa file kunci privat, dan kunci publik, dan file tanda tangan digital.

Sedangkan untuk user sebagai penerima dapat melakukan proses verifikasi

dokumen dan tanda tangan digital kemudian sistem akan memberi output berupa


(30)

17

3.1.2. Pemodelan sistem relasi antar proses

Berikut ini adalah pemodelan sistem yang menampilkan setiap relasi antar proses pada aplikasi tanda tangan digital.

1.0 Pembentukan

Kunci Signer Direktori untuk penyimpanan file kunci

Nama direktori yang ditentukan File kunci privat dan kunci publik

Kunci_private Kunci_publik 2.0 Signing Dokumen Input dokumen

Input file kunci privat Signing Nama direktori file kunci disimpan

File digital signature Digital_signature

Verifier

3.0 Verifikasi Dokumen Input file dokumen

Input file digital signature Input file kunci publik

Status dokumen

Gambar 3.2. Sistem Relasi Antar Proses

Dari gambar 3.2. dapat dijelaskan bahwasanya aplikasi ini memiliki 3 proses

pokok untuk melayani user baik sebagai pengirim maupun penerima yaitu

pembentukan sepasang kunci, pembentukan tanda tangan digital pada dokumen, dan

verifikasi dokumen.

3.1.3. Pemodelan sistem proses pembentukan sepasang kunci

Berikut ini adalah pemodelan sistem dari proses pembentukan sepasang kunci.

1.1 Pembentukan Bilangan Prima dan Sub Prima

Signer

Kunci_privat

1.2 Pembentukan Kunci Privat X

1.3 Pembentukan Kunci Publik Y

1.4 Simpan Kunci

Kunci_publik

File kunci privat File kunci publik


(31)

Pada gambar 3.3. dapat dijelaskan, untuk mendapatkan kunci privat dan kunci publik sistem terlebih dahulu harus membentuk bilangan prima, sub prima, kunci privat, dan kunci publik. Kemudian nilai bilangan prima, sub prima, dan kunci privat yang telah didapat akan disimpan didalam file yang bernama kunci privat sedangkan untuk file kunci publik berisi nilai bilangan prima, sub prima, dan kunci publik. File

ini akan dikirimkan oleh sistem kepada pengirim untuk melakukan proses

pembentukan tanda tangan digital.

3.1.4. Pemodelan sistem proses pembentukan tanda tangan digital

Berikut ini adalah pemodelan sistem dari proses pembentukan tanda tangan digital:

2.1 Pilih Dokumen

Signer

2.3 Buat Digital

Signature

Digital_signature Message digest

Signature

File digital signature Kunci_privat

Gambar 3.4. Proses Pembentukan Tanda Tangan Digital

Dari gambar 3.4. dapat dijelaskan bahwa untuk melakukan proses pembentukan tanda tangan digital pada aplikasi tada tangan digital, pengirim harus terlebih dahulu memasukkan file dokumen yang ingin diberi tanda tangan, dan file

kunci privat. Ketika pengirim membuat tanda tangan digital maka sistem melakukan

proses hash pada dokumen untuk menghasilkan message digest dan tanda tangan

digital yang akan dimasukkan kedalam file tanda tangan. Selanjutnya sistem

mengirim file ini kepada pengirim.

3.1.5. Pemodelan sistem proses verifikasi dokumen


(32)

19

3.1 Pilih Dokumen

Verifier

3.2 Verifikasi Dokumen

Kunci_publik

Status dokumen

Digital_signature

Gambar 3.5. Proses VerifikasiDokumen

Pada gambar 3.5. dapat dijelaskan bahwa user sebagai penerima dapat

melakukan proses verifikasi dokumen dengan memasukkan file dokumen asli, file dokumen yang telah diberi tanda tangan digital, dan file kunci publik. Pada saat

penerima melakukan verifikasi dokumen sistem akan membandingkan message digest

yang dihasilkan pada file dokumen asli dengan message digest yang terdapat pada file

dokumen yang telah diberi tanda tangan digital. Jika sama maka sistem akan

menampilkan status dari hasil verifikasi dokumen apakah dokumen tersebut asli atau sudah diubah.

3.2.Analisis Sistem

Pada sistem ini akan dilakukan analisis terhadap sistem dalam melakukan proses

pembentukan sepasang kunci, pembentukan tanda tangan digital dan verifikasi

dokumen untuk membuktikan otentikasi sebuah dokumen dengan menggunakan

algoritma GOST Digital Signature.

3.2.1. Cara kerja GOST Digital Signature

Berikut ini adalah flowchart proses kerja dari algoritma GOST Digital Signature

untuk otentikasi dan keamanan dari sebuah dokumen yang dapat dilihat pada gambar 3.6.


(33)

Mulai

Input Dokumen

Pembentukan Sepasang Kunci

Pembentukan Tanda Tangan

Digital

Verifikasi Tanda Tangan Digital

Status Dokumen

Selesai

Gambar 3.6. Flowchart GOST Digital Signature

Seperti yang terlihat pada gambar 3.6. menunjukkan bahwasanya cara kerja

dari algoritma GOST Digital Signature terdiri dari 3 tahapan yaitu pembentukan

sepasang kunci, pembentukan tanda tangan digital (signing), dan verifikasi tanda tangan digital.

Pada proses pembentukan sepasang kunci, sistem akan menghasilkan kunci

privat yag akan digunakan untuk proses pembentukan tanda tangan digital dan kunci

publik yang akan dibutuhkan pada saat verifikasi tanda tangan digital.

Pada proses pembentukan tanda tangan digital, sistem pertama sekali akan

melakukan proses hashing terhadap dokumen yang ingin diberi tanda tangan digital

sehingga menghasilkan keluaran hash yang disebut message digest. Kemudian

message digest dienkripsi menggunakan kunci privat dan menghasilkan tanda tangan

digital.

Kemudian pengirim mengirimkan dokumen yang telah diberi tanda tangan digital dan kunci publik kepada penerima. Pada proses verifikasi, penerima akan

melakukan hashing dokumen kembali untuk mendapatkan message digest, maka

secara paralel tanda tangan digital akan didekripsi menggunakan kunci publik.


(34)

21

yang dikirimkan. Jika berbeda maka dipastikan bahwa dokumen telah diubah oleh pihak lain. Proses terakhir adalah sistem akan menampilkan status dari dokumen tersebut.

3.2.2. Pembentukan sepasang kunci

Proses pembentukan sepasang kunci pada algoritma GOST Digital Signature ini dapat

dilihat pada flowchart dari gambar 3.7. dimana proses ini akan menghasilkan sepasang

kunci yang akan berguna utuk melakukan proses selanjutnya.

Mulai

p = bilangan prima q = bilangan

sub prima

Hitung a dimana mod p = 1

Hitung y = mod p

Selesai q

a

x a

Hitung x dimana x < q

Gambar 3.7. Flowchart Pembentukan Sepasang Kunci

Berdasarkan gambar 3.7. pertama sekali sistem akan melakukan proses pembentukan sepasang kunci sebagai berikut:

1. Pilih dua bilangan prima sebagai nilai p dan q. Dalam hal ini bilangan prima p

memilik panjang 1024-Bit dan bilang prima q memiliki panjang 256-Bit dimana q

merupakan pengfaktoran dari p-1.

2. Misal nilai p = 509 dan q = 127, maka nilai q memenuhi pengfaktoran p-1 dimana

127 * 4 = 509 – 1.


(35)

4. Misal a = 23, (memenuhi mod p = 1). 5. Tentukan nilai x, yang dalam hal ini x < q. 6. Misal x = 89.

7. Kemudian hitung nilai y, dengan rumus seperti pada persamaan 2.1.

8. Y = (23)89 mod 509.

9. Y = 293.

10. Dalam hal ini parameter yang boleh diketahui secara umum adalah p, q, a. Kunci

privatnya adalah x dan kunci publiknya adalah y.

3.2.3. Pembentukan tanda tangan digital

Proses pembentukan tanda tangan digital merupakan proses hashing yang dilakukan

pada dokumen untuk mendapatkan message digest yang nantinya akan di enkripsi

oleh kunci privat sehingga menghasilkan tanda tangan digital. Proses ini dapat dilihat

pada flowchart seperti yang terdapat dalam gambar 3.8. berikut.

Mulai

Pilih bilangan acak k, dimana k<q Pembuatan message

digest (H(m))

Hitung tanda tangan r = ( mod p) mod q

k

a

Hitung tanda tangan s = (x*r + k(H(m))) mod q

Selesai r = 0

Tidak

Ya


(36)

23

Berdasarkan gambar 3.8. sistem akan melakukan proses pembentukan tanda tangan digital seperti berikut:

2. Hitung nilai hash dari pesan dokumen.

3. Misal nilai hash yang didapat H(m) = 4321. 4. Tentukan bilangan acak k dimana k < q.

5. Pada proses sebelumnya diketahui nilai q = 127. Maka permisalan nilai k yang diambil adalah k = 121.

6. Hitung tanda tangan r, dengan rumus seperti pada persamaan 2.2.

7. Maka r = ((23)121 mod 509) mod 127 = 103

8. Hitung tanda tangan s, dengan rumus seperti pada persamaan 2.3.

9. Maka s = 89 * 103 + 121 (4321) mod 127 = 5

10. Kemudian kirim pesan m dan tanda tangan r dan s.

3.2.4. Verifikasi tanda tangan digital

Proses verifikasi sebuah dokumen dan tanda tangan digital dibutuhkan untuk

membuktikan keaslian dokumen yang secara langsung juga dapat membuktikan

keaslian pengirim. Proses ini dapat dilihat pada flowchart seperti yang terdapat dalam

gambar 3.9. berikut.

Mulai

Hitung nilai v = mod q

Selesai

2

) ( q

m H

Hitung nilai u = (( ) mod p) mod q

2 1 * z z y a

u = r Dokumen

tidak asli

Dokumen asli

Tidak Ya


(37)

Berdasarkan gambar 3.9. untuk melakukan keabsahan sebuah tanda tangan

digital dan membuktikan bahwa dokumen otektik, maka dilakukan proses perhitungan

seperti berikut:

6. Hitung nilai v, dengan rumus seperti pada persamaan 2.4.

7. Maka v = 4321125 mod 127 = 85.

8. Hitung nilai Z1, dengan rumus seperti yang terdapat pada persamaan 2.5.

9. Maka z1 = (5 * 85) mod 127 = 44

10. Hitung nilai Z2, dengan rumus seperti pada persamaan 2.6.

11. Maka z2 = ((127 - 103) * 85) mod 127 = 8.

12. Dengan diperolehnya nilai z1 dan z2, selanjutnya selanjutnya bisa dilakukan

perhitungan dari nilai u.

13. Hitung nilai u, dengan rumus seperti pada persamaan 2.7.

14. Maka u = (2344 * 2938) mod 509) mod 127 = 103.

Dari hasil perhitungan tersebut diketahui bahwa nilai u = 103 dan r = 103,

dimana u = r maka dapat disimpulkan bahwa tanda tangan sah yang berarti dokumen

masih asli (tidak berubah).

3.3.Perancangan Antar Muka (interface)

Perancangan antar muka adalah rancangan tampilan yang menghubungkan pengguna

(user) dengan komputer dengan bantuan program. Salah satu syarat pembuatan antar

muka adalah berorientasi pada kemudahan dalam penggunaannya (user friendly) serta

informatif.

Aplikasi yang akan dibuat adalah aplikasi tanda tangan digital yang dapat

dijalankan oleh user sebagai pengirim dan user sebagai penerima. Aplikasi yang

terdapat pada user sebagai pengirim dirancang untuk proses pembentukan sepasang

kunci, dan pembentukan tanda tangan digital, sedangkan aplikasi untuk user sebagai

penerima dirancang untuk proses verifikasi dokumen dan tanda tangan digital.

Untuk memudahkan User dalam mengoperasikan software ini, maka

rancangan antarmuka menggunakan menu pull down pada masing-masing aplikasi


(38)

25

Buat Kunci

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Browse Simpan

3.3.1. Rancangan halaman pengirim

Halaman ini terdiri dari empat menu, yaitu menu beranda, pembentukan kunci, pembentukan tanda tangan, dan tentang.

3.3.1.1. Rancangan halaman pembentukan kunci

Berikut adalah rancangan halaman pembentukan kunci:

Gambar 3.10. Rancangan Halaman Pembentukan Kunci

Seperti yang terlihat pada gambar 3.10. rancangan dari halaman pembentukan kunci ini berfungsi untuk melakukan proses pembentukan sepasang kunci yaitu kunci

privat dan kunci publik yang nantinya akan digunakan untuk melakukan proses

berikutnya. Berikut adalah fungsi-fungsi yang terdapat didalam halaman.

1. Button untuk melakukan pembentukan kunci.

2. Textbox ini digunakan untuk menampilkan bilangan prima p.

3. Textbox ini digunakan untuk menampilkan bilangan sub prima q.

4. Textbox ini berfungsi untuk menampilkan bilangan acak a.

5. Textbox ini adalah tempat untuk menampilkan hasil dari kunci privat yang

didapat.

6. Textbox ini berfungsi untuk menampilkan hasil dari kunci publik yang didapat.

7. Button yang berfungsi untuk menentukan tempat penyimpanan kunci privat dan

Prima, P = Sub Prima, Q = Basis, A =

Kunci Privat, X = Kunci Publik, Y = Tempat Kunci :

Beranda Pembentukan Kunci Pembentukan Tanda Tangan Tentang

2 3 4 5 6 1 7 8


(39)

Browse

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Browse

Buat Tanda Tangan

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx kunci publik direktori.

8. Button yang berfungsi untuk menyimpan kunci privat dan kunci publik kedalam

direktori.

3.3.1.2. Rancangan halaman pembentukan tanda tangan

Berikut ini adalah rancangan dari halaman pembentukan tanda tangan:

Gambar 3.11. Rancangan Halaman Pembentukan Tanda Tangan

Berdasarkan gambar 3.11. rancangan halaman ini digunakan untuk

pembentukan tanda tangan digital. Pada proses ini user membutuhkan kunci privat

yang digunakan untuk mengenkripsi dokumen yang telah di hash sehingga

menghasilkan tanda tangan digital. Adapun fungsi-fungsi yang terdapat didalam

rancangan pada halaman ini adalah seperti yang dijelaskan berikut.

1. Button yang digunakan untuk memasukkan dokumen.

2. Button yang digunakan untuk memasukkan kunci privat.

3. Button yang berfungsi untuk melakukan proses hashing pada dokumen dan

menghasilkan tanda tangan digitalr, s.

4. Textbox yang berfungsi untuk menampilkan message digest dari dokumen yang

didapat saat proses hash dilakukan. Masukkan Kunci Privat :

Kunci Privat, X = Message Digest =

Tempat Tanda Tangan : Pilih Dokumen :

R = S =

Tanda Tangan Digital dari Pesan :

Beranda Pembentukan Kunci Pembentukan Tanda Tangan Tentang

1 2 3 4 5 6 7


(40)

27

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Browse

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Beranda Verifikasi Tanda Tangan Digital

Browse Verifikasi

5. Textbox yang berfungsi untuk menampilkan kunci privat.

6. Textbox yang digunakan untuk menampilkan tanda tangan r.

7. Textbox yang digunakan untuk menampilkan tanda tangan s.

3.3.2. Rancangan halaman penerima

Halaman ini terdiri dari dua menu, yaitu menu beranda, dan menu verifikasi tanda

tangan digital. Pada rancangan ini user sebagai penerima hanya bisa melakukan

proses verifikasi tanda tangan digital seperti yang terlihat pada gambar 3.12. berikut.

Gambar 3.12. Rancangan Halaman Verifikasi

Dari gambar 3.12. dapat dilihat bahwa rancangan halaman verifikasi dibangun untuk keperluan verifikasi dokumen. Pada halaman ini dokumen yang telah diberi

tanda tangan digital akan di hash kembali untuk menghasilkan message digest. Secara

paralel tanda tangan digital akan didekripsi oleh kunci publik yang dimasukkan.

Fungsi-fungsi yang terdapat dalam rancangan halaman ini adalah seperti berikut.

1. Button yang digunakan untuk memasukkan dokumen yang telah diberi tanda

tangan digital..

2. Button yang digunakan untuk memasukkan kunci publik penanda tangan.

Masukkan File Dokumen :

Kunci Publik, Y = Message Digest =

Tempat File Kunci Publik :

Status Tanda Tangan Digital

R = S =

Digital Signature dari Pesan :

1

2

3


(41)

3. Button yang berfungsi untuk melakukan proses hashing kembali pada dokumen seperti yang dilakukan ketika pengiriman.

4. Textbox yang berfungsi untuk menampilkan status dari dokumen dan tanda tangan


(42)

BAB 4

IMPLEMENTASI DAN PENGUJIAN SISTEM

4.1 Implementasi

Setelah melewati tahapan pada analisis dan perancangan sistem, maka tahap selanjutnya adalah implementasi dan pengujiann sistem. Pada bab ini akan menjelaskan tentang proses pengimplementasian algoritma kedalam sistem dan melakukan pengujian dengan menjalankan program yang sebagai inputan berupa file dokumen yang hendak diberi tanda tangan.

4.1.1 Spesifikasi perangkat keras dan perangkat lunak

Spesifikasi perangkat keras padayang digunakan dalam pengujian software adalah:

1. Processor Intel® Core™ i3 CPU U380 @1.33GHz 1.33GHz

2. Memory(RAM) : 2 GB

3. Hard Disk 320 GB

Sedangkan spesifikasi perangkat lunak yang digunakan dalam pembangunan

software adalah software ini dibangun menggunakan windows 8 profesional.

4.1.2 Tampilan implementasi sistem

Untuk mengetahui apakah penelitian ini telah memenuhi tujuan penelitian yang

disampaikan pada bab 1, maka diperlukanlah pengujian terhadap software yang

dibangun dalam penelitian ini. Pada pengujian sistem terdapat dua tahapan yang dilakukan yaitu pengujian sistem pada aplikasi yang akan digunakan oleh pengirim, dan pengujian sistem pada aplikasi yang akan digunakan oleh penerima.


(43)

4.1.2.1. Pengujian sistem pada pengirim

1. Halaman Pembentukan Kunci

Pada halaman ini pengirim dapat melakukan proses pembentukan kunci yang

ditunjukkan pada gambar 4.1. berikut.

Gambar 4.1. Tampilan Halaman Pembentukan Kunci

Seperti yang terlihat pada gambar 4.1. pada halaman ini akan dilakukan proses pembentukan sepasang kunci, yaitu kunci publik dan kunci privat. Pada halaman ini

sistem akan membentuk sepasang kunci ketika button Buat Kunci dipilih. Maka

sepasang kunci akan dikirimkan dalam bentuk file kedalam direktori yang dipilih oleh

pengguna.

Proses pembentukan kunci yang dilakukan menghasilkan rangkaian bilang desimal dengan panjang tertentu. Pada halaman ini dibutuhkan parameter bilangan

prima, parameter bilangan sub prima, dan parameter a untuk menghasilkan sepasang

kunci. Sepasang kunci yang dihasilkan pada halaman ini akan dibutuhkan untuk

proses selanjutnya, yaitu proses pembentukan tanda tangan digital dan proses

verifikasi tanda tangan digital.

2. Halaman Pembentukan Tanda Tangan

Pada halaman ini pengirimdapat melakukan proses pembentukan tanda tangan seperti


(44)

31

Gambar 4.2. Halaman Pembentukan Tanda Tangan Digital

Berdasarkan gambar 4.2. halaman ini digunakan untuk melakukan proses

pembentukan tanda tangan digital. Pada halaman ini pengguna terlebih dahulu

memasukkan file dokumen yang ingin diberi tanda tangan digital dan file kunci privat

yng didapat pada proses sebelumnya, yaitu pada proses pembentukan sepasang kunci.

Pada proses ini, sistem akan melakukan proses hashing pada dokumen yang

dimasukkan ketika pengguna memilih button Buat Tanda Tangan. Proses ini akan

menghasilkan message digest yang kemudian dienkripsi oleh kunci privat sehingga

membentuk tanda tangan digital. Setelah tanda tangan digital terbentuk sistem akan melekatkannya pada bagian kosong dari dokumen dan sistem mengirimkan dokumen

yang telah dilekatkan tanda tangan digital kedirektori penyimpanan.

4.1.2.2. Pengujian sistem pada penerima

Pada sistem ini user sebagai penerima dapat melakukan proses verifikasi dokumen

untuk membuktikan apakah dokumen tersebut masih asli atau sudah diubah oleh pihak yang tidak bertanggung jawab.

Sistem akan melakukan proses hashing dokumen kembali untuk menghasilkan

message digest seperti yang dilakukan pada proses pembentukan tanda tangan digital,

maka secara paralel tanda tangan digital yang diterima tadi akan didekripsi oleh kunci

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


(45)

Gambar 4.3. Tampilan Tanda Tangan Valid

Seperti yang terlihat pada gambar 4.3. ketika penerima melakukan proses hashing

dokumen, message digest yang dihasilkan sama dengan message digest yang dikirim,

maka kunci publik yang tersedia mampu membuka tanda tangan digital yang diterima

sehingga sistem menampilkan bahwa status tanda tangan digital adalah valid atau

belum diubah.


(46)

33

Seperti yang terlihat pada gambar 4.4. pada proses ini sistem akan membandingkan

antara message digest yang didapat dari proses hashing dokumen oleh penerima

dengan message digest yang dikirim. Jika hasilnya tidak sama maka kunci publik yang

tersedia tidak akan mampu membuka tanda tangan digital. Kemudian sistem akan

menampilkan status dari hasil verifikasi tanda tangan digital bahwa tanda tangan

digital tersebut tidak valid atau dokumen telah diubah oleh pihak lain.

4.2 Tabulasi Hasil Uji

Untuk mengetahui kehandalan algoritma GOST Digital Signature dengan fungsi hash,

maka dilakukan pengujian dengan beberapa data dokumen seperti pada tabel-tabel dibawah ini.

Tabel 4.1 Pengujian Message Digest dengan variasi string

No Pesan Message Digest (64 string)

1 a 580785745883455806500535109176332390950476803470

4184758931942843

2 Ab 798880802321992965251117038994908700843077995334

5594036415462590

3 Abc 427678479957639021212078493090913259531906797812

3672115398567729

4 Abcd 926894676886079775402508989343138812937691418981

1981530367597793

5 Abcde 104385707360216560234438687041356608395346599212

3094664852322000

6 Abcdef 460182550114652046382023842213561550105625856787

5453547673162789

7 Abcdefg 818240747990935801391151328404537798240599118216


(47)

8 Abcdefgh 124260373572514280027269386847437769098406528058 8170638623620927

9 Abcdefghi 816058986500165369441471325266029219929005979079

9395746489560667

10 Abcdefghij 701303537462754010579076213959318485669678682731

4234726562597632

Pada proses pembentukan tanda tangan digital, sistem akan melakukan pad tanda

tangan digital yang telah dihasilkan kedalam field subject pada metadata dokumen

seperti yang terlihat pada gambar 4.5. berikut.

Gambar 4.5. Hasil Tanda Tangan Digital pada Metadata Dokumen Hasil dari verifikasi dokumen dapat diringkas seperti pada tabel 4.2. berikut.


(48)

35

Tabel 4.2. Rekapitulasi Hasil Verifikasi

No Dokumen Kunci Publik

Tanda Tangan

Digital Hasil

Verifikasi

S TS S TS S TS

1 1 0 1 0 1 0 Valid

2 1 0 1 0 0 1 Tidak Valid

3 1 0 0 1 1 0 Tidak Valid

4 1 0 0 1 0 1 Tidak Valid

5 0 1 1 0 1 0 Tidak Valid

6 0 1 1 0 0 1 Tidak Valid

7 0 1 0 1 1 0 Tidak Valid

8 0 1 0 1 0 1 Tidak Valid

Keterangan : S = sah, TS = Tidak Sah, 1 = Ya, 0 = Tidak.

Seperti yang terlihat pada tabel 4.2. dapat disimpulkan bahwa hasil verfikasi akan


(49)

BAB 5

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Setelah melalui proses penyelesaian skripsi yang berjudul “Otentikasi Dokumen

Menggunakan Algoritma GOST Digital Signature”, penulis menarik kesimpulan

sebagai berikut:

1. GOST Digital Signature adalah sebuah fungsi hash satu arah yang mengubah

masukan dengan panjang variabel menjadi keluaran dengan panjang tetap yaitu 1024-bit.

2. Perangkat lunak GOST Digital Signature ini dapat melakukan pengujian

terhadap data dokumen untuk mengetahui apakah data sudah diubah atau belum.

3. GOST Digital Signature merupakan salah satu solusi untuk menangani

persoalan otentikasi sebuah pesan.

5.2 Saran

Penulis ingin memberikan beberapa saran yang mungkin berguna untuk pengembangan lebih lanjut yaitu :

1. Perangkat lunak dapat dikembangkan agar dapat digabungkan dengan

pembelajaran untuk metode kriptografi yang lain.


(50)

DAFTAR PUSTAKA

Budiono. 2008. Penerapan Tanda Tangan Digital untuk Otentikasi SMS-Banking. Program Studi Teknik Informatika, Universitas Institut Teknologi Bandung, Bandung.

Falani, A.Z. 2014. Sistem Pengaman File dengan Menggunakan Metode RSA Kriptografi & Digital Signature. Fakultas Ilmu Komputer, Universitas Narotama, Surabaya.

Fernando, Ricky. 2009. Studi dan Implementasi Tanda Tangan Digital dengan Menggunakan Algoritma Elgamal. Program Studi Teknik Informatika ITB, Bandung.

Kurniawan, Yusuf. 2004. Kriptografi Keamanan Internet Dan Jaringan Komunikasi.

Informatika. Bandung.

Michels, M., Naccache, D., & Petersen, H. 1996. GOST 34.10 – A Brief Overview of

Russia’s DSA. Publish in Computers & Seccurity 15(8) : 725-732. Munir, R. 2006. Kriptografi. Informatika, Bandung.

Piper, F., Murphy, S. 2002. Cryptography A Very Short Introduction. Oxford University Press. England.

Sadikin, R. 2012. Kriptografi untuk Keamanan Jaringan. Yogyakarta: Penerbit Andi.

Saipul. 2010. Implementasi Tanda Tangan Digital Menggunakan Fungs Hash Algoritma SHA-256 dan RSA dalam Proses Otentikasi Data. Universitas Ahmad Dahlan, Yogyakarta.

Schneier, B. 1996. Applied Cryptograph. Second edition, John Willey & Sons.

Sinlae, A.A.J. 2012. Analisis Kriptosistem Menggunakan Digital Signature berbasis Algoritma SHA-512 dan RSA. Magister Sistem Informasi, Universitas Kristen Satya Wacana, Salatiga.

Siregar, N. 2012. Strategi Otentikasi Pesan Menggunakan Digital Signature Dengan Metode DSA (Digital Standard Algorithm). Program Studi Ilmu Komputer, Universitas Sumatera Utara, Medan.

Stallings, W. 2005. Cryptography and Network Security Principles and Practices.


(51)

Supriyanto, Aji. 2009. Pemakaian Kriptografi Kunci Publik untuk Proses Enkripsi dan

Tanda Tangan Digital pada Dokumen E-Mail. Fakultas Teknologi Informasi,

Universitas Stikubank, Semarang.

Tulu, B., Samir, C., Deborah, L., Haiqing, L., Brian, N.H., Thomas, A.H. 2004. Desain and Implementation of a Digital Signature Solution for a Healthcare Enterprise. Proceeding of the Tenth Americas Conference on Information Systems, New York.

Wahyuni, Ana. 2011. Aplikasi Kriptografi untuk Pengamanan E-Dokumen dengan Metode Hybrid : Biometrik Tandatangan dan DSA (Digital Signature Algorithm). Universitas Diponegoro, Semarang.

Wijaya, Victor. 2007. Tanda Tangan Digital Untuk Pesan Singkat Dengan Algoritma RSA Menggunakan J2ME. Program Studi Teknik Informatika Institut Teknologi Bandung.


(52)

LISTING PROGRAM

1. Pembentukan Kunci

// Pembentukan kunci

Private void buttonBuatKunciActionPerformed(java.awt.event.ActionEvent evt) {

GOST gost = new GOST(); PQA pqa = new PQA();

BigInteger[] pq = pqa.generation(); BigInteger P = pq[0];

BigInteger Q = pq[1]; BigInteger A = pq[2];

if (gost.syarat1a_cek_pq(P, Q)) {

if (gost.syarat1b_cek_a(P, Q, A)) {

BigInteger X = gost.syarat1c_acak_x(Q);

BigInteger Y = A.modPow(X, P);

}

}

}

private void buttonTempatKunciActionPerformed(java.awt.event.ActionEvent evt) {

JFileChooser chooser = new JFileChooser(); chooser.setDialogTitle("Pilih File");

chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); chooser.setAcceptAllFileFilterUsed(false);

if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {


(53)

labelTempatKunci.setText(chooser.getSelectedFile().toString()); }

else {

labelTempatKunci.setText("");

labelKeterangan.setText("Tempat Kunci Belum Ditentukan"); }

}

private void buttonSimpanKunciActionPerformed(java.awt.event.ActionEvent evt) {

if (textFieldP.getText().trim().equals("") || textFieldQ.getText().trim().equals("") || textFieldA.getText().trim().equals("") || textFieldX.getText().trim().equals("") || textFieldY.getText().trim().equals("")) {

labelKeterangan.setText("Isi Kunci Tidak Boleh Kosong"); return;

}

String kunci_private = String.valueOf(P) + "-" + String.valueOf(Q) + "-" + String.valueOf(A) + "-" + String.valueOf(X);

String kunci_publik = String.valueOf(P) + "-" + String.valueOf(Q) + "-" + String.valueOf(A) + "-" + String.valueOf(Y);

FileOutputStream fileOutputStream;

byte[] byte_kunci_private = kunci_private.getBytes(); try

{

fileOutputStream = new

FileOutputStream(labelTempatKunci.getText().toString() + “\\kunci_private”);

try {

fileOutputStream.write(byte_kunci_private); fileOutputStream.close();


(54)

41

}

catch (IOException ex) {

ex.printStackTrace(); }

}

catch (FileNotFoundException ex) {

ex.printStackTrace(); }

byte[] byte_kunci_publik = kunci_publik.getBytes();

try {

fileOutputStream = new

FileOutputStream(labelTempatKunci.getText().toString() + "\\kunci_publik"); try

{

fileOutputStream.write(byte_kunci_publik); fileOutputStream.close();

}

catch (IOException ex) {

ex.printStackTrace();

labelKeterangan.setText("Pembuatan Kunci Gagal"); }

}

catch (FileNotFoundException ex) {


(55)

}

}

private void jMenu5MouseClicked(java.awt.event.MouseEvent evt) {

this.setVisible(false);

PembentukanKunci pembentukanKunci = new PembentukanKunci(); pembentukanKunci.setVisible(true);

}

public static void main(String args[]) {

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

new PembentukanKunci().setVisible(true);

}

}); }

2. Pembentukan Tanda Tangan Digital

//Membaca file kunci privat

private void buttonBuatTandaTanganActionPerformed (java.awt.event.ActionEvent evt)

{

BufferedReader bufferedReader_kunci_private = null; String isi_kunci_private;

try {

bufferedReader_kunci_private = new BufferedReader(new

FileReader(labelKunciPrivate.getText())); try


(56)

43

{

if ((isi_kunci_private = bufferedReader_kunci_private.readLine())!=null)

{

String[] pqars = isi_kunci_private.split("-");

GOST gost = new GOST();

//Proses hash pada dokumen BigInteger HM = null; String teks;

try {

teks = baca_dokumen(labelDokumen.getText().toString()); try

{

HM = gost.syarat_2a_hash256(teks, Q); }

catch (NoSuchAlgorithmException ex) {

Logger.getLogger(TandaTangan.class.getName()).log(Level.SE VERE, null, ex);

}

catch (UnsupportedEncodingException ex) {

Logger.getLogger(TandaTangan.class.getName()).log(Level.SE VERE, null, ex);

}


(57)

{

Logger.getLogger(TandaTangan.class.getName()).log(Level.SE VERE, null, ex);

} }

catch (InvalidFormatException ex) {

ex.printStackTrace(); }

//Pembentukan tanda tangan digital

BigInteger K = gost.syarat2b_k(Q.subtract(BigInteger.ONE)); BigInteger[] RS = gost.syarat2c_rs(P, Q, A, X, HM, K); BigInteger R = RS[0];

BigInteger S = RS[1];

//isi kunci : p - q - a - y - r - s

String tandaTangan = String.valueOf(R) + "-" + String.valueOf(S); try

{

XWPFDocument doc = new

XWPFDocument(OPCPackage.open(fileName)); doc.write(newFileOutputStream(labelTempatTandaTangan.get Text().toString() + "\\output.docx")); setMeta(tandaTangan,labelTempatTandaTangan.getText().toSt ring() + "\\output.docx");

}

catch (InvalidFormatException ex) {

ex.printStackTrace(); }

} }


(58)

45

catch (IOException ex) {

ex.printStackTrace();

}

}

catch (FileNotFoundException ex) {

ex.printStackTrace();

}

}

//Menyimpan tanda tangan kedalam metadata file

public static void setMeta(String tandaTangan, String url) throws

InvalidFormatException, IOException {

OPCPackage opc = OPCPackage.open(url);

PackageProperties pp = opc.getPackageProperties(); Nullable<String> foo = pp.getLastModifiedByProperty(); System.out.println(foo.hasValue() ? foo.getValue() : "empty"); pp.setSubjectProperty(tandaTangan.toString());

opc.close(); }

public static String baca_dokumen(String file) throws IOException,

InvalidFormatException {

String teks = "";

XWPFDocument doc = new XWPFDocument(OPCPackage.open(file)); for (XWPFParagraph p : doc.getParagraphs())

{

for (XWPFRun r : p.getRuns())

{


(59)

} }

System.out.println(teks); return teks;

}

3. Verifikasi Dokumen

public static String baca_dokumen(String file) throws IOException,

InvalidFormatException {

String teks = "";

XWPFDocument doc = new XWPFDocument(OPCPackage.open(file)); for (XWPFParagraph p : doc.getParagraphs())

{

for (XWPFRun r : p.getRuns())

{

teks = teks + p.getText(); }

}

System.out.println(teks); return teks;

}

//Membaca tanda tangan pada metadata

public static String getMeta(String url) throws InvalidFormatException, IOException {

String tandaTangan = "";

OPCPackage opc = OPCPackage.open(url);

PackageProperties pp = opc.getPackageProperties(); Nullable<String> foo = pp.getLastModifiedByProperty();

tandaTangan = String.valueOf(pp.getSubjectProperty().getValue()); System.out.println("Tanda : " + tandaTangan);


(60)

47

opc.close();

return tandaTangan; }

//Verifikasi dokumen

private void buttonVerifikasiActionPerformed(java.awt.event.ActionEvent evt) {

String teks = ""; try

{

teks = baca_dokumen(labelDokumen.getText().toString()); }

catch (IOException ex) {

Logger.getLogger(Verifikasi.class.getName()).log(Level.SEVERE, null, ex); }

catch (InvalidFormatException ex) {

Logger.getLogger(Verifikasi.class.getName()).log(Level.SEVERE, null, ex); }

BufferedReader bufferedReader_kunci_publik = null;

String isi_kunci_pulik; try

{

bufferedReader_kunci_publik = new BufferedReader(new

FileReader(labelKunciPublik.getText())); }

catch (FileNotFoundException ex) {


(61)

Logger.getLogger(Verifikasi.class.getName()).log(Level.SEVERE, null, ex); }

try {

if ((isi_kunci_pulik = bufferedReader_kunci_publik.readLine()) != null) {

String[] pqay = isi_kunci_pulik.split("-"); try

{

isiTandaTangan = getMeta(labelDokumen.getText().toString());

System.out.println("Tanda Tangan : " + isiTandaTangan); }

catch (InvalidFormatException ex) {

Logger.getLogger(Verifikasi.class.getName()).log(Level.SEVERE, null, ex); }

String[] rs = isiTandaTangan.split("-"); BigInteger R = new BigInteger(rs[0]); BigInteger S = new BigInteger(rs[1]);

GOST gost = new GOST(); BigInteger HM = null; try

{ try

{

HM = gost.syarat_2a_hash256(teks, Q); }


(62)

49

{

Logger.getLogger(Verifikasi.class.getName()).log(Level.SEVERE, null, ex);

}

catch (FileNotFoundException ex) {

Logger.getLogger(Verifikasi.class.getName()).log(Level.SEVERE, null, ex);

}

catch (NoSuchPaddingException ex) {

Logger.getLogger(Verifikasi.class.getName()).log(Level.SEVERE, null, ex);

} }

catch (NoSuchAlgorithmException ex) {

ex.printStackTrace(); }

textFieldHM.setText(String.valueOf(HM));

BigInteger V = gost.syarat3a_v(HM, Q); BigInteger Z1 = gost.syarat3b_z1(S, V, Q); BigInteger Z2 = gost.syarat3c_Z2(Q, R, V);

BigInteger U = gost.syarat3d_u(P, Q, A, Y, Z1, Z2); if (U.equals(R))

{

labelStatus.setText("Tanda Tangan Valid"); }


(1)

catch (IOException ex) {

ex.printStackTrace(); }

}

catch (FileNotFoundException ex) {

ex.printStackTrace(); }

}

//Menyimpan tanda tangan kedalam metadata file

public static void setMeta(String tandaTangan, String url) throws InvalidFormatException, IOException

{

OPCPackage opc = OPCPackage.open(url);

PackageProperties pp = opc.getPackageProperties(); Nullable<String> foo = pp.getLastModifiedByProperty(); System.out.println(foo.hasValue() ? foo.getValue() : "empty"); pp.setSubjectProperty(tandaTangan.toString());

opc.close(); }

public static String baca_dokumen(String file) throws IOException, InvalidFormatException

{

String teks = "";

XWPFDocument doc = new XWPFDocument(OPCPackage.open(file)); for (XWPFParagraph p : doc.getParagraphs())

{

for (XWPFRun r : p.getRuns()) {


(2)

} }

System.out.println(teks); return teks;

}

3. Verifikasi Dokumen

public static String baca_dokumen(String file) throws IOException, InvalidFormatException

{

String teks = "";

XWPFDocument doc = new XWPFDocument(OPCPackage.open(file)); for (XWPFParagraph p : doc.getParagraphs())

{

for (XWPFRun r : p.getRuns()) {

teks = teks + p.getText(); }

}

System.out.println(teks); return teks;

}

//Membaca tanda tangan pada metadata

public static String getMeta(String url) throws InvalidFormatException, IOException {

String tandaTangan = "";

OPCPackage opc = OPCPackage.open(url);

PackageProperties pp = opc.getPackageProperties(); Nullable<String> foo = pp.getLastModifiedByProperty();

tandaTangan = String.valueOf(pp.getSubjectProperty().getValue()); System.out.println("Tanda : " + tandaTangan);


(3)

opc.close();

return tandaTangan; }

//Verifikasi dokumen

private void buttonVerifikasiActionPerformed(java.awt.event.ActionEvent evt) {

String teks = ""; try

{

teks = baca_dokumen(labelDokumen.getText().toString()); }

catch (IOException ex) {

Logger.getLogger(Verifikasi.class.getName()).log(Level.SEVERE, null, ex); }

catch (InvalidFormatException ex) {

Logger.getLogger(Verifikasi.class.getName()).log(Level.SEVERE, null, ex); }

BufferedReader bufferedReader_kunci_publik = null;

String isi_kunci_pulik; try

{

bufferedReader_kunci_publik = new BufferedReader(new

FileReader(labelKunciPublik.getText())); }

catch (FileNotFoundException ex) {


(4)

Logger.getLogger(Verifikasi.class.getName()).log(Level.SEVERE, null, ex); }

try {

if ((isi_kunci_pulik = bufferedReader_kunci_publik.readLine()) != null) {

String[] pqay = isi_kunci_pulik.split("-"); try

{

isiTandaTangan = getMeta(labelDokumen.getText().toString()); System.out.println("Tanda Tangan : " + isiTandaTangan);

}

catch (InvalidFormatException ex) {

Logger.getLogger(Verifikasi.class.getName()).log(Level.SEVERE, null, ex); }

String[] rs = isiTandaTangan.split("-"); BigInteger R = new BigInteger(rs[0]); BigInteger S = new BigInteger(rs[1]);

GOST gost = new GOST(); BigInteger HM = null; try

{ try

{

HM = gost.syarat_2a_hash256(teks, Q); }


(5)

{

Logger.getLogger(Verifikasi.class.getName()).log(Level.SEVERE, null, ex);

}

catch (FileNotFoundException ex) {

Logger.getLogger(Verifikasi.class.getName()).log(Level.SEVERE, null, ex);

}

catch (NoSuchPaddingException ex) {

Logger.getLogger(Verifikasi.class.getName()).log(Level.SEVERE, null, ex);

} }

catch (NoSuchAlgorithmException ex) {

ex.printStackTrace(); }

textFieldHM.setText(String.valueOf(HM));

BigInteger V = gost.syarat3a_v(HM, Q); BigInteger Z1 = gost.syarat3b_z1(S, V, Q); BigInteger Z2 = gost.syarat3c_Z2(Q, R, V);

BigInteger U = gost.syarat3d_u(P, Q, A, Y, Z1, Z2); if (U.equals(R))

{

labelStatus.setText("Tanda Tangan Valid"); }


(6)

else {

labelStatus.setText("Tanda Tangan Tidak Valid"); }

catch (IOException ex) {

Logger.getLogger(Verifikasi.class.getName()).log(Level.SEVERE, null, ex); }

}

public static void main(String args[]) {

java.awt.EventQueue.invokeLater(new Runnable() { public void run() {

new Verifikasi().setVisible(true); }

}); }