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 2011 M/ 1431 H
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 2011 M/ 1431 H
ii
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, Penguji I
Penguji II
Viva Arifin, MMSI NIP. 19730810 200604 2 001
Arini, MT NIP. 19760131 200901 2 001
Tim Pembimbing, Pembimbing I
Pembimbing II
Victor Amrizal, M.Kom NIP. 150 411 288
Herlino Nanang, MT, CCNA NIP. 19731209 200501 1 002 Mengetahui,
Dekan Fakultas Sains Dan Teknologi
Ketua Program Studi Teknik Informatika
DR. Syopiansyah Jaya Putra, M.Sis NIP. 19680117 200112 1 001
Yusuf Durrachman M.Sc, M.I.T. NIP. 19710522 200604 1 002
iii
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
iv
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 adanya secret sharing adalah 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. Skema secret sharing mengatasi masalah ini tanpa meningkatkan jumlah resiko yang ditimbulkan. Secara umum skema secret sharing dibagi menjadi tiga yakni menggunakan skema Threshold, Prevention, dan Disenrollment. Skema secret sharing yang diterapkan pada aplikasi ini adalah Shamir secret sharing scheme atau disebut juga Shamir threshold scheme. Pada skema Threshold, 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 filefile 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 Jumlah Daftar Pustaka : 24 sumber (1996-2010)
v
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, vi
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.
Jakarta, Mei 2011
Tsuwaibatul Aslamiyah 106091002974
vii
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.
viii
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 1.6.1. Metode Pengumpulan Data .................................................. 6 ix
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 2.9.1. Pengertian UML ................................................................. 43 x
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 4.2.5. Class Diagram...................................................................... 80 xi
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. Pengujian Blackbox.............................................................. 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
xii
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 Contoh Use Case Diagram Model ............................................... 45 Gambar 3.1 Kerangka Berpikir ....................................................................... 63 Gambar 4.1 Flowchart sistem usulan untuk Share A Secret ............................ 65 Gambar 4.2 Flowchart sistem usulan untuk Combine Share............................ 66 Gambar 4.3 Usecase Diagram untuk Aplikasi File Secret Sharing .................. 67 Gambar 4.4 Activity Diagram Main 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 Diagram untuk Share A Secret..................................... 76 Gambar 4.10 Sequence Diagram untuk Combine Shares................................. 78 Gambar 4.11 Sequence Diagram untuk User Account..................................... 79 Gambar 4.12 Class Diagram untuk Aplikasi File Secret Sharing .................... 80 xiii
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 Chart Algoritma ShareByte .............................................. 88 Gambar 4.18 Flow Chart Algoritma Proses Share........................................... 91 Gambar 4.19 Flow Chart Algoritma ReconstructByte..................................... 93 Gambar 4.20 Flow Chart Algoritma 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 share yang dihasilkan (test001.shr) .......... 102 Gambar 4.26 Interface 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.29 Interface Form About ................................................................ 104 Gambar 4.30 Interface Message Box Sharing Complete .................................. 104 Gambar 4.31 Interface Message Box Reconstruction Complete....................... 105 Gambar 4.32 Informasi file sebelum file share dibentuk ................................. 107 Gambar 4.33 Informasi file sesudah file share terbentuk................................. 107 xiv
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 Gambar 4.44 Pengujian brute-force terhadap file sharing005.shr..................... 115
xv
DAFTAR TABEL
Halaman Tabel 3.1 Tabel Perbandingan Literatur Sejenis .............................................. 57 Tabel 4.1 Tabel Usecase Scenario Main Menu ............................................... 68 Tabel 4.2 Tabel Usecase Scenario Share A Secret .......................................... 69 Tabel 4.3 Tabel Usecase Scenario Combine Shares ........................................ 69 Tabel 4.4 Tabel Usecase Scenario About........................................................ 70 Tabel 4.5 Tabel Spesifikasi hardware untuk 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 Tabel 4.10 Hasil Pengujian Lapangan ............................................................. 117
xvi
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/kssanditreshold_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 of Applied Cryptography. CRC Press.
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. Sugiyono, Prof. DR. 2009. Statistika Untuk Penelitian. Bandung : Alvabeta
121
Sutana,
Yessy.
2005. Perancangan
Menggunakan
Visual Secret
Aplikasi Enkripsi-Dekripsi Gambar Sharing
Schemes.
Universitas Bina
Nusantara. Whitten, Jeffrey L., Lonnie D Bentley, dan Kevin C Dittman. 2001. Systems Analysis And Design Methods 5th Edition. 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].
122
LAMPIRAN-LAMPIRAN 1. LAMPIRAN A : HASIL WAWANCARA 2. LAMPIRAN B : HASIL PENGUJIAN LAPANGAN 3. LAMPIRAN C : SOURCE CODE 4. LAMPIRAN D : QUESTIONER
LAMPIRAN A HASIL WAWANCARA
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 aplikasiaplikasi 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. .
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 menggunakannya
akan
terlupa. Jadi, siapapun pihak yang mendapat
mengamankan data rahasia meraka.
kemudahan
dalam
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.
.
LAMPIRAN B HASIL PENGUJIAN LAPANGAN
HASIL PENGUJIAN LAPANGAN
1. Apakah aplikasi ini mudah dijalankan (User Friendly) ? Jumlah Penjawab
Persentase
(Orang)
(%)
Mudah
10
15.4%
Cukup Mudah
43
66.1%
Kurang Mudah
12
18.5%
Jawaban Responden
User Friendly 80.00%
66.1%
60.00% 40.00% 20.00%
15.4%
18.50%
0.00% Mudah
Cukup
Mudah Cukup Kurang
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?
Jumlah Penjawab
Persentase
(Orang)
(%)
Baik
8
12.3%
Cukup Baik
39
60%
Kurang Baik
18
27.7%
Jawaban Responden
Menjawab Permasalahan
40.00% 20.00%
Baik
67.70%
60.00%
27.70%
12.30%
Kurang
0.00% Baik
Cukup
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? Jumlah Penjawab
Persentase
(Orang)
(%)
Bagus
32
49.2%
Cukup Bagus
28
43.1%
Kurang Bagus
5
7.7%
Jawaban Responden
Kesesuaian Tampilan 60.00%
49.20%
Bagus 43.1%
Cukup
40.00% 20.00%
7.70%
0.00% Bagus
Cukup
Kurang
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? Jumlah Penjawab
Persentase
(Orang)
(%)
Sesuai
25
38.5%
Cukup Sesuai
27
41.5%
Kurang Sesuai
13
20%
Jawaban Responden
Kebutuhan User 50.00% 40.00% 30.00% 20.00% 10.00% 0.00%
38.50% 41.5%
20.00%
Sesuai
Cukup
Sesuai Cukup Kurang
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? Jumlah Penjawab
Persentase
(Orang)
(%)
Baik
14
21.5%
Cukup Baik
40
61.5%
Kurang Baik
11
17%
Jawaban Responden
Keseluruhan Aplikasi 80.00% 60.00% 40.00% 20.00% 0.00%
Baik
61.5%
Cukup
21.50% 17.00% Baik
Cukup
Kurang
Kurang
Berdasarkan hasil pengujian dapat diketahui bahwa aplikasi ini secara keseluruhan cukup baik.
6. Apakah aplikasi ini dapat membantu anda untuk mengamankan data rahasia anda? Jumlah Penjawab
Persentase
(Orang)
(%)
Bisa
25
38.5%
Cukup Bisa
21
32.3%
Kurang Bisa
19
29.2%
Jawaban Responden
Pengamanan Data 38.50% 40.00%
32.3%
30.00% 20.00% 10.00% 0.00% Bisa
Cukup
29.20%
Bisa Cukup Kurang
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?
Jumlah Penjawab
Persentase
(Orang)
(%)
Bisa
36
55.4%
Cukup Bisa
23
35.4%
Kurang Bisa
6
9.2%
Jawaban Responden
Pengembangan Aplikasi 60.00%
Bisa
55.40%
Cukup
35.4%
40.00% 20.00%
9.20%
0.00% Bisa
Cukup
Kurang
Kurang
Berdasarkan hasil pengujian dapat diketahui bahwa aplikasi ini bila dikembangkan akan bisa membantu user.
LAMPIRAN C SOURCE CODE
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 t_clicked()
About();
About * abt = new abt->activateWindow(); abt->raise(); abt->repaint(); abt->show();
} FileSecretSharing::~FileSecret Sharing() { delete ui; }
filesecretsharing.h #ifndef FILESECRETSHARING_H #define FILESECRETSHARING_H #include
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) : QDialog(parent),
{
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
"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; irb_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"),
"/", 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 #include #include #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; private:
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
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();
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 #include #include #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 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=k1; 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
}
Q[x-1]=temp;
} unsigned char ShareByte::GetQ(int i ) { return Q[i]; }
ShareByte.h #ifndef _Share_Byte_ #define _Share_Byte_ class ShareByte { unsigned char B; unsigned char k,n; unsigned char * Q; unsigned short * a; unsigned short p; unsigned short temp; 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;
//
Q(x=1) =
// // //
secret byte scheme (k,n) byte array // prime number temporary
// //
} return (unsigned char)S;
public:
unsigned char * Y;
ReconstructByte (unsigned char * x, unsigned char * Y, unsigned char K); void ReconstructByte.h extended_euclid(long a, long b, long * x, long * y, long * #ifndef _Reconstruct_Byte_ d); #define _Reconstruct_Byte_ int sub(int a, int b class ReconstructByte { ); long S; // secret int inv(int a ); unsigned char k; // threshold scheme unsigned char unsigned short p; ReconstructSecret(); // prime number }; long P; // Temporary variable #endif unsigned char * x;
}
LAMPIRAN D QUESTIONER
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? a. Sesuai
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. Kurang Bisa