Penerapan metode shamir secret sharing schemes pada aplikasi kriptografi file
PENERAPAN METODE SHAMIR SECRET SHARING
SCHEMES PADA APLIKASI KRIPTOGRAFI FILE
Skripsi
Sebagai Salah Satu Syarat untuk Memperoleh Gelar Sarjana Komputer
Fakultas Sains dan Teknologi
Universitas Islam Negeri Syarif Hidayatullah Jakarta
Oleh :
Tsuwaibatul Aslamiyah 106091002974
PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAM NEGERI SYARIF HIDAYATULLAH JAKARTA
(2)
PENERAPAN METODE SHAMIR SECRET SHARING
SCHEMES PADA APLIKASI KRIPTOGRAFI FILE
Skripsi
Sebagai Salah Satu Syarat untuk Memperoleh Gelar Sarjana Komputer
Fakultas Sains dan Teknologi
Universitas Islam Negeri Syarif Hidayatullah Jakarta
Oleh :
Tsuwaibatul Aslamiyah 106091002974
PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAM NEGERI SYARIF HIDAYATULLAH JAKARTA
(3)
PENGESAHAN UJIAN
Skripsi yang berjudul “Penerapan Metode Shamir Secret Sharing Schemes pada Aplikasi Kriptografi File” telah diuji dan dinyatakan lulus dalam sidang Munaqosyah Fakultas Sains dan Teknologi, Universitas Islam Negeri Syarif Hidayatullah Jakarta pada hari Jum’at tanggal 6 Mei 2011. Skripsi ini telah diterima sebagai salah satu syarat untuk memperoleh gelar Sarjana Strata Satu (S1) Program Studi Teknik Informatika.
Jakarta, 6 Mei 2011 Tim Penguji,
Tim Pembimbing,
Mengetahui, Penguji I
Viva Arifin, MMSI NIP. 19730810 200604 2 001
Penguji II
Arini, MT
NIP. 19760131 200901 2 001
Pembimbing I
Victor Amrizal, M.Kom NIP. 150 411 288
Pembimbing II
Herlino Nanang, MT, CCNA NIP. 19731209 200501 1 002
Dekan
Fakultas Sains Dan Teknologi
DR. Syopiansyah Jaya Putra, M.Sis NIP. 19680117 200112 1 001
Ketua Program Studi Teknik Informatika
Yusuf Durrachman M.Sc, M.I.T. NIP. 19710522 200604 1 002
(4)
PERNYATAAN
DENGAN INI SAYA MENYATAKAN BAHWA SKRIPSI INI BENAR-BENAR HASIL KARYA SENDIRI YANG BELUM PERNAH DIAJUKAN SEBAGAI SKRIPSI ATAU KARYA ILMIAH PADA PERGURUAN TINGGI ATAU LEMBAGA MANAPUN.
Jakarta, Mei 2011
Tsuwaibatul Aslamiyah
(5)
ABSTRAK
Tsuwaibatul Aslamiyah (106091002974), Penerapan Metode Shamir Secret Sharing Schemes Pada Apikasi Kriptografi File dibawah bimbingan Victor Amrizal, dan Herlino Nanang.
Secret sharing merupakan salah satu metode untuk mengamankan suatu rahasia dengan membagi atau mendistribusikan rahasia tersebut menjadi beberapa bagian yang disebut share, setiap bagian dari rahasia tersebut tidak memberikan informasi apa-apa mengenai rahasia yang dimaksud bila tidak digabungkan dengan bagian yang lainnya. Salah satu alasan adanyasecret sharingadalah perlindungan terhadap ancaman kehilangan kunci kriptografi. Semakin besar salinannya, semakin banyak resiko kehilangan dan semakin sedikit salinan kunci yang digunakan, maka semakin sedikit resiko kehilangannya. Skemasecret sharingmengatasi masalah ini tanpa meningkatkan jumlah resiko yang ditimbulkan. Secara umum skemasecret sharingdibagi menjadi tiga yakni menggunakan skemaThreshold, Prevention, dan Disenrollment. Skema secret sharing yang diterapkan pada aplikasi ini adalah Shamir secret sharing scheme atau disebut juga Shamir threshold scheme. Pada skemaThreshold, pesan dibagi menjadi n bagian lalu dikirim ke n pihak tetapi dalam megkonstruksi pesan hanya butuh t pihak yang nilainya kurang dari n. Aplikasi ini diharapkan dapat mengatasi masalah keamanan dan juga kepemilikan bersama terhadap suatu data rahasia. Dalam perancangan aplikasi ini, penulis menggunakan bahasa pemrograman C++ dan Rapid Application Development (RAD) sebagai metode pengembangan sistem. Untuk ke depannya, diharapkan aplikasi ini dapat dikembangkan lagi, seperti diimplementasikan jaringan client-server, menambah batasan jumlah file share yang dapat terbentuk pada proses enkripsi agar file share yang dihasilkan lebih dari 255 file, dan memperbaiki cara pengaksesan file-file share yang akan direkonstruksi agar dapat diakses dari direktori yang berbeda-beda dalam satu komputer.
Kata Kunci: Kriptografi, Shamir, Secret Sharing, Threshold, Rapid Application Development.
Jumlah Halaman : xvi+122 halaman
(6)
KATA PENGANTAR
Bismillaahirrahmaanirrahiim………
Segala Puji dan Syukur penulis panjatkan kepada Allah SWT atas segala karunia-Nya karena penulis dapat menyelesaikan penulisan Skripsi ini dengan Judul ”PENERAPAN METODE SHAMIR SECRET SHARING SCHEMES PADA APLIKASI KRIPTOGRAFI FILE” dengan baik. Shalawat serta salam penulis haturkan kepada Nabi Muhammad SAW, para sahabat dan keluarga beliau.
Setelah seluruh penulisan Skripsi ini terlaksana, penulis ingin mengucapkan banyak terimakasih kepada seluruh pihak yang telah membantu baik itu berupa motivasi, bimbingan, moril maupun materil, yang ditujukan kepada:
1. Bapak DR. Syopiansyah Jaya Putra, M.SIS, selaku Dekan Fakultas Sains dan Teknologi, UIN Syarif Hidayatullah Jakarta.
2. Bapak Yusuf Durrachman, M.Sc., M.I.T, selaku Ketua Program Studi Teknik Informatika, Fakultas Sains dan Teknologi, UIN Syarif Hidayatullah Jakarta.
3. Ibu Viva Arifin, MMSI., selaku Sekretaris Program Studi Teknik Informatika, Fakultas Sains dan Teknologi, Universitas Islam Negeri Syarif Hidayatullah Jakarta.
4. Bapak Victor Amrizal, M.Kom, Bapak Herlino Nanang, MT. CCNA., selaku dosen pembimbing yang selalu memberikan semangat, bimbingan,
(7)
Jakarta, Mei 2011
Tsuwaibatul Aslamiyah 106091002974
pengarahan dan membantu menyelesaikan penulisan skripsi ini. Serta bersedia meluangkan waktu dalam kesibukannya yang begitu padat.
5. Seluruh Dosen Program Studi Teknik Informatika yang tidak mungkin penulis sebutkan satu persatu.
6. Staff karyawan Fakultas Sains dan Teknologi dan Prodi Teknik Informatika.
Penulis sadar bahwa penyusunan skripsi ini masih jauh dari sempurna, oleh karena itu penyusun mengharapkan kritik dan saran yang bersifat membangun agar penyusunan skripsi ini menjadi lebih baik lagi.
Akhir kata, semoga skripsi ini bermanfaat khususnya kepada penulis sendiri dan bagi yang membacanya.
(8)
Teruntuk
Skripsi ini terkhusus penulis persembahkan kepada mereka yang telah mendukung, baik moril maupun materiil, baik melalui doa ataupun sua dalam menyelesaikan skripsi ini.
1. Teruntuk Ummi tercinta, Sulastri dan Apak tercinta, Zaenal Abidin, S.Sos. Semoga Allah SWT selalu melimpahkan rahmat, rahim dan ampunan-Nya kepada mereka. Amin.
2. Teruntuk adik dan kakakku, Mahda dah Teh Itsna yang telah dengan sabar merawat penulis saat penulis sakit di tengah pengerjaan skripsi ini.
3. Teruntuk abangku tersayang, Zulfikar Harun Pohan yang senantiasa memberikan motivasi, semangat dan perhatian yang tak henti kepada penulis. 4. Teruntuk teman-teman satu perjuangan, Atiyah Tahta Nisyatina, Nur Khaifah,
Shelvy Arini, Ratna Sri Wulandari, Zulfa Laily Jufri, Noviyanah Farhanah, Zakiyah Yahya. Terima kasih atas segala bantuan dan semangatnya.
5. Teman-teman seperjuangan TI UIN 2006. Terima kasih untuk waktu, ilmu, dan semua kenangan terindahnya.
6. Dan seluruh pihak yang telah membantu penulis, baik langsung maupun tidak langsung dalam menyelesaikan skripsi ini.
(9)
DAFTAR ISI
Halaman
Halaman Judul... ii
Lembar Pengesahan Ujian ... iii
Lembar Pernyataan ... iv
Abstrak ... v
Kata Pengantar ... vi
Lembar Persembahan... viii
Daftar Isi ... ix
Daftar Gambar ... xiii
Daftar Tabel ... xvi
BAB I PENDAHULUAN ... 1
1.1. Latar Belakang ... 1
1.2. Perumusan Masalah... 3
1.3. Pembatasan Masalah ... 3
1.4. Tujuan Penelitian ... 5
1.5. Manfaat Penelitian ... 5
1.5.1. Bagi Pengguna ... 5
1.5.2. Bagi Penulis ... 6
1.5.3. Bagi Universitas Islam Negeri Syarif Hidayatullah... 6
1.6. Metodologi Penelitian ... 6
(10)
1.6.2. Metode Pengembangan Sistem... 7
1.7. Sistematika Penulisan... 8
BAB II LANDASAN TEORI... 10
2.1. Aplikasi... 10
2.2. Keamanan Data ... 10
2.3. Aspek-aspek Keamanan Data ... 12
2.4. Enkripsi dan Dekripsi... 13
2.5. Kriptografi ... 14
2.5.1. Sejarah Kriptografi... 15
2.5.2. Tujuan Kriptografi ... 18
2.5.3. Algoritma Kriptografi ... 19
2.5.4. Macam-macam Algoritma Kriptografi... 20
2.5.5. Kriptografi Klasik ... 25
2.5.6. Kriptografi Modern ... 26
2.5.7. Stream Chiper ...27
2.6. Secret Sharing Schemes... 30
2.7. Shamir Secret Sharing Schemes... 34
2.7.1. Kelebihan Shamir Secret Sharing Schemes... 37
2.7.2. Kekurangan Shamir Secret Sharing Schemes... 38
2.8. Konsep RAD (Rapid Application Development)... 39
2.9. UML (Unified Modelling Language) ... 43
(11)
2.9.2. UML Diagram ... 44
2.10. QT SDK v.2010.05 Open Source Edition... 48
2.10.1. Pengenalan QT ... 48
2.10.2. Sejarah QT ... 50
BAB III METODOLOGI PENELITIAN... 56
3.1. Metode Pengumpulan Data... 56
3.1.1. Studi Pustaka ... 56
3.1.2. Studi Literatur... 57
3.2. Metode Pengembangan Sistem ... 59
3.2.1. Fase Perencanaan Syarat-syarat... 60
3.2.2. Fase Perancangan... 60
3.2.3. Fase Konstruksi... 61
3.2.4. Fase Pelaksanaan ... 61
BAB IV ANALISIS DAN PERANCANGAN... 64
4.1. Fase Perancangan Syarat-syarat... 64
4.2. Fase Perancangan ... 67
4.2.1. Use Case Diagram... 67
4.2.2. Use Case Scenario... 68
4.2.3. Actifity Diagram ... 70
4.2.4. Sequence Diagram ... 75
(12)
4.2.6. Design Antarmuka (Interface) ... 85
4.2.7. Penerapan Algoritma... 86
4.3. Fase Konstruksi... 97
4.4. Fase Pelaksanaan... 97
4.4.1. Spesifikasi Computer...98
4.4.2. Pengujian Tampilan ... 99
4.4.3. PengujianBlackbox... 105
4.4.4. Pengujian Aplikasi FileSecretSharing... 106
4.4.5. Pengujian Dengan Brute-Force... 110
4.4.6. Pengujian Lapangan ... 116
BAB V KESIMPULAN DAN SARAN... 118
5.1. Kesimpulan ... 118
5.2. Saran... 119
DAFTAR PUSTAKA... 120 LAMPIRAN -LAMPIRAN
(13)
DAFTAR GAMBAR
Halaman
Gambar 2.1 Hubungan Kriptografi dan Kriptanalis ... 15
Gambar 2.2 Proses enkripsi-dekripsi algoritma Kunci Simetris ... 21
Gambar 2.3 Proses enkripsi-dekripsi algoritma Kunci Asimetris...23
Gambar 2.4 Konsep stream cipher... 29
Gambar 2.5 Proses dari Secret Sharing ... 31
Gambar 2.6 Rapid Application Development (RAD) Model ... 40
Gambar 2.7 ContohUse Case Diagram Model... 45
Gambar 3.1 Kerangka Berpikir ... 63
Gambar 4.1 Flowchartsistem usulan untuk Share A Secret ... 65
Gambar 4.2 Flowchartsistem usulan untuk Combine Share... 66
Gambar 4.3 Usecase Diagram untuk Aplikasi File Secret Sharing ... 67
Gambar 4.4 Activity DiagramMain Menu ... 71
Gambar 4.5 Activity Diagram Share A Secret ... 72
Gambar 4.6 Activity Diagram Combine Shares ...73
Gambar 4.7 Activity Diagram About... 74
Gambar 4.8 Sequence Diagram Main Menu... 75
Gambar 4.9 Sequence Diagramuntuk Share A Secret... 76
Gambar 4.10 Sequence Diagram untuk Combine Shares... 78
Gambar 4.11 Sequence Diagram untuk User Account...79
(14)
Gambar 4.13 Halaman Menu ... 85
Gambar 4.14 Halaman Share A Secret ... 85
Gambar 4.15 Halaman Combine Share ... 86
Gambar 4.16 Halaman About... 86
Gambar 4.17 Flow ChartAlgoritma ShareByte ... 88
Gambar 4.18 Flow ChartAlgoritma Proses Share... 91
Gambar 4.19 Flow ChartAlgoritma ReconstructByte... 93
Gambar 4.20 Flow ChartAlgoritma Proses Reconstruction ... 96
Gambar 4.21 Interface Form Main Menu... 99
Gambar 4.22 Interface Form Share A Secret...100
Gambar 4.23 Gambar Tampilan file share yang dihasilkan...101
Gambar 4.24 Isi dari File Key.txt (file secret) ... 101
Gambar 4.25 Isi dari salah satu file shareyang dihasilkan (test001.shr) ... 102
Gambar 4.26Interface Form Combine Share ... 102
Gambar 4.27 Gambar Tampilan file secret yang dihasilkan melalui proses Rekonstruksi ... 103
Gambar 4.28 Gambar Tampilan isi dari file Secret (data awal) dan File Hasil Rekonstruksi ... 103
Gambar 4.29Interface Form About ... 104
Gambar 4.30Interface Message Box Sharing Complete... 104
Gambar 4.31Interface Message Box Reconstruction Complete... 105
Gambar 4.32 Informasi file sebelum file sharedibentuk ... 107
(15)
Gambar 4.34 Informasi file yang terbentuk melalui proses rekonstruksi... 109
Gambar 4.35 Isi file test001.shr ... 110
Gambar 4.36 Pengujian brute-force terhadap file test001.shr... 111
Gambar 4.37 Isi file aplikasi002.shr... 111
Gambar 4.38 Pengujian brute-force terhadap file aplikasi002.shr ... 112
Gambar 4.39 Isi file file003.shr... 112
Gambar 4.40 Pengujian brute-force terhadap file file003.shr... 113
Gambar 4.41 Isi file secret004.shr... 113
Gambar 4.42 Pengujian brute-force terhadap file secret004.shr ... 114
Gambar 4.43 Isi file sharing005.shr ... 114
(16)
DAFTAR TABEL
Halaman
Tabel 3.1 Tabel Perbandingan Literatur Sejenis ... 57
Tabel 4.1 Tabel Usecase ScenarioMain Menu ... 68
Tabel 4.2 Tabel Usecase ScenarioShare A Secret ... 69
Tabel 4.3 Tabel Usecase ScenarioCombine Shares ... 69
Tabel 4.4 Tabel Usecase ScenarioAbout... 70
Tabel 4.5 Tabel Spesifikasi hardwareuntuk pengujian aplikasi ... 98
Tabel 4.6 Tabel Hasil pengujian terhadap aplikasi File Secret Sharing ... 106
Tabel 4.7 Tabel Ukuran dan waktu enkripsi...108
Tabel 4.8 Tabel Ukuran dan waktu dekripsi ... 109
Tabel 4.9 Penentuan Jumlah Sampel dari populasi tertentu dengan taraf kesalahan 1%, 5%, dan 10% ... 116
(17)
DAFTAR PUSTAKA
Amin, Ayatullah Arruhul. 2008. Penggunaan Skema Bagi Rahasia untuk Melakukan Pencarian pada Basis Data yang Terenkripsi. Institut Teknologi Bandung.
Anonim. 2000. What is Rapid Application Development. CASEMaker Totem. Anonim. 2006. Secret Sharing. CPT.
Ariyus, Dony. 2008. Pengantar Ilmu Kriptografi (Teori Analisis dan Implementasi).Yogyakarta : Andi.
Barata, Addie. 1998. Studi dan Implementasi Clustering Penerima Kunci dengan Metode Shamir Secret Sharing Advanced. Institut Teknologi Bandung. Blanchette, Jasmin dan Summerfield, Mark. 2008. C++ GUI Programming with
Qt 4, Second Edition. ISBN : Prentice Hall.
Budiyono, Rudi Cahyo. 2008. Contoh Soal-Pembahasan Threshold-Scheme Secret Sharing [pdf]. http://sandi.math.web.id/download/paper/kssandi-treshold_schemes.pdf[17 Maret 2011, 15.21 WIB].
Fowler, Martin. 2004. UML Distilled Third Edition. Pearson Education.
Hariyanto, Bambang. 2004. Rekayasa Sistem Berorientasi Objek. Bandung: Informatika.
Kendall, Kenneth E. dan Kendall, Julie E. 2003. Analisis dan Perancangan Sistem. Jakarta: Pearson Education Asia Pte. Ltd dan PT. Prenhallindo. Menezes, Alfred J., Paul C van Oorschot, dan Scott A. Vanstone. 1996. Handbook
(18)
Munir, Rinaldi. 2006. Kriptografi. Bandung: Informatika.
Muttaqin, Zaenal. 2010. Pembuatan Aplikasi Enkripsi menggunakan Metode Advance Encryption Standard & Rivest Shamir Adleman (Studi Kasus CV Maharta Mandiri Promo). Universitas Islam Negeri Syarif Hidayatullah Jakarta. Skripsi tidak diterbitkan.
Nugroho, Adi. 2005. Rational Rose untuk Pemodelan Berorientasi Objek. Bandung: Informatika.
Paar, Christof dan Pelzl, Jan. 2010. Understanding Cryptography. New York: Springer.
Pusat Bahasa Departemen Pendidikan Nasional. Kamus Pusat Bahasa Indonesia [Online]. http://pusatbahasa.diknas.go.id/kbbi [06 Februari 2011, 04.15 WIB].
Putri, Heti Rahmawati. 2008. Perbandingan Beberapa Skema Pembagian Rahasia dan Implementasi Skema Pembagian Rahasia Brickell. Institut Teknologi Bandung.
QT Nokia. QT Reference Documentation [Online]. http://doc.qt.nokia.com [29 Maret 2011, 22.30 WIB]
Schneier, Bruce. 1996.Applied Cryptography, Second Edition: Protocols, Algorthms, and Source Code in C (cloth), John Wiley & Sons.
Shamir, A. 1979. How to Share a Secret, Communications of the ACM, vol.22, no.11, 612-613.
(19)
Sutana, Yessy. 2005. Perancangan Aplikasi Enkripsi-Dekripsi Gambar Menggunakan Visual Secret Sharing Schemes. Universitas Bina Nusantara.
Whitten, Jeffrey L., Lonnie D Bentley, dan Kevin C Dittman. 2001. Systems Analysis And Design Methods 5thEdition. New York : McGrow Hill. Winkler, Tim. 2004. Sharing Secrets Via Teleportation [Online].
http://info.anu.edu.au/ovc/media/Media_Releases/2004/May/070504Secret [01 Maret 2011, 07.43 WIB].
(20)
LAMPIRAN-LAMPIRAN
1. LAMPIRAN A : HASIL WAWANCARA
2. LAMPIRAN B : HASIL PENGUJIAN LAPANGAN
3. LAMPIRAN C : SOURCE CODE
(21)
LAMPIRAN A
HASIL WAWANCARA
(22)
WAWANCARA
Hari/Tanggal : Jum’at, 13 Mei 2011
Narasumber : Bapak Ahmad Hardilani, SS. S.Hum, MT
Jabatan : Kepala PINTAR (Pusat Informasi Teknologi dan Komunikasi Gerakan Pramuka)
Penulis : Apa yang dapat dilakukan untuk mengamankan data ataupun file yang dianggap rahasia ?
Narasumber : Biasanya dengan memberikan password ataupun mengenkripsi data tersebut.
Penulis : Menurut bapak, apakah dengan memberikan password pada data tersebut sudah cukup aman untuk mengamankan data-data penting?
Narasumber : Tidak juga, karena belakangan ini telah banyak beredar aplikasi-aplikasi yang dapat memecah sandi dari password ataupun kunci kriptografi, dengan menggunakan aplikasi tersebut akan membantu orang-orang yang tidak memiliki hak akses untuk membuka isi data tanpa harus mengetahui password ataupun kunci yang menjaga data tersebut. .
(23)
Penulis : Apakah kendala yang biasa dihadapi jika melakukan pengamanan data dengan menggunakan password ataupun dengan enkripsi yang menggunakan kunci kriptografi?
Narasumber : Kendala yang biasa dihadapi adalah ketika pemilik data lupa akan password atau kunci yang menjaga datanya.
Penulis : Menurut bapak, apakah diperlukan sebuah metode baru untuk mengamankan sebuah data rahasia? Mengapa?
Narasumber : Iya diperlukan, karena algoritma-algoritma enkripsi yang umum telah banyak beredar di media internet, sehingga algoritma tersebut dapat dengan mudah dipecahkan oleh pihak yang memang mempunyai kemampuan untuk menganalisa algoritma tersebut.
Penulis : Apakah aplikasi keamanan data yang tidak menggunakan kunci ataupun password untuk proses pengamanannya dibutuhkan saat ini? Mengapa?
Narasumber : Iya dibutuhkan, karena aplikasi semacam ini tidak mempersulit penggunanya untuk menghafal baris password ataupun kunci yang suatu saat dapat terlupa. Jadi, siapapun pihak yang menggunakannya akan mendapat kemudahan dalam mengamankan data rahasia meraka.
(24)
Penulis : Menurut bapak, jika terdapat suatu data rahasia yang dimiliki sekelompok pihak, apa yang dapat dilakukan dengan data tersebut?
Narasumber : Biasanya data tersebut cukup dipegang oleh satu orang atau bisa juga masing-masing pihak dari kelompok tersebut akan mempunyai minimal satu data rahasia ataupun kunci untuk membuka data tersebut.
Penulis : Apa resiko yang dapat terjadi jika data rahasia milik bersama tersebut dipegang oleh satu orang atau masing-masing pihak dari kelompok tersebut memiliki data tersebut?
Narasumber : Kemungkinan orang yang memegang data tersebut bisa dengan bebas membuka atau menyebarluaskan data tersebut tanpa memerlukan izin dari yang lain, dengan kata lain data tersebut seakan-akan bukan menjadi milik bersama akan tetapi menjadi milik pribadi masing-masing pemegangnya.
Penulis : Apakah aplikasi untuk menjaga keamanan data rahasia milik bersama diperlukan saat ini? Mengapa?
Narasumber : Iya diperlukan, karena sering terjadi pengklaiman data yang sebenarnya data tersebut milik sekelompok pihak namun dapat diklaim menjadi milik pribadi ataupun segelintir orang.
(25)
.
LAMPIRAN B
(26)
HASIL PENGUJIAN LAPANGAN
1. Apakah aplikasi ini mudah dijalankan (User Friendly) ?
Jawaban Responden Jumlah Penjawab (Orang)
Persentase (%)
Mudah 10 15.4%
Cukup Mudah 43 66.1%
Kurang Mudah 12 18.5%
0.00% 20.00% 40.00% 60.00% 80.00%
Mudah Cukup
Kurang 15.4%
66.1%
18.50%
User Friendly
Mudah
Cukup
Kurang
Berdasarkan hasil pengujian dapat diketahui bahwa aplikasi ini cukup mudah untuk dijalankan bagi user. Hal ini berarti aplikasi yang di buat telah memenuhi kriteria user friendly.
2. Menurut anda, apakah aplikasi ini telah cukup baik dalam menjawab permasalahan mengenai keamanan ataupun kepemilikan bersama pada suatu data rahasia?
(27)
Jawaban Responden Jumlah Penjawab (Orang)
Persentase (%)
Baik 8 12.3%
Cukup Baik 39 60%
Kurang Baik 18 27.7%
0.00% 20.00% 40.00% 60.00%
Baik Cukup
Kurang 12.30%
67.70%
27.70%
Menjawab Permasalahan
Baik
Cukup
Kurang
Berdasarkan hasil pengujian dapat diketahui bahwa aplikasi ini cukup baik dalam menjawab permasalahan mengenai keamanan ataupun kepemilikan bersama pada suatu data rahasia.
3. Menurut anda bila dilihat dari segi pemilihan warna Layout, jenis, maupun ukuran Font, bagaimana tampilan aplikasi ini secara keseluruhan?
Jawaban Responden Jumlah Penjawab (Orang)
Persentase (%)
Bagus 32 49.2%
Cukup Bagus 28 43.1%
(28)
0.00% 20.00% 40.00% 60.00%
Bagus Cukup
Kurang 49.20%
43.1%
7.70%
Kesesuaian Tampilan
Bagus
Cukup
Kurang
Berdasarkan hasil pengujian dapat diketahui bahwa pemilihan warna Layout, jenis, maupun ukuran Font, serta tampilan aplikasi ini secara keseluruhan adalah bagus.
4. Apakah fitur yang terdapat dalam aplikasi ini sudah sesuai dengan kebutuhan anda?
Jawaban Responden Jumlah Penjawab (Orang)
Persentase (%)
Sesuai 25 38.5%
Cukup Sesuai 27 41.5%
(29)
0.00% 10.00% 20.00% 30.00% 40.00% 50.00%
Sesuai Cukup
Kurang 38.50% 41.5%
20.00%
Kebutuhan
User
Sesuai
Cukup
Kurang
Berdasarkan hasil pengujian dapat diketahui bahwa aplikasi ini sudah cukup sesuai dengan kebutuhan user.
5. Apa pendapat anda setelah melihat aplikasi ini secara keseluruhan?
Jawaban Responden Jumlah Penjawab (Orang)
Persentase (%)
Baik 14 21.5%
Cukup Baik 40 61.5%
Kurang Baik 11 17%
0.00% 20.00% 40.00% 60.00% 80.00%
Baik Cukup
Kurang 21.50%
61.5%
17.00%
Keseluruhan Aplikasi
Baik
Cukup
Kurang
(30)
Berdasarkan hasil pengujian dapat diketahui bahwa aplikasi ini secara keseluruhan cukup baik.
6. Apakah aplikasi ini dapat membantu anda untuk mengamankan data rahasia anda?
Jawaban Responden Jumlah Penjawab (Orang)
Persentase (%)
Bisa 25 38.5%
Cukup Bisa 21 32.3%
Kurang Bisa 19 29.2%
0.00% 10.00% 20.00% 30.00% 40.00%
Bisa
Cukup Kurang 38.50%
32.3% 29.20%
Pengamanan Data
Bisa
Cukup
Kurang
Berdasarkan hasil pengujian dapat diketahui bahwa aplikasi ini dapat membantu untuk mengamankan data yang bersifat rahasia.
7. Menurut anda, apakah aplikasi ini bila dikembangkan akan lebih membantu anda?
(31)
Jawaban Responden Jumlah Penjawab (Orang)
Persentase (%)
Bisa 36 55.4%
Cukup Bisa 23 35.4%
Kurang Bisa 6 9.2%
0.00% 20.00% 40.00% 60.00%
Bisa
Cukup Kurang 55.40%
35.4% 9.20%
Pengembangan Aplikasi
Bisa
Cukup
Kurang
Berdasarkan hasil pengujian dapat diketahui bahwa aplikasi ini bila dikembangkan akan bisa membantu user.
(32)
LAMPIRAN C
SOURCE CODE
(33)
Source Code User filesecretsharing.cpp #include "filesecretsharing.h" #include "ui_filesecretsharing.h" #include "shareform.h" #include "reconstructform.h" #include "about.h" FileSecretSharing::FileSecretS haring(QWidget *parent) : QDialog(parent), ui(new
Ui::FileSecretSharing) {
ui->setupUi(this); ui->psbtShareForm->setToolTip("Menu ini
digunakan untuk membuat share \ndari sebuah file yang akan dirahasiakan");
ui->psbtReconForm->setToolTip("Menu ini
digunakan untuk membangun file rahasia \ndari beberapa share yang telah dibuat
sebelumnya"); } void FileSecretSharing::on_psbtShar eForm_clicked() { FileSecretSharing::hide(); ShareForm * sh = new
ShareForm(); sh->activateWindow(); sh->raise(); sh->repaint(); sh->show(); } void FileSecretSharing::on_psbtReco nForm_clicked() { FileSecretSharing::hide(); ReconstructForm * rc = new
ReconstructForm(); rc->activateWindow(); rc->raise(); rc->repaint(); rc->show(); } void FileSecretSharing::on_psbtAbou {
About * abt = new
About(); abt->activateWindow(); abt->raise(); abt->repaint(); abt->show(); } FileSecretSharing::~FileSecret Sharing() { delete ui; } filesecretsharing.h #ifndef FILESECRETSHARING_H #define FILESECRETSHARING_H #include <QDialog>
namespace Ui {
class FileSecretSharing;
}
class FileSecretSharing :
public QDialog { Q_OBJECT public: explicit FileSecretSharing(QWidget
*parent = 0);
~FileSecretSharing();
private:
Ui::FileSecretSharing *ui;
private slots:
void on_psbtAbout_clicked(); void on_psbtShareForm_clicked(); void on_psbtReconForm_clicked(); };
#endif // FILESECRETSHARING_H
ShareForm.cpp #include "shareform.h" #include "ui_shareform.h" #include "filesecretsharing.h" ShareForm::ShareForm(QWidget *parent) :
(34)
ui(new Ui::ShareForm) {
ui->setupUi(this); if (ui->rb_Default->isChecked())
{
ui->groupBox_4->setEnabled(false); }
if (ui->rb_Create->isChecked())
{
ui->groupBox_4->setEnabled(true); }
ui->spinBox_k1->setMinimum(1); ui->spinBox_n->setMinimum(1); ui->spinBox_k1->setMaximum(255); ui->spinBox_n->setMaximum(255);
QObject ::connect(ui->psbt_Reset1,
SIGNAL(clicked()),SLOT(slotRes
et()));
QObject ::connect(ui->psbt_Share,
SIGNAL(clicked()),SLOT(slotSha
re()));
QObject ::connect(ui->psbt_Browse1,
SIGNAL(clicked()),SLOT(slotInp
utFile()));
QObject ::connect(ui->psbt_Open,
SIGNAL(clicked()),SLOT(slotOut
putShare()));
QObject ::connect(ui->psbt_Add1,
SIGNAL(clicked()),SLOT(addItem
()));
QObject ::connect(ui->psbt_Remove1,
SIGNAL(clicked()),SLOT(removeI
tem()));
QObject ::connect(ui->rb_Create,
SIGNAL(clicked()),SLOT(choose(
)));
QObject ::connect(ui->rb_Default,
SIGNAL(clicked()),SLOT(choose(
))); } void ShareForm::slotShare() { if(InputFile.isEmpty()){
QMessageBox::information(this,
"Warning",tr("Select File Secret...")); return; } else if(OutputShare.isEmpty()){
QMessageBox::information(this,
"Warning",tr("Select Output Directory...")); return; } clock_t start; start=clock(); //Share code QFileInfo info(InputFile); QString ext =
info.suffix();
int k = ui->spinBox_k1->value();
int n = ui->spinBox_n->value();
int lb = ui->lw_Item->count(); if (ui->rb_Create->isChecked()) { if(n>lb){
QMessageBox::information(this,
"Info",tr("Please add more share to listbox...")); return; }
else if (n<lb){
QMessageBox::information(this,
"Info",tr("Please remove some share from listbox...")); return; } } QFile file; file.setFileName(InputFile); if
(!file.open(QIODevice::ReadOnl y)){
(35)
"Critical",tr("Can't open file for read"));
return; }
QString ShareName; QFile share[n];
float p=100/n;
float p2=0;
for( int i=0; i<n; i++ ) {
QString tmp =
QString::number(i+1, 10); if (ui->rb_Default->isChecked())
{
ShareName = OutputShare+"/"+ext; }
else if (ui->rb_Create->isChecked())
{
ShareName = OutputShare+"/" +ui->lw_Item->item(i)->text();
}
if (i+1<10)
tmp = "00" + tmp +
".shr";
else if (i+1<100) tmp = "0" + tmp +".shr";
else
tmp = tmp +
".shr"; ShareName=ShareName+tmp; share[i].setFileName(ShareName ); if (share[i].exists() ) {
QMessageBox::information(this,
"Critical",tr("A file with this name already exists, please choose another
directory or create a new name of share..."));
return; }
if
(!share[i].open(QIODevice::Wri teOnly)){
QMessageBox::information(this,
"Critical",tr("Can't open file for read"));
return; } p2=p2+p; ui->progressBar->setValue(p2); } char c; while(!file.atEnd()) { file.read( &c
,sizeof(c));
unsigned char temp1=c; ShareByte ShareObject(temp1,k,n); ShareObject.CountShares(); for( int i=0; i < n; i++ )
{
char
temp2=ShareObject.GetQ(i);
share[i].write( &temp2 ,
sizeof(temp2)); //share[i].flush(); } } file.close();
for( int i=0; i < n; i++ )
share[i].close(); clock_t end;
end=clock(); ui->progressBar->setValue(100);
QMessageBox::information(this,
"Complete",tr("Sharing Complete..."));
//msgBox.setText("Sharing Complete.");
//msgBox.exec();
ui->progressBar->setValue(0);
}
void
ShareForm::slotInputFile() {
InputFile =
QFileDialog::getOpenFileName(t his, tr("Open File"),
(36)
"/",
tr(" file (*.*)"));
ui->led_InputFile->setText(InputFile); } void ShareForm::slotOutputShare() { OutputShare = QFileDialog::getExistingDirect ory(this, tr("Open
Directory"), "/", QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlin ks); ui->led_OutputShare->setText(OutputShare); } void ShareForm::addItem() {
if( ui->led_Item->text().length() > 0 ) { ui->lw_Item->addItem(ui->led_Item->text() ); ui->led_Item->clear(); } ui->led_Item->setFocus(); } void ShareForm::removeItem() { ui->lw_Item->takeItem( ui->lw_Item->row(ui->lw_Item->currentItem()) ); } void ShareForm::choose() { if (ui->rb_Default->isChecked()) { ui->groupBox_4->setEnabled(false); }
if (ui->rb_Create->isChecked())
{
ui->groupBox_4->setEnabled(true);
} } void ShareForm::slotReset() { InputFile.clear(); OutputShare.clear(); ui->spinBox_k1->setValue(1);
ui->spinBox_n->setValue(1);
ui->led_InputFile->clear(); ui->led_OutputShare->clear(); } void ShareForm::on_psbt_Menu1_click ed() { ShareForm::hide();
FileSecretSharing * fss =
new FileSecretSharing(); fss->activateWindow(); fss->raise(); fss->repaint(); fss->show(); } ShareForm::~ShareForm() { delete ui; } ShareForm.h #ifndef SHAREFORM_H #define SHAREFORM_H #include <QDialog> #include <QtGui> #include <ctime> #include "ShareByte.h"
namespace Ui {
class ShareForm;
}
class ShareForm : public
QDialog
{
Q_OBJECT
public:
explicit ShareForm(QWidget
*parent = 0); ~ShareForm();
public:
QString InputFile; QString OutputShare;
(37)
Ui::ShareForm *ui;
private slots:
void slotReset (); void slotShare (); void slotOutputShare (); void slotInputFile (); void on_psbt_Menu1_clicked (); void addItem (); void removeItem (); void choose (); };
#endif // SHAREFORM_H
ReconstructForm.cpp #include "reconstructform.h" #include "ui_reconstructform.h" #include "filesecretsharing.h" ReconstructForm::ReconstructFo rm(QWidget *parent) :
QDialog(parent), ui(new
Ui::ReconstructForm) {
ui->setupUi(this); ui->spinBox_k2->setMinimum(1); ui->spinBox_k2->setMaximum(255);
QObject ::connect(ui->psbt_Reset2,
SIGNAL(clicked()),SLOT(slotRes
et()));
QObject ::connect(ui->psbt_Save,
SIGNAL(clicked()),SLOT(slotOut
putFile()));
QObject ::connect(ui->psbt_Add,
SIGNAL(clicked()),SLOT(slotInp
utShare()));
QObject ::connect(ui->psbt_Reconstruct,
SIGNAL(clicked()),SLOT(slotRec
onstruct())); void ReconstructForm::slotReconstru ct() { if(InputShare.isEmpty()){
QMessageBox::information(this,
"Warrning",tr("Select files share to reconstruct secret... ")); return; } else if(OutputFile.isEmpty()){
QMessageBox::information(this,
"Warrning",tr("Create File name..."));
return; }
//Reconstruct code
int k2 = ui->spinBox_k2->value();
int k =
InputShare.count();
unsigned char * num = new
unsigned char[k];
unsigned char * C = new
unsigned char[k];
int i=0;
if(k2>k || k2<k){
QMessageBox::information(this,
"Info",tr("Number of shares input must match with the configuration options...")); return;
}
foreach(QString
path,InputShare){ int tmp = path.count(); QString
tmp2=path.mid(tmp-7,3); bool ok;
num[i] = tmp2.toInt(&ok,10); i++; } QFile rfile; rfile.setFileName(OutputFile); if
(!rfile.open(QIODevice::WriteO nly)){
(38)
QMessageBox::information(this,
"Critical",tr("Can't open file for write"));
return; }
QFile rshare[k]; i=0;
foreach(QString
path,InputShare){
rshare[i].setFileName(path);
if(!rshare[i].open(QIODevice:: ReadOnly)){
QMessageBox::information(this,
"Critical",tr("Can't open file % for read"));
return; }
i++; }
for(int p = 0; p<=100; p++)
{
ui->progressBar->setValue(p);
char temp3;
unsigned char temp4;
rshare[0].seek(0);
while(!rshare[0].atEnd()){
for( int i=0; i < k; i++ ){
rshare[i].read(&temp3,sizeof(t emp3)); temp4=temp3; C[i]=temp4; } ReconstructByte ReconstructObject(num,C,k); unsigned char temp = ReconstructObject.ReconstructS ecret();
char temp5=temp;
rfile.write(&temp5,sizeof(temp 5));
//rfile.flush();
}
rfile.close();
for( int i=0; i < k; i++ )
rshare[i].close(); }
QMessageBox::information(this,
"Complete",tr("Reconstruction Complete...")); //msgBox.setText("Reconstructi on Complete."); //msgBox.exec(); ui->progressBar->setValue(0);
} void ReconstructForm::slotInputShar e() { ui->ted_Reconstruct->clear(); InputShare = QFileDialog::getOpenFileNames( this,
"Select one or more files using Ctrl key to open files",
"/",
" files (*.shr)");
foreach(QString
path,InputShare){
QFileInfo fi(path); QString name = fi.fileName();
ui->ted_Reconstruct->insertPlainText(name + "\n"); } } void ReconstructForm::slotOutputFil e() { OutputFile =
QFileDialog::getSaveFileName(t his, tr("Save File"),
"/",
tr(" File (*.*)"));
ui->led_OutputFile->setText(OutputFile); } void ReconstructForm::slotReset() { InputShare.clear(); OutputFile.clear();
(39)
ui->spinBox_k2->setValue(1);
ui->ted_Reconstruct->clear(); ui->led_OutputFile->clear(); } void ReconstructForm::on_psbt_Menu2 _clicked() { ReconstructForm::hide(); FileSecretSharing * fss =
new FileSecretSharing(); fss->activateWindow(); fss->raise(); fss->repaint(); fss->show(); } ReconstructForm::~ReconstructF orm() { delete ui; } ReconstructForm.h #ifndef RECONSTRUCTFORM_H #define RECONSTRUCTFORM_H #include <QDialog> #include <QtGui> #include <ctime> #include "ReconstructByte.h"
namespace Ui {
class ReconstructForm;
}
class ReconstructForm : public
QDialog { Q_OBJECT public: explicit ReconstructForm(QWidget
*parent = 0);
~ReconstructForm();
public:
QStringList InputShare; QString OutputFile;
private:
Ui::ReconstructForm *ui;
private slots:
void slotReset (); void slotReconstruct (); void slotInputShare (); void slotOutputFile (); void on_psbt_Menu2_clicked(); };
#endif // RECONSTRUCTFORM_H
ShareByte.cpp
#include "ShareByte.h"
#include <cstdlib>
ShareByte::ShareByte( unsigned char Byte, unsigned char K,
unsigned char N )
{
n = N; k = K; B = Byte; p = 257;
a = new unsigned short
[k];
Q = new unsigned char [n];
}
ShareByte::~ShareByte() {
delete [] a; delete [] Q; }
void
ShareByte::GenerateCoefficient s()
{
a[0] = B;
for ( unsigned char i = 1;
i < k; i++ )
a[i] = rand() % (p+1); } void ShareByte::CountShares() { l: GenerateCoefficients() ;
for( int x=1; x<=n; x++ ){
temp = a[k-1]; for( int i=k-1; i>0; i-- )
temp = (a[i-1] + (x * temp) % p ) % p; // Q(x) = a[i-1] + xQ(x)
if (temp > 255) goto l; // Generate
(40)
Q[x-1]=temp; // Q(x=1) =
} }
unsigned char
ShareByte::GetQ(int i ) { return Q[i]; } ShareByte.h #ifndef _Share_Byte_ #define _Share_Byte_
class ShareByte {
unsigned char B; // secret byte
unsigned char k,n; // scheme (k,n)
unsigned char * Q; // byte array
unsigned short * a; //
unsigned short p; // prime number
unsigned short temp; // temporary
public:
ShareByte( unsigned char
Byte, unsigned char K,
unsigned char N );
~ShareByte(); void
GenerateCoefficients();
// will be private
void CountShares();
unsigned char GetQ(int );
}; #endif
ReconstructByte.cpp
#include "ReconstructByte.h"
ReconstructByte::ReconstructBy
te(unsigned char * num,
unsigned char * C, unsigned
char K )
{
k = K;
S = 0; p = 257; x = num; Y = C; }
int ReconstructByte::sub(int
a, int b) {
if ( a-b > 0) return a-b; else
return p + a - b ; }
int ReconstructByte::inv(int
a) {
long d, x, y; extended_euclid(a, p, &x, &y, &d);
return (x > 0)? x : p+x;
}
void
ReconstructByte::extended_eucl id(long a, long b, long *x,
long *y, long *d)
/* calculates a * *x + b * *y = gcd(a, b) = *d */
{
long q, r, x1, x2, y1, y2;
x2 = 1, x1 = 0, y2 = 0, y1 = 1;
while (b > 0) {
q = a / b, r = a - q * b;
*x = x2 - q * x1, *y = y2 - q * y1;
a = b, b = r; x2 = x1, x1 = *x, y2 = y1, y1 = *y;
}
*d = a, *x = x2, *y = y2; } unsigned char ReconstructByte::ReconstructSe cret( ) { long temp1,temp2;
for( int i=0 ; i < k ; i++ ){
P = 1;
for( int j=0 ; j < k ; j++ )
if ( j != i ){
temp1 = x[j] *
inv(sub(x[j],x[i])) % p; //
x[j] / (x[j]-x[i])
P = P*temp1 % p;
}else
continue; temp2 = Y[i]*P % p ;
S=( S + temp2) % p;
(41)
}
return (unsigned char)S;
}
ReconstructByte.h
#ifndef _Reconstruct_Byte_ #define _Reconstruct_Byte_
class ReconstructByte {
long S; // secret
unsigned char k; // threshold scheme
unsigned short p;
// prime number
long P; // Temporary variable
unsigned char * x;
unsigned char * Y;
public:
ReconstructByte
(unsigned char * x, unsigned
char * Y, unsigned char K);
void
extended_euclid(long a, long
b, long * x, long * y, long * d);
int sub(int a, int b );
int inv(int a ); unsigned char
ReconstructSecret(); };
(42)
LAMPIRAN D
QUESTIONER
(43)
PENGUJIAN LAPANGAN
Nama :
1. Menurut anda, apakah aplikasi ini mudah dijalankan (user friendly) ? a. Mudah
b. Cukup Mudah c. Kurang Mudah
2. Menurut anda, apakah aplikasi ini telah cukup baik dalam menjawab permasalahan mengenai keamanan ataupun kepemilikan bersama pada suatu data rahasia?
a. Baik b. Cukup Baik c. Kurang Baik
3. Menurut anda bila dilihat dari segi pemilihan warna Layout, jenis, maupun ukuran Font, bagaimana tampilan aplikasi ini secara keseluruhan?
a. Bagus b. Cukup Bagus c. Kurang Bagus
4. Apakah fitur yang terdapat dalam aplikasi ini sudah sesuai dengan kebutuhan anda?
(44)
b. Cukup Sesuai c. Kurang Sesuai
5. Apa pendapat anda setelah melihat aplikasi ini secara keseluruhan? a. Baik
b. Cukup Baik c. Kurang Baik
6. Apakah aplikasi ini dapat membantu anda untuk mengamankan data rahasia anda?
a. Bisa b. Cukup Bisa c. Kurang Bisa
7. Menurut anda, apakah aplikasi ini bila dikembangkan akan lebih membantu anda?
a. Bisa b. Cukup Bisa c. KurangBisa
(1)
ui->spinBox_k2->setValue(1);
ui->ted_Reconstruct->clear(); ui->led_OutputFile->clear(); } void ReconstructForm::on_psbt_Menu2 _clicked() { ReconstructForm::hide(); FileSecretSharing * fss = new FileSecretSharing(); fss->activateWindow(); fss->raise(); fss->repaint(); fss->show(); } ReconstructForm::~ReconstructF orm() { delete ui; } ReconstructForm.h #ifndef RECONSTRUCTFORM_H #define RECONSTRUCTFORM_H #include <QDialog> #include <QtGui> #include <ctime> #include "ReconstructByte.h" namespace Ui {
class ReconstructForm; }
class ReconstructForm : public QDialog { Q_OBJECT public: explicit ReconstructForm(QWidget *parent = 0);
~ReconstructForm(); public:
QStringList InputShare; QString OutputFile; private:
Ui::ReconstructForm *ui; private slots:
void slotReset (); void slotReconstruct (); void slotInputShare (); void slotOutputFile (); void on_psbt_Menu2_clicked(); };
#endif // RECONSTRUCTFORM_H
ShareByte.cpp
#include "ShareByte.h" #include <cstdlib>
ShareByte::ShareByte( unsigned char Byte, unsigned char K, unsigned char N )
{
n = N; k = K; B = Byte; p = 257;
a = new unsigned short [k];
Q = new unsigned char [n];
}
ShareByte::~ShareByte() {
delete [] a; delete [] Q; }
void
ShareByte::GenerateCoefficient s()
{
a[0] = B;
for ( unsigned char i = 1; i < k; i++ )
a[i] = rand() % (p+1); } void ShareByte::CountShares() { l: GenerateCoefficients() ;
for( int x=1; x<=n; x++ ){
temp = a[k-1]; for( int i=k-1; i>0; i-- )
temp = (a[i-1] + (x * temp) % p ) % p; // Q(x) = a[i-1] + xQ(x)
if (temp > 255) goto l; // Generate coeficents again
(2)
Q[x-1]=temp; // Q(x=1) = }
}
unsigned char
ShareByte::GetQ(int i ) { return Q[i]; } ShareByte.h #ifndef _Share_Byte_ #define _Share_Byte_ class ShareByte {
unsigned char B; // secret byte
unsigned char k,n; // scheme (k,n)
unsigned char * Q; // byte array
unsigned short * a; //
unsigned short p; // prime number
unsigned short temp; // temporary
public:
ShareByte( unsigned char Byte, unsigned char K,
unsigned char N ); ~ShareByte(); void
GenerateCoefficients(); // will be private
void CountShares();
unsigned char GetQ(int ); };
#endif
ReconstructByte.cpp
#include "ReconstructByte.h" ReconstructByte::ReconstructBy te(unsigned char * num,
unsigned char * C, unsigned char K )
{
k = K;
S = 0; p = 257; x = num; Y = C; }
int ReconstructByte::sub(int a, int b)
{
if ( a-b > 0) return a-b; else
return p + a - b ; }
int ReconstructByte::inv(int a)
{
long d, x, y; extended_euclid(a, p, &x, &y, &d);
return (x > 0)? x : p+x;
} void
ReconstructByte::extended_eucl id(long a, long b, long *x, long *y, long *d)
/* calculates a * *x + b * *y = gcd(a, b) = *d */
{
long q, r, x1, x2, y1, y2;
x2 = 1, x1 = 0, y2 = 0, y1 = 1;
while (b > 0) {
q = a / b, r = a - q * b;
*x = x2 - q * x1, *y = y2 - q * y1;
a = b, b = r; x2 = x1, x1 = *x, y2 = y1, y1 = *y;
}
*d = a, *x = x2, *y = y2; } unsigned char ReconstructByte::ReconstructSe cret( ) { long temp1,temp2;
for( int i=0 ; i < k ; i++ ){
P = 1;
for( int j=0 ; j < k ; j++ )
if ( j != i ){
temp1 = x[j] *
inv(sub(x[j],x[i])) % p; // x[j] / (x[j]-x[i])
P = P*temp1 % p;
}else continue; temp2 = Y[i]*P % p ;
S=( S + temp2) % p;
(3)
}
return (unsigned char)S; }
ReconstructByte.h
#ifndef _Reconstruct_Byte_ #define _Reconstruct_Byte_ class ReconstructByte {
long S; // secret
unsigned char k; // threshold scheme unsigned short p;
// prime number
long P; // Temporary variable
unsigned char * x;
unsigned char * Y; public:
ReconstructByte (unsigned char * x, unsigned char * Y, unsigned char K); void
extended_euclid(long a, long b, long * x, long * y, long * d);
int sub(int a, int b );
int inv(int a ); unsigned char ReconstructSecret(); };
(4)
LAMPIRAN D
QUESTIONER
(5)
PENGUJIAN LAPANGAN
Nama
:
1.
Menurut anda, apakah aplikasi ini mudah dijalankan (
user friendly
) ?
a. Mudah
b. Cukup Mudah
c. Kurang Mudah
2.
Menurut anda, apakah aplikasi ini telah cukup baik dalam menjawab
permasalahan mengenai keamanan ataupun kepemilikan bersama pada suatu
data rahasia?
a. Baik
b. Cukup Baik
c. Kurang Baik
3.
Menurut anda bila dilihat dari segi pemilihan warna
Layout,
jenis, maupun
ukuran
Font,
bagaimana tampilan aplikasi ini secara keseluruhan?
a. Bagus
b. Cukup Bagus
c. Kurang Bagus
4.
Apakah fitur yang terdapat dalam aplikasi ini sudah sesuai dengan kebutuhan
anda?
(6)
b. Cukup Sesuai
c. Kurang Sesuai
5.
Apa pendapat anda setelah melihat aplikasi ini secara keseluruhan?
a. Baik
b. Cukup Baik
c. Kurang Baik
6.
Apakah aplikasi ini dapat membantu anda untuk mengamankan data rahasia
anda?
a. Bisa
b. Cukup Bisa
c. Kurang Bisa
7.
Menurut anda, apakah aplikasi ini bila dikembangkan akan lebih membantu
anda?
a.
Bisa
b.