Implementasi Zero Knowledge Proof Dengan Protokol Feige Fiat Shamir Dan quadratic Linear Congruential Generator

(1)

IMPLEMENTASI ZERO KNOWLEDGE PROOF DENGAN FEIGE FIAT SHAMIR

DAN QUADRATIC LINEAR CONGRUENTIAL GENERATOR

SKRIPSI

TIAN NOVITA SITUNGKIR 091401041

PROGRAM STUDI S1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN 2013


(2)

IMPLEMENTASI ZERO KNOWLEDGE PROOF DENGAN FEIGE FIAT SHAMIR

DAN QUADRATIC LINEAR CONGRUENTIAL GENERATOR

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Sarjana Komputer

TIAN NOVITA SITUNGKIR 091401041

PROGRAM STUDI S1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN 2013


(3)

PERSETUJUAN

Judul : IMPLEMENTASI ZERO KNOWLEDGE PROOF

DENGAN PROTOKOL FEIGE FIAT SHAMIR DANQUADRATIC LINEAR CONGRUENTIAL

GENERATOR.

Kategori : SKRIPSI

Nama : TIAN NOVITA SITUNGKIR

Nomor Induk Mahasiswa : 091401041

Program Studi : SARJANA (S1) ILMU KOMPUTER

Departemen : ILMU KOMPUTER

Fakultas : FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

(FASILKOM-TI) UNIVERSITAS SUMATERA UTARA

Diluluskan di

Medan, Oktober 2013

Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

M. Andri Budiman, S.T., M.Comp Dian Rachmawati, S.Si., M.Kom

NIP. NIP.198307232009122004

Diketahui/Disetujui oleh

Program Studi S1 Ilmu Komputer Ketua,

Dr. Poltak Sihombing, M.Kom NIP. 196203171991031001


(4)

PERNYATAAN

IMPLEMENTASI ZERO KNOWLEDGE PROOF DENGAN PROTOKOL FEIGE FIAT SHAMIR DAN QUADRATIC LINEAR CONGRUENTIAL

SKRIPSI

Saya menyatakan bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.

Medan, September 2013

Tian Novita Situngkir 091401041


(5)

PENGHARGAAN

Segala puji dan syukur Penulis ucapkan kepada Tuhan Yesus Kristus yang senantiasa melimpahkan rahmat dan karunia-Nya sehingga skripsi ini dapat diselesaikan.

Ucapan terima kasih Penulis sampaikan kepada semua pihak yang telah membantu Penulis dalam menyelesaikan skripsi ini baik secara langsung maupun tidak langsung, teristimewa untuk kedua orangtua terkasih, Ayahanda Suherman Situngkir dan Ibunda Lallu Parapat. Pada kesempatan ini penulis ingin mengucapkan terima kasih yang sebesar-besarnya kepada :

1. Bapak M. Andri Budiman, ST, M.Comp.Sc, MEM selaku Dosen Pembimbing I yang telah memberikan bimbingan, saran dan masukan kepada penulis dalam pengerjaan skripsi ini.

2. Ibu Dian Rachmawati, S.Si, M.Kom selaku Dosen Pembimbing II yang telah memberikan bimbingan, saran dan masukan kepada penulis dalam pengerjaan skripsi ini.

3. Bapak Ade Candra, S. T., M. Kom Dosen Pembanding I yang telah memberikan kritik dan saran dalam penyempurnaan skripsi ini.

4. Bapak M. Fadly Syahputra, B. Sc., M. Sc. IT selaku Dosen Pembanding II yang telah memberikan kritik dan saran dalam penyempurnaan skripsi ini.

5. Bapak Dr. Poltak Sihombing, M.Kom selaku Ketua Program Studi Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.

6. Ibu Maya Silvi Lydia, B.Sc, M.Sc selaku Sekretaris Program Studi Ilmu Komputer, Dekan dan Pembantu Dekan Fakultas Ilmu Komputer dan Teknologi Informasi, semua dosen dan semua pegawai di Program Studi S1 Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.

7. Abang dan adik Penulis yang tersayang Rahmat Situngkir, Andi Situngkir, Amd., dan Ayu Situngkir.

8. Abang Angga Malau, S. Kom yang telah memberikan semangat dan menjadi teman diskusi penulis dalam menyelesaikan skripsi ini.

9. Teman-teman seperjuangan mahasiswa S1-Ilmu Komputer stambuk 2009 secara Tika Romauli Siregar, Fitri Rizki Khairani, Ismail Fata Lubis, Samuel Tarigan, Oshin Santa Monica, Silvya Dinata, yang telah memberikan semangat dan menjadi teman diskusi penulis dalam menyelesaikan skripsi ini.


(6)

10.Teman-teman Ikatan Mahasiswa Dairi (Sunny, Reno, Nurita, Ome, Astri, Nciho, Samson, Wanti).

11.Semua pihak yang terlibat langsung ataupun tidak langsung yang tidak dapat penulis ucapkan satu per satu yang telah membantu penyelesaian skripsi ini.

Penulis menyadari bahwa skripsi ini masih terdapat kekurangan. Oleh karena itu, kepada pembaca agar kiranya memberikan kritik dan saran yang bersifat membangun demi kesempurnaan skripsi ini. Sehingga dapat bermanfaat bagi kita semuanya.

Medan, September 2013 Penulis,


(7)

ABSTRAK

Sewaktu seseorang menerima atau mengirim pesan, terdapat tiga buah persoalan yang sangat penting, yaitu kerahasian, autentikasi, dan keutuhan. Kerahasian memberi garansi data tidak dapat dibaca oleh orang yang tidak berkepentingan. Autentikasi memberi garansi tentang keaslian data dan dengan siapa berhubungan. Keutuhan memberi garansi bahwa data tidak mengalami perubahan sewaktu perjalanan, dengan kata lain data yang dikirim adalah data yang diterima. Dalam pegiriman informasi dengan beberapa teknik kriptografi, kita membutuhkan suatu cara agar informasi yang ingin kita sampaikan dapat diterima dengan aman oleh orang yang memang berwenang mendapatkannya. Cara atau protokol ini dapat digunakan baik untuk pengiriman pesan ataupun pemberian autentikasi, termasuk juga tanda tangan pada sebuah dokumen. Autentikasi entitas atau identifikasi dirancang agar suatu pihak (verifier) mendapat jaminan bahwa identitas dari pihak lain (claimant) yang ingin berkomunikasi dengannya sesuai dengan apa yang dinyatakan, sehingga mencegah terjadinya peniruan identitas atau penyamaran. Salah satu identifikasi kuat yang dapat digunakan adalah Zero-knowledge Proofs, dimana pada protokol ini pesan yang akan dipertukarkan saat protokol berlangsung bukan informasi rahasia, melainkan pengetahuan tentang informasi rahasia tersebut dan dilakukan tanpa menyatakan apapun tentang informasi rahasia tersebut. Hal yang harus diperhatikan dalam protokol di atas adalah pemilihan dari masalah matematika dan transformasi random yang digunakan sehingga orang lain benar-benar tidak dapat memperoleh informasi apapun tentang masalah yang asli atau solusinya, bahkan setelah dilakukan iterasi protokol secara berulang-ulang, protokol dan transformasi random yang dapat digunakan untuk Zero Knowledge Proof ini yaitu Feige Fiat Shamir dan Qudratic Linear Congruential Generator. Hasil penelitian menunjukkan bahwa hasil autentikasi dengan menggunakan Feige Fiat Shamir dan gabungan antara Feige fiat Shamir dan Quadratic Linear Congruential Generator tidak menunjukkan perbedaan waktu yang signifikan, dan penggunaaan pembangkit bilangan acak Quadratic Linear Congruential Generator menunjukkan bilangan acak yang dapat diprediksi urutan kemunculannya sama seperti Linear Congruential Generator, sehingga Quadratic Linear Congruential Generator kurang tepat digunakan kriptografi.

Kata kunci : Keamanan Data, Pembangkit Bilangan Acak, Zero Knowledge Proof, Feige Fiat Shamir, Quadratic Linear Congruential Generator.


(8)

DAFTAR ISI

Halaman

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak vi

Abstract vii

Daftar Isi viii

Daftar Tabel xi

Daftar Gambar xiii

Daftar Lampiran xv

Bab 1 Pendahuluan 1

1.1 Latar Belakang Masalah 2

1.2 Rumusan Masalah 3

1.3 Batasan Masalah 3

1.4 Tujuan Penelitian 3

1.5 Manfaat Penelitian 3

1.6 Metodolgi Penelitian 4

1.7 Sistematika Penulisan 5

Bab 2 Landasan Teori 6

2.1 Kriptografi 7

2.1.1 Konsep Dasar kriptografi 7

2.1.2 Jenis Kriptografi 10

2.1.3 Protokol Kriptografi 11

