autentikasi ijazah digital menggunakan algoritme tanda ... · pembagian rahasia termodifikasi...

14
7 Verifikasi Ijazah Sistem verifikasi merupakan sistem yang dapat menentukan keabsahan dari suatu tanda tangan digital. Sistem verifikasi terdiri atas beberapa proses. Proses-proses tersebut antara lain, pembacaan file ijazah, pengambilan kunci dan tanda tangan, pemisahan kunci dan tanda tangan, pengecekan kunci, hash string ijazah, dan pengesahan ijazah. Gambar 7 menunjukkan alur kerja proses-proses pada sistem verifikasi ijazah digital. Ijazah Digital Pembacaan File String File Ijazah Pemisahan Kunci dan Tanda Tangan Pengambilan Kunci dan Tanda Tangan String Ijazah Murni Kunci dan Tanda Tangan Hash Nilai Hash String File Pengesahan Ijazah Pengecekan Kunci Ijazah Sah? Yes Cetak Sah Cetak Tidak Sah No Gambar 7 Diagram proses implementasi verifikasi ijazah. Evaluasi dan Analisis Tahap evaluasi dilakukan setelah melakukan implementasi, penandatanganan, dan verifikasi. Tahap ini dilakukan untuk mengetahui apakah sistem dan hasil yang diperoleh sesuai dengan tujuan dari penelitian. Analisis terdiri atas analisis properti skema pembagian rahasia threshold termodifikasi dan analisis peluang membangkitkan rahasia jika jumlah share kurang dari threshold. Evaluasi pada tahap ini adalah evaluasi hasil dari proses tanda tangan digital, apakah proses tersebut mengubah tampilan dari ijazah atau tidak. Hal ini penting karena tampilan dari ijazah tidak boleh berubah karena penandatanganan. HASIL DAN PEMBAHASAN Implementasi Tahap Pembangkitan Kunci Tahap pembangkitan kunci merupakan tahap awal dalam implementasi tanda tangan digital. Tahap ini membangkitkan kunci yang digunakan pada proses tanda tangan digital. Tahap ini juga dihubungkan dengan proses pemecahan rahasia pada skema pembagian rahasia threshold termodifikasi. Kunci yang dibangkitkan pada tahap ini merupakan kunci publik dan kunci privat. Kunci publik adalah kunci yang digunakan pada proses verifikasi ijazah. Kunci privat adalah kunci yang digunakan untuk penandatanganan ijazah, kunci inilah yang menjadi rahasia yang dipecah dengan menggunakan skema pembagian rahasia threshold termodifikasi. Tahap ini diimplementasikan dengan menggunakan bahasa pemrograman C#. Bahasa pemrograman C# memiliki beberapa library yang dapat digunakan dalam pengembangan system. Salah satu library yang terdapat pada C# adalah library Security yang digunakan untuk pengembangan system kriptografi. Salah satu kelas yang terdapat pada library tersebut adalah kelas DSACryptoServiceProvider. Kelas ini merupakan kelas yang telah disediakan oleh C# untuk membantu implementasi penandatanganan digital menggunakan DSA. Kelas ini akan membentuk parameter kunci ketika kelas ini diinisialisasi. Inisialiasasi kelas ini membutuhkan sebuah objek dari kelas CspParameters. Kelas tersebut merupakan kelas yang berisi parameter-parameter yang diberikan kepada kelas-kelas yang mengimplementasikan kriptografi. Parameter pada kelas CspParameters yang berhubungan dengan kelas DSACryptoServiceProvider adalah parameter KeyContainerName, ProviderType, dan KeyNumber. KeyContainerName berisi string nama dari Container yang menampung kunci. Inisialiasi kelas implementasi kriptografi akan memberikan akses ke dalam container. Parameter selanjutnya ialah ProviderType. Parameter ini berisi nilai integer yang mewakili jenis dari implementasi kriptografi yang akan digunakan. Implementasi krptografi yang digunakan kali ini adalah DSA, maka ProviderType diberi nilai 13. Parameter selanjutnya adalah KeyNumber, parameter ini berisi nilai integer yang menunjukkan apakah kunci yang dibuat merupakan kunci yang digunakan untuk pertukaran data atau kunci yang digunakan untuk penandatanganan. KeyNumber diberi nilai 1 jika kunci gunakan untuk pertukaran data, sedangkan jika kunci digunakan untuk penandatanganan, KeyNumber diberi nilai 2. Penelitian ini menggunakan kunci sebagai parameter untuk penandatanganan, maka KeyNumber diberi nilai 2.

Upload: vuduong

Post on 14-Mar-2019

233 views

Category:

Documents


0 download

TRANSCRIPT

7

Verifikasi Ijazah

Sistem verifikasi merupakan sistem yang dapat menentukan keabsahan dari suatu tanda tangan digital. Sistem verifikasi terdiri atas beberapa proses. Proses-proses tersebut antara lain, pembacaan file ijazah, pengambilan kunci dan tanda tangan, pemisahan kunci dan tanda tangan, pengecekan kunci, hash string ijazah, dan pengesahan ijazah. Gambar 7 menunjukkan alur kerja proses-proses pada sistem verifikasi ijazah digital.

Ijazah Digital Pembacaan File

String File Ijazah

Pemisahan Kunci dan Tanda Tangan

Pengambilan Kunci dan Tanda Tangan

String Ijazah Murni

Kunci dan Tanda Tangan

Hash

Nilai Hash String File

Pengesahan Ijazah

Pengecekan Kunci

Ijazah Sah?

YesCetak Sah Cetak Tidak Sah

No

Gambar 7 Diagram proses implementasi verifikasi ijazah.

Evaluasi dan Analisis

Tahap evaluasi dilakukan setelah melakukan implementasi, penandatanganan, dan verifikasi. Tahap ini dilakukan untuk mengetahui apakah sistem dan hasil yang diperoleh sesuai dengan tujuan dari penelitian.

Analisis terdiri atas analisis properti skema pembagian rahasia threshold termodifikasi dan analisis peluang membangkitkan rahasia jika jumlah share kurang dari threshold. Evaluasi pada tahap ini adalah evaluasi hasil dari proses tanda tangan digital, apakah proses tersebut mengubah tampilan dari ijazah atau tidak. Hal ini penting karena tampilan dari ijazah tidak boleh berubah karena penandatanganan.

HASIL DAN PEMBAHASAN Implementasi Tahap Pembangkitan Kunci

Tahap pembangkitan kunci merupakan tahap awal dalam implementasi tanda tangan digital. Tahap ini membangkitkan kunci yang digunakan pada proses tanda tangan digital.

Tahap ini juga dihubungkan dengan proses pemecahan rahasia pada skema pembagian rahasia threshold termodifikasi. Kunci yang dibangkitkan pada tahap ini merupakan kunci publik dan kunci privat. Kunci publik adalah kunci yang digunakan pada proses verifikasi ijazah. Kunci privat adalah kunci yang digunakan untuk penandatanganan ijazah, kunci inilah yang menjadi rahasia yang dipecah dengan menggunakan skema pembagian rahasia threshold termodifikasi.

Tahap ini diimplementasikan dengan menggunakan bahasa pemrograman C#. Bahasa pemrograman C# memiliki beberapa library yang dapat digunakan dalam pengembangan system. Salah satu library yang terdapat pada C# adalah library Security yang digunakan untuk pengembangan system kriptografi. Salah satu kelas yang terdapat pada library tersebut adalah kelas DSACryptoServiceProvider. Kelas ini merupakan kelas yang telah disediakan oleh C# untuk membantu implementasi penandatanganan digital menggunakan DSA.

