• Tidak ada hasil yang ditemukan

Analisis Keamanan Pada Kombinasi Protokol Secret Sharing Dan Three-Pass

N/A
N/A
Protected

Academic year: 2017

Membagikan "Analisis Keamanan Pada Kombinasi Protokol Secret Sharing Dan Three-Pass"

Copied!
8
0
0

Teks penuh

(1)

LAMPIRAN

DAFTAR PUBLIKASI ILMIAH PENULIS

No.

Judul

Penulis

Jenis Publikasi

Waktu Publikasi

Tempat

1

Implementasi

Algoritma

Pattern String

Matching

Nasional Inovasi

dan Teknologi

Informasi )

2014

Kabupaten

Samosir,

Sumatera

Utara

2

Implementasi

Keamanan

Informasi Pada

e-Commerce

Keamanan pada

Kombinasi

Protokol Secret

Sharing dan

Three-Pass

Satria

Prayudi

Jurnal TIMES

(JTM Vol 4, No

2)

2015

STMIK

(2)

LAMPIRAN 1

SOURCE CODE PROGRAM

1.

secret_sharing.js

////////////////////////////////////////////////////////////////////

// Protokol Secret Sharing //

// Satria Prayudi – 137038047 //

// Menggunakan source secret sharing dari Wikipedia //

// dengan pengembangan yang dibutuhkan //

// https://en.wikipedia.org/wiki/Shamir%27s_Secret_Sharing //

//////////////////////////////////////////////////////////////////////////

function random(limit){

return Math.floor((Math.random() * limit) + 1);

}

function split(m, n, t) {

var prime = 997; /* harus selalu lebih besar dari jumlah m+t+n

*/

var k = [];

k[0] = m;

for(var i = 1; i <= t-1; i++){

k[i] = random(20);

}

console.log("m :"+m);

console.log("Koeffisien: "+k);

var p, pangkat, polinom_ke_i, shares = [];

for(p = 1; p <= n; p++) {

for(pangkat = 1, polinom_ke_i = k[0]; pangkat <= t-1;

pangkat++) {

polinom_ke_i = (polinom_ke_i + (k[pangkat] *

(3)

}

polinom_ke_i = polinom_ke_i % prime;

shares[p - 1] = [p, polinom_ke_i];

}

return shares;

}

function rebuild_array(arr)

{

var share = [];

var share_length = arr[0][1].length;

for(var i=0; i< share_length; i++)

{

var inner_share = [];

for(var j=0; j< arr.length; j++)

{

var secret = arr[j][0];

var shareN = arr[j][1][i][1];

//console.log(arr[j]);

//console.log("Secret : " + secret);

//console.log("ShareN : " + shareN);

inner_share[j] = [secret, shareN];

//console.log("Inner Share : " + inner_share);

}

share[i] = inner_share;

}

return share;

}

function gcdD(a,b) {

(4)

if (b == 0) return [a, 1, 0];

else {

n = Math.floor(a/b);

c = a % b;

r = gcdD(b,c);

return [r[0], r[2], r[1]-r[2]*n];

}

}

function modInverse(k) {

var prime = 997; /* harus selalu lebih besar dari jumlah m+t+n

*/

k = k % prime;

var r = (k < 0) ? -gcdD(prime,-k)[2] : gcdD(prime,k)[2];

return (prime + r) % prime;

}

function join(shares) {

var prime = 997; /* harus selalu lebih besar dari jumlah m+t+n

*/

var accum, count, formula, startposition, nextposition, value,

numerator, denominator;

for(formula = accum = 0; formula < shares.length; formula++) {

for(count = 0, numerator = denominator = 1; count <

shares.length; count++) {

if(formula == count) continue; // If not the same

value

startposition = shares[formula][0];

nextposition = shares[count][0];

numerator = (numerator * -nextposition) % prime;

denominator = (denominator * (startposition -

nextposition)) % prime;

}

(5)

accum = (prime + accum + (value * numerator *

modInverse(denominator)));

//accum = (prime + accum + (value * numerator *

modInverse(denominator))) % prime;

}

while(accum < 0){

accum += prime;

}

accum = accum % prime;

return accum;

}

