BAB III ANALISIS DAN PERANCANGAN 3.1 Analisis Sistem - Implementasi Zero Knowledge Proof Dengan Protokol Feige Fiat Shamir Dan quadratic Linear Congruential Generator
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.
Analisis Masalah
3.1.1 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.
Verifier Metode Ketidak percayaan terhadap sebuah pesan pemverifikasi Feige Fiat Shamir Quadatic Linier Congruential Generator File .txt dan .doc C# Menu Autentikasi data, menu help, pop-up menu menerima Text box, input Autentikasi Data sebagai input menu About
Machine/tools Material
Gambar 3.1 Diagram Ishikawa Untuk Analisa Masalah3.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.
Persyaratan Fungsional
3.1.2.1 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.
3.1.2.2 Analisis 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.
<<extends>> <<extends>> Generate p dan q Metode Lehhman Generate p dan q Metode Lehhman
<<extends>> <<extends>> Quadratic Linear <<extends>>
<<extends>> Generate bilangan Generate bilangan Congruential acak acak
Generator <<extends>> <<extends>> Authentication
Authentication <<uses>> <<uses>> Input File
User Input File <<extends>> <<extends>> <<extends>>
<<extends>> Feige Fiat Shamir
Autentikasi
Feige Fiat Shamir
Autentikasi
Gambar 3.2 Use case Diagram yang akan DikembangkanDiagram pada gambar 3.2 menjelaskan aksi yang dapat dilakukan oleh user, melakukan input data dengan men-generate bilangan prima p dan q dan
user
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 qName 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 1. User telah men-generate bilangan p dan q.
Success Scenario 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
Berikut ini adalah activity diagram untuk proses generate p dan q:
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 q3.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 acakName Pemilihan bilangan acak Actors User
Trigger User mengakses tombol pemilihan bilangan random (random r)
Preconditions Bilangan n telah diproses dan ditampilkan Post ConditionsBilangan 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 -
Berikut ini adalah activity diagram untuk proses pemilihan bilangan acak r
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 acak3.1.3.3 Use Case Proses Autentikasi
Berikut ini adalah spesifikasi untuk use case proses autentikasi
Tabel 3.3 Spesifikasi Use Case AutentikasiName 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 - Berikut ini adalah activity diagram untuk proses autentikasi.
System User Sistem menampilkanoutput x, s, Akses tombol v, v invers Process
User memasukkan Sistem menampilakan output plaintext hasil autentikasi
Gambar 3.5 : Activity Diagram untuk Proses Autentikasi Analisis Sistem Proses3.1.4. 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.
User Sistem Generate p Generate q Tampilkan output p dan q
Gambar 3.6 Sequence Diagram Proses Generate p dan qHasil 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 Proses bilangan acak
Tampilkan bilangan acak r
Gambar 3.7 Sequence Diagram untuk Proses input bilangan acak 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 Proses nilai x, v, v invers, dan s Masukkan plaintext pengecekan
Tampilkan hasil autentikasi
Gambar 3.8 Sequence Diagram untuk Proses identifikasi skema (autentikasi) FFS3.1.5. Flowchart Sistem
Flowchart Gambar Umum 3.1.5.1.
Secara umum proses yang dilakukan ini dapat dilihat pada flowchart gambaran umum pada gambar 3.9.
Start Pembangkitan bilangan Prima p dan q
Pembangkitan bilangan Acak Input plaintext
Pengecekan/ Autentikasi FFS Tampilkan hasil Autentikasi
End
Gambar 3.9 Gambaran Umum Sistem3.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++ p-1
If a = 1(mod p) no False yes true Tampilkan p, q End
Gambar 3.10 Flowchart untuk proses Generate p dan q
3.1.5.3.Flowchart dan Pseudocode Proses Pembangkitan Bilangan Acak
Quadratic Linear Congruential Generator (QLCG)
MetodeProses pembangkitan bilangan acak dilakukan dengan Metode Quadratic Linear Congruential Generator (QLCG), dapat dilihat pada Gambar 3.11.
Mulai a , b , c, for i = 1; i = 256 ; i++ key(i) = (ceil((a*Xo*Xo+b*X0+C) mod 256
Xo = key(i) Tampilkan bilangan acak
Selesai
Gambar 3.11 : Flowchart untuk Proses QLCG 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.
Start p,q n = p x q r v = x 2 mod n s 2 = v -1 mod n v
- -1 = s 2 mod n y = r x mod n= r2 mod n Input paliantext stop x = r 2 mod n no If random bit b=1 x mod n=v(y2 mod n) mod n yes
- 28 Textbox B Hasil pengecekan kedua
- 31 textBox Txtbox Menampilkan seluruh nilai r
- 32 Label Labeltime2 Menampilkan waktu pembangktan bilangan acak
- 33 Label Labeltime3 Menampilkan waktu
- n = 47
- n = 201
- n = 227
- n = 71
- X
- b*X
- c) mod 256 = (29*29*29 + 31 * 29 + 49`) mod 256
- X
- b*X
- c) mod 256 = (266*11*11 + 267* 11 + 11) mod 256
- Tim : p =11 q = 13 n = 11 x 13 = 143
- Tian : r = 17
- Tim : v =
- 1 -1
- 1
- 1
- 1
- 1
- 1
- 1
Hasil autentikasi , y = rs mod n
Gambar 3.12 :
Flowchart untuk Proses Autentikasi
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
x mod n valA valB r*r mod n if(valA not equals to valB) return false end if 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 Mainform user dapat memilih menu tersedia
1
3 __
2 X File About Help
4 Implementasi Zero Knowledge Proof dengan
Feige Fiat Shamir dan Quadratic
Linear Congruential generator
5 Lambang USU
6 DEPARTEMEN S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
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.
Tabel 3.4 Rincian Rancangan Form Utama3.1.5.1 Antar Muka Form Authenticationwith FFS and QLCG
3 PROTOKOL
7 Time
28
19
26
25
24
23
22
21
20
14
27 n
6
29 r
15
8
Random r30
31
Time33 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 :
5
9
No Tipe Teks Nama Keterangan
2
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 -
Pada form Autentikasi user akan menginputkan bilangan prima yang nantinya akan proses.
X __ File About Help
1
FEIGE FIAT SHAMIR DENGAN QUADRATIC LINEAR CONGRUENTIAL GENERATOR p q x v v-invers s
10
Generate p Process Genereate q
Open File File Information File Name Size Location Authentication
4
18
17
16
14
13
12
11
32 Time
Tabel 3.5 Rincian Rancangan Form Authentication with FFS and QLCG14 Textbox - Tbq Inputan bilangan prima q
Bangkitkan bilangan prima p
23 Button Generate p Buttonp
22 Grupbox Info File - Berisi informasi mengenai file
21 Textbox - tbFile Tampilan file yang dibuka
20 Button Open File btnOpen Membuka File
19 Textbox - tbv_invers Tampilan hasil v invers
mod n
2
18 Textbox - Tbv Tampilan hasil x
mod n
2
17 Textbox - Tbx Tampilan hasil r
16 Textbox - Tbr Inputan bilangan acak
15 Textbox - Tbn hasil perkalian p x q
13 Textbox - Tbp Inputan bilangan prima p
No Tipe Teks Nama Keterangan
12 Label S Label9 -
11 Label v-invers Label8 -
V Label7 -
10 Label
X Label6 -
9 Label
8 Label R Label5 -
7 Label N Label4 -
6 Label Q Label3 -
5 Label P Label2 -
4 Label Judul Label1 -
3 MenuStrip Help MenuStrip3 Submenu untuk ke Form Help
2 MenuStrip About Menustrip2 Terdapat submenu untuk beralih ke Form About
1 MenuStrip File Menustrip1 Terdapat beberapa sub menu
24 Button Generat q Buttonq Bangkitkan bilangan prima q
Tabel 3.6 Lanjutan Rincian Rancangan Form AutentikasiNo 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
29 Label LabelTime1 Menampilkan waktu - autentikasi
30 Button Random r Btnr Memproses bilangan acak
process
3.2 Tahapan Sistem Tahapan metode Fermat
3.2.1 Teorema Fermat menyatakan bahwa jika n adalah bilangan yang akan dites
keprimaannya dan 1
≤ a < n , maka : n-1 a 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
Pembuktian dilakukan dengan mengambil beberapa nilai a pada interval 1 < a < 47, sebagai contoh a = { 9, 13}
n-1 a mod n
Jika a = 9 ,maka :
47-1
9 mod 47 = 1 Jika a = 13 ,maka :
47-1
13 mod 47 = 1 Karena memenuhi persamaan Fermat pada semua nilai a, maka 47 merupakan bilangan prima.
Pembuktian dilakukan dengan mengambil beberapa nilai a pada interval 1 < a < 201, sebagai contoh a = { 32, 51, 199}
n-1 a mod n
Jika a = 32,maka :
201-1
32 mod 201 = 19 Jika a = 149 ,maka :
201-1
149 mod 201 = 91 Jika a =199 ,maka :
201-1
199 mod 201 = 4 Karena tidak memenuhi persamaan Fermat, maka 201 bukan merupakan bilangan prima.
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 :
227-1
7 mod 227 = 1 Jika a = 45 ,maka :
227-1
45 mod 227= 1 Jika a = 167 ,maka :
227-1
167 mod 227 = 1 Karena memenuhi persamaan Fermat pada semua nilai a, maka 227 merupakan bilangan prima.
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 :
71-1
8 mod 71 = 1 Jika a = 17 ,maka :
71-1
17 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 X = 0
X
1 = (a*X n-1 *X n-1 +b*X n-1 +c) mod 16
= (7*0*0 + 24 * 0 + 11) mod 16 = 11 mod 16 = 11
X = (a*X *X +b*X +c) mod 16
2 n-1 n-1 n-1
= (7*11*11 + 24 * 11 + 11) mod 16 = 1122 mod 16 = 2
X
3 = (a*X n-1 *X n-1 +b*X n-1 +c) mod 16
= (7*2*2 + 24 * 2 + 11) mod 16 = 87 mod 16 selanjutnya dapat dilihat pada tabel 3.8 dibawah ini:
n
= (29*49*49 + 31 * 49 + 49) mod 256 = 71197 mod 256 = 29
2. Tabel hasil bilangan acak metode QLCG dengan nilai a= 29, b=31 , c=49, m=256 X = 0
X
1 = (a*X n-1 *X n-1 +b*X n-1 +c) mod 256
= (29*0*0 + 31 * 0 + 49) mod 256 = 49 mod 256 = 49
X
2 = (a*X n-1 *X n-1 +b*X n-1 +c) mod 256
X
8
3
= (a*X
n-1
n-1
n-1
= 25337 mod 256 = 249
Nilai X
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.
7
= 7 Nilai X n selanjutnya dapat dilihat pada tabel 3.7 dibawah ini:
2
Tabel 3.7 Tabel dengan nilai a = 7, b=24, c = 11, m = 16X n
X n-1
1
11
2
3
7
7
4
10
5
7
6
10
84
45
86
45 54 173
22
65 85 193
53
37 21 193
37 52 165
9 55 137
20
57
83
57 51 185
19
93
82
23
87
18
97 61 225
Tabel 3.8 menunjukkan hasil pembangkitan kunci dengan menggunakan metode QLCG. Nilai 49, 29, 249, 229, 129 dan seterusnya adalah kunci41 95 169
63
77 94 205 31 169
62
97 30 205
93
29
9 24 117 56 245 88 117
69 92 197
60
89 91 217 28 197
59
17 26 253 58 125 90 253 27 217
89
17 57 145
25
93 50 221
85 80 213 17 113 49 241 81 113
X n
49 33 177
37
29 3 249 35 121 67 249 4 229 36 101 68 229 5 129
66
29 34 157
2
49
65
1
39
21 64 149
32
X n-1
X n
X n-1
X n
X n-1
1 69 129 6 237 38 109 70 237 7 201
73 71 201
48
44
13 78 141 15 105 47 233 79 105 16 213
46
33 14 141
77
33 45 161
13
5 76 133
25 75 153 12 133
8
43
61 74 189 11 153
42
81 73 209 10 189
41
53 9 209
72
53 40 181
yang diperoleh dari hasil pembangkitan dan terlihat perulangan kunci pada proses pembangkitan ke-65.
3. Tabel hasil bilangan acak metode QLCG dengan nilai a= 124, b=637, c=381, m=256 X = 0
98 66 130 98 162 130 194 162 226 194 3 199 35 103
32
64
64
96 96 128 128 160 160 192 192 224 224 1 125
33
29 65 189
97 93 129 253 161 157 193 61 225 221 2 226
34
2
66
34
67
X n-1
7 99 167 131 71 163 231 195 135 227
39 4 100 36 132 68 164 100 196 132 228 164 4 196 36 228
68
5
17 37 177
69 81 101 241 133 145 165 49 197 209 229 113 6 198 38 230
70 6 102 38 134 70 166 102 198 134 230 166 7 155
39
59 71 219 103 123 135 27 167 187 199 91 231 251
8
72 40 104 72 136 104 168 136 200 168 232 200 8 232
32
X n
X
Tabel 3.9 Hasil bilangan acak metode QLCG dengan nilai a= 124, b=637, c=381, m=2561 = (a*X n-1 *X n-1 +b*X n-1 +c) mod 256
= (124*0*0 + 637* 0 + 381) mod 256 = 381 mod 256 = 125
X
2 = (a*X n-1 *X n-1 +b*X n-1 +c) mod 256
= (124*125*125 + 637 * 125 + 381) mod 256 = 2017506 mod 256 = 226
X
3 = (a*X n-1 *X n-1 +b*X n-1 +c) mod 256
= (124*226*226 + 637 * 226 + 381) mod 256 = 6477767 mod 256 = 199
Nilai X
n
selanjutnya dapat dilihat pada tabel 3.9 dibawah ini:
X n
X n-1
X n-1
X n
X n-1
X n
X n-1
X n
X n-1
X n
X n-1
X n
X n-1
X n
40
Tabel 3.10 Lanjutan Hasil bilangan acak metode QLCG dengan nilai a= 124, b=637, c=381, m=25621
54 23 235 55 139
86 54 118 86 150 118 182 150 214 182 246 214 22 246
22
1 85 161 117 65 149 225 181 129 213 33 245 193
53
97
84 52 116 84 148 116 180 148 212 180 244 212
75 24 216 56 248
20
52
83 87 115 247 147 151 179 55 211 215 243 119 20 244
23 51 183
19
82
87 43 119 203 151 107 183 11 215 171 247
88 24 120 56 152 88 184 120 216 152 248 184 25 245 57 149
81 13 113 173 145 77 177 237 209 141 241
92 92 124 124 156 156 188 188 220 220 252 252
Tabel 3.9 dan Tabel 3.10 menunjukkan hasil pembangkitan kunci dengan menggunakan metode QLCG. Nilai 125, 226, 199, 100, 17, 198, 155, 72, 165,42, 111,51 95 211 127 115 159 19 191 179 223 83 255 243
63
41 93 201 125 105 157 9 189 169 221 73 253 233 30 158 62 190 94 222 126 254 158 30 190 62 222 94 254 126 31 147
61
28 29 137
60
89 53 121 213 153 117 185 21 217 181 249
60
28
31
95 91 255 123 159 155 63 187 223 219 127 251
59
85 26 186 58 218 90 250 122 26 154 58 186 90 218 122 250 154 27 191
45 18 114 50 146 82 178 114 210 146 242 178 18 210 50 242
67 47 227 79 131 111 35 143 195 175 99 207 3 239 163 16 144 48 176 80 208 112 240 144 16 176 48 208 80 240 112 17 205 49 109
X n
X
nX n
X n-1
X n
X n-1
X n
X n-1
X n-1
9 165
X n
X n-1
X n
X n-1
X n
X n-1
X n-1
41
15
13
78 78 110 110 142 142 174 174 206 206 238 238
46
46
14
14
57 45 217 77 121 109 25 141 185 173 89 205 249 237 153
15 75 175 107 79 139 239 171 143 203 47 235 207 12 172 44 204 76 236 108 12 140 44 172 76 204 108 236 140
69 73 229 105 133 137 37 169 197 201 101 233
43
10 11 111
74 74 106 106 138 138 170 170 202 202 234 234
42
42
10
5
172, dan seterusnya adalah kunci yang diperoleh dari hasil pembangkitan dan terlihat perulangan kunci pada proses pembangkitan ke-256.
25 71 121 103 217 135 57 167 153 199 249 231
11 33 235 65 203 97 171 129 139 161 107 193 75 225
43
2
62
34
94 66 126 98 158 130 190 162 222 194 254 226
30 3 221
35
61 67 157 99 253 131 93 163 189 195 29 227 125 4 100
36
4 68 164 100 68 132 228 164 132 196 36 228 196 5 247 37 215 69 183 101 151 133 119 165 87 197 55 229
23 6 210 38 242
70 18 102 50 134 82 166 114 198 146 230 178 7 185
39
89 8 232 40 136
96
38
44 76 204 108 108 140 12 172 172 204 76 236 236 13 175 45 143 77 111 109 79 141 47 173 15 205 239 237 207 14 218 46 250
44
85 12 140
21 75 117 107 213 139 53 171 149 203 245 235
43
74 70 106 102 138 134 170 166 202 198 234 230 11 181
42
72 40 104 200 136 104 168 8 200 168 232
6
10
73 67 105 35 137 3 169 227 201 195 233 163
99
41
72 9 131
1
64 96 224 128 128 160 32 192 192 224
4. Tabel hasil bilangan acak metode QLCG dengan nilai a = 266, b = 267, c = 11, m = 256 X = 0
n-1
Nilai X n selanjutnya dapat dilihat pada tabel 3.8 dan 3.11 dibawah ini:
= (266*62*62 + 267* 62 + 11) mod 256 = 1039069 mod 256 = 221
3 = (a*X n-1 *X n-1 +b*X n-1 +c) mod 256
X
= 35134 mod 256 = 62
n-1
n-1
X n
= (a*X
2
X
= (266*0*0 + 267* 0 + 11) mod 256 = 11 mod 256 = 11
1 = (a*X n-1 *X n-1 +b*X n-1 +c) mod 256
X
Tabel 3.11 Hasil bilangan acak metode QLCG dengan nilai a= 124, b=637, c=381, m=256X n-1
64
X n
32 160
X n-1
X n
X n-1
X n
X n-1
X n-1
X n
X
nX n-1
X n
X n-1
X n
X n-1
78 26 110 58 142 90 174 122 206 154 238 186
Tabel 3.12 Lanjutan Hasil bilangan acak metode QLCG dengan nilai a= 124, b=637, c=381, m=25628
66 23 105 55 201
87 41 119 137 151 233 183 73 215 169 247
9
24
56 56 216 88 120 120 24 152 184 184 88 216 248 248 152 25 243 57 211 89 179 121 147 153 115 185 83 217 51 249
19
26
22
58
54
90 86 122 118 154 150 186 182 218 214 250 246 27 229
59
69 91 165 123 5 155 101 187 197 219 37 251 133
92 60 252 92 156 124 60 156 220 188 124 220 28 252 188 29 159 61 127
22
93 95 125 63 157 31 189 255 221 223 253 191 30 106 62 138 94 170 126 202 158 234 190 10 222 42 254
74 31 129 63 225
95 65 127 161 159 1 191 97 223 193 255
33 Tabel 3.11 dan 3.12 menunjukkan hasil pembangkitan kunci dengan menggunakan metode QLCG. Nilai 11, 62, 221, 100, 247, 210, 185, 232 dan seterusnya adalah kunci yang diperoleh dari hasil pembangkitan dan terlihat perulangan kunci pada proses pembangkitan ke 256.
5. Tabel Hasil bilangan acak metode QLCG dengan nilai a= 96 , b=609, c=353, m=256 X = 0
X
1 = (a*X n-1 *X n-1 +b*X n-1 +c) mod 256
= (96*0*0 + 609* 0 + 353) mod 256 = 353 mod 256 = 97
X
2 = (a*X n-1 *X n-1 +b*X n-1 +c) mod 256
= (96*97*97 + 609* 97 + 353) mod 256 = 962690 mod 256 = 130
X
3 = (a*X n-1 *X n-1 +b*X n-1 +c) mod 256
98 54 130 86 162 118 194 150 226 182 2 214 34 246
7
X n
X n
X n-1
X n
X n-1
X n
X n-1
X n
X n-1
X
nX n-1
X n
X n-1
X n
X n-1
X n-1
52 52 212 84 116 116 20 148 180 180 84 212 244 244 148 21 231 53 199 85 167 117 135 149 103 181 71 213 39 245
15 209
47
49 79 145 111 241 143 81 175 177 207 17 239 113
16
80 48 240 80 144 112 48 144 208 176 112 208 16 240 176 17 123
49
91
81 59 113 27 145 251 177 219 209 187 241 155
18
78 50 110 82 142 114 174 146 206 178 238 210 14 242
46
19
13 51 109 83 205 115 45 147 141 179 237 211 77 243 173
20
= (96*130*130 + 609* 130 + 353) mod 256
= 1701923 mod 256 = 35 Nilai X n selanjutnya dapat dilihat pada tabel 3.13 di bawah ini:
48
20
19
83 83 115 115 147 147 179 179 211 211 243 243
51
51
19
81 18 146 50 178 82 210 114 242 146 18 178 50 210 82 242 114
80 80 112 112 144 144 176 176 208 208 240 240 17 113 49 145 81 177 113 209 145 241 177 17 209 49 241
48
16
52
16
77 45 109 77 141 109 173 141 205 173 237 205 14 142 46 174 78 206 110 238 142 14 174 46 206 78 238 110 15 175 47 207 79 239 111 15 143 47 175 79 207 111 239 143
13
45
76 76 108 108 140 140 172 172 204 204 236 236 13 237
44
44
12
12
11
20
52
43
59
29
61
92 92 124 124 156 156 188 188 220 220 252 252 29 253
60
60
28
28
27
91 91 123 123 155 155 187 187 219 219 251 251
59
84 84 116 116 148 148 180 180 212 212 244 244 21 245
27
89 26 154 58 186 90 218 122 250 154 26 186 58 218 90 250 122
88 88 120 120 152 152 184 184 216 216 248 248 25 121 57 153 89 185 121 217 153 249 185 25 217 57 249
56
56
24
24
85 53 117 85 149 117 181 149 213 181 245 213 22 150 54 182 86 214 118 246 150 22 182 54 214 86 246 118 23 183 55 215 87 247 119 23 151 55 183 87 215 119 247 151
21
53
75 75 107 107 139 139 171 171 203 203 235 235
43
Tabel 3.13 Hasil bilangan acak metode QLCG dengan nilai a= 96 , b=609, c=353, m=256X n-1
96 96 128 128 160 160 192 192 224 224
64
64
32
32
X n-1
X n
X n-1
X n
X n
97 33 129 65 161 97 193 129 225 161 1 193 33 225
X n-1
X
n
X n-1
X n
X n-1
X n
X n-1
X n
X n-1
X n
1
65 2 130 34 162 66 194 98 226 130 2 162 34 194 66 226
11
68 68 100 100 132 132 164 164 196 196 228 228 5 229
73 10 138 42 170 74 202 106 234 138 10 170 42 202 74 234 106
72 72 104 104 136 136 168 168 200 200 232 232 9 105 41 137 73 169 105 201 137 233 169 9 201 41 233
40
40
8
8
69 37 101 69 133 101 165 133 197 165 229 197 6 134 38 166 70 198 102 230 134 6 166 38 198 70 230 102 7 167 39 199 71 231 103 7 135 39 167 71 199 103 231 135
5
37
36
98
36
4
4
3
99 99 131 131 163 163 195 195 227 227
67
67
35
35
3
93 61 125 93 157 125 189 157 221 189 253 221 30 158 62 190 94 222 126 254 158 30 190 62 222 94 254 126 31 191 63 223 95 255 127 31 159 63 191 95 223 127 255 159
Tabel 3.13 menunjukkan hasil pembangkitan kunci dengan menggunakan metode QLCG. Nilai 97, 130, 35, 4, 229, 134, 167, 8, 105, 138, 43, 12 danseterusnya adalah kunci yang diperoleh dari hasil pembangkitan dan terlihat perulangan kunci pada proses pembangkitan ke 256. Pada bab sebelumnya sudah disinggung bahwa QLCG mempunyai periode tidak lebih besar dari m. Jika a, b, c dan m dipilih secara tepat (misalnya (b- a) mod m = 1, c merupakan bilangan ganjil, dan m merupakan bilangan kelipatan 2), maka QLCG akan mempunyai periode maksimal, yaitu m – 1. Dari grafik di atas, dapat kita buktikan pernyataan tersebut. Pada tabel 3.5,
Tabel 3.6 dan Tabel 3.7, terlihat kombinasi secara tepat antara a, b, c dan m, sehingga QLCG mempunyai periode maksimal (m-1), dimana denganm = 256, perulangan terjadi pada n=256. Sedangkan pada Tabel 3.2 kombinasi a, b, dan m sangat buruk, sehingga terjadi perulangan saat n=3 dengan m=256, dan Tabel 3.3 terjadi perulangan pada saat n=65 dengan m=256 sehingga tidak memenuhi syarat untuk menghasilkan QLCG yang memiliki periode maksimal.
Tahapan Feige Fiat Shamir
3.2.3 Nilai r sebagai bilangan acak yang didapatkan dari pembangkit bilangan acak
dengn metode Quadratic Linear Congruential Generator, akan digunakan pada tahapan Feige Fiat Shamir.
1. Percobaan I
2
x =
2
= 17 mod 143 = 3
2
2
3 v = 143 = 9
v = v*v mod n = 9*1 mod 143 = 9
= v
9