Kelas ini akan membentuk parameter kunci ketika kelas ini diinisialisasi. Inisialiasasi kelas ini membutuhkan sebuah objek dari kelas CspParameters. Kelas tersebut merupakan kelas yang berisi parameter-parameter yang diberikan kepada kelas-kelas yang mengimplementasikan kriptografi. Parameter pada kelas CspParameters yang berhubungan dengan kelas DSACryptoServiceProvider adalah parameter KeyContainerName, ProviderType, dan KeyNumber. KeyContainerName berisi string nama dari Container yang menampung kunci. Inisialiasi kelas implementasi kriptografi akan memberikan akses ke dalam container. Parameter selanjutnya ialah ProviderType. Parameter ini berisi nilai integer yang mewakili jenis dari implementasi kriptografi yang akan digunakan. Implementasi krptografi yang digunakan kali ini adalah DSA, maka ProviderType diberi nilai 13. Parameter selanjutnya adalah KeyNumber, parameter ini berisi nilai integer yang menunjukkan apakah kunci yang dibuat merupakan kunci yang digunakan untuk pertukaran data atau kunci yang digunakan untuk penandatanganan. KeyNumber diberi nilai 1 jika kunci gunakan untuk pertukaran data, sedangkan jika kunci digunakan untuk penandatanganan, KeyNumber diberi nilai 2. Penelitian ini menggunakan kunci sebagai parameter untuk penandatanganan, maka KeyNumber diberi nilai 2.

8

Langkah selanjutnya setelah inisialisasi kelas DSACryptoServiceProvider ialah pengambilan parameter-parameter untuk disimpan dan akan dipanggil kembali pada proses penandatanganan ijazah digital. Proses ini menggunakan method ExportParameters() pada kelas DSACryptoServiceProvider. Method ini mengambil nilai parameter dari objek DSACryptoServiceProvider dan merepresentasikannya menjadi sebuah objek dari kelas DsaParameters. Kelas DsaParameters berisi parameter-parameter yang digunakan pada kelas DsaCryptoServiceProvider. Parameter-parameter ini dapat ditentukan nilainya dan dapat pula diambil nilainya. Parameter-parameter yang terdapat pada objek DsaParameters adalah p, q, g, y, x, dan parameter-parameter yang tidak berhubungan langsung dengan pembentukan tanda tangan atau verifikasi. Parameter x adalah parameter kunci privat yang menjadi rahasia dan dipecah menggunakan skema pembagian rahasia threshold termodifikasi. Parameter lain yang diambil dengan menggunakan kelas DsaParameters adalah parameter g dan y. Parameter ini diambil untuk disimpan dalam database. Parameter g dan y digunakan pada proses verifikasi. Parameter-parameter tersebut merupakan penanda bahwa parameter kunci yang terdapat pada ijazah adalah parameter kunci yang telah dibuat melalui sistem ini.

Method ToXmlString() yang terdapat pada kelas DSACryptoServiceProvider juga digunakan pada penelitian ini. Method ini digunakan untuk mengambil parameter pada kelas DSACryptoServiceProvider dan mengubahnya dalam bentuk string XML. String XML yang diambil merupakan string XML yang tidak mengandung nilai dari kunci privat x. String inilah yang menjadi data tersimpan yang kemudian akan dipakai pada proses penandatanganan. Contoh string XML yang terbentuk:

<DSAKeyValue><P>hNXFsrTX5da/hXE9Rg7nYvyXFL8gQ+VtFpPRccsd2XIyyqfMNiefVxg/RBCXAPpB7zcV3ryVoZJqaJZi9j4knz3PgN/yU1ez3iD60iBI1mZSFy1kdM2H/KfnUmfF1PLF+WaS8xbbS5Y6K8aA3NluJOkZBFGG47Z4i/TiI+7Syv8=</P><Q>o1stu43bLLJYZsB/ZBIleVMSrWE=</Q><G>G8NYJhAmPQk7Mmp31ulGMG/E+OfGz6BYAkIVwdZlk/+ss+TU4tp5l5gDBh4Rshnb+yaNoLli8V7zY+mQtlaxkqnatvWYkAh+2+XWjx9bRbtPaX2UzeB46TnKJ3aZijSME6UsHUKbS8iRuT

vwHq3yj2wmG/qtaRLwdMFS0ACQ71A=</G><Y>aR1S4JuiNUJwwgSqyvslow7YXXNLQ2Tn9F3EfoXMSrMHM0sxi5sbFTZhVZ3GuJGCxzsjJIs5ux4xxfEER+7+hdpGzm6/kML8rIhMR1ccJGCVDC+3OpAAgSm3Rv3nR6Cnj4AdW1yITtfGMLJmzt6r2kUv/CRKMucdthhvD0yOCjY=</Y><J>0CtkpiXCKLPJkmImn9Fd5Bn4h73H43a1Aw4JPLTF5YKYEY8vmB4gqWH3qZ/rdiV3MoVBD6AOtMAjqfUD/5DaDL/WPt2kgBqVfrh2lGOTohOxxcZYrinlhry0JZKvriPtS6ws6JdT9P0fZj2+</J><Seed>l5fdqTwLDPp/38JucNNj6HpMwQU=</Seed><PgenCounter>BKo=</PgenCounter></DSAKeyValue>

String XML kunci ditandai oleh tag “<DSAKeyValue>” dan “</DSAKeyValue>”. Dalam kedua tag tersebut, terdapat tag-tag lain yang merupakan penanda dari nilai setiap parameter. Parameter P ditandai oleh tag “<P>” dan “</P>”, parameter Q ditandai oleh tag “<Q>” dan “</Q>”, parameter G ditandai oleh tag “<G>” dan “</G>”, parameter Y ditandai oleh tag “<Y>” dan “</Y>”, dan parameter-parameter lain yang ditandai oleh tag-tag yang sesuai dengan parameter tersebut. Terdapat tag “<Seed>” dan “<PgenCounter>” pada string XML tersebut. Tag-tag ini berisi nilai parameter bantuan yang digunakan dalam pembentukan parameter p, q, g, dan y. String di dalam tag-tag tersebut memiliki format BASE64.

Semua parameter yang dihasilkan pada proses ini disimpan dalam database. String XML hasil dari method ToXmlString() disimpan langsung dalam database, sedangkan kunci privat x diubah terlebih dahulu dengan fungsi hash, kemudian disimpan dalam database. Fungsi hash yang digunakan pada proses ini ialah SHA-1. Struktur tabel yang menyimpan data dan parameter pada proses pembangkitan kunci dapat dilihat pada Tabel 1.

Tabel 1 Struktur tabel tb_data

Kolom Tipe Id_sign Integer(11)

Nama_sign Varchar(40) Kunci Varchar(1000)

U Integer(11) G Varchar(400) Y Varchar(400)

Hash_X Varchar(255)

Kolom-kolom pada struktur Tabel 1 merupakan data yang digunakan pada proses

9

penandatanganan dan proses verifikasi ijazah. Proses penyimpanan dilakukan dengan menggunakan .Net MySQL Connector yang menghubungkan .Net dan MySQL.

Kolom Id_sign merupakan penanda atau dari id skema yang dibuat. Kolom nama_sign merupakan kolom yang berisi nama dari skema yang dibuat. Nama tersebut hanya dimaksudkan untuk memberikan kemudahan untuk pemilihan skema yang akan digunakan nantinya. Kolom kunci merupakan kolom yang berisi string XML dari parameter-parameter pembentukan kunci hasil dari method ToXmlString(). Isi dari kolom ini nanti akan diambil pada proses penandatangan. Kolom U berisi nilai jumlah kelompok pada skema yang akan dibuat. Kolom G dan Y berisi nilai parameter g dan y. Nilai ini disimpan agar pada proses verifikasi kunci publik pada ijazah dapat diketahui apakah kunci tersebut dibuat oleh sistem ini atau tidak. Kolom hash_X berisi nilai fungsi SHA-1 terhadap parameter kunci privat x. Nilai ini akan digunakan pada proses penandatanganan. Proses tersebut membandingkan apakah nilai hash dari hasil proses pembangkitan rahasia dari share-share yang terkumpul sama dengan nilai hash parameter x awal. Tanda tangan tidak dapat dilakukan jika hasil perbandingan tidak sama.

Modifikasi Skema Pembagian Rahasia Threshold