function splitting_arrays(arrays){

var temp = [];

for (var i =0; i<arrays.length; i++){

for(var j=0; j<arrays[i].length; j++){

if(temp[j] == undefined)

temp[j] = [[i+1, arrays[i][j][1]]];

else{

temp[j].push([i+1, arrays[i][j][1]]);

}

}

}

return temp;

(6)

2.

three-pass.js

////////////////////////////////////////////////////////////////////

// Protokol Three-Pass //

// Satria Prayudi – 137038047 //

//////////////////////////////////////////////////////////////////////////

var mod = 997;

function encrypt(plaintext, key){ console.log("Enc :");

console.log(plaintext);

var ciphertext = new Array(); var r; //tampung hasil sementara

var C; //tampung karakter terenkripsi sementara

for(var i = 0; i < plaintext.length; i++){

r = Number(plaintext[i]) + Number(key[i]);

if(r < 0)

C = mod - (Math.abs(r) % mod); else

C = Math.abs(r) % mod;

//C = (plaintext[i] + key[i]) % mod;

console.log(plaintext[i]+"+"+key[i]+ "%" + mod +"="+C);

ciphertext.push(C); }

return ciphertext; }

function decrypt(input, key){ console.log("Dec :"); console.log(input);

//var temp = input.split(","); var plaintext = new Array(); var r;

var P;

for(var i = 0; i < input.length; i++){

r = Number(input[i]) - Number(key[i]); console.log(input[i]+"-"+key[i]+"="+r);

if(r < 0)

P = mod - (Math.abs(r) % mod); else

P = Math.abs(r) % mod;

//P = (input[i] - key[i]) % mod;

(7)

plaintext.push(P); }

return plaintext; }

function OneTimePad(length){ var d = new Date(); var key = new Array();

var m = 25; var a = 11; var c = 17; var X = 1;

for(var n = 0; n < length; n++){ var t = d.getMilliseconds(); var X = ((a * X) + c + t) % m;

key.push(X); }

return key; }

function splitting_arrays(arrays){ var temp = [];

for (var i =0; i<arrays.length; i++){

for(var j=0; j<arrays[i].length; j++){

if(temp[j] == undefined)

temp[j] = [[i+1, arrays[i][j]]]; else{

temp[j].push([i+1, arrays[i][j]]); }

} }

return temp; }

function gcdD(a,b) { var n, c, r;

if (b == 0) return [a, 1, 0]; else {

n = Math.floor(a/b); c = a % b;

r = gcdD(b,c);

return [r[0], r[2], r[1]-r[2]*n]; }

(8)

function modInverse(k) {

var prime = 997; /* harus selalu lebih besar dari jumlah m+t+n */

k = k % prime;

var r = (k < 0) ? -gcdD(prime,-k)[2] : gcdD(prime,k)[2]; return (prime + r) % prime;

}

function join(shares) {

var prime = 997; /* harus selalu lebih besar dari jumlah m+t+n */

var accum, count, formula, startposition, nextposition, value, numerator, denominator;

for(formula = accum = 0; formula < shares.length; formula++) { for(count = 0, numerator = denominator = 1; count < shares.length; count++) {

if(formula == count) continue; // If not the same value

startposition = shares[formula][0]; nextposition = shares[count][0];

numerator = (numerator * -nextposition) % prime; denominator = (denominator * (startposition - nextposition)) % prime;

}

value = shares[formula][1];

accum = (prime + accum + (value * numerator * modInverse(denominator)));

//accum = (prime + accum + (value * numerator * modInverse(denominator))) % prime;

}

while(accum < 0){ accum += prime; }

accum = accum % prime; return accum;

}

function char_(a) { if(a == 10)

return "<br/>";

Referensi

Dokumen terkait

Penulisan ini dimaksudkan untuk memberikan informasi mengenai manfaat teknologi Jaringan dan proses kerja secara umum serta logika proses pembuatan aplikasi untuk menjalankan

Dengan demikian aplikasi ini dapat membatu pihak hotel dalam hal promosi dan memberikan kemudahan dan kenyamanan kepada masyarakat dalam proses reservasi kamar hotel. Aplikasi

Melakukan bimbingan dan fasilitasi bagi lembaga untuk mendapatkan pemahaman mengenai ketentuan tempat baca dan bahan bacaan yang harus dimiliki oleh lembaga, serta

Ade terlahir dalam keadaan buta total ( blind ) bukan sekedar low vision (kurang lihat) ataupun limited vision , mengalami proses pertumbuhan yang khas

Angket ini saya maksudkan sebagai alat pengumpulan data dalam rangka menyusun skripsi yang berjudul “ Etos Kerja Penenun dalam Meningkatkan Status Ekonomi (Studi Deskriptif

Online game and quiz ini merupakan aplikasi yang didasarkan pada: (a) karakteristik user , karena user nya adalah mahasiswa maka model butir soal yang digunakan disesuaikan

Proses pembelajaran yang sudah dilaksanakan, pasti ada hasil yang akan didapat yaitu berupa hasil belajar siswa. Untuk mengetahui hasil belajar siswa diperlukan suatu

1. Maksiat adalah melakukan suatu perbuatan yang diharamkam syarak dan meninggalkan perbuatan yang diwajibkan syarak. Perbuatan maksiat ini tidak saja yang menyangkut