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
Pengambilan Kunci dan Tanda Tangan
String File Ijazah
Kunci dan Tanda Tangan
Pemisahan Kunci dan Tanda Tangan
Pengecekan Kunci
String Ijazah Murni
Pengesahan Ijazah
Hash
Ijazah Sah?
Nilai Hash String File
Yes
No
Cetak Sah
Cetak Tidak Sah
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. Parameterparameter ini dapat ditentukan nilainya dan dapat pula diambil nilainya. Parameterparameter 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:
hNXFsrTX5da/hXE 9Rg7nYvyXFL8gQ+VtFpPRccsd2XIyyq fMNiefVxg/RBCXAPpB7zcV3ryVoZJqa JZi9j4knz3PgN/yU1ez3iD60iBI1mZS Fy1kdM2H/KfnUmfF1PLF+WaS8xbbS5Y 6K8aA3NluJOkZBFGG47Z4i/TiI+7Syv 8=
o1stu43bLLJYZsB/ZBIleV MSrWE=
G8NYJhAmPQk7Mmp31u lGMG/E+OfGz6BYAkIVwdZlk/+ss+TU4 tp5l5gDBh4Rshnb+yaNoLli8V7zY+mQ tlaxkqnatvWYkAh+2+XWjx9bRbtPaX2 UzeB46TnKJ3aZijSME6UsHUKbS8iRuT
vwHq3yj2wmG/qtaRLwdMFS0ACQ71A=< /G>aR1S4JuiNUJwwgSqyvslow7YX XNLQ2Tn9F3EfoXMSrMHM0sxi5sbFTZh VZ3GuJGCxzsjJIs5ux4xxfEER+7+hdp Gzm6/kML8rIhMR1ccJGCVDC+3OpAAgS m3Rv3nR6Cnj4AdW1yITtfGMLJmzt6r2 kUv/CRKMucdthhvD0yOCjY=<J>0 CtkpiXCKLPJkmImn9Fd5Bn4h73H43a1 Aw4JPLTF5YKYEY8vmB4gqWH3qZ/rdiV 3MoVBD6AOtMAjqfUD/5DaDL/WPt2kgB qVfrh2lGOTohOxxcZYrinlhry0JZKvr iPtS6ws6JdT9P0fZj2+<Seed>l5 fdqTwLDPp/38JucNNj6HpMwQU=BKo= String XML kunci ditandai oleh tag “
” dan “”. Dalam kedua tag tersebut, terdapat tag-tag lain yang merupakan penanda dari nilai setiap parameter. Parameter P ditandai oleh tag “
” dan “
”, parameter Q ditandai oleh tag “
” dan “
”, parameter G ditandai oleh tag “
” dan “”, parameter Y ditandai oleh tag “
” dan “”, dan parameter-parameter lain yang ditandai oleh tag-tag yang sesuai dengan parameter tersebut. Terdapat tag “<Seed>” dan “
” pada string XML tersebut. Tag-tag ini berisi nilai parameter bantuan yang digunakan dalam pembentukan parameter p, q, g, dan y. String di dalam tagtag 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 Id_sign Nama_sign Kunci U G Y Hash_X
Tipe Integer(11) Varchar(40) Varchar(1000) Integer(11) Varchar(400) Varchar(400) 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 parameterparameter 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 SHA1 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 pecahanpecahan tersebut dipecah dengan memanfaatkan 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 D i kepada sebanyak n i participant dengan threshold sebanyak k i . Kedua ialah pengumpulan shares sebanyak k i atau lebih untuk setiap kelompok agar rahasia D terekonstruksi kembali. Skema dari pembagian rahasia termodifikasi adalah sebagai berikut: 1 Setup a Rahasia D dipecah menjadi beberapa pecahan rahasia Di , 0 ≤ i ≤ M, dengan menggunakan persamaan (6). b T membuat persamaan polinomial acak q(x) menggunakan persamaan (1) sebanyak M buah. Rahasia yang dipecah pada tahap ini ialah Di . c 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 D i dengan interpolasi Lagrange pada setiap kelompok. c Semua D i hasil dari interpolasi polinomial Lagrange pada poin b, kemudian dilakukan operasi XOR pada D i agar rahasia D terbentuk kembali. Modifikasi skema pembagian rahasia threshold memiliki kekurangan. Kekurangan modifikasi ini ialah sulit untuk menentukan participant mana saja yang mengumpulkan share dari setiap kelompok. Implementasi Setup Tahap pertama pada proses setup skema pembagian rahasia termodifikasi ialah
10
menerima masukan M, ni , dan k i . nilai M adalah masukan berupa integer yang menunjukkan jumlah kelompok yang akan dibentuk. Nilai ni dan k i 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 pecahanpecahan rahasia berjumlah M buah. Pecahanpecahan rahasia memiliki ukuran yang sama dengan D, dan pecahan-pecahan tersebut merupakan nilai acak yang dibangkitkan oleh sistem. Nilai D 0 dibentuk melalui operasi XOR antara D dan pecahan-pecahan rahasia yang merupakan nilai acak (D 1 , D 2 , … , D M1 ). 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 ). Polinomialpolinomial 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>x i <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 D i sebenarnya, tentu saja untuk menjaga kerahasiaan nilai Di . Fungsi hash yang digunakan ialah fungsi hash SHA-1. Nilai hash D i disimpan dengan struktur seperti pada Tabel 2. Tabel 2 Struktur tabel tb_hash_secret Kolom Id_sign Level_sign Hash_secret
Tipe Integer(11) Integer(11) 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 nilainilai integer yang merepresentasikan kelompok, x i , share, dan P. Gambar 10 dan Gambar 11 menunjukkan antarmuka untuk proses ini.
Penelitian ini menggunakan beberapa cara agar risiko gagalnya pembangkitan rahasia menjadi lebih kecil. Pertama, operasi perkalian dengan y i dilakukan sebelum operasi pembagian. Persamaan (5) memperlihatkan bahwa operasi perkalian yi dilakukan setelah operasi pembagian (x – x j ) dengan (x i – x j ), 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:
Gambar 10 Antarmuka masukan jumlah share.
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:
Gambar 11 Antarmuka masukan share file.
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.
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.
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 i , tentu saja hal ini menyebabkan dengan 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. 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
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.
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.
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. 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 parameterparameter 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 “” yang digunakan sebagai penanda nilai tanda tangan pada ijazah. Contoh string tanda tangan yang terbentuk: <Signature>dRTh5pJsuYJIJiVUHbgI Gmp00SxR2Bl3kzMePzii5lJjVQmkPLE BRw== 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 “”, sehingga penyisipan dilakukan di antara tagtag 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 “”. Pemecahan ini dilakukan dengan mencari posisi string “” dan dilakukan pengambilan dua buah substring dari string file. Substring pertama adalah string yang dimulai dari awal string sampai posisi di mana string “” berada. Substring kedua adalah string yang dimulai dari posisi string “” ditambah dengan panjang string “” 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. Prosesproses 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
“”, dan substring yang dimulai dari posisi tag “” 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 persamaanpersamaan di atas. Fungsi khusus diperlukan agar operasi-operasi pada persamaanpersamaan tersebut dapat dilakukan. Fungsi yang diperlukan disediakan oleh GMP library pada PHP yang dapat melakukan operasi bilangan yang ukurannya besar.
q. Perhitungan u 2 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 u 1 dan u 2 . Fungsi gmp_powm() digunakan untuk menghitung nilai g pangkat u 1 dan nilai y pangkat u 2 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. Penandatanganan 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.
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 u 1 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
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 1837504677998764320790977392655 12224671409321158 6431137419465884770309660990838 2907941843238840089348684134104 74663 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: h1xia4YE11TLXs1 BPFsi/CxFGc1zKD9+OlDQAlk1veGKoi wDolp4Fl40PSr3fUilKyauceXZHoOSL nhb5MUpEpFkb7UjEadG/+YPWeWaURGs tx6HiM9+/OKJGqf5w9DUoyjbkGzmrXu 6f8N9i0s0RxgKmFh2T5p0X/vNWQtdwJ 8=
ty5tFNb0ENHCzju8CBE/IH 8phoE=
BTHq9bxv5KMQdR5uMU IsHHStntwXJmpjdI0kMbRJg5DIq9zmX dVtYZCoT5I3wfThhNlihWpQABi0If7p TZwAci0+UbG6aZ59ZMdmL+wPLWtpOly swCT0hAs9jZ6iAKe8VwW662UT1Pq9tL FtyUFL+uXK+Ue7bducgnokzBqmzcQ=< /G>WRlqNTJd7kZCF2GMdgtNuLWwI YzaDgSj6usf7qwl+YbCazQInwQgChu0 ATQKa2OM9PHvdG47XBbVrh8yV1DlZr7 xGdOdhYXLspeB+VPbdNO9gr1bM/5yNG YqdD7nvXiM3cqnSldkJ9P9ddeJbT/8E eq61gBktFTJrG2RpvhWWBM=<J>v St5tX/J/8XOBtBteDKdidu6qMvteDh4 FiWDMYe6Ima1tQM98cYfTB0KUhTy4+z bOXp2CZ3JaqJCF5vQANlN5F65n690Of 3c7lHmFvIekiTYpeFQLqgYEfEhFXCBI FLo2DjmZqIWciwysD2e<Seed>CU U4EY4i4yoC85P/hE7/KE6Vc58=AdY= 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
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 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 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 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
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:
penandatanganan menunjukkan bahwa ijazah sah. Gambar 24 menunjukkan hal ini.
<svg …> … … <Signature>hmhUbj54RkuXBNjeXRx5 1V852jhwIJwi+1aBgV/Y2K1Dpo5AZo6 tdQ== 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.
Gambar 23 Dialog box pemilihan ijazah.
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 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:
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
… <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 D 1 = 2 = (010) 2 D 0 = 6 = (110) 2 Selanjutnya, D 0 dan D 1 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 D 0 = 6 telah diketahui. Jika hanya share tersebut
yang diketahui lawan, peluang rahasia D diketahui sama dengan peluang lawan menebak nilai D 1 benar, yaitu 0.125. Peluang ini muncul karena kemungkinan nilai D 1 adalah 0, 1, 2, 3, 4, 5, 6, 7. Jika p = 3 pada kelompok kedua diketahui, peluang akan menjadi 0.333, karena nilai D 1 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) = a 0 + a 1 x 0 = a0 + a1 * 1 Nilai a 0 dan a1 yang mungkin adalah 0, 1, dan 2. Kemungkinan nilai a 0 dan a 1 yang benar adalah: • 0 = (0 + 0 * 1) mod 3 • 0 = (1 + 2 * 1) mod 3 • 0 = (2 + 1 * 1) mod 3 Dapat dilihat dari persamaan-persamaan di atas bahwa nilai a 0 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 ) 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. 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
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 K1 < k1 K2 < k2 K1 = k1 K2 < k2 K1 > k1 K2 < k2 K1 < k1 K2 = k2 K1 = k1 K2 = k2 K1 > k1 K2 = k2 K1 < k1 K2 > k2 K1 = k1 K2 > k2 K1 > k1 K2 > k2
Status Share Benar semua Ada salah Redundan Benar semua Ada salah Redundan Benar semua Ada salah Redundan Benar semua Ada salah Redundan Benar semua Ada salah Redundan Benar semua Ada salah Redundan Benar semua Ada salah Redundan Benar semua Ada salah Redundan Benar semua Ada salah Redundan
Rahasia yang terbentuk 11 52 NaN 61 57 NaN 61 56 NaN 114 76 NaN 68 92 NaN 68 92 NaN 76 81 NaN 68 92 NaN 68 92 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.