Banyak contoh nyata dari kebutuhan skema pembagian rahasia threshold. Contohnya pembagian kunci pada brankas uang di bank atau bahkan pemecahan kunci pemacu senjata nuklir. Berdasarkan contoh di atas terdapat logika natural mengenai pemegang bagian-bagian kunci tersebut, bahwa semua participant tidak memiliki pangkat atau hak yang sama. Misalnya pada bank, kunci brankas uang dibagikan kepada beberapa pegawai yang berpangkat teller dan manager dan kebijakan bank mengatakan bahwa brankas dapat dibuka oleh minimal tiga orang, namun satu di antaranya adalah seorang manager. Skema pembagian rahasia threshold biasa tidak mampu mengakomodasi peraturan tersebut, karena skema pembagian rahasia threshold biasa menganggap semua participant sama sehingga, pada contoh di atas, tiga orang teller mampu membuka brankas, walau tanpa seorangpun manager.

Contoh tersebut hanya salah satu dari banyaknya persoalan yang sama di dunia nyata sehingga untuk mengatasi persoalan

tersebut diperlukan modifikasi skema pembagian rahasia threshold. Modifikasi dilakukan dengan membagi himpunan participant menjadi beberapa kelompok. Proses pembentukan kembali rahasia membutuhkan jumlah participant pada semua kelompok yang melebihi threshold dari kelompok tersebut. Hal ini dimungkinkan dengan memecah rahasia menjadi beberapa pecahan rahasia yang kemudian pecahan-pecahan tersebut dipecah dengan meman-faatkan skema pembagian rahasia threshold.

Terdapat dua tahap yang dilakukan Dealer T pada skema yang telah termodifikasi. Pertama, Setup yaitu pemecahan rahasia D, pembuatan dan pendistribusian shares dari rahasia Di kepada sebanyak ni participant dengan threshold sebanyak ki . Kedua ialah pengumpulan shares sebanyak ki

1 Setup

atau lebih untuk setiap kelompok agar rahasia D terekonstruksi kembali. Skema dari pembagian rahasia termodifikasi adalah sebagai berikut:

a Rahasia D dipecah menjadi beberapa pecahan rahasia Di

b T membuat persamaan polinomial acak q(x) menggunakan persamaan (1) sebanyak M buah. Rahasia yang dipecah pada tahap ini ialah D

, 0 ≤ i ≤ M, dengan menggunakan persamaan (6).

ic T mengidentifikasi setiap participant

pada setiap kelompok.

.

d T membagikan shares kepada setiap participant sesuai dengan kelompok.

2 Pengumpulan share dan pembentukan D a Sebuah grup participant memberikan

share mereka kepada T. b T akan mengelompokkan share sesuai

dengan kelompoknya masing-masing kemudian akan menghitung nilai pecahan rahasia Di

c Semua D

dengan interpolasi Lagrange pada setiap kelompok.

i hasil dari interpolasi polinomial Lagrange pada poin b, kemudian dilakukan operasi XOR pada Di

Modifikasi skema pembagian rahasia threshold memiliki kekurangan. Kekurangan modifikasi ini ialah sulit untuk menentukan participant mana saja yang mengumpulkan share dari setiap kelompok.

agar rahasia D terbentuk kembali.

Implementasi Setup

Tahap pertama pada proses setup skema pembagian rahasia termodifikasi ialah

10

menerima masukan M, ni, dan ki . nilai M adalah masukan berupa integer yang menunjukkan jumlah kelompok yang akan dibentuk. Nilai ni dan ki

merupakan masukan berupa integer. Gambar 8 dan Gambar 9 menunjukkan antarmuka pada proses ini.

Gambar 8 Antarmuka setup.

Gambar 9 Antarmuka pengisian n dan k.

Rahasia D juga diperlukan pada proses setup. D adalah sebuah bilangan integer berukuran 160 bit. D dihasilkan dari proses pembangkitan kunci tanda tangan digital. Ukuran D terlalu besar untuk diterima dan diolah oleh tipe data integer pada bahasa pemrograman C#, maka diperlukan kelas lain untuk mengolah D. Kelas BigInteger digunakan untuk mengolah data bertipe integer dan memiliki ukuran lebih dari 64 bit. Variabel D akan dipecah menjadi pecahan-pecahan rahasia berjumlah M buah. Pecahan-pecahan rahasia memiliki ukuran yang sama dengan D, dan pecahan-pecahan tersebut merupakan nilai acak yang dibangkitkan oleh sistem. Nilai D0 dibentuk melalui operasi XOR antara D dan pecahan-pecahan rahasia yang merupakan nilai acak (D1, D2, … , DM-

1

Tahap selanjutnya setelah pemecahan D adalah pembuatan polinomial acak. Polinomial dibuat sebanyak M dan setiap polinomial berderajat k

).

i-1. Koefisien pertama dari polinomial tersebut ialah Di dan koefisien lain merupakan bilangan acak. Proses ini sama dengan proses setup pada skema pembagian rahasia threshold biasa, perbedaan dengan yang telah dimodifikasi ialah tahap ini dilakukan sebanyak M kali dengan rahasia ialah hasil pemecahan D (Di). Polinomial-polinomial yang telah terbentuk kemudian dievaluasi agar didapatkan share untuk setiap participant pada setiap kelompok.

Modular digunakan agar hasil yang dhasilkan pada proses setup lebih teliti. Sebuah bilangan prima P dipilih untuk penghitungan modular. Bilangan P merupakan bilangan prima yang lebih besar dari Di dan ni . Koefisien acak pada pembentukan polinomial acak dipilih dari selang bilangan antara 0 dan P dan share hasil evaluasi polinomial dimodulokan terhadap P.

Share yang terbentuk dari proses di atas dibuat menjadi sebuah file. Isi file yang terbentuk memiliki format “Kelompok<spasi>xi<spasi>Share<spasi>P”. File tersebut hanya sebuah file teks yang berisi format di atas. Format di atas dipisahkan oleh spasi (“ ”) dan dituliskan dalam bentuk angka. File memiliki ekstensi .shr.

Proses pembentukan polinomial dan file merupakan proses utama pada setup skema pembagian rahasia threshold termodifikasi, namun terdapat pula proses penyimpanan Di ke dalam database. Hal ini dilakukan agar ketika proses pembangunan rahasia kembali, dapat diketahui kelompok mana yang pecahan rahasianya tidak terbentuk. Informasi tersebut penting karena dengan informasi tersebut, lebih mudah diketahui kelompok mana menyebabkan rahasia gagal terbentuk dan dapat lebih mudah pula untuk pemeriksaan alasan rahasia gagal terbentuk.

Proses ini tidak menyimpan Di secara langsung. Proses ini menyimpan hasil hash dari Di . Hasil hash disimpan sebagai ganti nilai Di sebenarnya, tentu saja untuk menjaga kerahasiaan nilai Di . Fungsi hash yang digunakan ialah fungsi hash SHA-1. Nilai hash Di

Tabel 2 Struktur tabel tb_hash_secret

disimpan dengan struktur seperti pada Tabel 2.

Kolom Tipe Id_sign Integer(11)

Level_sign Integer(11) Hash_secret Varchar(500)

Database Management System yang digunakan ialah MySQL dan menggunakan .Net MySQL Connector untuk menghubungkan C# dengan MySQL. Id_sign merupakan kolom yang berisi penanda atau id dari skema yang dibuat. Level_sign adalah penanda kelompok yang memegang pecahan rahasia. Hash_secret adalah kolom yang berisi nilai hash dari pecahan rahasia sesuai dengan kelompok yang memilikinya.

11

Implementasi Pembangkitan Rahasia

Tahap pertama pada pembangkitan rahasia adalah pembacaan dan pemecahan share file. Hal ini dilakukan karena share yang telah dibuat sebelumnya, disimpan dalam bentuk file teks sehingga untuk pengolahannya diperlukan pembacaan dari file-file tersebut. Hasil pembacaan dari share file adalah nilai-nilai integer yang merepresentasikan kelompok, xi