2.2 Pembangkit Bilangan Acak (Cryptographcally-secure Pseudo-RandomNumber Generator 13

2.3 Quadratic Linear Congruential Generator 14

2.4 Zero Knowledge Proof 15

2.5 Feige Fiat Shamir 17

Bab 3 Analisis dan Perancangan Sistem 22

3.1 Analisis Sistem 22

3.1.1 Analisis Masalah 22

3.1.2 Analisis Persyaratan 23

3.1.2.1 Persyaratan Fungsional 23

3.1.2.2 Persyaratan Non-Fungsional 24

3.1.3 Pemodelan Sistem dengan Usecase dan Activity Diagram 25

3.1.3.1 Usecase Generate Bilangan Prima p dan q 25


(9)

3.1.3.3 Usecase Proses Autentikasi 27 3.1.4 Analisis Sistem Proses 28

3.1.5 Flowchart Sistem 31 3.1.5.1 Flowchart Gambaran Umum 31 3.1.5.2 Flowchart dan Pseudocode Proses Generate p dan q 32

3.1.5.3 Flowchart dan Pseudocode Pembangkit Bilangan Acak Metode Quadratic Linear

Congruential Generator (QLCG) 33 3.1.5.4 Flowchart dan pseudocode Proses

Autentikasi (Identifikasi Skema) Feige

Fiat Shamir (FFS) 34

3.1.6 Rancangan Antar Muka 36

3.1.6.1 Antar Muka Mainform 37

3.1.6.2 Anatr Muka Form Authenticationwith

FFS and QLCG 38

3.2 Tahapan Sistem 40

3.2.1 Tahapan Metode Fermat 40 3.2.2 Tahapan Metode QuadraticLinear Congruential

Generator (QLCG) 42

3.2.3 Tahapan Feige Fiat Shamir 50

Bab 4 Implementasi dan Pengujian 63

4.1 Implementasi Sistem 63

4.1.1 Tampilan Halaman Menu Utama 64 4.1.2 Tampilan Halaman Menu Authentication with FFS

and QLCG 65

4.1.3 Tampilan Halaman Menu About 67

4.1.4 Tampilan Halaman Menu Help 68

4.2 Pengujian Sistem 68

4.2.1 Pengujian Proses Generate p dan q 69 4.2.2 Pengujian Proses Result n 70 4.2.3 Pengujian Proses Random r 71 4.2.4 Pengujian Proses Tampilan Hasil Nilai x,

v, v-invers, dan s 72

4.2.5 Pengujian Proses Open File 74

4.2.6 Pengujian Proses Authentication 76 4.3 Analisis Hasil Pengujian Proses Quadratic Linear

Congruential Generator (QLCG) 78

4.4 Analisis Hasil Pengujian Proses FFS dan QLCG 92 4.5 Analisis Pebandingan Hasil Pengujian FFS dengan dan tanpa

QLCG 98


(10)

5.1 Kesimpulan 100

5.2 Saran 101


(11)

DAFTAR TABEL

Halaman

Tabel 2.1 Contoh QLCG 15

Tabel 2.2 Inversi (mod 35) 20

Tabel 3.1 Use Case Generate Bilangan Prima p dan q 25 Tabel 3.2 Use CaseGenerate Bilangan Acak 26 Tabel 3.3 Use Case Autentikasi 27 Tabel 3.4 Rincian Rancangan Form Utama 37 Tabel 3.5 Rincian Rancangan Form Authentication with FFS and QLCG 39 Tabel 3.6 Lanjutan Rincian Rancangan Form Authentication with FFS

and QLCG 40

Tabel 3.7 Tabel dengan nilai a = 7, b=24, c = 11, m = 16 43 Tabel 3.8 Hasil bilangan acak metode QLCG dengan nilai a= 29, b=31,

c=49, m=256 44

Tabel 3.9 Hasil bilangan acak metode QLCG dengan nilai a= 124,

b=637, c=381, m=256 45

Tabel 3.10 Lanjutan Hasil bilangan acak metode QLCG dengan nilai

a= 124, b=637, c=381, m=256 46

Tabel 3.11 Hasil bilangan acak metode QLCG dengan nilai a= 124,

b=637, c=381, m=256 47

Tabel 3.12 Lanjutan Hasil bilangan acak metode QLCG dengan nilai

a= 124, b=637, c=381, m=256 48

Tabel 3.13 Hasil bilangan acak metode QLCG dengan nilai a= 96 ,

b=609, c=353, m=256 49

Tabel 3.14 Hasil v-invers Percobaan I 51

Tabel 3.15 Hasil kunci private s Percobaan I 52

Tabel 3.16 Hasil v-invers Percobaan II 53

Tabel 3.17 LanjutanHasil v-invers Percobaan II 54 Tabel 3.18 Hasil kunci private 2 Percobaan II 55

Tabel 3.19 Hasil v-invers Percobaan III 56

Tabel 3.20 Lanjutan Hasil v-invers Percobaan III 57 Tabel 3.21 Hasil kunci private s Percobaan III 58

Tabel 3.22 Hasil v-invers Percobaan IV 59

Tabel 3.23 Lanjutan Hasil v-invers Percobaan IV 60 Tabel 3.24 Hasil kunci private s Percobaan IV 61

Tabel 4.1 Pengujian QLCG dengan m=8 79

Tabel 4.2 Pengujian QLCG dengan m=16 80

Tabel 4.3 Pengujian QLCG dengan m=32 81

Tabel 4.4 Pengujian QLCG dengan m=64 82

Tabel 4.5 Lanjutan Pengujian QLCG dengan m=64 83

Tabel 4.6 Pengujian QLCG dengan m=128 84

Tabel 4.7 Lanjutan Pengujian QLCG dengan m=128 85 Tabel 4.8 Lanjutan Pengujian QLCG dengan m=128 86 Tabel 4.9 Lanjutan Pengujian QLCG dengan m=128 87

Tabel 4.10 Pengujian QLCG dengan m=256 88


(12)

Tabel 4.12 Lanjutan Pengujian QLCG dengan m=256 90 Tabel 4.13 Lanjutan Pengujian QLCG dengan m=256

91

Tabel 4.14 Pengujian Running time FFS dan QLCG dengan n sebanyak 4 digit

dan pengulangan (t) = 5 92

Tabel 4.15 Pengujian Running time FFS dan QLCG dengan n sebanyak 4 digit

dan pengulangan (t) = 30 93

Tabel 4.16 Pengujian Running time FFS dan QLCG dengan n sebanyak 5 digit

dan pengulangan (t) = 5 93

Tabel 4.17 Pengujian Running time FFS dan QLCG dengan n sebanyak 5 digit

dan pengulangan (t) = 30 93

Tabel 4.18 Pengujian Running time FFS dan QLCG dengan n sebanyak 6 digit

dan pengulangan (t) = 5 94

Tabel 4.19 Pengujian Running time FFS dan QLCG dengan n sebanyak 6 digit

dan pengulangan (t) = 30 94

Tabel 4.20 Pengujian Running time FFS dan QLCG dengan n sebanyak 7 digit

dan pengulangan (t) = 5 95

Tabel 4.21 Pengujian Running time FFS dan QLCG dengan n sebanyak 7 digit

dan pengulangan (t) = 30 95

Tabel 4.22 Pengujian Running time FFS dan QLCG dengan n sebanyak 8 digit

dan pengulangan (t) = 5 95

Tabel 4.23 Pengujian Running time FFS dan QLCG dengan n sebanyak 8 digit

dan pengulangan (t) = 30 96

Tabel 4.24 Pengujian Running time FFS dan QLCG dengan n sebanyak 9 digit

dan pengulangan (t) = 5 96

Tabel 4.25 Pengujian Running time FFS dan QLCG dengan n sebanyak 9 digit

dan pengulangan (t) = 30 97

Tabel 4.26 Pengujian Running time FFS dan QLCG dengan n sebanyak 10 digit

dan pengulangan (t) = 5 97

Tabel 4.27 Perbandingan Hasil Pengujian Proses FFS dengan dan tanpa QLCG 98 Tabel 4.28 Lanjutan Perbandingan Hasil Pengujian Proses FFS dengan dan tanpa


(13)

DAFTAR GAMBAR

Halaman Gambar 2.1 Skema Enkripsi dan Dekripsi 8

Gambar 2.2(a) Plaintext 9

Gambar 2.2(b) Citra Ciphertext 9

Gambar 2.3 Hubungan Kriptologi, kriptanalisis, dan kriptografi 9

Gambar 2.4 Kriptografi Simetri 10

Gambar 2.5 Skema kriptografi kunci asimetri 11 Gambar2.6 Ilustrasi Zero knowledge proof 17 Gambar 3.1 Diagram Ishikawa Masalah Penelitian 23 Gambar 3.2 Use case Diagram yang akan Dikembangkan 25 Gambar 3.3 ActivityDiagram untuk Proses input p dan q 26 Gambar 3.4 Activity Diagram untuk Proses pemilihan bilangan acak 27 Gambar 3.5 Activity Diagram untuk Proses Autentikasi 28 Gambar 3.6 Sequence Diagram Proses Generate p dan q 29 Gambar 3.7 Sequence Diagram untuk Proses input bilangan acak 29 Gambar 3.8 Sequence Diagram untuk Proses identifikasi skema (autentikasi)

FFS 30

Gambar 3.9 Gambaran Umum Sistem 31

Gambar 3.10 Flowchart untuk proses Generate p dan q 32 Gambar 3.11 Flowchart untuk Proses QLCG 33 Gambar 3.12 Flowchart untuk Proses Autentikasi 35

Gambar 3.13 Rancangan Form Utama 37

Gambar 3.14 Rancangan Form Authenticationwith FFS and QLCG 38 Gambar 4.1 Tampilan Halaman Menu Utama 64 Gambar 4.2 Tampilan Submenu yang Terdapat Pada Menu File 65 Gambar 4.3 Tampilan Halaman Menu Authentication with FFS and QLCG 66 Gambar 4.4 Tampilan Halaman Menu About 67 Gambar 4.5 Tampilan Halaman Menu Help 68 Gambar 4.6 Tampilan hasil Generate p dan q 69

Gambar 4.7 Tampilan Result n 70

Gambar 4.8 Tampilan MessageBox Result n 71

Gambar 4.9 Tampilan proses Random 72

Gambar 4.10 Tampilan Hasil nilai x, v, v-invers dan s 73 Gambar 4.11 Tampilan MessageBox Hasil nilai x, v, v-invers dan s 74 Gambar 4.12 Tampilan Pop Up Window Open File 75

Gambar 4.13 Hasil Proses Open File 76

Gambar 4.14 Tampilan Proses Authentication 77 Gambar 4.15 MessageBox Tampilan Proses Authentication 78


(14)

DAFTAR LAMPIRAN

Halaman

A. Listing Program A-1


(15)

ABSTRAK

Sewaktu seseorang menerima atau mengirim pesan, terdapat tiga buah persoalan yang sangat penting, yaitu kerahasian, autentikasi, dan keutuhan. Kerahasian memberi garansi data tidak dapat dibaca oleh orang yang tidak berkepentingan. Autentikasi memberi garansi tentang keaslian data dan dengan siapa berhubungan. Keutuhan memberi garansi bahwa data tidak mengalami perubahan sewaktu perjalanan, dengan kata lain data yang dikirim adalah data yang diterima. Dalam pegiriman informasi dengan beberapa teknik kriptografi, kita membutuhkan suatu cara agar informasi yang ingin kita sampaikan dapat diterima dengan aman oleh orang yang memang berwenang mendapatkannya. Cara atau protokol ini dapat digunakan baik untuk pengiriman pesan ataupun pemberian autentikasi, termasuk juga tanda tangan pada sebuah dokumen. Autentikasi entitas atau identifikasi dirancang agar suatu pihak (verifier) mendapat jaminan bahwa identitas dari pihak lain (claimant) yang ingin berkomunikasi dengannya sesuai dengan apa yang dinyatakan, sehingga mencegah terjadinya peniruan identitas atau penyamaran. Salah satu identifikasi kuat yang dapat digunakan adalah Zero-knowledge Proofs, dimana pada protokol ini pesan yang akan dipertukarkan saat protokol berlangsung bukan informasi rahasia, melainkan pengetahuan tentang informasi rahasia tersebut dan dilakukan tanpa menyatakan apapun tentang informasi rahasia tersebut. Hal yang harus diperhatikan dalam protokol di atas adalah pemilihan dari masalah matematika dan transformasi random yang digunakan sehingga orang lain benar-benar tidak dapat memperoleh informasi apapun tentang masalah yang asli atau solusinya, bahkan setelah dilakukan iterasi protokol secara berulang-ulang, protokol dan transformasi random yang dapat digunakan untuk Zero Knowledge Proof ini yaitu Feige Fiat Shamir dan Qudratic Linear Congruential Generator. Hasil penelitian menunjukkan bahwa hasil autentikasi dengan menggunakan Feige Fiat Shamir dan gabungan antara Feige fiat Shamir dan Quadratic Linear Congruential Generator tidak menunjukkan perbedaan waktu yang signifikan, dan penggunaaan pembangkit bilangan acak Quadratic Linear Congruential Generator menunjukkan bilangan acak yang dapat diprediksi urutan kemunculannya sama seperti Linear Congruential Generator, sehingga Quadratic Linear Congruential Generator kurang tepat digunakan kriptografi.

Kata kunci : Keamanan Data, Pembangkit Bilangan Acak, Zero Knowledge Proof, Feige Fiat Shamir, Quadratic Linear Congruential Generator.


(16)

BAB I

PENDAHULUAN

1.1Latar Belakang

Sewaktu seseorang menerima atau mengirim pesan, terdapat tiga buah persoalan yang sangat penting, yaitu kerahasian, autentifikasi, dan keutuhan. Kerahasian memberi garansi data tidak dapat dibaca oleh orang yang tidak berkepentingan. Autentifikasi memberi garansi tentang keaslian data dan dengan siapa berhubungan. Keutuhan memberi garansi bahwa data tidak mengalami perubahan sewaktu perjalanan, dengan kata lain data yang dikirim adalah data yang diterima.

Dalam pegiriman informasi dengan beberapa teknik kriptografi, kita membutuhkan suatu cara agar informasi yang ingin kita sampaikan dapat diterima dengan aman oleh orang yang memang berwenang mendapatkannya. Cara atau protokol ini dapat digunakan baik untuk pengiriman pesan ataupun pemberian autentifikasi, termasuk juga tanda tangan pada sebuah dokumen. Autentifikasi entitas atau identifikasi dirancang agar suatu pihak (verifier) mendapat jaminan bahwa identitas dari pihak lain (claimant) yang ingin berkomunikasi dengannya sesuai dengan apa yang dinyatakan, sehingga mencegah terjadinya peniruan identitas atau penyamaran.

Pada tahun 1949, Shannon mengemukakan dua prinsip penyandian data untuk perancangan cipher blok yang kuat yaitu Confusion dan difusion. Prinsip confusion menyembunyikan hubungan apapun yang ada antara plainteks, cipherteks, dan kunci. Prinsip diffusion menyebarkan pengaruh satu bit plainteks atau kunci ke sebanyak mungkin cipherteks. Prinsip ini juga menyembunyikan hubungan statistik antara plainteks, cipherteks, dan kunci dan membuat kriptanalisis menjadi sulit. Kedua prinsip tersebut, selalu dipakai dalam perancagan cipher blok dan diulang berkali-kali pada satu blok dengan kombinsi yang berbeda-beda untuk mendapatkan keamanan yang bagus. Salah satu identifkasi kuat yang dapat digunakan adalah Zero-knowledge Proofs, dimana


(17)

pada protokol ini pesan yang akan dipertukarkan saat protokol berlangsung bukan informasi rahasia, melainkan pengetahuan tentang informasi rahasia tersebut dan dilakukan tanpa menyatakan apapun tentang informasi rahasia tersebut. Hal yang harus diperhatikan dalam protokol di atas adalah pemilihan dari masalah matematika dan transformasi random yang digunakan sehingga orang lain benar-benar tidak dapat memperoleh informasi apapun tentang masalah yang asli atau solusinya, bahkan setelah dilakukan iterasi protokol secara berulang-ulang, dan protokol yang dapat digunkan untuk zero knowledge proof ini yaitu feige fiat shamir.

Beberapa Penelitian yang telah dilakukan sebelumnya yang berkaitan dengan penelitian ini adalah penelitian yang dilakukan oleh Hanson Prihantoro Putro dengan judul “Percobaan Pemanfaatan Graf pada Protokol Kriptografi”, disimpulkan bahwa Pemanfaatan graf pada protokol kriptografi dapat menjadi alternatif bagi penggunaan protokol kriptografi yang telah digunakan saat ini, dengan dasar yang dimiliki Zero Knowledge Proof, bisa diaplikasikan pada protokol kriptografi yang sudah ada dengan beberapa kelebihan maupun kekurangannya. Penelitian lainnya yaitu penelitian yang dilakukan oleh Ronen Gradwohl dengan judul “Cryptographic and Physical Zero-Knowledge Proof Systems for Solutions of Sudoku Puzzles”, peneliti menganggap bahwa kriptografi dan skema Zero Knowledge Proof adalah kombinasi yang baik digunakanan dalam pemecahan permainan Sudoku.

Oleh karena itu, berdasarkan pertimbangan yang ada maka dalam penyusunan tugas akhir ini, penulis tertarik memilih judul “Implementasi Zero Knowledge proof dengan Protokol Feige Fiat Shamir dan Quadratic Linear Congruential Generator”.

1.2Rumusan Masalah

Perumusan masalah dalam penulisan tugas akhir ini adalah bagaimana proses pengamanan data dalam persoalan autentikasi dengan Zero Knowledge Proof dengan protokol Feige Fiat Shamir (FFS) dan Quadratic Linear Congruential generator.


(18)

1.3Batasan Masalah

Agar tulisan ini tidak menyimpang dari ruang lingkup pembahasan, diperlukan batasan masalah sebagai berikut :

a. Algoritma untuk autentikasi Zero Knowledge Proof adalah protokol Feige Fiat Shamir.

b. Algoritma untuk pembangkit bilangan acak yang digunakan adalah Quadratic Linear Congruential Generator.

c. Algoritma Pembangkit bilangan prima yang digunakan yaitu Lehman Theorem

d. Jenis data yang diamankan yaitu data teks (.txt)dan dokumen (.doc) e. Bahasa pemograman yang digunakan adalah C#.

1.4Tujuan Penelitian

Adapun tujuan dari penulisan tugas akhir ini adalah :

a. Mengetahui proses kerja Zero Knowledge Proof dalam pengamanan sebuah data.

b. Mengetahui cara pengimplementasian Zero Konwledge Proof dengan metode Feige Fiat Shamir dan Quadratic Congruential Generator.

c. Mengetahui running time dari Quadratic Linear Congruential Generator (QLCG) dan Feige-Fiat-Shamir (FFS) secara terpisah dan ketika dikombinasikan.

1.5Manfaat Penelitian

Manfaat yang diambil dari penulisan tugas akhir ini adalah :

a. Membantu pengamanan data tanpa menunjukkan siapa yang melakukan autentifikasi atas keaslian dokumen tersebut, sehingga penyalahgunaannya tidak akan bisa melibatkan pihak yang memverifikasi.

b. Sebagai referensi bagi pengguna yang ingin mengetahui mengenai cara kriptografi Zero Knowledge Proof dengan protokol Feige Fiat Shamir dan quadratic Linear Congruential.


(19)

Tahapan yang dilakukan dalam penelitian ini adalah: 1. Studi Literatur.

Melakukan studi kepustakaan, dengan mengumpulkan dan mempelajari bahan- bahan referensi yang berhubungan dengan kriptografi, Zero Knowledge Proof, Protokol Feige-Fiat-Shamir dan Quadratic Linear Congruential.

2. Analisis Masalah dan Perancangan Sistem.

Analisis masalah yang dimulai dengan tahap mengindentifikasikan masalah, memahami kerja sistem yang akan dibuat, manganalisis dan membuat laporan tentang hasil analisis, dan perancangan yang dimaksud adalah dengan membuat rancangan dan interface sistem dengan protokol Feige-Fiat-Shamir. 3. Implementasi Sistem.

Perancangan sistem diimplementasikan dalam bentuk kode program (coding) dengan menggunakan bahasa pemrograman C#.

4. Pengujian Sistem.

Pengujian dilakukan terhadap program yang telah dibuat. 5. Dokumentasi Sistem.

Penyusunan laporan Tugas Akhir lengkap dengan analisis yang didapatkan.

1.7Sistematika Penulisan

Sistematika penulisan skripsi ini terdiri atas bagian-bagian berikut: BAB I PENDAHULUAN

Bab ini menjelaskan latar belakang, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metodologi penelitian dan sistematikan penulisan dari skripsi ini.

BAB II LANDASAN TEORI

Bab ini menjelasakan landasan teori dari penelitian yang dilakukan. Teori yang diangkat yaitu kriptografi dan keamanannya, protokol Zero Knowledge Proof, Algoritma Feige-Fiat Shamir, dan Quadratic Linear Congruantial generator BAB III ANALISIS DAN PERANCANGAN SISTEM

Pada bab ini akan dijelaskan analisis terhadap implementasi Zero Knowledge Proof dengan Feige-Fiat Shamir . Analisis masalah yang dimulai dengan tahap mengindentifikasikan masalah, memahami kerja sistem yang akan dibuat,


(20)

manganalisis dan membuat laporan tentang hasil analisis, dan perancangan yang dimaksud adalah dengan membuat rancangan dan interface sistem dengan protokol Feige-Fiat-Shamir.

BAB IV IMPLEMENTASI DAN PENGUJIAN SISTEM

Pada bab ini akan menguraikan hasil pengujian sistem tentang autentikasi sebuah pesan dengan Feige Fiat Shamir dan Quadratic Linear Congruantial generator, dan kompleksitas waktu yang dihasilkan dengan penggabungan dua algoritma tersebut.

BAB V KESIMPULAN DAN SARAN

Bab ini berisi kesimpulan yang didapat dari hasil pengujian yang dilakukan serta saran-saran yang diberikan untuk penelitian selanjutnya.


(21)

BAB II

TINJAUAN PUSTAKA

2.1 Kriptografi

Secara etimologi (ilmu asal usul kata), kata kriptografi berasal dari gabungan dua kata dalam bahasa Yunani yaitu “kriptos” dan “graphia”. Kata kriptos digunakan untuk mendeskripsikan sesuatu yang disembunyikan, rahasia atau misterius. Sedangkan kata graphia berarti tulisan. Kriptografi didefinisikan sebagai ilmu dan pelajaran untuk tulisan rahasia dengan pertimbangan bahwa komunikasi dan data dapat dikodekan untuk mencegah dari mata-mata atau orang lain yang ingin mengetahui isinya, dengan menggunakan kode-kode dan aturan-aturan tertentu dan metode lainnya sehingga hanya orang yang berhak yang dapat mengetahui isi pesan sebenarnya.

Selain definisi di atas, Schneier (1996) mengemukakan pendapatnya tentang definisi kriptografi yaitu:ilmu dan seni untuk menjaga keamanan pesan. Penggunaan kata “seni” di dalam definisi di atas berasal dari fakta sejarah bahwa pada masa-masa awal sejarah kriptografi, setiap orang mungkin mempunyai cara yang unik untuk merahasiakan pesan. Cara-cara unik tersebut mungkin berbeda-beda pada setiap pelaku kriptografi sehingga setiap cara menulis pesan rahasia pesan mempunyai nilai estetika tersendiri sehingga kriptografi berkembang menjadi sebuah seni merahasiakan pesan (kata “graphy” di dalam “cryptography” itu sendiri sudah menyiratkan sebuah seni, (Mollin, 2006)).

Dalam menjaga kerahasiaan data, kriptografi mentransformasikan data jelas (plaintext) ke dalam bentuk data sandi (ciphertext) yang tidak dapat dikenali. Ciphertext inilah yang kemudian dikirimkan oleh pengirim (sender) kepada penerima (receiver). Setelah sampai di penerima, ciphertext tersebut ditranformasikan kembali ke dalam bentuk plaintext agar dapat dikenali.

Ada empat tujuan mendasar dari kriptografi yang juga merupakan aspek keamanan informasi (Menezes. et al,1996) (Scheiner. B., 1996), yaitu:


(22)

1. Kerahasiaan (Confidentiality), adalah layanan yang digunakan untuk menjaga isi informasi dari siapapun, kecuali yang memiliki kunci rahasia atau otoritas untuk membuka informasi yang telah disandikan.

2. Integritas Data (Message Integrity), berhubungan dengan penjagaan (perlindungan data) dari upaya-upaya pengubahan data secara tidak sah. Untuk dapat menjaga integritas data, suatu sistem harus memiliki kemampuan untuk mendeteksi pemanipulasian data yang dilakukan oleh pihak-pihak yang tidak berhak, antara lain penyisipan, penghapusan, dan pendistribusian data lain ke dalam data yang asli.

3. Autentifikasi (Authentication), berhubungan dengan identifikasi, baik secara kesatuan sistem maupun informasi itu sendiri. Dua pihak yang saling berkomuniasi harus saling memperkenalkan diri. Informasi yang dikirimkan harus diautentikasi keasliannya, isi datanya, waktu pengirimannya dan lain sebagainya.

4. Nirpenyangkalan (Non-repudiation), merupakan usaha untuk mencegah terjadinya penyangkalan terhadap pengiriman/terciptanya suatu informasi oleh yang mengirimkan/membuat, juga sebaliknya.

2.1.1 Konsep Dasar Kriptografi

Pada kriptografi akan ditemukan beberapa istilah-istilah yang penting untuk diketahui dalam memahami ilmu kriptografi. Istilah-istilah dan konsep dasar kriptografi tersebut akan dijelaskan sebagai berikut.

a. Enkripsi dan Dekripsi

Secara garis besar, prosoes enkripsi adalah proses pengacakan “naskah asli” (Plaintext) menjadi naskah acak (ciphertext) yang “sulit untuk dibaca” oleh seseorang yang tidak mempunyai kunci dekripsi, artinya probabilitas mendapat kembali naskah asli oleh seseorang yang tidak mempunyai kunci dekripsi dalam waktu yang tidak terlaluu lama adalah sangat kecil. Jadi suatu proses enkripsi yang baik menghasilkan naskah acak yang memerlukan waktu yang lama untuk di dekripsi oleh seseorang (Sentot Kromodimoeljo, 2000).


(23)

Sedangkan dekripsi merupakan algoritma atau cara yang dapat digunakan untuk membaca informasi yang telah dienkripsi untuk dapat dibaca kembali (Kurniawan. Y., 2004).

Secara umum kriptografi mengatasi masalah keamanan data dengan menggunakan kunci, yang dalam hal ini algoritma tidak dirahasiakan lagi, tetapi kunci harus tetap dijaga kerahasiaannya. Kunci (key) adalah parameter yang digunakan untuk transformasi enciphering dan deciphering. Kunci biasanya berupa string atau deretan bilangan. Skema enkripsi dan dekripsi dengan menggunakan kunci diperlihatkan pada gambar 2.1 dibawah ini :

Kunci Kunci

Plaintext Plaintext Gambar 2.1 Skema enkripsi dan dekripsi

b. Plaintext dan Ciphertext

Pesan merupakan data atau informasi yang dapat dimengerti maknanya, nama lain dari pesan adalah plaintext. Pesan dapat berupa teks, video, gambar dan lain-lain. Ketika pesan ingin dijaga kerahasiaannya maka pesan perlu disandikan ke bentuk lain yang tidak dapat dipahami oleh orang lain. Bentuk pesan yang telah tersandikan tersebut dinamakan dengan ciphertext. Perbandingan antara plaintext dan ciphertext dapat dilihat pada gambar 2.3a dan 2.3b.

Dekripsi Enkrips


(24)

(a) Plaintext (b) ciphertext Gambar 2.2 perbandingan plaintext dan ciphertext

c. Kriptanalisis dan kriptologi

Tugas utama kriptografi adalah untuk menjaga agar baik plaintext maupun kunci ataupun keduanya tetap terjaga kerahasiannya. Berbeda dengan kriptanalisis (Cryptanalysis) yang merupakan suatau ilmu dan seni untuk memecahkan chipertext menjadi plaintext tanpa memerlukan kunci yang digunakannya. Jika seorang kriptografer mentranformasikan plaintext ke dalam ciphertext dengan menggunakan kunci, maka sebaliknya seorang kriptanalis berusaha memecahkan ciphertext tersebut untuk menemukan plaintext atau kunci. Sedangkan studi mengenai kriptografi dan kriptanalis tersebut disebut dengan kriptologi (cryptlogy). hubungan antara kriptologi, kriptografi dan kriptanalisis dapat dilihat pada Gambar 2.3.

Kriptologi

Kriptografi kriptanalisis

Gambar 2.3 Hubungan Kriptologi, kriptanalisi, dan kriptografi

2.1.2 Jenis Kriptografi

Terdapat dua jenis algoritma kriptografi berdasarkan jenis kuncinya, yaitu:

a. Algoritma Simetri

Algoritma simetri disebut juga sebagai algoritma konvensional adalah algoritma yang menggunakan kunci enkripsi yang sama dengan kunci dekripsinya. Disebut konvensional karena algoritma yang biasa digunkan orang sejak berabad-abad yang lalu adalah jenis algoritma ini.


(25)

Algoritma simetri ssering juga disebut sebagai algoritma kunci rahasia, algoritma kunci tunggal atau algoritma satu kunci, dan mengharuskan pengirim dan penerima menyetujui suatu kunci tertentu sebelum mereka dapat berkomunikasi dengan aman. Keamanan algoritma simetri tergantung pada kunci, agar komunikasi tetap aman, maka kunci harus tetap dirahasiakan.

Algoritma simetri dapat dibagi dalam dua kategori, jenis pertama beroperasi pada plaintext yang berupa satu bit tunggal pada satu waktu, yang disebut dengan stream algorithms (algoritma aliran atau stream ciphers). Jenis kedua beroperasi pada plaintext dalam grup bit, grup bit-bit ini blok yang disebut sebagai algoritma blok atau kode rahasia blok (block cipher).

Proses dari skema kriptografi simetri dapat dilihat pada Gambar2.4

Enkripsi EK (P)=C

Dekripsi DK (C)=P Kunci Privat, K

Plaintext, P Ciphertext, C Plaintext, P

Gambar 2.4 Kriptografi Simetri

b. Algoritma Asimetri

Algoritma asimetrik (juga disebut algoritma kunci publik) didesain sedemikian sehingga kunci yang digunakan untuk enkripsi berbeda dari kunci yang digunakan untuk dekripsi. Kunci dekripsi tidak dapat (sedikitnya dalam waktu yang diterima) dihitung dari kunci enkripsi. Algoritma asimetri disebut algoritma kunci publik karena kunci enkripsi dapat dibuat publik yang berarti semua orang boleh mengetahuinya. Setiap orang dapat menggunakan kunci enkripsi tersebut untuk mengenkripsi pesan, namun hanya orang tertentu (pemilik rahasia) yang dapat melakukan dekripsi terhadap pesan tersebut. Dalam sistem ini kunci enkripsi deisebut


(26)

dengan kunci publik, sedangkan kunci dekripsi disebut dengan kunci privat.

Proses dari skema kriptografi asimetri dapat dilihat pada Gambar 2.5.

Enkripsi EK1 (P)=C

Dekripsi DK2 (C)=P Kunci Publik, K1 Kunci Privat, K2

Palintext, P Ciphertext, C Plaintext, P

Gambar 2.5 Skema kriptografi kunci asimetri

2.1.3 Protokol Kriptografi

Protokol adalah aturan yang berisi rangkaian langkah-langkah, yang melibatkan dua atau lebih orang, yang dibuat untuk menyelesaikan suatu kegiatan. Protokol digunakan untuk mengabtraksikan proses penyelesaian suatu tugas dari mekanisme yang digunakan.

Protokol kriptografi adalah protokol yang menggunakan kriptografi dengan melibatkan sejumlah algoritma kriptografi. Protokol kriptografi memiliki urutan dari awal hingga akhir, setiap langkah harus dilakukan secara berurutan, dan langkh tidak dapat dikerjakan bila langkah sebelumnya belum selesai.

Beberapa jenis protokol kriptografi antara lain: a. Abritated protocol

Arbiter adalah pihak ketiga yang dipercaya yang melengkapi transaksi antara dua pihak atau lebih. Contohnya yaitu penjualan mobil dengan menggunakan jasa makelar, transaksi yang menggunakan kartu kredit, dan lain-lain. Pada protocol di dalam computerarbiter adalah pihak ketiga yang menjamin tidak ada kecurangan yang dilakukan ke dua belah pihak. Arbiter biasanya adalah program atau mesin yang yang mengirim kembali pesan dari atu user ke user lain dalam jaringan computer.Arbiter selalu berpartisipasi dalam setiap transaksi.


(27)

Ada beberapa kelemahan menggunakan protocol jenis arbiter. Sangat sulit menemukan seorang atau pihak arbiteryang dapat dipercaya, mampu menjamin tidak terjadi kecurangan, dan mampu menyimpan kerahasiaan data-data yang perlu disembunyikan. Selain itu harus ada biaya tambahan untuk membayar arbiter. Karena menggunakan prosedur dan pihak tambahan dalam komunikasi, maka waktu dalam melakukan transaksi maupun komunikasi akan semakin lama. Delainya pun akan bertambah besar. Bila banyak transaksi yang dilakukan dalam waktu yang hamper bersamaan, maka akan terjadi kemacetan yang dalam bahasa kerennya disebut bottleneck atau leher botol. Kerahasiaannya pun tergantung pada seberapa besar pihak ketiga mampu menjaga kerahasiaan data-data penting.

b. Adjudicated protocol

Protokol ini berbeda dengan protocol yang sebelumnya. Untuk protocol ini, menggunakan pihak ketiga yang hanya bertindak sebagai juri bila terjadi kecurangan. Contoh yang bsa dilihat dalam kehidupan adalah adanya notaris dalam sengketa tanah.

Dalam protocol ini juga terdapat beberapa kelemahan termasuk analisis yang digunakan atau dilakukan harus setelah masalah terjadi dan tidak ada upaya untuk melakukan pencegahan. Tetapi keuntungannya adalah tidak perlu mengeluarkan banyak biaya dibanding dengan menggunakan arbiter karena keterlibatan pihak ketiga terbatas pada adanya masalah.

c. Self-enforcing protocol

Protocol ini tidak melibatkan pihak ketiga. Prosedur yang digunakan adalah masing-masing pihak yang melakukan hubungan mempunyai kontrol terhadap pihak lainnya. Kelebihannya adalah biaya yang dikeluarkan lebih rendah dibanding dengan dua protocol sebelumnya, tetapi kekurangannya adalah sangat sulit melakukan pengamatan pada setiap kondisi.


(28)

2.2 Pembangkit Bilangan Acak (Cryptographcally-secure Pseudo-Random Number Generator)

Cryptographically-secure Pseudo-Random Number Generator (CPRNG) adalah suatu peralatan komputasional yang dirancang untuk menghasilkan suatu urutan nilai yang tidak dapat ditebak polanya dengan mudah, sehingga urutan nilai tersebut dapat dianggap sebagai suatu keadaan acak (random). CPRNG ini tidak dapat diterapkan dalam prakteknya.Bilangan acak yang dihasilkan oleh komputer sekalipun tidak benar-benar acak dan kebanyakan bilangan acak yang diterapkan dalam kriptografi juga tidak benar-benar acak, tetapi hanya berupa acak semu.Ini berarti bahwa bilangan acak yang dihasilkan itu dapat ditebak susunan atau urutan nilainya.Dalam kriptografi, bilangan acak sering dibangkitkan dengan menggunakan pembangkit bilangan acak semu (Cryptographically-secure Pseudo-Random Number Generator).

Suatu Cryptographically-secure Pseudo-Random Number Generator(CPRNG) merupakan suatu algoritma yang menghasilkan suatu urutan nilai dimana elemen-elemennya bergantung pada setiap nilai yang dihasilkan.Output dari CPRNG tidak betul-betul acak, tetapi hanya mirip dengan properti dari nilai acak.Kebanyakan algoritma dari Cryptographically-secure Pseudo-Random Number Generator ditujukan untuk menghasilkan suatu sampel yang secara seragam terdistribusi. CPRNG ini sering digunakan dalam kriptografi pada proses pembentukan kunci dari metoda kriptografi. Tingkat kerumitan dari CPRNG ini menentukan tingkat keamanan dari metoda kriptografi.Semakin rumit (kompleks) CPRNG yang digunakan maka semakin tinggi tingkat keamanan dari metode kriptografi.

2.3 Quadratic Linear Congruential Generator

Quadratic Linear Congruential Generator (QLCG) adalah salah satu pembangkit bilangan acak yang dikemukakan oleh Jim Reeds (1294,1295,1296) dan Joan Boyar (1251) dengan rumus:

�� =����−�� +���−�+������

dimana � adalah bilangan acak ke-n dari deretnya, ��−1 adalah bilangan acak sebelumnya, a dan b merupakan bilangan pengali (increment), c merupakan konstanta dan m merupakan modulus. (D. E. Knuth(1981)).


(29)

Periode QLCG pada dasarnya tidak lebih besar dari m, dan pada kebanyakan kasus periodenya kurang dari m. QLCG akan mempunya periode penuh (m-1) jika memenuhi syarat dimana (b-a) mod m=1, m adalah bilangan kelipatan 2 dan c adalah bilangan ganjil.

Keunggulan QLCG terletak pada kecepatannya dan hanya membutuhkan sedikit operasi bit. Jika dilihat dari angka yang dihasilkan, algoritma Qudratic Linear Congruential Generator (QLCG) memiliki kelemahan.Sebab angka (bilangan acak) yang dihasilkan dapat diprediksi urutan kemunculannya.

Contoh:

�� = (7��−12 + 11��−1+ 5 )��� 17 dan �0 adalah 0. Hasil perhitungan

dapat dilihat pada Tabel 2.1.

Tabel 2.1 Contoh QLCG

X

0 0

1 5

2 14

3 1

4 6

5 0

6 5

7 14

8 1

9 6

10 0

11 5

12 14

Dari hasil contoh pada tabel 2.1 dapat diketahui bahwa keunggulan QLCG terletak pada kecepatannya dan hanya membutuhkan sedikit operasi bit. Sebenarnya, QLCG tidak dapat digunakan untuk kriptografi karena bilangan acaknya dapat diprediksi urutan kemunculannya dapat dilihat pada (tabel 2.1). Meskipun secara teoritis QLCG mampu menghasilkan bilagan acak


(30)

yang, namun ia sangat sensitif terhadap pemilihan nilai a, b, c dan m. Pemilihan nilai – nilai yang buruk dapat mengarah pada implementasi QLCG yang tidak bagus.

2.4Zero Knowledge Proof

Zero-knowledge proof adalah protokol kriptografi yang dapat digunakan oleh seseorang (misalnya Tian yang bertindak sebagai prover) untuk membuktikan kepemilikannya akan suatu secret piece atau informasi rahasia kepada orang lain (misalnya Tika, yang bertindak sebagai verifier) tanpa perlu mengungkapkan isi secret piece tersebut atau memberikan suatu cara bagi Tika untuk mengetahui isi rahasia tersebut.

Proses pembuktian kepemilikan rahasia yang dilakukan oleh Tian ini termasuk ke dalam interactive protocol, dimana Tika akan menanyakan serangkaian pertanyaan kepada Tian. Jika Tian benar-benar mengetahui isi rahasia, maka ia akan dapat menjawab keseluruhan pertanyaan dengan benar. Setelah serangkaian pertanyaan diajukan (misalnya 10 atau lebih pertanyaan) Tika akan yakin bahwa Tian benar-benar memiliki informasi rahasia seperti yang ia katakan.

Zero-Knowledge Proof harus memenuhi tiga sifat yaitu:

a. Completeness:yaitu jika prover memang tahu suatu pernyataan, verifier selalu akan dapat menerimanya.

b. Soundness:yaitu jika prover memang tidak mengetahui pernyataan yang benar, verifier tidak dapat menerimanya, kecuali dalam kemungkinan yang kecil.

c. Zero-knowledge:yaitu walaupun setelah interaksi dilakukan verifier akan yakin bahwa prover benar-benar tahu pernyataan yang sebenarnya, sebenarnya verifier sendiri tetap tidak akan mengetahui pernyataan yang sebenarnya.

Contoh yang sering digunakan untuk menjelaskan konsep zero-knowledge proof biasanya menggunakan gua atau terowongan yang bercabang dan terdapat suatu pintu yang menghubungkan kedua cabang yang hanya dapat dibuka oleh seseorang yang mengetahui suatu kode rahasia Di dalam gua itu hanya terdapat dua orang yakni Tian dan Tika. Tian mengaku mengetahui kata rahasia


(31)

untuk membuka pintu itu, tetapi ketika Tian diminta untuk membuktikannnya, Tian tidak mau memberitahukan kata kuncinya kepada Tika. Cara yang digunakan Tian untuk membuktikan bahwa ia tahu kata rahasia tanpa memberitahukannya kepada Tika adalah dengan menggunakan zero knowledge proof.

Tian dalam hal ini adalah pihak yang akan membuktikan bahwa ia mengetahui rahasia disebut dengan Prover, sedangkan Tika dalam hal ini adalah pihak yang diyakinkan disebut dengan verifier. Gambar di bawah ini adalah ilustrasi zero knowledge proof di dalam gua.

Gambar2.6 Ilustrasi Zero knowledge proof

Gua itu memiliki 2 jalur untuk sampai ke pintu rahasia yaitu jalur A dan jalur B. Langkah-langkah pembuktiannya adalah sebagai berikut : a. Tika berada di posisi A, sedangkan Tian berada di posisi B.

b. Tian akan berjalan menuju ke pintu dengan menggunakan jalan C atau D sesuai dengan keinginan Tian dan dilakukan secara acak.

c. Setelah itu, Tika akan berjalan ke posisi B dan dia meneriakkan jalan C atau D sesuai dengan keinginannya agar Tian berjalan kearah posisi B dengan menggunakan jalan itu.

d. Jika Tian tahu kata rahasia, maka ia akan mampu menuruti semua permintaan Tika, tetapi jika ia ingin mengelabui Tika, maka Tian memiliki probabilitas setengah untuk berhasil.

Tian


(32)

e. Agar pembuktian yang dilakukan akurat maka langkah 1 sampai 5 harus diulang n kali dan Tika percaya jika Tian mampu memenuhi seluruh permintaan Tika.

2.5 Feige Fiat Shamir

Konsep zero-knowledge protocol digunakan dalam beberapa protokol untuk identifikasi (zero-knowledge identification protocol). Protokol pertama jenis iniadalah protokol Feige-Fiat-Shamir. Ada tiga aktor yang berperan dalam protokol Fiat-Shamir yaitu trusted center (sebut saja Tim), prover (Tian) dan verifier (Tika). Tim membuat suatu modulus seperti RSA n = pq, mengumumkan n tetapi merahasiakan p dan q. Tian membuat secara acak (menggunakan random number generator) kunci privat s, dimana 0 < s < n dan gcd(s; n) = 1. Kunci publik Tian adalah v = s2 mod n dan v diregistrasi ke Tim. Tika dapat memperoleh kunci publik Tian v yang telah diregistrasi, dari Tim. Langkah-langkah berikut diulang t kali, setiap kali dengan nilai-nilai acak yang baru, agar Tian dapat diidentifikasi oleh Tika.

a. Tian memilih secara acak, menggunakan random number generator, r, 0 < r < n, dan mengirim x = r2 mod n kepada Tika

b. Tika memilih secara acak, menggunakan random number generator, e, e ∈ {0,1}, dan mengirimnya ke Tian.

c. Tian mengkomputasi y = rsemod n dan mengirim y ke Tika.

d. Jika y = 0 atau y2 ≡xve (mod n) maka Tika menolak dan proses identikasi gagal.

Jika langkah-langkah diatas telah diulang t kali tanpa penolakan maka identifikasi Tian diterima oleh Tika. Probabilitas bahwa Tian telah berhasil menipu Tika adalah 1 dalam 2t.

Keamanan dari Feige-Fiat-Shamir berdasarkan pada sukarnya mengkalkulasi akar kuadrat modulo pq jika p dan q tidak diketahui (hanya produknya n = pq yang diketahui). Fungsi pengacakan menggunakan parameter e adalah agar Tian tidak curang. Jika Tika selalu meminta y = r (e = 0) maka jelas Tian tidak perlu mengetahui s untuk menjawabnya. Jika Tika selalu meminta y = rs (mod n), Tian juga dapat mengelabui Tika tanpa mengetahui sebagai berikut. Pada langkah 1 Tian mengirim


(33)

kepada Tika. Ketika diminta untuk mengirim y = rs (mod n) maka Tianmengirim y = r. Jadi Tika terkelabui karena

xv r2v-1 v(mod n) r2 (mod n) y2 (mod n):

Dengan pengacakan, jika Tian mengirim x = r2 (mod n) maka ia kadang harusmenggunakan s, sedangkan jika ia mengirim x=r2v-1(mod n) maka ia kadang harus mencari akar kuadrat modulo n karena ia harus mengirim

y = (r2v-1)-2 (mod n).

Untuk menunjukkan bahwa tidak ada rahasia yang bocor ke Tika, kita gunakan cara standar yaitu dengan simulasi. Seseorang yang tidak mengetahui p, q dan s akan tetapi mengetahui apa yang akan diminta Tika untuk e tentunya akan dapat berperan sebagai Tian dengan mengirim x = r2 (mod n) atau x = r2v-1 (mod n) tergantung pada nilai e. Informasi yang dikeluarkan oleh Tian dapat dikeluarkan oleh siapa saja tanpa mengetahui p; q dan s, jaditidak memberi tahu nilai p; q dan s.

Sebetulnya Fiat-Shamir membocorkan 1 bit dari nilai s, yaitu sign (+ atau -) dari s. Protokol Feige-Fiat-Shamir menutup kebocoran ini. Selain itu Feige Fiat-Shamir melakukan k “pembuktian" secara paralel yang mengurangi interaksi antara Tian dan Tika karena langkah-langkah tidak perlu diulang sebanyak pada Fiat-Shamir, bahkan langkah-langkah tidak perlu diulang jika k cukup besar.

Dalam Feige-Fiat-Shamir, Tian membuat k kunci privat s1, s2, ..., sk dimana gcd(si , n) = 1 untuk setiap i, dan mempublikasikan k kunci publik v1, v2,..., vkdimana

vi= si2 (mod n)

untuk setiap i. Langkah-langkah Feige-Fiat-Shamir adalah sebagai berikut. a. Tian memilih secara acak, menggunakan random number generator, r,0

< r < n, dan s {-1, 1}, dan mengirim x = sr2 mod n kepada Tika.

b. Tika memilih secara acak e1, e2,..., ek, ei∈{0, 1} untuk setiap i, dan mengirimnya ke Tian.

c. Tian mengkomputasi y = rs1e1s2e2...skek (mod n) dan mengirim y ke Tika. d. Jika y2 ≡ ± xv1e1 v2e2...vkek (mod n) maka Tika menolak dan proses


(34)

Jika k = 20, maka probabilitas bahwa Tian berhasil mengelabui Tika kurang dari 1 dalam sejuta, dengan hanya 1 putaran langkah-langkah diatas.

Untuk Feige-Fiat-Shamir ada yang menggunakan vi = 1=si2 mod n untukkunci publik. Jika demikian, maka pada langkah 4, Tika harus memeriksa

� ≡ ± �2��1�2�2 … ��� (����)

Contoh :

Jika n=35 (bilangan pengali yang prima 5 dan 7), kemudian bilangan kuadrat yang mungkin adalah:

1: x2≡1 (mod 35) mempunyai penyelesaian: x = 1, 6, 29,or 34. 4:x2≡ 4 (mod 35) mempunyai penyelesaian: x = 2,12, 23,or33. 9: x2≡9 (mod 35) mempunyai penyelesaian :x = 3,17,18, or32. 11:x2≡11(mod 35)mempunyai penyelesaian: x = 9,16,19,or26. 14: x2≡14 (mod 35) mempunyai penyelesaian: x = 7 or 28. 15: x2≡15 (mod 35) mempunyai penyelesaian: x = 15 or 20. 16: x2≡16(mod 35)mempunyai penyelesaian:x=4,11, 24, or31. 21: x2≡21 (mod 35) mempunyai penyelesaian: x = 14 or 21. 25: x2≡25 (mod 35) mempunyai penyelesaian: x = 5 or 30. 29: x2≡29(mod 35)mempunyai penyelesaian:x= 8,13,22 or 27. 30: x2≡30 (mod 35) mempunyai penyelesaian: x = 10 or 25.

Inversi (mod 35) dan akar pangkat duanya adalah: Tabel 2.2 Inversi (mod 35) v v-1 S=sqrt(v-1)

1 1 1

4 9 3

9 4 2

11 16 4

Catatan bahwa 14, 15, 21, 25 dan 30 tidak mempunyai inversi dengan (mod 35) karena angka-angka tersebut tidak relatif prima dengan 35. Maka Tian mendapat kunci publik k = 4 dengan nilai:{4,11,16,29}. Kunci privat yang berhubungan adalah {3,4,9,8}. Kemudian langkah-langkah protokol Feige Fiat Shamir sebagai berikut:


(35)

a. Tian memilih sebuah bilangan acak r= 16, hitung 162(mod35)=11, dan kemudian angka tersebut dikirim ke Tika.

b. Tika mengirim Tian bilangan biner acak {1,1,0,1}.

c. Tian menghitung 16*((31)*(41)*(90)*(81))mod 35=31 dan dikirim ke Tika

d. Tika memeriksa bahwa 312*((41)*(111)*(160)*(291)) mod 35=11

Tian dan tika mengulang protokol ini sampai t kali, dengan bilangan acak yang berbeda setiap pengulangan, sampai Tika percaya. Dengan angka yang kecil seperti contoh di atas, maka tidak terlihat keamanan data yang sebenarnya. Tetapi dengan angka sepanjang 512 bit atau lebih, maka Tika tidak akan dapat mempelajari apa-apa tentang kunci rahasia Tian.


(36)

BAB III

ANALISIS DAN PERANCANGAN

3.1 Analisis Sistem

Sebelum dilakukan tahap perancangan sebuah sistem, perlu dilakukan analisis sistem yang akan dibangun. Analisis sistem merupakan istilah yang secara kolektif mendeskripsikan fase-fase awal pengembangan sistem. Tahap ini bertujuan memberikan gambaran yang jelas terhadap sistem yang akan dibangun. Tahap ini menjabarkan kebutuhan-kebutuhan yang berguna untuk perancangan sistem agar sistem yang dibangun sesuai dengan masalah yang akan diselesaikan.

3.1.1 Analisis Masalah

Masalah utama yang diangkat adalah autentikasi sebuah data pada sistem kriptografi. Sistem kriptografi ini menggunakan protokol Feige Fiat Shamir (FFS) yang merupakan salah satu algoritma dari penerapan Zero Knowledge Proof. Seperti yang telah dijelaskan bahwa Zero knowledge Proof ini merupakan prokotol yang aman untuk autentikasi sebuah data karena tidak memberikan informasi apapun tentang data yang dimiliki oleh seorang prover.

Analisis masalah digambarkan dengan Diagram Ishikawa (fishbone Diagram) berikut ini. Bagian kepala atau segiempat yang berada di sebelah kanan merupakan masalah. Sementara di bagian tulang-tulangnya merupakan penyebab.


(37)

Verifier

Material Machine/tools

Metode

Autentikasi Data

Ketidak percayaan terhadap pemverifikasi sebuah pesan

C#

File .txt dan .doc sebagai input

Feige Fiat Shamir Quadatic Linier

Congruential Generator

Text box, pop-up menu menerima

input

Menu Autentikasi data, menu help, menu About

Gambar 3.1 Diagram Ishikawa Untuk Analisa Masalah

3.1.2 Analisis Persyaratan (Requirement Analysis)

Analisis ini bertujuan untuk mengidentifikasi dan menyatakan persyaratan apa saja yang akan dibutuhkan oleh sistem agar dapat berjalan sesuai dengan yang diharapkan. Analisis persyaratan terdiri atas dua bagian yaitu analisis fungsional (functional requirement) dan analisis nonfungsional (nonfunctional requirement). Dimana persyaratan fungsional adalah aktifitas dan layanan yang harus diberikan/ disediakan oleh sebuah sistem, dan persyaratan nonfungsional berkaitan dengan fitur, kateristik, dan batasan lainnya yang menetukan apakah sistem memuaskan atau tidak. Persyaratan nonfungsional seringkali berupa batasan atau sesuatu yang menjadi perhatian stakeholder sebuah sistem. Kedua analisis ini merupakan hal penting untuk menentukan hal-hal yang harus dimiliki sistem.

3.1.2.1Persyaratan Fungsional

Analisis fungsional dibutuhkan untuk mengetahui hal-hal yang bisa dikerjakan oleh sistem. Berikut dijabarkan fungsi-fungsi yang dapat dikerjakan oleh sistem.

1. Sistem akan melakukan autentikasi pada data berupa .txt atau .doc

2. Sistem menghitung berapa lama waktu yang dibutuhkan dalam memproses seluruh kegiatan autentikasi.

3. Sistem melakukan autentikasi menggunakan protokol Feige Fiat Shamir dengan Quadratic Linear Congruential Generator dan Feige Fiat Shamir tanpa pembangkit bilangan acak Quadratic Linear Congruential Generator.


(38)

3.1.2.2Analisis Nonfungsional

Analisis nonfungsional berhubungan dengan hal-hal berikut ini: 1. Performa

Perangkat lunak yang akan dibangun dapat menunjukkan hasil dari proses pemabangkitan bilangan acak, dan autentikasi sebuah pesan.

2. Mudah dipelajari dan digunakan

Perangkat lunak yang akan dibangun memiliki tampilan yang user friendly dan responsif.

3. Hemat biaya

Perangkat lunak yang dibangun akan memprmudah pengguna untuk efesiensi waktu, sehingga hemat biaya.

4. Dokumentasi

Perangkat lunak yang akan dibangun dapat menyimpan hasil autentikasi pesan serta memiliki panduan penggunaan.

5. Kontrol

Perangkat lunak yang dibangun akan menampilkan pesan error untuk setiap input yang tidak sesuai.

3.1.3 Pemodelan Sistem dengan Use Case dan Ac tivity Diagram

Pemodelan sistem dilakukan untuk memperoleh gambaran yang lebih jelas tentang objek apa saja yang akan berinteraksi dengan sistem serta hal-hal apa saja yang dilakukan oleh sistem. Use case adalah salah satu pemodelan yang digunakan untuk memodelkan persyaratan sistem. Dengan use case ini digambarkan siapa saja yang berinteraksi dengan sistem dan apa saja yang dapat dilakukan dengan sistem.

Berdasarkan analisis kebutuhan sistem, secara garis besar sistem melakukan proses autentikasi dengan protokol Feige Fiat Shamir dan autentikasi dengan protokol Feige Fiat Shamir dengan pembangkit bilangan acak quadratic linear Congruential Generator.

Berikut ini adalah diagram use case yang dirancang sebagai pemodelan persyaratan sistem berdasarkan informasi kebutuhan sistem dan aktor yang berperan didalamnya.


(39)

Generate p dan q Authentication User <<extends>> Input File Generate bilangan acak Autentikasi <<uses>> <<extends>> <<extends>> Metode Lehhman <<extends>> <<extends>>

Feige Fiat Shamir <<extends>>

Generate p dan q

Authentication <<extends>> Input File Generate bilangan acak Autentikasi <<uses>> <<extends>> <<extends>> Metode Lehhman <<extends>> <<extends>>

Feige Fiat Shamir <<extends>>

Quadratic Linear Congruential

Generator

Gambar 3.2 Use case Diagram yang akan Dikembangkan

Diagram pada gambar 3.2 menjelaskan aksi yang dapat dilakukan oleh user, user melakukan input data dengan men-generate bilangan prima p dan q dan kemudian memproses data dan melakukan autentikasi dengan protokol feige Fiat Shamir dengan beberapa kali percobaan hingga proses autentikasi dinyatakan berhasil.

3.1.3.1 Use Case generate Bilangan Prima p dan q

Berikut ini merupakan spesifikasi use case generate Input p dan q Tabel 3.1 Spesifikasi Use Case generate p dan q

Name Enkripsi

Actors User

Trigger User men-generate p dan q yang akan menghasilkan nilai n Preconditions -

Post Conditions p dan q akan menghasil nilai n yang didapat dari perkalian bilangan prima p dan q

Success Scenario 1. User telah men-generate bilangan p dan q. 2. User mengakses tombol generate.

3. Sistem akan melakukan proses pemilihan bilangan prima berdasarkan metode Fermat.

4. Sistem akan menampilkan hasil bilangan prima p dan q. Alternative Flows -


(40)

User System

Akses tombol generate bilangan

prima

proses pemilihan bilangan prima p dan q dengan metode Fermat

Manampilkan bilangan prima p dan q

Gambar 3.3 Activity Diagram untuk Proses input p dan q

3.1.3.2 Use Case generate Bilangan Acak

Berikut ini adalah spesifikasi untuk use case proses pemilihan bilangan acak:

Tabel 3.2 Spesifikasi Use Case Pemilihan Bilangan acak

Name Pemilihan bilangan acak

Actors User

Trigger User mengakses tombol pemilihan bilangan random (random r) Preconditions Bilangan n telah diproses dan ditampilkan

Post Conditions Bilangan acak r akan menghasilkan nilai x Success Scenario 1. User mengakses tombol random r.

2. Sistem akan melakukan proses pemilihan bilngan acak dengan Quadratic Linear Congruential

Alternative Flows -


(41)

Verifier System

Akses tombol bilngan random r

Proses memilih dan menampilkan bilangan acak

dengan metode QLCG

Sistem menampilkan bilangan acak r

Gambar 3.4 Activity Diagram untuk Proses pemilihan bilangan acak

3.1.3.3 Use Case Proses Autentikasi

Berikut ini adalah spesifikasi untuk use case proses autentikasi Tabel 3.3 Spesifikasi Use Case Autentikasi

Name Authentication

Actors User

Trigger User menginputkan plaintext yang akan di autentikasi Preconditions plaintext telah disimpan sebelumnya

Post Conditions Proses ini akan menghasilkan hasil proses keberhasilan autentikasi

Success Scenario 1. User memasukkan plaintext

2. sistem akan melakukan proses autentikasi dengan FFS. Alternative Flows -


(42)

Berikut ini adalah activity diagram untuk proses autentikasi.

User System

Akses tombol Process

Sistem menampilkanoutput x, s, v, v invers

User memasukkan

plaintext

Sistem menampilakan output hasil autentikasi

Gambar 3.5 : Activity Diagram untuk Proses Autentikasi

3.1.4. Analisis Sistem Proses

Pada proses autentikasi ini kita menggunakan algoritma Feige Fiat Shamir (FFS). Dalam proses Protokol Feige Fiat Shamir (FFS) ini dibutuhkan bilangan prima yang dicari menggunakan metode Fermat dan bilangan acak yang dicari menggunakan metode Quadratic Linear Congruential Generator (QLCG) Pada diagram gambar 3.6 dapat dilihat sequence diagram untuk proses input p dan q.


(43)

User Sistem

Generate p

Generate q

Tampilkan output p dan q

Gambar 3.6 Sequence Diagram Proses Generate p dan q

Hasil dari bilangan prima p dan q yang didapat akan digunakan untuk mendapatkan nilai n. Setelah proses input bilangan prima p dan q selesai dilakukan, kemudian sistem akan melakukan generate bilangan acak dngan metode Quadratic Linear Congruential Generator, yang dapat dilihat pada gambar 3.7.

verifier Sistem

Random r

Tampilkan bilangan acak r

Proses bilangan acak


(44)

Dari sequnce diagram pada gambar 3.7 dapat dilihat bahwa hasil yang didapat oleh user adalah bilangan random r yang akan digunakan untuk mencari nilai x.

Untuk proses identifikasi skema (autentikasi) dengan protokol Feige Fiat Shamir sistem akan memproses dan menampilkan hasil perhitungan nilai n, x, v, v-invers, dan s yang akan digunakan untuk pengecekan. Sequence diagram proses idrntifikasi skema feige Fiat Shamir dapat dilihat pada Gambar 3.8.

verifier Sistem

Tampilkan hasil autentikasi

pengecekan

Masukkan plaintext Proses nilai x, v, v invers, dan s


(45)

3.1.5. Flowchart Sistem

3.1.5.1. Flowchart Gambar Umum

Secara umum proses yang dilakukan ini dapat dilihat pada flowchart gambaran umum pada gambar 3.9.

Start

Input plaintext

End Pembangkitan bilangan Prima

p dan q

Pembangkitan bilangan Acak

Pengecekan/ Autentikasi

FFS

Tampilkan hasil Autentikasi


(46)

3.1.5.2 Flowchart dan pseudocode Proses Generate p dan q

Proses gnerate bilangan prima p dan q ini menggunakan metode Fermat. Berikut ini flowchart yang menggambarkan langkah-langkah generate bilangan prima.

start

p, q

For i=0;i<p.length, i++ For i=0;i<q.length, i++

If ap-1 = 1(mod p) False

true

End

no

yes

Tampilkan p, q


(47)

3.1.5.3.Flowchart dan Pseudocode Proses Pembangkitan Bilangan Acak Metode Quadratic Linear Congruential Generator (QLCG)

Proses pembangkitan bilangan acak dilakukan dengan Metode Quadratic Linear Congruential Generator (QLCG), dapat dilihat pada Gambar 3.11.

Mulai

a , b , c,

Xo = key(i) for i = 1; i = 256 ; i++

Selesai

key(i) = (ceil((a*Xo*Xo+b*X0+C) mod 256

Tampilkan bilangan acak


(48)

Pseudocode metode Quadratic Linear Congruential Generator (QLCG). private int po (n,m)

int hasil1

loop i from 0 to i less then m

hasilhasil*n return hasil end loop

public int Generate(index) array x0

loop i from 1 to i less then 256

x[i]((a*pow(x[i-1],2))+b*x[i-1]+c) mod m return x[index]

end loop

Pada saat akan melakukan pembangkitan bilangan acak maka program akan mengeksekusi nilai x[i] sampai 256 kali. Ketika algoritma Quadratic Linear Congruential Generator berjalan maka program akan menampilkan hasil seluruh bilangan acak yang di dapat dan memilih salah satu bilangan acak secara random yang akan digunakan pada proses autentikasi selanjutnya.

3.1.5.4.Flowchart dan pseudocode Proses Autentikasi (Identifikasi Skema) Feige Fiat Shamir (FFS)

Proses autentikasi dilakukan dengan protokol Feige Fiat Shamir. Langkah-langkah pengecekan atau autentikasi dapat dilhat pada Gambar 3.12.


(49)

Start

p,q

n = p x q

r

v = x2 mod n

s2 = v-1 mod n v-1 = s2 mod n

y = r x mod n= r2 mod n

Input paliantext

stop x = r2 mod n

no

If random bit

b=1 yes x mod n=v(y2 mod n) mod n

Hasil autentikasi

, y = rs mod n


(50)

pseudocode Proses Autentikasi (Identifikasi Skema) Feige Fiat Shamir (FFS): private FFSAlgorithm()

QLCGGen(a,b,c,m) GenerateBigPrime(p) GenerateBigprime(q) rgenerate[index] x(r*r) mod n v(x*x) mod n

initialize counter to zero initialize result to zero while result not equals to 1 counter++

result  (v*counter) mod n end while

initialize counter to zero initialize result to zero while result not equals to 1 counter++

result(counter*counter) mod n end while

end

public bool otentikasi(int t)

for i equals to 0, i less then t if (index"0")

y:=r

valA x mod n valBr*r mod n

if(valA not equals to valB) return false


(51)

endif

return true end

Pada saat akan melakukan proses identifikasi skema (autentikasi) dengan protokol Feige Fiat Shamir (FFS) maka program akan memproses nilai n dan r yang diperoleh untuk mendapatkan nilai x, v, v-invers, dan memproses hasil autentikasi setelah user menginputkan data yang akan diidentifikasi.

3.1.6. Rancangan Antar Muka

Sistem akan dibangun menggunakan bahasa pemrograman C# dengan menggunakan software Microsoft Visual Studio. Rancangan antar muka akan disesuaikan dengan kebutuhan dan software yang digunakan. Antar muka menggunakan lima form, form utama ,form about, form Help, form Protokol FFS dengan QLCG, form protokol FFS tanpa QLCG

3.1.6.1.Antar Muka Mainform

Pada Mainformuser dapat memilih menu tersedia

X

__ File About Help

Implementasi Zero Knowledge Proof

dengan Feige Fiat Shamir dan Quadratic

Linear Congruential generator

Lambang USU

DEPARTEMEN S1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

4

5

6

1 2 3

Gambar 3. 13 Rancangan Form Utama

Komponen yang dipakai untuk membangun antar muka Mainform pada gambar 3.13, dapat dilihat pada tabel 3.4 berikut ini.


(52)

Tabel 3.4 Rincian Rancangan Form Utama

No Tipe Teks Nama Keterangan

1 MenuStrip File Menustrip1 Terdapat beberapa sub menu 2 MenuStrip About Menustrip2 Terdapat submenu untuk

beralih ke Form About

3 MenuStrip Help MenuStrip3 Submenu untuk ke Form Help

4 Label Judul Label1 -

5 PictureBox LambangUSU PictureBox1 -

6 Label Jurusan Label2 -

3.1.5.1Antar Muka Form Authenticationwith FFS and QLCG

Pada form Autentikasi user akan menginputkan bilangan prima yang nantinya akan proses.

X

__ File About Help

1 2 3

PROTOKOL FEIGE FIAT SHAMIR DENGAN QUADRATIC LINEAR CONGRUENTIALGENERATOR

p q x v v-invers s Generate p Process Genereate q Open File File Information File Name Size Location Authentication 4 18 17 16 14 13 12 11 10 9 6 5 19 26 25 24 23 22 21 20 28 27 n 14 7 Time 29 r 15 8 Random r 30 31 Time 32 Time 33

Gambar 3.14 Rancangan Form Authenticationwith FFS and QLCG

Komponen yang dipakai untuk membangun antar muka form autentikasi pada gambar 3.14 dapat dilihat pada tabel 3.5 berikut :


(53)

Tabel 3.5 Rincian Rancangan Form Authentication with FFS and QLCG

No Tipe Teks Nama Keterangan

1 MenuStrip File Menustrip1 Terdapat beberapa sub menu

2 MenuStrip About Menustrip2 Terdapat submenu untuk beralih ke Form About 3 MenuStrip Help MenuStrip3 Submenu untuk ke Form

Help

4 Label Judul Label1 -

5 Label P Label2 -

6 Label Q Label3 -

7 Label N Label4 -

8 Label R Label5 -

9 Label X Label6 -

10 Label V Label7 -

11 Label v-invers Label8 -

12 Label S Label9 -

13 Textbox - Tbp Inputan bilangan prima p

14 Textbox - Tbq Inputan bilangan prima q

15 Textbox - Tbn hasil perkalian p x q

16 Textbox - Tbr Inputan bilangan acak

17 Textbox - Tbx Tampilan hasil r2 mod n 18 Textbox - Tbv Tampilan hasil x2 mod n 19 Textbox - tbv_invers Tampilan hasil v invers 20 Button Open File btnOpen Membuka File

21 Textbox - tbFile Tampilan file yang dibuka 22 Grupbox Info File - Berisi informasi mengenai

file

23 Button Generate p Buttonp Bangkitkan bilangan prima p

24 Button Generat q Buttonq Bangkitkan bilangan prima q


(54)

Tabel 3.6 Lanjutan Rincian Rancangan Form Autentikasi

No Tipe Teks Nama Keterangan

25 Button Process Proses Proses hasil r, x, v, v invers, s

26 Groupbox Authentication - Menampilkan hasil proses autentikasi

27 Textbox - A Hasil pengecekan pertama

28 Textbox - B Hasil pengecekan kedua

29 Label - LabelTime1 Menampilkan waktu

autentikasi

30 Button Random r Btnr Memproses bilangan acak

31 textBox - Txtbox Menampilkan seluruh

nilai r

32 Label - Labeltime2 Menampilkan waktu

pembangktan bilangan acak

33 Label - Labeltime3 Menampilkan waktu

process

3.2 Tahapan Sistem

3.2.1 Tahapan metode Fermat

Teorema Fermat menyatakan bahwa jika n adalah bilangan yang akan dites keprimaannya dan 1≤ a < n , maka :

an-1 mod n = 1 dimana : a ∈ Z

Nilai a ditentukan secara acak pada interval antara 2 sampai n-1. Jika persamaan tersebut tidak terpenuhi pada satu nilai a maka n adalah bilangan komposit. Sedangkan jika persamaan tersebut dipenuhi pada banyak nilai a, maka n adalah kemungkinan prima.

Berikut beberapa contoh pengujian bilangan prima dengan metode Fermat

n = 47

Pembuktian dilakukan dengan mengambil beberapa nilai a pada interval 1 < a < 47, sebagai contoh a = { 9, 13}


(55)

an-1 mod n

Jika a = 9 ,maka : 947-1 mod 47 = 1 Jika a = 13 ,maka : 1347-1 mod 47 = 1

Karena memenuhi persamaan Fermat pada semua nilai a, maka 47 merupakan bilangan prima.

n = 201

Pembuktian dilakukan dengan mengambil beberapa nilai a pada interval 1 < a < 201, sebagai contoh a = { 32, 51, 199}

an-1 mod n

Jika a = 32,maka : 32201-1 mod 201 = 19 Jika a = 149 ,maka : 149201-1 mod 201 = 91 Jika a =199 ,maka : 199201-1 mod 201 = 4

Karena tidak memenuhi persamaan Fermat, maka 201 bukan merupakan bilangan prima.

n = 227

Pembuktian dilakukan dengan mengambil beberapa nilai a pada interval

1 < a < 227, sebagai contoh a = { 7, 45, 167} an-1 mod n

Jika a = 7 ,maka : 7227-1 mod 227 = 1 Jika a = 45 ,maka : 45227-1 mod 227= 1 Jika a = 167 ,maka : 167227-1 mod 227 = 1

Karena memenuhi persamaan Fermat pada semua nilai a, maka 227 merupakan bilangan prima.


(56)

Pembuktian dilakukan dengan mengambil beberapa nilai a pada interval

1 < a < 71, sebagai contoh a = { 8, 17} an-1 mod n

Jika a = 8 ,maka : 871-1 mod 71 = 1 Jika a = 17 ,maka : 1771-1 mod 71 = 1

Karena memenuhi persamaan Fermat pada semua nilai a, maka 71 merupakan bilangan prima.

3.2.2 Tahapan Metode Quadratic Linear Congruential Generator (QLCG)

Penentuan keempat konstanta tersebut akan menentukan kualitas bilangan acak yang dihasilkan Pembangkit bilangan acak QLCG mengalami pengulangan pada periode tertentu atau setelah sekian kali pembangkitan, hal ini adalah salah satu sifat pembangkitan dari metode ini. QLCG mempunyai periode tidak lebih dari m dan kebanyakan kasus periodenya kurang dari m.

Di bawah ini, ada beberapa buah contoh hasil analisis yang penulis lakukan dengan beberapa buah kombinasi keempat konstanta LCG :

1. Tabel hasil bilangan acak metode QLCG dengan nilai a = 7, b=24, c = 11, m = 16

X0 = 0

X1 = (a*Xn-1*Xn-1+b*Xn-1+c) mod 16 = (7*0*0 + 24 * 0 + 11) mod 16

= 11 mod 16 = 11

X2 = (a*Xn-1*Xn-1+b*Xn-1+c) mod 16 = (7*11*11 + 24 * 11 + 11) mod 16

= 1122 mod 16 = 2

X3 = (a*Xn-1*Xn-1+b*Xn-1+c) mod 16 = (7*2*2 + 24 * 2 + 11) mod 16


(57)

= 7

Nilai Xn selanjutnya dapat dilihat pada tabel 3.7 dibawah ini: Tabel 3.7 Tabel dengan nilai a = 7, b=24, c = 11, m = 16

Xn Xn-1

0 0

1 11

2 2

3 7

4 10

5 7

6 10

7 7

8 10

Tabel 3.3 menunjukkan hasil pembangkitan kunci dengan menggunakan metode QLCG. Nilai 11, 2, 7, 10, 7 adalah kunci yang diperoleh dari hasil pembangkitan dan terlihat perulangan kunci pada proses pembangkitan ke tiga.

2. Tabel hasil bilangan acak metode QLCG dengan nilai a= 29, b=31 , c=49, m=256

X0 = 0

X1 = (a*Xn-1*Xn-1+b*Xn-1+c) mod 256 = (29*0*0 + 31 * 0 + 49) mod 256

= 49 mod 256 = 49

X2 = (a*Xn-1*Xn-1+b*Xn-1+c) mod 256 = (29*49*49 + 31 * 49 + 49) mod 256

= 71197 mod 256 = 29

X3 = (a*Xn-1*Xn-1+b*Xn-1+c) mod 256 = (29*29*29 + 31 * 29 + 49`) mod 256

= 25337 mod 256 = 249


(58)

Tabel 3.8 Hasil bilangan acak metode QLCG dengan nilai a= 29, b=31, c=49, m=256

Xn Xn-1 Xn Xn-1 Xn Xn-1

0 0 32 21 64 149

1 49 33 177 65 49

2 29 34 157 66 29

3 249 35 121 67 249

4 229 36 101 68 229

5 129 37 1 69 129

6 237 38 109 70 237

7 201 39 73 71 201

8 53 40 181 72 53

9 209 41 81 73 209

10 189 42 61 74 189

11 153 43 25 75 153

12 133 44 5 76 133

13 33 45 161 77 33

14 141 46 13 78 141

15 105 47 233 79 105

16 213 48 85 80 213

17 113 49 241 81 113

18 93 50 221 82 93

19 57 51 185 83 57

20 37 52 165 84 37

21 193 53 65 85 193

22 45 54 173 86 45

23 9 55 137 87 9

24 117 56 245 88 117

25 17 57 145 89 17

26 253 58 125 90 253

27 217 59 89 91 217

28 197 60 69 92 197

29 97 61 225 93 97

30 205 62 77 94 205

31 169 63 41 95 169

Tabel 3.8 menunjukkan hasil pembangkitan kunci dengan menggunakan metode QLCG. Nilai 49, 29, 249, 229, 129 dan seterusnya adalah kunci yang diperoleh dari hasil pembangkitan dan terlihat perulangan kunci pada proses pembangkitan ke-65.


(1)

this.Close(); }

} }

Kode Program Figure Menu Help:

using System;

using System.Collections.Generic; using System.ComponentModel; using System.Data;

using System.Drawing; using System.Linq; using System.Text;

using System.Windows.Forms; namespace ZKP

{

public partial class FormHelp : Form

{

public FormHelp() {

InitializeComponent(); }

private void closeToolStripMenuItem_Click(object sender, EventArgs e) {

FormFFS ffs = new FormFFS(); ffs.Show();

this.Hide(); }

private void exitToolStripMenuItem_Click(object sender, EventArgs e) {

this.Close(); }

private void fFSToolStripMenuItem_Click(object sender, EventArgs e) {

FormFFS2 ffs2 = new FormFFS2(); ffs2.Show();

this.Hide(); }

private void programToolStripMenuItem_Click(object sender, EventArgs e) {

FormAbout mm = new FormAbout(); mm.Show();

this.Hide(); }

private void help_Click(object sender, EventArgs e) {

FormHelp mm2 = new FormHelp(); mm2.Show();

this.Hide(); }


(2)

{

this.Close(); }

} }

Kode Program Menu Authentication with FFS:

using System;

using System.Collections.Generic; using System.ComponentModel; using System.Data;

using System.Drawing; using System.Linq; using System.Text;

using System.Windows.Forms; using System.Numerics; using System.Diagnostics; using System.IO;

namespace ZKP {

public partial class FormFFS2 : Form

{

private BigInteger r; private BigInteger p; private BigInteger q; private BigInteger n; private BigInteger x; private BigInteger v; private BigInteger v_inv; private BigInteger s; byte[] dataBytes;

Stopwatch stopwatch = new Stopwatch(); public FormFFS2()

{

InitializeComponent(); }

private void button_n_Click(object sender, EventArgs e) {

p = Convert.ToInt32(tbp.Text); q = Convert.ToInt32(tbq.Text); n = p * q;

tbn.Text = n.ToString(); }

private void result_Click(object sender, EventArgs e) {

if(tbr.Text=="") {

MessageBox.Show("Inputkan random r"); }

else {

timer1.Start(); stopwatch.Start();


(3)

x = (r * r) % n;

tbx.Text = x.ToString(); v = (x * x) % n;

tbv.Text = v.ToString(); BigInteger result=0; BigInteger counter = 0; while (result != 1) {

counter++;

result = (v * counter) % n; }

v_inv = counter;

tbv_inv.Text = v_inv.ToString(); counter = 0;

result = 0;

while (result != v_inv) {

counter++;

result = (counter * counter) % n; }

s = counter;

tbs.Text = s.ToString(); stopwatch.Stop();

label8.Text += " " + stopwatch.Elapsed.ToString(); }

}

private void closeToolStripMenuItem_Click(object sender, EventArgs e) {

FormFFS ffs = new FormFFS(); ffs.Show();

this.Hide(); }

private void exitToolStripMenuItem_Click_1(object sender, EventArgs e) {

this.Close(); }

private void fFSToolStripMenuItem_Click_1(object sender, EventArgs e) {

FormFFS2 ffs2 = new FormFFS2(); ffs2.Show();

this.Hide(); }

private void programToolStripMenuItem_Click_1(object sender, EventArgs

e)

{

FormAbout mm = new FormAbout(); mm.Show();

this.Hide(); }

private void help_Click_1(object sender, EventArgs e) {

FormHelp helpp = new FormHelp(); helpp.Show();


(4)

this.Hide(); }

public static string GetSizeReadable(long i) {

string sign = (i < 0 ? "-" : ""); double readable = (i < 0 ? -i : i); string suffix;

if (i >= 0x1000000000000000) // Exabyte

{

suffix = "EB";

readable = (double)(i >> 50); }

else if (i >= 0x4000000000000) // Petabyte

{

suffix = "PB";

readable = (double)(i >> 40); }

else if (i >= 0x10000000000) // Terabyte

{

suffix = "TB";

readable = (double)(i >> 30); }

else if (i >= 0x40000000) // Gigabyte

{

suffix = "GB";

readable = (double)(i >> 20); }

else if (i >= 0x100000) // Megabyte

{

suffix = "MB";

readable = (double)(i >> 10); }

else if (i >= 0x400) // Kilobyte

{

suffix = "KB";

readable = (double)i; }

else {

return i.ToString(sign + "0 B"); // Byte

}

readable = readable / 1024;

return sign + readable.ToString("0.### ") + suffix; }

private void btnOpen_Click(object sender, EventArgs e) {

openFileDialog1.Filter = "txt files |*.txt|All files |*.*"; openFileDialog1.InitialDirectory = @"D:\";

openFileDialog1.Title = "Open File"; openFileDialog1.FileName = "*.txt";

DialogResult result = openFileDialog1.ShowDialog(); // Show the dialog.

if (result == DialogResult.OK) // Test result.

{


(5)

label6.Visible = true; label9.Visible = true;

string file = openFileDialog1.FileName; string isi, AsciiPlain = "";

//textBox1.Text = file;

isi = File.ReadAllText(file);

dataBytes = System.Text.ASCIIEncoding.ASCII.GetBytes(isi); FileInfo info = new FileInfo(file);

label5.Text = info.Name; label9.Text = file;

long fileSize = new System.IO.FileInfo(file).Length; string sizeReadable = GetSizeReadable(fileSize); label6.Text = sizeReadable;

txtContent.Text = isi;

for (int i = 0; i < dataBytes.Length; i++) {

AsciiPlain += dataBytes[i].ToString(); }

} }

private void button1_Click(object sender, EventArgs e) {

timer2.Start(); stopwatch.Start();

FFSAlgorithm algorithm = new FFSAlgorithm(); algorithm.setData(r, s, n, x, v, txtContent.Text); if (algorithm.otentikasi(30))

{

MessageBox.Show("autentikasi berhasil"); A.Text = "authentication success";

} else {

B.Text = "FALSE"; }

stopwatch.Stop();

label10.Text += " " + stopwatch.Elapsed.ToString(); }

} }


(6)

Tian Situngkir

0856 623 7640

Jl. Gendang No. 16C Pasar II Padang Bulan Medan, Sumatera Utara

Tiannovita14@gmail.com ✉

Pendidikan

2009 – 2013

S1 Ilmu Komputer Fasilkom-TI USU, Medan.

2005 – 2008

SMA NEGERI 1 SIDIKALANG

2002 – 2005

SMP NEGERI 1 SIDIKALANG

1996 – 2002

SD NEGERI 030281 SIDIKALANG

Keahlian/Kursus yang pernah diikuti

Bahasa

Indonesia, Inggris.

Bahasa Pemrograman

C#.