Penerapan metode shamir secret sharing schemes pada aplikasi kriptografi file

(1)

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.

Cukup Bisa