, share, dan P. Gambar 10 dan Gambar 11 menunjukkan antarmuka untuk proses ini.

Gambar 10 Antarmuka masukan jumlah share.

Gambar 11 Antarmuka masukan share file.

Interpolasi Lagrange dilakukan setelah semua data yang diperlukan tersedia. Interpolasi Lagrange dilakukan sesuai dengan kolompok dari share. Setiap kelompok melakukan interpolasi untuk membentuk kembali pecahan rahasia setiap kelompok. Interpolasi dilakukan dengan mengikuti persamaan (5). Interpolasi dilakukan menggunakan kelas BigInteger. Hal ini dilakukan karena pada share file, data yang disimpan merupakan bilangan integer yang berukuran lebih besar dari 64 bit.

Terdapat kekurangan dari proses pembangkitan rahasia ini, yaitu interpolasi Lagrange membutuhkan operasi pembagian. Operasi pembagian dapat menyebabkan kehilangan data yang diakibatkan perbedaan atau sisa dari operasi pembagian tersebut sehingga ada kemungkinan pecahan rahasia yang terbentuk tidak sama dengan pecahan rahasia awal.

Proses pembangkitan rahasia menggunakan kelas BigInteger. Operasi pembagian pada kelas ini dapat menyebabkan kehilangan data, karena kelas ini tidak mengakomodasi bilangan pecahan. Hal ini merupakan masalah yang cukup serius, karena jika pecahan rahasia tidak terbentuk dengan sempurna, rahasia D tidak dapat dibentuk kembali.

Penelitian ini menggunakan beberapa cara agar risiko gagalnya pembangkitan rahasia menjadi lebih kecil. Pertama, operasi perkalian dengan yi dilakukan sebelum operasi pembagian. Persamaan (5) memperlihatkan bahwa operasi perkalian yi dilakukan setelah operasi pembagian (x – xj) dengan (xi – xj

Cara kedua untuk mengurangi risiko gagalnya pembentukan rahasia adalah melakukan pengolahan sisa dari operasi pembagian. Persamaan (5) memperlihatkan bahwa rahasia terbentuk kembali dengan menjumlahkan semua hasil perkalian y

), namun tentu saja hal ini menyebabkan kehilangan data menjadi lebih besar. Perhatikan persamaan (7):

Misal, z = 4, x = 5, y = 3, maka jika operasi pembagian didahulukan:

Nilai M = 4, hal ini disebabkan operasi pembagian dilakukan dengan tipe data integer, maka 5 / 3 = 1. Hasil yang berbeda didapatkan jika operasi perkalian didahulukan, hasilnya:

Nilai M yang seharusnya adalah 6.6667. Contoh di atas menunjukkan, bahwa perbedaan urutan pengolahan bilangan bertipe integer menyebabkan perbedaan data. Pada contoh awal, M = 4, sedangkan pada contoh selanjutnya M = 6, maka urutan operasi yang paling mendekati nilai yang seharusnya adalah perkalian terlebih dahulu.

i

Pengumpulan kembali sisa dari pembagian dilakukan dengan mengubah tipe data sisa pembagian tersebut dari integer menjadi tipe data float. Hal ini dimungkinkan karena sisa pembagian bernilai kurang dari satu. Kemudian, sisa dari setiap pembagian dijumlahkan dan dibulatkan. Hasil dari

dengan , tentu saja hal ini menyebabkan

jika terjadi kesalahan atau kehilangan data akibat operasi pembagian, kesalahan ini akan terakumulasi. Cara mengurangi kesalahan ini adalah dengan mengumpulkan sisa dari setiap operasi pembagian dalam interpolasi, kemudian menjumlahkannya kembali. Hal ini dapat memperkecil risiko kesalahan terjadi, namun tidak dapat menghilangkan sepenuhnya kesalahan tersebut.

12

pembulatan inilah yang dijumlahkan kembali. Kedua cara tersebut diharapkan dapat mengurangi peluang kesalahan dalam pembentukan kembali rahasia.

Proses di atas telah membentuk kembali pecahan rahasia dalam setiap kelompok. Tahap selanjutnya adalah pengumpulan pecahan rahasia setiap kelompok dan membentuk kembali rahasia D. Pembentukan kembali D dilakukan dengan melakukan operasi XOR terhadap semua pecahan rahasia. Persamaan (8) menunjukkan proses pembentukan D dari pecahan rahasia Di

-

menggunakan operasi XOR.

Implementasi Penandatangan Ijazah

Tahap implementasi penandatangan ijazah adalah tahap pembangunan sistem untuk menandatangani ijazah dengan menggunakan kunci dan parameter yang telah dibentuk pada tahap pembentukan kunci.

Tahap ini terdiri atas beberapa proses, yaitu pembacaan file ijazah, penghitungan nilai hash ijazah, pengambilan parameter dalam database, pembentukan tanda tangan digital, dan penyisipan tanda tangan pada ijazah. Proses-proses di atas merupakan proses utama pada tahap implementasi penandatanganan ijazah. Tahap ini juga memiliki proses lain selain proses di atas, yaitu proses pembangkitan rahasia pada skema pembagian rahasia threshold termodifikasi dan proses pembandingan hasil pembangkitan rahasia dengan rahasia awal.

Proses pertama adalah pembacaan file ijazah yang akan ditandatangani. File yang diperlukan pada penelitian ini adalah ijazah digital dalam bentuk scalable vector graphics (SVG). Format ini merupakan salah satu jenis dari XML yang mendefinisikan gambar vektor berbasis dua dimensi yang dapat diskalakan. Format ini digunakan pada web dan dapat digunakan sama seperti XML biasa. Ijazah digital dalam bentuk ini, didapatkan dari proses pengolahan menggunakan program Vektor Magic.

Ijazah konvensional dipindai sehingga didapatkan gambar ijazah dalam bentuk digital berformat JPEG. Gambar ijazah tersebut, kemudian diolah menggunakan aplikasi untuk mengubah image menjadi SVG. Hasil dari pengubahan itu yang digunakan sebagai ijazah digital.

File ijazah yang akan dibaca dipilih terlebih dahulu dengan menggunakan kelas DialogBox. File ijazah yang telah dipilih memiliki format SVG dan dibaca dengan menggunakan kelas TextReader. Hal ini dimungkinkan karena SVG merupakan format yang berbasis teks. Hasil dari pembacaan file ijazah adalah suatu string yang merupakan isi dari file ijazah. Gambar 12 menunjukkan dialog box pemilihan file.

Proses selanjutnya setelah pembacaan file ijazah adalah penghitungan nilai hash menggunakan fungsi hash SHA-1. Penghitungan ini dilakukan karena untuk pembuatan tanda tangan diperlukan nilai fungsi hash SHA-1 seperti pada persamaan (3). Persamaan (3) menunjukkan bahwa untuk membentuk parameter s yang merupakan bagian dari tanda tangan dibutuhkan nilai hash tersebut.

Fungsi hash SHA-1 pada C# diakomodasi dengan adanya kelas SHA1. Kelas ini terdapat pada library Security yang telah tersedia dalam C#. Kelas SHA1 memiliki method ComputeHash() yang merupakan sebuah method untuk menghitung nilai hash dari masukan yang berupa byte[]. Keluaran dari method tersebut adalah byte[] hasil fungsi hash SHA-1 dari masukan.

Proses selanjutnya setelah penghitungan fungsi hash ialah proses pengambilan parameter dari database. Proses ini dilakukan dengan menggunakan .Net MySQL Connector seperti pada tahap penyimpanan parameter ke dalam database. Parameter yang diambil adalah data pada kolom hash_X dan kolom kunci pada tabel tb_data. Data pada kolom hash_X digunakan untuk proses pembandingan kunci privat x dengan hasil dari proses pembangkitan rahasia skema pembagian rahasia threshold termodifikasi. Data pada kolom kunci digunakan pada proses pembentukan tanda tangan.

Gambar 12 Dialog box pemilihan file ijazah.

13

