BAB 3
METODE PENELITIAN
Dalam bab ini akan dibahas mengenai metode penelitian dalam menyelesaikan permasalahan yang berkaitan dengan penelitian ini. Adapun yang akan dibahas antara lain: prosedur penelitian, rancangan sistem, analisis algoritma, dan analisis keamanan.
3.1. Prosedur Penelitian
Adapun prosedur dari pelaksanaan penelitian penulis mengenai analisis kombinasi Protokol Secret Sharing dan Three-Pass dalam mengamankan pertukaran pesan adalah sebagai berikut.
Studi Literatur
Analisis Literatur
Pemahaman Konsep Algoritma
Pengujian Konsep
Perancangan Sistem Pengujian Sistem
Implementasi Permasalahan Analisis
Dan Evaluasi
Konsep Sesuai Permasalahan? Tidak
Ya
Gambar 3.1 Prosedur Penelitian
Jika konsep tersebut sesuai untuk menyelesaikan permasalahan pada penelitian ini dilanjutkan dengan perancangan sistem. Agar hasil yang didapatkan sesuai harapan, dilakukan analisis dan evaluasi dari sistem dalam penyelesaian permasalahan.
3.2. Rancangan Sistem
Berikut ini adalah rancangan dari sistem yang akan penulis kerjakan untuk menyelesaikan permasalahan.
Mulai
Input pesan
P = pesan
Proses Secret Sharing
(P)
Proses Distribusi (P1...Pn)
Output P1...Pn
Proses Rekonstruksi
(P1….Pn)
Output P = Pesan
Selesai
A
A
Gambar 3.2 Flowchart Rancangan Sistem
penerima lainnya, langkah tersebut masuk kedalam proses rekonstruksi. Kemudian output dari proses rekonstruksi adalah pesan awal.
3.3. Analisis Algoritma
Pada bab ini, akan dibahas analisis dari algoritma-algoritma yang berkaitan dengan penelitian. Algoritma yang akan dianalisis antara lain Protokol Secret Sharing, dan Protokol Three-Pass. Didalam Protokol Secret Sharing, juga akan dibahas mengenai algoritma fungsi pemecahan pesan (split) dan fungsi penggabungan ulang pesan (reconstruct). Sedangkan pada algoritma three-pass akan dibahas mengenai algoritma
One-Time Pad sebagai pembangkit bilangan acak, fungsi enkripsi pesan, dan fungsi dekripsi pesan.
Analisis algoritma dibutuhkan untuk menghitung kompleksitas waktu komputasi T(n) dalam menyelesaikan proses dengan nilai n yang digunakan sebagai
input dalam algoritma tersebut. Dalam penelitian penulis menggunakan notasi O ( big-Oh) dalam menghitung kompleksitas (Cormen et al, 2009).
3.3.1. Analisis protokol secret sharing
Untuk dapat mengetahui kompleksitas waktu dari algoritma secret sharing, penulis menggunakan pseudocode dari algoritma secret sharing untuk dianalisis. Berikut ini penulis lampirkan pseudocode dari Protokol Secret Sharing untuk dihitung kompleksitasnya menggunakan notasi O.
Terdapat dua buah function yang digunakan dalam Protokol Secret Sharing, yaitu fungsi untuk proses membagikan pesan (split) kedalam beberapa bagian, dan fungsi untuk menggabungkan kembali pesan (reconstruct).
a. Function Split
t = input jumlah penerima
m = input pesan dalam bentuk ascii
k[] = input array koeffisien
p = input modulo
koeffisien = jumlah seluruh koeffisien
FOR j = 1 to t-1
koeffisien += k[i] * (i^j)
END FOR
P[i] = m + koeffisien % p
END FOR
Penjelasan:
Pada penggalan pseudocode dari function split diatas, terjadi proses untuk membagi m
kedalam t bagian. Langkah-langkahnya sebagai berikut:
1. Terima masukkan berupa t (banyaknya share yang dibutuhkan), m (secret yang akan dipecah), k (koeffisien-koeffisien yang akan digunakan), p (bilangan prima) 2. Hitung koeffisien dengan cara, menjumlahkan ki * ij (misalnya: k1 = 7, i = 1, j =
2, sehingga menjadi 7 * 12)
3. Setelah melakukan penjumlahan koeffisien, tambahkan dengan m dan dimodulokan dengan p
4. Kemudian simpan hasil penjumlahan itu kedalam array P, dimana nilai Pi akan
diterima oleh setiap penerima pesan.
Berikut ini adalah analisis notasi O dari function split. Tabel 3.1 Analisis Function Split
Code Cost Times
t = input jumlah penerima C1 1
m = input pesan dalam bentuk ASCII C2 1
k = input array koeffisien C3 1
p = input modulo C4 1
koeffisien = jumlah seluruh koeffisien C5 1
P[] = array polinomial C6 1
FOR i = 0 to t C7 2log(n)
FOR j = 1 to t-1 C8 2log(nm)
koeffisien += k[i] * i ^ j C9 2log(nm)
END FOR C10 2log(nm)
P[i] = m + koeffisien % p C11 2log(n)
Sehingga didapat nilai T(n) adalah sebagai berikut:
T(n) = C1+C2+C3+C3+C4+C5+C6+C7(2log(n))+C8(2log(nm))+
C9(2log(nm))+C10(2log(nm))+C11(2log(n))+C12(2log(n))
= C7(2log(n))+C8(2log(nm))+C9(2log(nm))+C10(2log(nm))+C11(2log(n)) +
C12(2log(n))
= C8(2log(nm))+C9(2log(nm))+C10(2log(nm))
= (C8 + C9 + C10) 2 log lognm
= C C C lognm
2 log
10 9 8
+ +
T(n) = log nm = O(log(nm))
Penjelasan:
Setiap baris code pada functionsplit (tabel 3.1) akan dihitung berdasarkan biaya (cost) dan berapa kali diproses (times). Waktu yang dihitung pada C1 hingga C6 dilakukan sebanyak satu kali, sedangkan C7, C11, dan C12 dilakukan sebanyak n dimana n = t, dan untuk C8, C9, dan C10 dilakukan sebanyak nm dimana m = t-1, dikarenakan C8,
C9, dan C10 akan dilakukan ulang sebanyak n kali.
b. Function Reconstruct
shares[] = input array shares
n = input panjang shares
Li0 = 0
LiX = 0
Li = 0
Px = 0
FOR i = 0 to n
FOR j = 0 to n
IF j == i THEN j_awal = j+1
ELSE j_awal = j
END IF
ELSE j_akhir = j+1
END IF
Li0 = (0 - shares[j_awal][0]) *
(0 -shares[j_akhir][0])
LiX = (shares[j][0] - shares[j_awal][0]) *
(shares[j][0] - shares[j_akhir][0])
Li = Li0 / LiX
END FOR
Px <- Px + Li * shares[i][1]
END FOR
Penjelasan:
Pada penggalan pseudocode dari function reconstruct diatas, terjadi proses untuk menggabungkan sejumlah shares. Sebagaimana terlampir pada bentuk umum dari algoritma secret sharing (6) pada bab sebelumnya, langkah-langkahnya sebagai berikut:
1. Terima masukkan berupa shares (sejumlah share yang akan dibentuk ulang), dan panjang dari shares.
2. Deklarasikan variabel Li0 dan LiX dimana variabel ini digunakan pada algoritma
secret sharing (7) dimana Li0 adalah Li(0), LiX adalah Li(x), dan Px adalah P(x).
3. Lakukan perulangan sebanyak n kali untuk i yang berfungsi untuk menghitung nilai Px. Dalam perulangan ini, dilakukan perulangan kembali sebanyak n kali untuk j, yang berfungsi untuk mencari nilai dari Li.
4. Setelah perulangan selesai, maka hasil dari penggabungan shares disimpan pada variabel Px.
Berikut ini adalah analisis notasi O dari functionreconstruct. Tabel 3.2 Analisis Function Reconstruct
Code Cost Times
shares[] = input array shares C1 1
Tabel 3.2 Analisis Function Reconstruct (lanjutan)
Code Cost Times
Li0 = 0 C3 1
LiX = 0 C4 1
Li = 0 C5 1
Px = 0 C6 1
FOR i = 0 to n C7 2log(n)
FOR j = 0 to n C8 2log(n2)
IF j == i THEN j_awal = j+1 C9 2log(n2)
ELSE j_awal = j C10 2log(n2)
END IF C11 2log(n2)
IF j+1 >= n THEN j_akhir = 0 C12 2log(n2)
ELSE j_akhir = j+1 C13 2log(n2)
END IF C14 2log(n2)
Li0 = (0 - shares[j_awal][0]) * (0 - shares[j_akhir][0]) C15 2log(n2) LiX = (shares[j][0] - shares[j_awal][0]) * (shares[j][0] -
shares[j_akhir][0]) C16
2log(n2)
Li = Li0 / LiX C17 2log(n2)
END FOR C18 2log(n2)
Px = Px + Li * shares[i][1] C19 2log(n)
END FOR C20 2log(n)
Sehingga didapat nilai T(n) adalah sebagai berikut:
T(n) = C1+C2+C3+C4+C5+C6+C7(2log(n))+C8(2log(n2))+C9(2log(n2)) +C10(2log(n2))+C11(2log(n2))+C12(2log(n2))+C13(2log(n2)) +C14(2log(n2))+C15(2log(n2))+C16(2log(n2))+C17(2log(n2)) +C18(2log(n2))+C19(2log(n)) +C20(2log(n))
= C7(2log(n))+C8(2log(n2))+C9(2log(n2))
+C10(2log(n2))+C11(2log(n2))+C12(2log(n2))+C13(2log(n2)) +C14(2log(n2))+C15(2log(n2))+C16(2log(n2))+C17(2log(n2)) +C18(2log(n2))+C19(2log(n)) +C20(2log(n))
+C17(2log(n2)) +C18(2log(n2))
Penjelasan:
Setiap baris kode pada function reconstruct (tabel 3.2) akan dihitung berdasarkan biaya (cost) dan berapa kali diproses (times). Waktu yang dihitung pada C1, C2, C3,
C4, C5, dan C6 dilakukan hanya sekali, sedangkan C7, C19, dan C20 sebanyak n
dimana n = panjang shares, sedangkan C8, C9, C10, C11, C12, C13, C14, C15, C16,
C17, dan C18 dilakukan sebanyak n2 dikarenakan perulangannya akan dilakukan kembali sebanyak n kali.
Adapun gambaran dari proses secret sharing adalah sebagai berikut.
P = Pesan asli
T = 4 Penerima T1, T2, T3, T4
P dipecah menjadi t buah P1, P2, P3, P4
T1 mendapat P1
T2 mendapat P2
T3 mendapat P3
T4 mendapat P4
T1
Gambar 3.3 Proses Protokol Secret Sharing
Setelah proses pemecahan pesan (split) berhasil dilakukan, pecahan pesan tersebut akan didistribusikan dengan suatu cara sehingga masing-masing penerima menerima pecahan tersebut masing-masing. Terdapat dua tahapan yang akan dilakukan agar penerima mendapatkan pesan yang dipecahkan tersebut, yaitu proses distribusi pecahan pesan (shares) dan proses rekonstruksi pecahan pesan (shares).
3.3.1.1. Analisis distribusi share
Setelah pecahan pesan berhasil dilakukan, pecahan pesan (shares) tersebut akan didistribusikan kepada tiap-tiap penerima. Adapun gambaran dari proses pendistribusian shares kepada setiap penerima adalah sebagai berikut.
Secret Sharing(P) Menghasilkan P1, P2, P3, P4
T1 mendapat P1 T2 mendapat P2 T3 mendapat P3 T4 mendapat P4
P1 P2 P3 P4
Gambar 3.3 Proses Distribusi Shares
Dari gambar 3.4 dapat dilihat bahwasanya, pecahan pesan dibagi sebanyak T penerima, kemudian pecahan tersebut yang berupa P1, P2, P3 dan P4 akan dibagikan masing-masing kepada T1, T2, T3 dan T4.
3.3.1.2. Analisis rekonstruksi secret
Setelah setiap penerima mendapatkan pecahan pesan, langkah berikut yang akan dilakukan adalah melakukan rekonstruksi secret, hal ini memerlukan pertukaran
T1 T3 T2
T4 Request P2
Request P3
Request P4 Three-Pass[P2]
Three-Pass[P3]
Three-Pass[P4]
Gambar 3.4 Proses Rekonstruksi Secret
Berdasarkan gambar 3.5 bahwasanya setiap penerima (T1, T2, T3, dan T4) akan meminta share kepada penerima lainnya, kemudian penerima tersebut mengirimkan share miliknya melalui protokol three-pass. Seperti gambar, T1 meminta P2 kepada T2, kemudian T2 mengirimkan P2 menggunakan protokol three-pass kepada T1. T1 meminta P3 kepada T3, kemudian T3 mengirimkan P3 menggunakan protokol three-pass kepada T1. T1 meminta P4 kepada T4, kemudian T4 mengirimkan P4 menggunakan protokol three-pass kepada T1. Setelah T1 memiliki keseluruhan shares, T1 dapat membentuk ulang secret menggunakan Protokol Secret Sharing.
Pada proses pertukaran shares, penulis memanfaatkan protokol three-pass
guna mengamankan proses pertukaran tersebut dari upaya pencurian share oleh pihak lain, dalam hal ini dapat berupa pihak dari luar protokol, yang bukan termasuk penerima. Maupun pihak dari dalam protokol (penerima lain) yang ingin merekonstruksi secret tanpa harus memberi tahukan share miliknya kepada penerima lain.
3.3.2. Analisis protokol three-pass
Gambar 3.6 Proses Protokol Three-Pass
Berdasarkan gambar 3.6 bahwasanya pesan yang akan dikirimkan terlebih dahulu harus dienkripsi oleh T1 (pengirim pesan) menggunakan suatu kriptografi simetris, kemudian T2 (penerima pesan) mengenkripsikan kembali pesan terenkripsi yang sudah diterima dan dikirimkan kembali kepada T1, T1 mendekripsi pesan terenkripsi dari penerima dengan kunci miliknya dan mengirimkan kembali ke T2, T2 mendekripsi pesan dengan kunci yang miliknya, dengan begitu T2 mendapatkan pesan asli yang dikirim oleh T1. Proses ini terjadi kembali untuk t berikutnya yang terlibat dalam proses pembagian secret pada proses secret sharing sebelumnya. Dapat diketahui bahwasanya dalam protokol three-pass terdapat 2 proses yang terjadi dalam upaya mengamankan share, yaitu proses enkripsi dan proses dekripsi.
3.3.2.1. Analisis proses enkripsi
Berikut ini adalah flowchart untuk menggambarkan alur dari proses enkripsi share
Gambar 3.7 Proses Enkripsi
Dari gambar 3.7 dapat dijelaskan bahwasanya pertama sekali akan dilakukan pembentukan bilangan acak menggunakan Algoritma One-Time Pad sepanjang n, dimana nilai n adalah panjang dari karakter pesan. Setelah mendapatkan bilangan acak sepanjang n, maka dilakukan prosedur enkripsi dengan cara menambahkan setiap karakter pesan dengan kuncinya.
Terdapat dua buah function dalam proses enkripsi yang digunakan yaitu fungsi menghasilkan bilangan acak untuk enkripsi menggunakan One-Time Pad dan fungsi untuk mengenkripsi share.
a. Function One-Time Pad
panjang_karakter = input panjang karakter yang dibutuhkan
m = 25, a = 11, c = 17, X = 1
FOR i = 0 to panjang_karakter-1
t = milidetik_saat_ini
X = ((a * X) + c + t) % M
key[i] = X
END FOR
Penjelasan:
Pada penggalan pseudocode dari function One-Time Pad diatas, terjadi proses untuk membangkitkan bilangan acak sebanyak panjang_karakter. Sebagaimana terlampir pada bentuk umum dari algoritma Linear Congruent Generator (4) pada bab sebelumnya, langkah-langkahnya sebagai berikut:
1. Terima masukkan berupa panjang_karakter (banyaknya karakter yang dibutuhkan)
2. Lakukan perulangan sebanyak panjang_karakter-1, gunanya agar jumlah bilangan acak tidak melebihi panjang_karakter.
3. Dalam setiap perulangan lakukan penjumlahan untuk X, dengan nilai ((a * X) + c + t) % M
4. Kemudian simpan X itu kedalam array key, dimana nilai key tersebut akan digunakan dalam enkripsi maupun dekripsi pesan.
Berikut ini adalah analisis notasi O dari functionOne-Time Pad. Tabel 3.3 Analisis One-Time Pad
Code Cost Times
panjang_karakter = input panjang karakter yang dibutuhkan C1 1 key[] = array dari kunci yang dihasilkan C2 1
m = 25 C3 1
a = 11 C4 1
c = 17 C5 1
X = 1 C6 1
FOR i = 0 to panjang_karakter-1 C7 2log(n)
Tabel 3.3 Analisis One-Time Pad (lanjutan)
Code Cost Times
X = ((a * X) + c + t) % M C9 2log(n)
key[i] = X C10 2log(n)
END FOR C11 2log(n)
Sehingga didapat nilai T(n) adalah sebagai berikut:
T(n) = C1+C2+C3+C4+C5+C6+C7(2log(n))+C8(2log(n))+C9(2log(n))+
C10 (2log(n)) + C11 (2log(n))
= C7(2log(n))+C8(2log(n))+C9(2log(n))+C10 (2log(n)) + C11 (2log(n))
= (C7+C8+C9+C10+C11) 2 log logn
= C C C C C logn
2 log
11 10 9 8 7
+ + + +
T(n) = log n = O(log(n))
Penjelasan:
Setiap baris code pada function One-Time Pad (tabel 3.3) akan dihitung berdasarkan biaya (cost) dan berapa kali diproses (times). Waktu yang dihitung pada C1, C2, C3, C4, C5, C6 dilakukan sebanyak 1 kali, sedangkan C7, C8, C9, C10, dan C11 dilakukan sebanyak n dimana n = jumlah karakter.
b. Function Encrypt
p[] = input array pesan dalam bentuk ascii
key[] = input array kunci
modulo = input modulo
panjang_karakter = panjang karakter pesan
c[] = array ciphertext
FOR i = 0 to panjang_karakter-1
c[i] = (p[i] + key[i]) % modulo
Penjelasan:
Pada penggalan pseudocode dari function encrypt diatas, terjadi proses untuk mengenkripsi share. Sebagaimana terlampir pada bentuk umum dari algoritma One-Time Pad (1) pada bab sebelumnya, langkah-langkahnya sebagai berikut:
1. Terima masukkan berupa p (share yang akan dienkripsi), key (sekumpulan kunci yang digunakan untuk enkripsi), modulo (nilai untuk dilakukan operasi mudulo),
panjang_karakter (banyaknya karakter yang akan dienkripsi)
2. Lakukan perulangan sebanyak panjang_karakter-1, gunanya agar operasi dalam perulangan tidak menghitung karakter diluar indeks array.
3. Dalam setiap perulangan lakukan penjumlahan untuk c, dengan menambahkan karakter p ke-i dengan karakter key ke-i kemudian dimodulokan dengan modulo.
4. Kemudian simpan c itu kedalam array c, dimana array c tersebut adalah pesan terenkripsi.
Berikut ini adalah analisis notasi O dari functionencrypt. Tabel 3.4 Analisis Function Encrypt
Code Cost Times
p[] = input array pesan dalam bentuk ASCII C1 1
key[] = input array kunci C2 1
modulo = input modulo C3 1
panjang_karakter = panjang karakter pesan C4 1
c[] = array ciphertext C5 1
FOR i = 0 to panjang_karakter-1 C6 2log(n)
c[i] = (p[i] + key[i]) % modulo C7 2log(n)
END FOR C8 2log(n)
Sehingga didapat nilai T(n) adalah sebagai berikut:
T(n) = C1+C2+C3+C4+C5+C6(2log(n))+C7(2log(n))+C8(2log(n)) = C6(2log(n))+C7(2log(n))+C8(2log(n))
= (C6+C7+C8) 2 log logn
= logn
2 log
C8 + C7 + C6
Penjelasan:
function encrypt (tabel 3.4) dihitung berdasarkan biaya dan berapa kali diproses (times). Waktu yang dihitung pada C1 hingga C6 dilakukan sebanyak sekali, sedangkan C7, C8, dan C9 dilakukan sebanyak n dimana n = panjang_karakter-1.
3.3.2.2. Analisis proses dekripsi
Berikut ini adalah flowchart untuk menggambarkan alur dari proses dekripsi share
pada protokol three-pass.
Gambar 3.8 Proses Dekripsi
Dari gambar 3.8 dapat dijelaskan bahwasanya proses dekripsi dilakukan dengan mengurangkan setiap karakter dari pesan terenkripsi dengan kunci One-Time Pad
c. Function decrypt
c[] = input array ciphertext dalam bentuk ASCII
key[] = input array kunci
modulo = input modulo
panjang_karakter = panjang karakter ciphertext
p = []
FOR i = 0 to panjang_karakter-1
p[i] = (c[i] - key[i]) % modulo
END FOR
Penjelasan:
Pada penggalan pseudocode dari function decrypt diatas, terjadi proses untuk mendekripsi share. Sebagaimana terlampir pada bentuk umum dari algoritma One-Time Pad (2) pada bab sebelumnya, langkah-langkahnya sebagai berikut:
1. Terima masukkan berupa c (share yang terenkripsi), key (sekumpulan kunci yang digunakan pada saat enkripsi), modulo (nilai untuk dilakukan operasi mudulo),
panjang_karakter (banyaknya karakter yang akan dienkripsi)
2. Lakukan perulangan sebanyak panjang_karakter-1, gunanya agar operasi dalam perulangan tidak menghitung karakter diluar indeks array.
3. Dalam setiap perulangan lakukan penjumlahan untuk p, dengan menambahkan karakter c ke-i dengan karakter key ke-i kemudian dimodulokan dengan modulo.
4. Kemudian simpan p itu kedalam array p, dimana array p tersebut adalah pesan terenkripsi.
Berikut ini adalah analisis notasi O dari functiondecrypt. Tabel 3.5 Analisis Function Decrypt
Code Cost Times
c[] = input array ciphertext dalam bentuk ASCII C1 1
key[] = input array kunci C2 1
modulo = input modulo C3 1
panjang_karakter = panjang karakter ciphertext C4 1
Tabel 3.5 Analisis Function Decrypt (lanjutan)
Code Cost Times
FOR i = 0 to panjang_karakter-1 C6 2log(n)
p[i] = (c[i] - key[i]) % modulo C7 2log(n)
END FOR C8 2log(n)
Sehingga didapat nilai T(n) adalah sebagai berikut:
T(n) = C1+C2+C3+C4+C5+C6(2log(n))+C7(2log(n))+C8(2log(n)) = C6(2log(n))+C7(2log(n))+C8(2log(n))
= (C6+C7+C8) 2 log logn
= logn
2 log
C8 + C7 + C6
T(n) = log n = O(log(n))
Penjelasan:
Setiap baris code pada function encrypt (tabel 3.4) akan dihitung berdasarkan biaya (cost) dan berapa kali diproses (times). Waktu yang dihitung pada C1 hingga C5 dilakukan sebanyak sekali, sedangkan C6, C7, dan C8 dilakukan sebanyak n dimana n
= panjang_karakter-1.
3.4. Analisis Keamanan
Pada penelitian ini dilakukan penerapan protokol three-pass kedalam protokol secret sharing, pada bab sebelumnya diketahui bahwasanya protokol secret sharing
memungkinkan terjadinya upaya pencurian informasi. Untuk menutupi upaya pencurian informasi tersebut, digunakan protokol three-pass. Pentingnya dilakukan analisis keamanan dari protokol three-pass tersebut, agar hasil dari penelitian ini menunjukkan keamanan dari secret sharing setelah dikombinasikan dengan three-pass.
Dalam melakukan proses enkripsi dan dekripsi, protokol three-pass menerapkan Algoritma One-Time Pad sebagai kriptografi simetris. One-Time Pad
Diasumsikan pesan m sepanjang 6 karakter, dengan kunci k 6 karakter, dimana setiap karakternya terdapat dalam 255 ASCII. Dengan demikian penyerang akan mendapatkan 2556 = 274.941.996.890.625 bilangan acak, dimana penyerang tidak mengetahui bilangan acak yang merupakan pesan m.
BAB 4
HASIL DAN PEMBAHASAN
Bab ini membahas mengenai hasil penelitian dan pembahasan, dari hasil penelitian tersebut akan diambil suatu kesimpulan mengenai keamanan dari proses pengiriman pesan. Adapun yang akan dibahas antara lain: proses analisis, analisis big O, dan analisis keamanan.
4.1. Proses Analisis
Sebelum membuat program simulasi perlu dilakukan proses analisis dengan perhitungan manual pada proses pemecahan pesan untuk mendapatkan share, pertukaran share antar penerima dalam protokol three-pass termasuk ke dalamnya proses enkripsi dan dekripsi share, dan rekonstruksi secret. Hasil dari perhitungan yang benar, menjadi dasar pada pembuatan program untuk melakukan simulasi. Pada tahapan ini juga dimaksudkan untuk mempermudah dalam perbaikan ataupun penambahan pada program simulasi.
4.1.1. Proses pemecahan secret menggunakan protokol secret sharing
Langkah-langkah dalam proses pemecahan secretoleh pengirim pesan dalam protokol
secret sharing adalah sebagai berikut:
1. Pesan (m) : FASILKOMTI 2. Jumlah penerima (t) : 3
3. Modulo (p) : 997
4. Lakukan perhitungan untuk mendapatkan polinomial dari pesan. Konversikan pesan kedalam bentuk ASCII
Tabel 4.1 Tabel Konversi
F A S I L K O M T I
70 65 83 73 76 75 79 77 84 73
Lakukan perhitungan untuk mendapatkan share dari m1 Ambil secara acak nilai untuk koeffisien (k) sebanyak t-1, k=2
k1 = 15, k2 = 19
P1 = 70 + 15(1) + 19(1)2 mod 997 = 104
P2 = 70 + 15(2) + 19(2)2 mod 997 = 176
P3 = 70 + 15(3) + 19(3)2 mod 997 = 286
Lakukan perhitungan untuk mendapatkan share dari m2 Ambil secara acak nilai untuk koeffisien (k) sebanyak t-1, k=2
k1 = 11, k2 = 8
P1 = 65 + 11(1) + 8(1)2 mod 997 = 84
P2 = 65 + 11(2) + 8(2)2 mod 997 = 119
P3 = 65 + 11(3) + 8(3)2 mod 997 = 170
Lakukan perhitungan untuk mendapatkan share dari m3 Ambil secara acak nilai untuk koeffisien (k) sebanyak t-1, k=2
k1 = 12, k2 = 12
P1 = 83 + 12(1) + 12(1)2 mod 997 = 107
P2 = 83 + 12(2) + 12(2)2 mod 997 = 155
P3 = 83 + 12(3) + 12(3)2 mod 997 = 227
Lakukan perhitungan untuk mendapatkan share dari m4 Ambil secara acak nilai untuk koeffisien (k) sebanyak t-1, k=2
k1 = 9, k2 = 11
P1 = 73 + 9(1) + 11(1)2 mod 997 = 93
P2 = 73 + 9(2) + 11(2)2 mod 997 = 135
P3 = 73 + 9(3) + 11(3)2 mod 997 = 199
Lakukan perhitungan untuk mendapatkan share dari m5 Ambil secara acak nilai untuk koeffisien (k) sebanyak t-1, k=2
k1 = 6, k2 = 3
P1 = 76 + 6(1) + 3(1)2 mod 997 = 85
P2 = 76 +6(2) + 3(2)2 mod 997 = 100
Lakukan perhitungan untuk mendapatkan share dari m6 Ambil secara acak nilai untuk koeffisien (k) sebanyak t-1, k=2
k1 = 12, k2 = 12
P1 = 75 + 12(1) + 12(1)2 mod 997 = 99
P2 = 75 + 12(2) + 12(2)2 mod 997 = 147
P3 = 75 + 12(3) + 12(3)2 mod 997 = 219
Lakukan perhitungan untuk mendapatkan share dari m7 Ambil secara acak nilai untuk koeffisien (k) sebanyak t-1, k=2
k1 = 5, k2 = 13
P1 = 79 + 5(1) + 13(1)2 mod 997 = 97
P2 = 79 + 5(2) + 13(2)2 mod 997 = 141
P3 = 79 + 5(3) + 13(3)2 mod 997 = 211
Lakukan perhitungan untuk mendapatkan share dari m8 Ambil secara acak nilai untuk koeffisien (k) sebanyak t-1, k=2
k1 = 16, k2 = 18
P1 = 77 + 16(1) + 18(1)2 mod 997 = 111
P2 = 77 + 16(2) + 18(2)2 mod 997 = 181
P3 = 77 + 16(3) + 18(3)2 mod 997 = 287
Lakukan perhitungan untuk mendapatkan share dari m9 Ambil secara acak nilai untuk koeffisien (k) sebanyak t-1, k=2
k1 = 6, k2 = 17
P1 = 84 + 6(1) + 17(1)2 mod 997 = 107
P2 = 84 + 6(2) + 17(2)2 mod 997 = 164
P3 = 84 + 6(3) + 17(3)2 mod 997 = 255
Lakukan perhitungan untuk mendapatkan share dari m10 Ambil secara acak nilai untuk koeffisien (k) sebanyak t-1, k=2
k1 = 19, k2 = 17
P1 = 73 + 19(1) + 17(1)2 mod 997 = 109
P2 = 73 + 19(2) + 17(2)2 mod 997 = 179
Jadi hasil proses pembentukan polinomial dari m adalah sebagai berikut:
Tabel 4.2 Tabel Shares
m F A S I L K O M T I
ASCII 70 65 83 73 76 75 79 77 84 73
Share 1 104 84 107 93 85 99 97 111 107 109
Share 2 176 119 155 135 100 147 141 181 164 179
Share 3 286 170 227 199 121 219 211 287 255 283
Kemudian, setiap penerima akan menerima shares sebagai berikut: Penerima 1 = 104, 84, 107, 93, 85, 99, 97, 111, 107, 109
Penerima 2 = 176, 119, 155, 135, 100, 147, 141, 181, 164, 179 Penerima 3 = 286, 170, 227, 199, 121, 219, 211, 287, 255, 283
4.1.2. Proses pertukaran shares menggunakan three-pass
Pada tahapan sebelumnya pesan telah terbagi kedalam beberapa secret dan telah diterima oleh masing-masing penerima, langkah selanjutnya yang dilakukan adalah setiap penerima akan melakukan pertukaran secret.
Adapun langkah-langkah yang akan dilakukan agar Penerima 1 dapat merekonstruksi pesan adalah sebagai berikut:
1. Lakukan permintaan kepada penerima 2, sehingga penerima 2 akan mengirim secret miliknya melalui protokol three-pass
- Penerima 2 mengenkripsi share miliknya.
Share penerima 2 (m) = 176, 119, 155, 135, 100, 147, 141, 181, 164, 179 Kunci (ka) = 19, 17, 20, 3, 16, 9, 7, 10, 18, 6
e1 = 176+19 mod 997 = 195
e2 = 119+17 mod 997=136
e3 = 155+20 mod 997=175
e4 = 135+3 mod 997=138
e5 = 100+16 mod 997=116
e6 = 147+9 mod 997=156
e7 = 141+7 mod 997=148
e8 = 181+10 mod 997=191
e9 = 164+18 mod 997=182
e10 = 179+6 mod 997=185
- Penerima 1 mengenkripsi c1
c1 = 195, 136, 175, 138, 116, 156, 148, 191, 182, 185
Kunci (kb) = 0, 14, 18, 12, 21, 20, 9, 13, 7, 16
e1 = 195+0 mod 997=195
e2 = 136+14 mod 997=150
e3 = 175+18 mod 997=193
e4 = 138+12 mod 997=150
e5 = 116+21 mod 997=137
e6 = 156+20 mod 997=176
e7 = 148+9 mod 997=157
e8 = 191+13 mod 997=204
e9 = 182+7 mod 997=189
e10 = 185+16 mod 997=201
c2 = 195, 150, 193, 150, 137, 176, 157, 204, 189, 201
- Penerima 2 mendekripsi c2
c2 = 195, 150, 193, 150, 137, 176, 157, 204, 189, 201
Kunci (ka) = 19, 17, 20, 3, 16, 9, 7, 10, 18, 6
d1 = 195-19 mod 997=176
d2 = 150-17 mod 997=133
d3 = 193-20 mod 997=173
d4 = 150-3 mod 997=147
d5 = 137-16 mod 997=121
d6 = 176-9 mod 997=167
d7 = 157-7 mod 997=150
d8 = 204-10 mod 997=194
d9 = 189-18 mod 997=171
d10 = 201-6 mod 997=195
c3 = 176, 133, 173, 147, 121, 167, 150, 194, 171, 195
- Penerima 1 mendekripsi c3
c3 = 176, 133, 173, 147, 121, 167, 150, 194, 171, 195
d1 = 176-0 mod 997=176
d2 = 133-14 mod 997=119
d3 = 173-18 mod 997=155
d4 = 147-12 mod 997=135
d5 = 121-21 mod 997=100
d6 = 167-20 mod 997=147
d7 = 150-9 mod 997=141
d8 = 194-13 mod 997=181
d9 = 171-7 mod 997=164
d10 = 195-16 mod 997=179
m = 176, 119, 155, 135, 100, 147, 141, 181, 164, 179
Dengan demikian penerima 1 mengetahui share milik penerima 2 adalah 176, 119, 155, 135, 100, 147, 141, 181, 164, 179
Sedangkan yang diketahui oleh publik adalah
c1 = 195, 136, 175, 138, 116, 156, 148, 191, 182, 185
c2 = 195, 150, 193, 150, 137, 176, 157, 204, 189, 201
c3 = 176, 133, 173, 147, 121, 167, 150, 194, 171, 195
2. Lakukan permintaan kepada penerima 3, sehingga penerima 3 akan mengirim
share miliknya melalui protokol three-pass.
- Penerima 3 mengenkripsi share miliknya.
Share penerima 3 (m) = 286, 170, 227, 199, 121, 219, 211, 287, 255, 283 Kunci (ka) = 15, 2, 9, 11, 8, 0, 12, 19, 21
e1 = 286+23 mod 997=309
e2 = 170+15 mod 997=185
e3 = 227+2 mod 997=229
e4 = 199+9 mod 997=208
e5 = 121+11 mod 997=132
e6 = 219+8 mod 997=227
e7 = 211+0 mod 997=211
e9 = 255+19 mod 997=274
e10 = 283+21 mod 997=304
c1 = 309, 185, 229, 208, 132, 227, 211, 299, 274, 304
- Penerima 1 mengenkripsi c1
c1 = 309, 185, 229, 208, 132, 227, 211, 299, 274, 304
Kunci (kb) = 23, 15, 2, 9, 11, 8, 0, 12, 19, 21
e1 = 309+23 mod 997=332
e2 = 185+15 mod 997=200
e3 = 229+2 mod 997=231
e4 = 208+9 mod 997=217
e5 = 132+11 mod 997=143
e6 = 227+8 mod 997=235
e7 = 211+0 mod 997=211
e8 = 299+12 mod 997=311
e9 = 274+19 mod 997=293
e10 = 304+21 mod 997=325
c2 = 332, 200, 231, 217, 143, 235, 211, 311, 293, 325
- Penerima 3 mendekripsi c2
c2 = 332, 200, 231, 217, 143, 235, 211, 311, 293, 325
Kunci (ka) = 23, 15, 2, 9, 11, 8, 0, 12, 19, 21
d1 = 332-23 mod 997=309
d2 = 200-15 mod 997=185
d3 = 231-2 mod 997=229
d4 = 217-9 mod 997=208
d5 = 143-11 mod 997=132
d6 = 235-8 mod 997=227
d7 = 211-0 mod 997=211
d8 = 311-12 mod 997=299
d9 = 293-19 mod 997=274
d10 = 325-21 mod 997=304
- Penerima 1 mendekripsi c3
c3 = 309, 185, 229, 208, 132, 227, 211, 299, 274, 304
Kunci (kb) = 23, 15, 2, 9, 11, 8, 0, 12, 19, 21
d1 = 309-23 mod 997=286
d2 = 185-15 mod 997=170
d3 = 229-2 mod 997=227
d4 = 208-9 mod 997=199
d5 = 132-11 mod 997=121
d6 = 227-8 mod 997=219
d7 = 211-0 mod 997=211
d8 = 299-12 mod 997=287
d9 = 274-19 mod 997=255
d10 = 304-21 mod 997=283
m = 286,170,227,199,121,219,211,287,255,283
Dengan demikian penerima 1 mengetahui share milik penerima 3 adalah 286,170,227,199,121,219,211,287,255,283
Sedangkan yang diketahui oleh publik adalah
c1 = 309, 185, 229, 208, 132, 227, 211, 299, 274, 304
c2 = 332, 200, 231, 217, 143, 235, 211, 311, 293, 325
4.1.3. Proses rekonstruksi secret menggunakan secret sharing
Langkah-langkah yang akan dilakukan untuk merekonstruksi secret adalah sebagai berikut:
Tabel 4.3 Tabel Shares
m m1 m2 m3 m4 m5 m6 m7 m8 m9 m10
Dengan demikian penerima 1 dapat mengetahui secret yang dikirimkan, setelah merekonstruksi shares dari penerima 2 dan penerima 3. Proses ini juga dilakukan oleh penerima 2 dan penerima 3 untuk mengetahui secret yang dikirimkan.
4.2. Analisis Kompleksitas
Analisis kompleksitas dibutuhkan untuk menghitung kompleksitas waktu komputasi
T(n) dalam menyelesaikan proses dengan nilai n yang digunakan sebagai input dalam algoritma tersebut. Dalam penelitian penulis menggunakan notasi O (big-Oh) dalam menghitung kompleksitas (Cormen et al, 2009). Pada bab sebelumnya telah diketahui mengenai big O dari setiap algoritma yang digunakan, sebagaimana terlampir sebagai berikut.
Tabel 4.4 Analisis Kompleksitas
Algoritma big O
Secret Sharing (Split) O(log(nm))
Secret Sharing (Reconstruct) O(log(n2)) Three-pass (One Time Pad) O(log(n)) Three-pass (Encrypt) O(log(n)) Three-pass (Decrypt) O(log(n))
4.3. Analisis Keamanan
Berdasarkan pengujian sebelumnya untuk secret m = FASILKOMTI, dengan penerima t = 3, dan modulo = 997, dapat diketahui beberapa poin setelah dilakukan pengamanan pada kombinasi protokol secret sharing dan three-pass. Adapun poin-poin tersebut antara lain:
1. Secret yang dikirimkan melalui protokol secret sharing, akan terpecah sebanyak 3 buah shares, dimana shares tersebut tidak dapat dibaca oleh siapapun, yaitu:
Share 1 = 104, 84, 107, 93, 85, 99, 97, 111, 107, 109
Share 2 = 176, 119, 155, 135, 100, 147, 141, 181, 164, 179
Share 3 = 286, 170, 227, 199, 121, 219, 211, 287, 255, 283
bilangan acak yang dapat diketahui publik, untuk setiap kali penerima melakukan pertukaran share.
Pertukaran share 2 menghasilkan:
c1 = 195, 136, 175, 138, 116, 156, 148, 191, 182, 185 c2 = 195, 150, 193, 150, 137, 176, 157, 204, 189, 201 c3 = 176, 133, 173, 147, 121, 167, 150, 194, 171, 195 Pertukaran share 3 menghasilkan:
c1 = 309, 185, 229, 208, 132, 227, 211, 299, 274, 304 c2 = 332, 200, 231, 217, 143, 235, 211, 311, 293, 325 c3 = 309, 185, 229, 208, 132, 227, 211, 299, 274, 304
3. Sehingga, jika pihak penyerang yang ingin melakukan serangan brute-force
terhadap share tersandi tersebut, untuk setiap kali penerima melakukan pertukaran
share akan menghasilkan:
C1 = 99710 bilangan acak.
C2 = 99710 bilangan acak.
C3 = 99710 bilangan acak.
4.4. Pembahasan
Berdasarkan pembahasan pada bab sebelumnya, penelitian ini bertujuan untuk menganalisa keamanan pengiriman pesan dalam kombinasi protokol secret sharing dan three-pass. Adapun yang menjadi fokus dalam analisa penelitian ini adalah waktu yang diperlukan serta keamanan yang diberikan dari penggunaan kombinasi protokol tersebut.
4.4.1. Analisis Waktu
Spesifikasi dari komputer yang digunakan untuk melakukan pengujian ini adalah sebagai berikut:
1. Sistem Operasi Microsoft Windows 8.1 2. Prosessor Intel Core i5-3317U @1.70GHz 3. RAM 4 GB
Tabel 4.5 Analisis waktu terhadap pengiriman pesan kepada 3 penerima.
No. Panjang Pesan Jumlah Penerima
Waktu
(milidetik)
1 163 3 606.48
2 590 3 1928
3 1008 3 3334.45
Tabel 4.6 Analisis waktu terhadap pengiriman pesan kepada 4 penerima.
No. Panjang Pesan Jumlah Penerima
Waktu
(milidetik)
1 163 4 750.64
2 590 4 2762.18
3 1008 4 4902.1
Tabel 4.7 Analisis waktu terhadap pengiriman pesan kepada 5 penerima.
No. Panjang Pesan Jumlah Penerima
Waktu
(milidetik)
1 163 5 936.93
2 590 5 3557.67
Tabel 4.8 Analisis waktu terhadap pengiriman pesan kepada 6 penerima.
No. Panjang Pesan Jumlah Penerima
Waktu
(milidetik)
1 163 6 1637.7
2 590 6 6276.38
3 1008 6 11138.3
Tabel 4.9 Analisis waktu terhadap pengiriman pesan kepada 7 penerima.
No. Panjang Pesan Jumlah Penerima
Waktu
(milidetik)
1 163 7 1344.72
2 590 7 5122.49
3 1008 7 9314.19
Tabel 4.10 Analisis waktu terhadap pengiriman pesan kepada 8 penerima.
No. Panjang Pesan Jumlah Penerima
Waktu
(milidetik)
1 163 8 2443.81
2 590 8 9548.69
3 1008 8 17250
Tabel 4.11 Analisis waktu terhadap pengiriman pesan kepada 9 penerima.
No. Panjang Pesan Jumlah Penerima
Waktu
(milidetik)
1 163 9 1745.36
2 590 9 6698.79
Tabel 4.12 Analisis waktu terhadap pengiriman pesan kepada 10 penerima.
No. Panjang Pesan Jumlah Penerima
Waktu
(milidetik)
1 163 10 4666.33
2 590 10 18126.48
3 1008 10 32175.34
Berdasarkan pengujian terhadap panjang pesan mulai dari 100 karakter, 500 karakter, dan 1000 karakter pesan. Dapat disimpulkan bahwasanya lamanya waktu eksekusi dalam proses pemecahan pesan hingga rekonstruksi pesan, berbanding lurus dengan panjang pesan. Begitu juga dengan banyaknya penerima, jika penerima pesan semakin bertambah, maka lamanya proses eksekusi akan bertambah lama.
4.4.2. Analisis Keamanan
Pada tahapan ini akan dilakukan proses pengujian terhadap keamanan pada kombinasi protokol yang digunakan. Pengujian ini akan dilakukan terhadap pesan dengan
panjang yang bervariasi, mulai dari 163 karakter, 590 karakter, hingga 1008 karakter. Juga pengujian ini akan dilakukan terhadap banyaknya penerima pesan, mulai dari 3 penerima, hingga 10 penerima. Hasil dari analisis keamanan ini akan memberikan jaminan terhadap keamanan pesan dari ancaman pihak ketiga yang melakukan serangan brute-force terhadap shares pada saat proses pertukaran share berlangsung.
Tabel 4.13 Analisis keamanan terhadap pengiriman pesan kepada 3 penerima.
No. Panjang
Pesan
Jumlah
Penerima
Bilangan acak yang
dihasilkan
1 163 3 997163 x 3
2 590 3 997590 x 3
Tabel 4.14 Analisis keamanan terhadap pengiriman pesan kepada 4 penerima.
No. Panjang
Pesan
Jumlah
Penerima
Bilangan acak yang
dihasilkan
1 163 4 997163 x 4
2 590 4 997590 x 4
3 1008 4 9971008 x 4
Tabel 4.15 Analisis keamanan terhadap pengiriman pesan kepada 5 penerima.
No. Panjang
Pesan
Jumlah
Penerima
Bilangan acak yang
dihasilkan
1 163 5 997163 x 5
2 590 5 997590 x 5
3 1008 5 9971008 x 5
Tabel 4.16 Analisis keamanan terhadap pengiriman pesan kepada 6 penerima.
No. Panjang
Pesan
Jumlah
Penerima
Bilangan acak yang
dihasilkan
1 163 6 997163 x 6
2 590 6 997590 x 6
3 1008 6 9971008 x 6
Tabel 4.17 Analisis keamanan terhadap pengiriman pesan kepada 7 penerima.
No. Panjang
Pesan
Jumlah
Penerima
Bilangan acak yang
dihasilkan
1 163 7 997163 x 7
2 590 7 997590 x 7
Tabel 4.18 Analisis keamanan terhadap pengiriman pesan kepada 8 penerima.
No. Panjang
Pesan
Jumlah
Penerima
Bilangan acak yang
dihasilkan
1 163 8 997163 x 8
2 590 8 997590 x 8
3 1008 8 9971008 x 8
Tabel 4.19 Analisis keamanan terhadap pengiriman pesan kepada 9 penerima.
No. Panjang
Pesan
Jumlah
Penerima
Bilangan acak yang
dihasilkan
1 163 9 997163 x 9
2 590 9 997590 x 9
3 1008 9 9971008 x 9
Tabel 4.20 Analisis keamanan terhadap pengiriman pesan kepada 10 penerima.
No. Panjang
Pesan
Jumlah
Penerima
Bilangan acak yang
dihasilkan
1 163 10 997163 x 10
2 590 10 997590 x 10
3 1008 10 9971008 x 10
BAB 5
KESIMPULAN DAN SARAN
5.1. Kesimpulan
Berdasarkan analisis dari pengujian sistem secara menyeluruh yang dilakukan pada bab 4, maka ada beberapa hal yang dapat dijadikan kesimpulan pada penelitian ini, antara lain:
1. Kombinasi protokol Secret Sharing dan Three-Pass berhasil mengamankan pesan dan mengirimkan pesan tersebut kepada setiap penerimanya.
2. Protokol Three-Pass berhasil mengamankan shares yang dihasilkan melalui Protokol Secret Sharing dari upaya perekonstruksian ulang oleh pihak yang tidak berhak menerima pesan.
3. Panjang share yang diterima oleh setiap penerima, sama dengan panjang pesan yang dikirimkan, hanya saja setiap penerima akan melakukan proses 2 kali enkripsi dan 1 kali dekripsi dalam mengamankan pertukaran share.
4. Setiap penerima diharuskan untuk aktif dalam melakukan pertukaran shares, agar
secret dapat direkonstruksi. Artinya jika salah satu saja penerima tidak melakukan pertukaran share, maka tidak satupun penerima akan menerima pesan yang dikirim.
5.2. Saran
Untuk pengembangan dari penelitian selanjutnya mengenai kombinasi Protokol Secret Sharing dan Three-Pass dalam mengamankan pesan, disarankan untuk melakukan pengembangan pada beberapa hal sebagai berikut:
1. Protokol Secret Sharing dapat mengetahui penerima yang tidak memberikan share miliknya dengan benar, hal ini dapat dimanfaatkan oleh penerima yang melakukan kecurangan tersebut untuk memanfaatkan pesan demi kepentingan dirinya sendiri.
2. Protokol Three-Pass juga diimplementasikan pada saat pendistribusian shares