Proses pembentukan tanda tangan diawali oleh proses pembangkitan rahasia skema pembagian rahasia threshold termodifikasi dan proses pembandingan hasil proses pembangkitan rahasia dengan nilai hash dari kunci privat x yang telah diambil dari database. Proses pembangkitan rahasia telah dijelaskan pada pembahasan mengenai skema pembagian rahasia threshold termodifikasi. Proses pembandingan hasil pembangkitan tanda tangan dengan nilai hash kunci privat dilakukan dengan cara menghitung nilai hash dari hasil pembangkitan rahasia, selanjutnya nilai tersebut dibandingkan dengan nilai hash kunci privat x. Tanda tangan dapat dibentuk jika dan hanya jika nilai hash kunci privat x sama dengan nilai hash hasil pembangkitan rahasia.

Tanda tangan digital pada ijazah dibentuk dengan menggunakan persamaan (2) dan (3), namun pada C# terdapat suatu kelas yang digunakan untuk menandatangani dukumen menggunakan DSA, kelas tersebut adalah kelas DsaSignatureFormatter. Kelas tersebut akan membentuk tanda tangan sesuai dengan persamaan (2) dan (3).

Masukan pada inisialisasi kelas DsaSignatureFormatter adalah kelas DsaCryptoServiceProvider. Parameter Kelas DsaCryptoServiceProvider diinisialisasi dengan menggunakan method FromXmlString(). Method ini mengambil nilai dari string XML yang telah diambil dari database. String XML yang dipakai tidak mengandung kunci privat x. Kunci privat x diambil dari proses pembangkitan rahasia dan kelas DsaCryptoServiceProvider mengambil kunci tersebut dengan memanfaatkan kelas DsaParameters.

Kelas DsaSignatureFormatter digunakan setelah parameter-parameter kelas DsaCryptoServiceProvider lengkap. Pembentukan tanda tangan dengan menggunakan kelas DsaSignatureFormatter diawali dengan menentukan fungsi hash yang digunakan, method SetHashAlgorithm() digunakan untuk hal ini. Hal yang dilakukan selanjutnya adalah pemanggilan method CreateSignature(). Method ini membentuk tanda tangan dengan nilai hash dari file yang telah dibuat dan menggunakan parameter-parameter yang ada pada DsaCryptoServiceProvider kelas yang menjadi masukan pada inisialiasasi DsaSignatureFormatter kelas. Method ini menghasilkan keluaran berupa byte[] yang

merupakan tanda tangan digital dari file yang menjadi masukan. Tanda tangan yang telah dibentuk selanjutnya diubah ke dalam bentuk string dengan format BASE64 dengan menggunakan method toBase64String() yang tersedia pada kelas BitConverter. String tersebut diberi tag “<Signature>” dan “</Signature>” yang digunakan sebagai penanda nilai tanda tangan pada ijazah. Contoh string tanda tangan yang terbentuk:

<Signature>dRTh5pJsuYJIJiVUHbgIGmp00SxR2Bl3kzMePzii5lJjVQmkPLEBRw==</Signature>

Proses selanjutnya setelah tanda tangan terbentuk adalah penyisipan parameter kunci publik dan tanda tangan yang telah dibentuk. Proses penyisipan ini tidak boleh mengubah tampilan dari file asli. Proses penyisipan ini memanfaatkan sifat dari file SVG yaitu browser tidak merepresentasikan gambar apapun dari tag yang bukan tag standar dari file SVG. Hal ini memungkinkan file SVG diberi tag yang tidak akan mengubah tampilan dari file SVG tersebut, namun file SVG tidak dapat ditampilkan oleh browser jika terdapat tag diluar tag “<svg>” dan “</svg>”, sehingga penyisipan dilakukan di antara tag-tag tersebut.

Penyisipan dilakukan dengan menggunakan fungsi sambung atau concatenate string pada C# yang diwakili oleh operator “+”. String yang disambungkan adalah potongan string dari file yang telah dibaca, string XML kunci publik, dan tanda tangan digital yang telah diubah ke dalam bentuk string BASE64. String file dipecah sehingga string XML kunci publik dan string tanda tangan dapat disisipi di antara tag “<svg>” dan “</svg>”. Pemecahan ini dilakukan dengan mencari posisi string “</svg>” dan dilakukan pengambilan dua buah substring dari string file. Substring pertama adalah string yang dimulai dari awal string sampai posisi di mana string “</svg>” berada. Substring kedua adalah string yang dimulai dari posisi string “</svg>” ditambah dengan panjang string “</svg>” sampai akhir dari string file. Penyambungan dapat dilakukan setelah kedua substring telah didapatkan, penyambungan dilakukan dengan urutan substring pertama, string XML kunci publik, string tanda tangan, dan terakhir substring kedua. String hasil penyambungan dibuat kembali menjadi sebuah file SVG kembali. File tersebut ialah file ijazah yang telah ditandatangani.

14

Implementasi Verifikasi Ijazah

Tahap implementasi verifikasi ijazah adalah tahap pembangunan sistem untuk memverifikasi ijazah digital yang sudah ditandatangani. Sistem akan menentukan ijazah sah atau tidak dengan menggunakan kunci publik dan tanda tangan yang tertera pada ijazah. Implementasi menggunakan bahasa pemrograman PHP dan Database Management System MySQL.

Tahap verifikasi terdiri atas beberapa proses, yaitu proses pengunggahan file ijazah, proses pemisahan kunci dan tanda tangan, proses pengambilan nilai kunci dan tanda tangan, proses pengecekan kunci, proses penghitungan nilai hash ijazah, dan terakhir proses pengecekan keabsahan ijazah. Proses-proses tersebut akan menentukan apakah ijazah yang diunggah merupakan ijazah yang sah atau tidak sah.

Proses awal dari tahap implementasi verifikasi ijazah adalah proses pengunggahan file ijazah. File diunggah dengan menggunakan metode POST, kemudian file dipindahkan dari temp folder menuju folder bernama temp_upload yang telah dibuat sebelumnya. File akan tertulis kembali jika nama file yang sama telah berada pada folder tersebut.

Gambar 13 Antarmuka sistem verifikasi

ijazah.

File yang telah diunggah selanjutnya diproses untuk memisahkan kunci dan tanda tangan dari file. Pemisahan diawali dengan membaca file yang telah diunggah sehingga terbentuk suatu string yang merupakan isi dari file yang diunggah. Selanjutnya string tersebut dipecah dengan mencari posisi kunci dan tanda tangan, kemudian dengan memanfaatkan fungsi substr pada PHP, dibuat dua buah substring, yaitu substring yang dimulai dari awal string sampai posisi tag

“<DSAKeyValue>”, dan substring yang dimulai dari posisi tag “</svg>” sampai akhir string. Kedua substring disambungkan menjadi sebuah string yang merupakan string file yang telah terpisah dari kunci dan tanda tangan, sama seperti string file ijazah awal yang belum tertandatangani. Gambar 13 menunjukkan antarmuka sistem untuk pengunggahan file.

Proses selanjutnya setelah proses pemisahan kunci dan tanda tangan dari string file ialah pengambilan nilai parameter kunci dan tanda tangan. Pengambilan parameter kunci dan tanda tangan dilakukan dengan menggunakan fungsi substring. Setiap parameter kunci yang ditandai oleh tag-tag diambil nilainya dengan mencari posisi tag buka dan posisi tag tutup, lalu dengan fungsi substring dibuatlah beberapa substring yang mewakili setiap parameter dan tanda tangan. Setiap substring parameter dimulai dari posisi tag buka ditambah panjang string tag tersebut sampai posisi tag tutup sehingga setiap substring berisi nilai di antara tag buka dan tag tutup setiap parameter. Hal yang sama juga dilakukan pada tanda tangan sehingga didapatkan substring tanda tangan, namun tanda tangan yang tertera pada file adalah hasil penyambungan antara parameter s dan r sehingga untuk pengolahan lanjutan, tanda tangan ini nanti dipisahkan. Setiap substring kemudian diubah tipe datanya menjadi byte[] dengan menggunakan fungsi base64_decode() sehingga didapatkan parameter-parameter kunci dan tanda tangan yang bertipe byte[]. Kemudian untuk tanda tangan, nilai tersebut akan dipecah menjadi dua bagian sama besar menjadi parameter s dan parameter r yang masing-masing memiliki panjang dua puluh byte.

Proses selanjutnya adalah pengecekan kunci. Pada proses ini sistem dapat menentukan apakah kunci yang tertera pada ijazah sama dengan kunci yang berada dalam database. Pengecekan dilakukan dengan mengambil nilai kolom Y dan G dari database dan kemudian dibandingkan dengan parameter kunci g dan y yang telah terbentuk pada proses sebelumnya.

Proses selanjutnya adalah menghitung nilai hash SHA-1 untuk String file ijazah yang sudah terpisah dari kunci dan tanda tangan. Proses ini menggunakan fungsi SHA1() pada PHP. Keluaran dari fungsi ini adalah byte[] nilai hash dari masukan yang berupa string file ijazah.

15

Proses selanjutnya adalah proses pengecekan keabsahan tanda tangan dengan menggunakan parameter-parameter yang telah diambil sebelumnya. Proses ini sesuai dengan persamaan-persamaan berikut:

Ijazah sah jika dan hanya jika:

Proses ini harus mengikuti persamaan-persamaan di atas. Fungsi khusus diperlukan agar operasi-operasi pada persamaan-persamaan tersebut dapat dilakukan. Fungsi yang diperlukan disediakan oleh GMP library pada PHP yang dapat melakukan operasi bilangan yang ukurannya besar.

Gambar 14 Antarmuka hasil verifikasi ijazah.

Proses pengecekan ini diawali dengan inisialisasi variabel GMP menggunakan fungsi gmp_init() untuk semua parameter kunci dan tanda tangan. Selanjutnya adalah menghitung w sesuai dengan persamaan (9) menggunakan fungsi gmp_invert(). Parameter untuk fungsi gmp_invert() adalah bilangan yang akan dilakukan operasi invert, yaitu s dan bilangan modulonya q.

Setelah menghitung w dilakukan penghitungan u1 sesuai dengan persamaan (10). Fungsi gmp_mul() digunakan untuk operasi perkalian antara w dan h(m) yang merupakan nilai hash file ijazah. Fungsi lain yang digunakan selain fungsi gmp_mul() adalah fungsi gmp_mod() yang digunakan untuk operasi modulo hasil perkalian dengan

q. Perhitungan u2 dilakukan dengan menggunakan fungsi gmp_mul() untuk mengalikan r dan w dan gmp_mod() untuk operasi modulo antara hasil perkalian dengan q. Variabel v dihitung setelah menghitung u1 dan u2. Fungsi gmp_powm() digunakan untuk menghitung nilai g pangkat u1 dan nilai y pangkat u2

Penandatanganan Ijazah

dalam modulo p. Selanjutnya dengan menggunakan fungsi gmp_mul() hasil pemangkatan g dan y dikalikan lalu dilakukan operasi modulo dengan menggunakan fungsi gmp_mod() sebanyak dua kali, yang pertama operasi modulo terhadap p yang kedua operasi modulo terhadap q.

Variabel v kemudian dibandingkan dengan r untuk menentukan apakah tanda tangan sah atau tidak. Fungsi gmp_cmp() digunakan untuk membandingkan antara v dan r. Keluaran dari fungsi tersebut adalah suatu nilai yang menunjukkan hasil perbandingan, jika r sama dengan v, keluaran akan bernilai nol dan jika v tidak sama dengan r, keluaran akan bernilai tidak nol. Ijazah dinyatakan sah, jika dan hanya jika keluaran fungsi gmp_cmp() adalah 0. Gambar 14 menunjukkan antarmuka hasil proses verifikasi ijazah.

Tahap ini adalah tahap pemakaian sistem untuk menandatangani ijazah digital. Dimulai dari pembentukan share dan pembangkitan kunci, kemudian penandatanganan ijazah. Tahap ini akan menjelaskan proses dari sistem dengan menggunakan contoh.

Misal syarat untuk menandatangani ijazah adalah minimal lima orang yang menandatangani ijazah. Ketentuan pada penandatanganan adalah terdapat minimal dua orang dari kelompok pertama dan tiga orang dari kelompok kedua. Setiap kelompok beranggotakan lima orang.

Gambar 15 Antarmuka pemasukan nama

skema dan jumlah tingkat.

16

Tahap pertama adalah pembentukan share dan pembangkitan kunci. Mengacu pada syarat pada contoh yang digunakan, maka akan dibuat dua buah kelompok. Kelompok pertama terdiri atas lima orang dengan minimal share terkumpul untuk pembentukan rahasia kembali berjumlah dua buah share. Kelompok kedua terdiri atas lima orang dengan minimal share terkumpul minimal tiga buah share untuk pembentukan rahasia kembali. Maka pada sistem akan diberi masukan jumlah tingkat adalah 2 sebagai jumlah kelompok. Kemudian untuk kelompok pertama, masukan adalah n[1] = 5, k[1] = 2 dan untuk kelompok kedua, n[2] = 5, k[2] = 2. Selain masukan-masukan tersebut, terdapat pula masukan nama skema sebagai penanda dari skema yang dibuat. Gambar 15 menunjukkan proses pemasukan parameter pada proses pembuatan share. Setelah mengisi text box “Nama Skema” dan “Jumlah Tingkat”, tekan tombol “Masukan Data” untuk memasukkan data masukan setiap kelompok.

Gambar 16 Antarmuka masukan data setiap

kelompok.

Setelah menekan tombol “Masukkan Data”, maka akan muncul window baru yang digunakan untuk menerima masukan data setiap kelompok. Data yang dimasukkan adalah n dan k. Tampilan window baru yang muncul dapat dilihat pada Gambar 16.

Setelah text box data telah diisi, tekan tombol “Input”, maka data akan terisi ke dalam sistem. Selanjutnya, window aktif kembali ke window utama pada Gambar 15. Status “tidak ada data”, menjadi “ada data”, selain itu, tombol “Buat dan Bagikan Kunci” akan aktif dan dapat ditekan. Tekan tombol tersebut, maka sistem akan membentuk share sesuai dengan data yang telah dimasukkan ke dalam sistem. Sistem akan menghasilkan

share file sebanyak sepuluh share, lima share untuk kelompok pertama dan lima share untuk kelompok kedua. Contoh isi dari salah satu share file:

0

1

183750467799876432079097739265512224671409321158

6431137419465884770309660990838290794184323884008934868413410474663

Selain share file, pada tahap pembuatan share dan pembangkitan kunci, data kunci yang terbentuk oleh proses pembangkitan kunci disimpan ke dalam database. Contoh kunci yang telah dibangkitkan:

<DSAKeyValue><P>h1xia4YE11TLXs1BPFsi/CxFGc1zKD9+OlDQAlk1veGKoiwDolp4Fl40PSr3fUilKyauceXZHoOSLnhb5MUpEpFkb7UjEadG/+YPWeWaURGstx6HiM9+/OKJGqf5w9DUoyjbkGzmrXu6f8N9i0s0RxgKmFh2T5p0X/vNWQtdwJ8=</P><Q>ty5tFNb0ENHCzju8CBE/IH8phoE=</Q><G>BTHq9bxv5KMQdR5uMUIsHHStntwXJmpjdI0kMbRJg5DIq9zmXdVtYZCoT5I3wfThhNlihWpQABi0If7pTZwAci0+UbG6aZ59ZMdmL+wPLWtpOlyswCT0hAs9jZ6iAKe8VwW662UT1Pq9tLFtyUFL+uXK+Ue7bducgnokzBqmzcQ=</G><Y>WRlqNTJd7kZCF2GMdgtNuLWwIYzaDgSj6usf7qwl+YbCazQInwQgChu0ATQKa2OM9PHvdG47XBbVrh8yV1DlZr7xGdOdhYXLspeB+VPbdNO9gr1bM/5yNGYqdD7nvXiM3cqnSldkJ9P9ddeJbT/8Eeq61gBktFTJrG2RpvhWWBM=</Y><J>vSt5tX/J/8XOBtBteDKdidu6qMvteDh4FiWDMYe6Ima1tQM98cYfTB0KUhTy4+zbOXp2CZ3JaqJCF5vQANlN5F65n690Of3c7lHmFvIekiTYpeFQLqgYEfEhFXCBIFLo2DjmZqIWciwysD2e</J><Seed>CUU4EY4i4yoC85P/hE7/KE6Vc58=</Seed><PgenCounter>AdY=</PgenCounter></DSAKeyValue>

Tahap selanjutnya setelah pembuatan share dan pembangkitan kunci adalah proses penandatanganan ijazah. Proses penandatanganan diawali dengan pemilihan skema yang digunakan pada penandatanganan. Skema dipilih dari list pada combo box yang berisi data dalam database. Pilih skema dengan nilai “id : 50 contoh_1”. Setelah skema dipilih, maka sistem akan otomatis mengambil data dari database untuk proses penandatanganan. Antarmuka pada proses ini ditunjukkan oleh Gambar 17.

17

Gambar 17 Antarmuka pemilihan skema dan

file ijazah.

Selain pengambilan data dari database, window baru akan muncul untuk menerima masukan jumlah share yang akan dikumpulkan oleh setiap kelompok. Setiap kelompok memiliki threshold masing-masing, setiap kelompok mengumpulkan minimal sejumlah threshold pada saat penandatanganan. Gambar 17 menunjukkan proses ini.

Gambar 18 Antarmuka masukan jumlah

share yang akan dikumpulkan.

Setelah jumlah share yang akan dikumpulkan diisi, yaitu 2 untuk jumlah share kelompok pertama dan 3 untuk jumlah share kelompok kedua, tekan tombol “Input”. Hal ini akan menutup window pada Gambar 18 dan akan memunculkan window baru untuk memasukkan nama share file yang akan digunakan untuk proses pembangkitan rahasia pada penandatanganan ijazah. Gambar 19 dan Gambar 20 menunjukkan antarmuka untuk memasukkan nama share file yang akan digunakan.

Gambar 19 Antarmuka pemilihan share file

kelompok pertama.

Kelompok pertama mengumpulkan dua buah share yang telah dibuat sebelumnya, yaitu share Share_contoh_1_0_0.shr dan

Share_contoh_1_0_3.shr. Kelompok kedua mengumpulkan tiga buah share seperti pada Gambar 19, yaitu Share_contoh_1_1_0.shr, Share_contoh_1_1_3.shr, dan Share_contoh_ 1_1_4.shr

Gambar 20 Antarmuka pemilihan share file

kelompok kedua.

Setelah nama file telah terisi, tekan tombol “Input” untuk menyelesaikan pemilihan file. Setelah tombol “Input” ditekan, window masukan share file akan tertutup dan window aktif kembali ke window utama. Setelah pemilihan share file, selanjutnya ialah memilih file ijazah yang akan ditandatangani. Pemilihan ini dilakukan dengan menekan tombol “…” pada window utama. Akan muncul dialog box yang digunakan untuk memilih file. Gambar 21 menunjukkan dialog box ini.

Gambar 21 Antarmuka dialog box pemilihan

file.

Pilih file ijazah_.svg, selanjutnya tekan tombol “Open”. Dialog box akan tertutup dan window aktif kembali ke window utama. Selanjutnya tekan tombol “Tanda Tangan Ijazah” untuk menandatangani ijazah. Sistem akan melakukan proses pembangkitan rahasia menggunakan share-share yang telah dikumpulkan. Selanjutnya dilakukan fungsi hash pada hasil pembangkitan rahasia. Hasil hash pada contoh ini:

Gn++uKn1V1lnKokcmg3BhVSD+7Q=

Di lain pihak pada database, nilai hash kunci privat x yang telah disimpan sebelumnya memiliki nilai:

Gn++uKn1V1lnKokcmg3BhVSD+7Q=

18

Karena proses pembangkitan rahasia menghasilkan nilai yang sama dengan nilai yang seharusnya, maka ijazah akan ditandatangani dan sistem akan menghasilkan file SVG baru yang merupakan file ijazah yang telah ditandatangani. Contoh format isi file ijazah yang telah ditandatangani:

<svg …> … <DSAKeyValue>…</DSAKeyValue> <Signature>hmhUbj54RkuXBNjeXRx51V852jhwIJwi+1aBgV/Y2K1Dpo5AZo6tdQ==</Signature></svg>

Karena file ijazah telah ditandatangani, selanjutnya adalah tahap verifikasi ijazah yang telah ditandatangani. Tahap verfikasi dilakukan dengan menggunakan browser karena sistem menggunakan bahasa pemrograman PHP.

Verifikasi Ijazah

Tahap ini merupakan tahap setelah penandatanganan ijazah. Tahap verifikasi ijazah adalah pemakaian sistem verifikasi untuk memverifikasi ijazah yang telah ditandatangani. File ijazah yang telah ditandatangani hasil dari contoh pada proses penandatanganan digunakan pada proses verifikasi ini. Gambar 22 menunjukkan antarmuka website untuk verifikasi ijazah.

Gambar 22 Antarmuka website untuk

verifikasi ijazah.

Tekan tombol “Browse” untuk memunculkan dialog box pemilihan ijazah yang telah ditandatangani. Tampilan dialog box dapat dilihat dari Gambar 23.

Setelah ijazah dipilih, tekan tombol “Open”. Dialog box akan tertutup dan text field pada halaman website akan terisi sesuai dengan file ijazah yang dipilih. Tekan tombol “Upload It” untuk mengunggah file, dan memverifikasi ijazah. Sistem akan otomatis mengecek keabsahan dari file ijazah yang diunggah. Hasil verifikasi dari ijazah yang merupakan contoh pada tahap

penandatanganan menunjukkan bahwa ijazah sah. Gambar 24 menunjukkan hal ini.

Gambar 23 Dialog box pemilihan ijazah.

Gambar 24 Hasil verifikasi ijazah contoh

tahap penandatanganan.

Misalkan ijazah yang telah ditandatangani diubah satu karakter. Seharusnya file ijazah yang telah diubah tidak sah. Proses verifikasi harus menunjukkan bahwa file ijazah tidak sah. Pengubahan dilakukan seperti pada contoh:

… <path fill="#9cb9e7" opacity="1.00" d=" M 0.00 0.00 L …

Diubah menjadi:

… <path fill="#9cb9e7" opacity="1.00" d=" M 1.00 0.00 L …

Gambar 25 Hasil verifikasi ijazah yang telah

diubah satu karakter.

19

Hasil verifikasi menunjukkan bahwa file ijazah yang diunggah tidak sah. Gambar 25 menunjukkan hal ini. Tahap verifikasi telah dilakukan dan pada verifikasi dapat tentukan apakah file ijazah yang telah ditandatangani sah atau tidak. Tahap selanjutnya setelah tahap verifikasi ialah tahap evaluasi dan analisis hasil dari proses penandatanganan dan verifikasi.

Evaluasi dan Analisis

Tahap ini adalah tahap evaluasi dan analisis dari sistem tanda tangan digital dan skema pembagian rahasia threshold termodifikasi. Tahap ini terdiri atas beberapa bagian, yaitu analisis properti dari skema pembagian rahasia threshold termodifikasi, analisis peluang membangkitkan rahasia jika diketahui share kurang dari threshold, dan evaluasi tanda tangan digital.

Analisis Properti dari Skema Pembagian Rahasia Threshold Termodifikasi

Tahap ini adalah tahap analisis properti skema pembagian rahasia threshold termodifikasi. Analisis yang dilakukan adalah analisis apakah properti-properti pada skema pembagian rahasia threshold masih dimiliki oleh skema pembagian rahasia threshold yang telah dimodifikasi.

Properti pertama pada skema pembagian rahasia threshold adalah perfect. Analisis pada properti ini adalah analisis apakah skema pembagian rahasia threshold yang telah dimodifikasi masih memiliki properti perfect. Misalkan terdapat rahasia D = 4 yang akan dibagikan ke dua buah kelompok dan threshold kedua kelompok adalah 2. Maka dengan menggunakan skema pembagian rahasia threshold termodifikasi:

D = 4 = (100)2 D1 = 2 = (010)2 D0 = 6 = (110)

Selanjutnya, D2

0 dan D1 dipecah menggunakan skema pembagian rahasia threshold. Kelompok pertama, bilangan prima yang digunakan pada kelompok ini adalah p = 7, dengan polinomial f(x) = 6 + 2x sehingga terbentuk share (1, 1) dan (2, 3). Kelompok kedua, bilangan prima yang digunakan adalah p = 3, dengan polinomial f(x) = 2 + 1x sehingga terbentuk share (1, 0) dan (2, 1). Anggap semua share pada kelompok pertama diketahui oleh lawan sehingga nilai D0 = 6 telah diketahui. Jika hanya share tersebut

yang diketahui lawan, peluang rahasia D diketahui sama dengan peluang lawan menebak nilai D1 benar, yaitu 0.125. Peluang ini muncul karena kemungkinan nilai D1 adalah 0, 1, 2, 3, 4, 5, 6, 7. Jika p = 3 pada kelompok kedua diketahui, peluang akan menjadi 0.333, karena nilai D1 yang mungkin adalah 0, 1, dan 2. Misalkan selain share pada kelompok pertama, lawan juga mengetahui share (1, 0) pada kelompok kedua, maka:

f(x) = a0 + a1x 0 = a0 + a1 * 1

Nilai a0 dan a1 yang mungkin adalah 0, 1, dan 2. Kemungkinan nilai a0 dan a1

• 0 = (0

yang benar adalah:

• 0 = (1 + 2 * 1) mod 3 + 0 * 1) mod 3

• 0 = (2 + 1 * 1) mod 3

Dapat dilihat dari persamaan-persamaan di atas bahwa nilai a0 tetap 0, 1, dan 2. Sehingga peluang rahasia D terbentuk tetap 0.333 dan ini merupakan peluang terbesar rahasia D terbentuk jika hanya diketahui k-1 share. Hal ini membuktikan bahwa properti perfect masih dimiliki oleh skema pembagian rahasia threshold yang telah dimodifikasi.

Properti selanjutnya pada skema pembagian rahasia threshold ialah ideal. Share yang dihasilkan oleh skema pembagian rahasia threshold termodifikasi memiliki ukuran yang sama dengan rahasia. Hal ini disebabkan oleh ukuran pecahan rahasia (Di

Properti selanjutnya pada skema pembagian rahasia threshold adalah extendable for new users. Modifikasi pada skema pembagian rahasia threshold adalah pemecahan rahasia untuk di bagian kepada setiap kelompok, dan pada setiap kelompok pecahan rahasia dipecah kembali menggunakan skema pembagian rahasia threshold. Modifikasi tidak dirancang agar dapat menambah kelompok ke dalam skema yang telah dibuat. menambahkan participant yang merupakan kelompok baru tidak dapat dilakukan. Jika participant merupakan participant dari kelompok yang sudah terbentuk sebelumnya, dengan menggunakan

) yang sama dengan ukuran rahasia (D). Setiap pecahan rahasia kemudian dipecah dengan menggunakan skema pembagian rahasia threshold yang memiliki properti ideal, maka dapat dipastikan bahwa skema pembagian rahasia threshold memiliki properti ideal, karena ukuran share lebih besar atau sama dengan ukuran rahasia.

20

interpolasi Lagrange, participant baru dapat ditambahkan. Hal ini memanfaatkan properti extendable for new users yang terdapat pada skema pembagian rahasia threshold yang digunakan pada setiap kelompok. Maka properti extendable for new users masih terdapat pada skema pembagian rahasia threshold termodifikasi.

Properti selanjutnya adalah properti varying levels of control possible. Skema pembagian rahasia threshold termodifikasi memungkinkan untuk seorang atau beberapa orang participant menjadi bagian yang harus ada pada saat pembangkitan rahasia. Ini dikarenakan penggunaan konsep kelompok terpisah yang saling membutuhkan untuk pembentukan rahasia. Selain konsep pengelompokan, pada skema yang telah termodifikasi, pemberian share lebih dari satu kepada seorang participant masih dapat dilakukan. Hal ini menyebabkan participant tersebut memiliki kekuasaan lebih dibanding participant lain. Properti varying levels of control possible masih terdapat pada skema pembagian rahasia threshold termodifikasi.

Properti terakhir pada skema pembagian rahasia threshold ialah no unproven assumption. Skema pembagian rahasia threshold termodifikasi hanya memiliki dua kemungkinan kondisi. Kedua kondisi tersebut ialah aman, jika rahasia terbentuk kembali, dan tidak aman, jika rahasia tidak terbentuk kembali. Sama seperti skema pembagian rahasia threshold, skema yang telah dimodifikasi layanan keamanannya tidak tergantung pada asumsi yang belum terbukti. Layanan keamanan skema pembagian rahasia threshold termodifikasi tidak tergantung pada asumsi yang sulit dibuktikan seperti perkembangan kemampuan komputer. Kesimpulannya properti no unproven assumpstion masih terdapat pada skema pembagian rahasia threshold termodifikasi.

Analisis Peluang Membangkitkan Rahasia jika Share Kurang dari Threshold

Analisis dilakukan dengan mengambil contoh bilangan untuk dipecah dan kemudian bilangan tersebut dipecah menggunakan skema pembagian rahasia threshold termodifikasi.

Bilangan yang akan dipecah ialah 68 dengan jumlah kelompok berjumlah 2 kelompok dengan threshold masing-masing kelompok adalah 3 dan 2. Selanjutnya rahasia yang bernilai 68 dipecah dengan

menggunakan operasi XOR sehingga didapatkan dua buah pecahan rahasia, yaitu 41 dan 109.

Selanjutnya, setiap pecahan rahasia dipecah di dalam kelompoknya menjadi share. Share kelompok pertama ialah, (1, 10), (2, 36), (3, 25), dan (4, 24) dengan p = 47. Share kelompok kedua ialah, (1, 20), (2, 44), dan (3, 68) dengan p = 113.

Selanjutnya akan dilakukan pembangkitan rahasia berdasarkan pada pembuatan share di atas. Tabel 3 menunjukkan hasil pembangkitan dengan ketentuan jumlah share pembentuk.

Tabel 3 Pengujian pembentukan rahasia

Jumlah Share Status Share

Rahasia yang

terbentuk

K1 < k1 K2 < k2

Benar semua 11 Ada salah 52 Redundan NaN

K1 = k1 K2 < k2

Benar semua 61 Ada salah 57 Redundan NaN

K1 > k1 K2 < k2

Benar semua 61 Ada salah 56 Redundan NaN

K1 < k1 K2 = k2

Benar semua 114 Ada salah 76 Redundan NaN

K1 = k1 K2 = k2

Benar semua 68 Ada salah 92 Redundan NaN

K1 > k1 K2 = k2

Benar semua 68 Ada salah 92 Redundan NaN

K1 < k1 K2 > k2

Benar semua 76 Ada salah 81 Redundan NaN

K1 = k1 K2 > k2

Benar semua 68 Ada salah 92 Redundan NaN

K1 > k1 K2 > k2

Benar semua 68 Ada salah 92 Redundan NaN

Tabel 3 merupakan hasil pengujian proses pembangkitan rahasia pada skema pembagian rahasia threshold termodifikasi. Tabel 3 menunjukkan bahwa rahasia akan terbentuk kembali jika dan hanya jika share yang dikumpulkan berjumlah sama atau melebihi threshold. Contoh di bawah menunjukan peluang rahasia dapat dibangkitkan jika lawan mengetahui sebanyak k-1 share.