Procházet zdrojové kódy

moved prf init to offline stage

Boyoung- před 9 roky
rodič
revize
fa50659a2e

+ 11 - 0
src/protocols/Access.java

@@ -17,6 +17,7 @@ import oram.Forest;
 import oram.Metadata;
 import oram.Tree;
 import oram.Tuple;
+import util.StopWatch;
 import util.Util;
 
 public class Access extends Protocol {
@@ -210,6 +211,7 @@ public class Access extends Protocol {
 		int addrBits = md.getAddrBits();
 
 		Timer timer = new Timer();
+		StopWatch sw = new StopWatch();
 
 		sanityCheck();
 
@@ -247,7 +249,9 @@ public class Access extends Protocol {
 						byte[] sD_Nip1_pr = Util.xor(Nip1_pr, sE_Nip1_pr);
 						con1.write(sD_Nip1_pr);
 
+						sw.start();
 						runE(predata, OTi, sE_Ni, sE_Nip1_pr, timer);
+						sw.stop();
 
 						if (ti == numTrees - 1)
 							con2.write(N);
@@ -260,14 +264,18 @@ public class Access extends Protocol {
 
 						byte[] sD_Nip1_pr = con1.read();
 
+						sw.start();
 						runD(predata, OTi, sD_Ni, sD_Nip1_pr, timer);
+						sw.stop();
 
 					} else if (party == Party.Charlie) {
 						preaccess.runC(timer);
 
 						System.out.println("L" + ti + "=" + new BigInteger(1, Li).toString(2));
 
+						sw.start();
 						OutAccess outaccess = runC(md, ti, Li, timer);
+						sw.stop();
 
 						Li = outaccess.C_Lip1;
 
@@ -290,5 +298,8 @@ public class Access extends Protocol {
 		}
 
 		timer.print();
+
+		System.out.println();
+		System.out.println(sw.toMS());
 	}
 }

+ 5 - 1
src/protocols/PreData.java

@@ -1,17 +1,21 @@
 package protocols;
 
+import crypto.PRF;
 import oram.Tuple;
 
 public class PreData {
 	public byte[] sscot_k;
 	public byte[] sscot_kprime;
 	public byte[][] sscot_r;
+	public PRF sscot_F_k;
+	public PRF sscot_F_kprime;
 
 	public byte[] ssiot_k;
 	public byte[] ssiot_kprime;
 	public byte[] ssiot_r;
+	public PRF ssiot_F_k;
+	public PRF ssiot_F_kprime;
 
 	public int[] access_sigma;
-	// public int[] access_rho;
 	public Tuple[] access_p;
 }

+ 14 - 0
src/protocols/PreSSCOT.java

@@ -31,15 +31,29 @@ public class PreSSCOT extends Protocol {
 		con1.write(predata.sscot_r);
 		timer.stop(P.COT, M.offline_write);
 
+		predata.sscot_F_k = new PRF(Crypto.secParam);
+		predata.sscot_F_k.init(predata.sscot_k);
+		predata.sscot_F_kprime = new PRF(Crypto.secParam);
+		predata.sscot_F_kprime.init(predata.sscot_kprime);
+
 		timer.stop(P.COT, M.offline_comp);
 	}
 
 	public void runD(PreData predata, Timer timer) {
+		timer.start(P.COT, M.offline_comp);
+
 		timer.start(P.COT, M.offline_read);
 		predata.sscot_k = con1.read();
 		predata.sscot_kprime = con1.read();
 		predata.sscot_r = con1.readObject();
 		timer.stop(P.COT, M.offline_read);
+
+		predata.sscot_F_k = new PRF(Crypto.secParam);
+		predata.sscot_F_k.init(predata.sscot_k);
+		predata.sscot_F_kprime = new PRF(Crypto.secParam);
+		predata.sscot_F_kprime.init(predata.sscot_kprime);
+
+		timer.stop(P.COT, M.offline_comp);
 	}
 
 	public void runC() {

+ 14 - 0
src/protocols/PreSSIOT.java

@@ -28,15 +28,29 @@ public class PreSSIOT extends Protocol {
 		con1.write(predata.ssiot_r);
 		timer.stop(P.IOT, M.offline_write);
 
+		predata.ssiot_F_k = new PRF(Crypto.secParam);
+		predata.ssiot_F_k.init(predata.ssiot_k);
+		predata.ssiot_F_kprime = new PRF(Crypto.secParam);
+		predata.ssiot_F_kprime.init(predata.ssiot_kprime);
+
 		timer.stop(P.IOT, M.offline_comp);
 	}
 
 	public void runD(PreData predata, Timer timer) {
+		timer.start(P.IOT, M.offline_comp);
+
 		timer.start(P.IOT, M.offline_read);
 		predata.ssiot_k = con1.read();
 		predata.ssiot_kprime = con1.read();
 		predata.ssiot_r = con1.read();
 		timer.stop(P.IOT, M.offline_read);
+
+		predata.ssiot_F_k = new PRF(Crypto.secParam);
+		predata.ssiot_F_k.init(predata.ssiot_k);
+		predata.ssiot_F_kprime = new PRF(Crypto.secParam);
+		predata.ssiot_F_kprime.init(predata.ssiot_kprime);
+
+		timer.stop(P.IOT, M.offline_comp);
 	}
 
 	public void runC() {

+ 4 - 13
src/protocols/SSCOT.java

@@ -2,7 +2,6 @@ package protocols;
 
 import communication.Communication;
 import crypto.Crypto;
-import crypto.PRF;
 import crypto.PRG;
 import exceptions.NoSuchPartyException;
 import exceptions.SSCOTException;
@@ -27,18 +26,14 @@ public class SSCOT extends Protocol {
 		byte[][] x = predata.sscot_r;
 		byte[][] e = new byte[n][];
 		byte[][] v = new byte[n][];
-		PRF F_k = new PRF(Crypto.secParam);
-		F_k.init(predata.sscot_k);
-		PRF F_kprime = new PRF(Crypto.secParam);
-		F_kprime.init(predata.sscot_kprime);
 		PRG G = new PRG(l);
 
 		for (int i = 0; i < n; i++) {
 			for (int j = 0; j < a[i].length; j++)
 				x[i][j] = (byte) (predata.sscot_r[i][j] ^ a[i][j]);
 
-			e[i] = Util.xor(G.compute(F_k.compute(x[i])), m[i]);
-			v[i] = F_kprime.compute(x[i]);
+			e[i] = Util.xor(G.compute(predata.sscot_F_k.compute(x[i])), m[i]);
+			v[i] = predata.sscot_F_kprime.compute(x[i]);
 		}
 
 		timer.start(P.COT, M.online_write);
@@ -57,17 +52,13 @@ public class SSCOT extends Protocol {
 		byte[][] y = predata.sscot_r;
 		byte[][] p = new byte[n][];
 		byte[][] w = new byte[n][];
-		PRF F_k = new PRF(Crypto.secParam);
-		F_k.init(predata.sscot_k);
-		PRF F_kprime = new PRF(Crypto.secParam);
-		F_kprime.init(predata.sscot_kprime);
 
 		for (int i = 0; i < n; i++) {
 			for (int j = 0; j < b[i].length; j++)
 				y[i][j] = (byte) (predata.sscot_r[i][j] ^ b[i][j]);
 
-			p[i] = F_k.compute(y[i]);
-			w[i] = F_kprime.compute(y[i]);
+			p[i] = predata.sscot_F_k.compute(y[i]);
+			w[i] = predata.sscot_F_kprime.compute(y[i]);
 		}
 
 		timer.start(P.COT, M.online_write);

+ 4 - 14
src/protocols/SSIOT.java

@@ -2,7 +2,6 @@ package protocols;
 
 import communication.Communication;
 import crypto.Crypto;
-import crypto.PRF;
 import crypto.PRG;
 import exceptions.NoSuchPartyException;
 import exceptions.SSIOTException;
@@ -27,10 +26,6 @@ public class SSIOT extends Protocol {
 		byte[][] x = new byte[n][];
 		byte[][] e = new byte[n][];
 		byte[][] v = new byte[n][];
-		PRF F_k = new PRF(Crypto.secParam);
-		F_k.init(predata.ssiot_k);
-		PRF F_kprime = new PRF(Crypto.secParam);
-		F_kprime.init(predata.ssiot_kprime);
 		PRG G = new PRG(l);
 
 		for (int i = 0; i < n; i++) {
@@ -39,8 +34,8 @@ public class SSIOT extends Protocol {
 			for (int j = 0; j < Nip1_pr.length; j++)
 				x[i][x[i].length - 1 - j] ^= Nip1_pr[Nip1_pr.length - 1 - j] ^ i_bytes[i_bytes.length - 1 - j];
 
-			e[i] = Util.xor(G.compute(F_k.compute(x[i])), y[i]);
-			v[i] = F_kprime.compute(x[i]);
+			e[i] = Util.xor(G.compute(predata.ssiot_F_k.compute(x[i])), y[i]);
+			v[i] = predata.ssiot_F_kprime.compute(x[i]);
 		}
 
 		timer.start(P.IOT, M.online_write);
@@ -55,16 +50,11 @@ public class SSIOT extends Protocol {
 		timer.start(P.IOT, M.online_comp);
 
 		// step 2
-		PRF F_k = new PRF(Crypto.secParam);
-		F_k.init(predata.ssiot_k);
-		PRF F_kprime = new PRF(Crypto.secParam);
-		F_kprime.init(predata.ssiot_kprime);
-
 		byte[] y = predata.ssiot_r;
 		for (int i = 0; i < Nip1_pr.length; i++)
 			y[y.length - 1 - i] ^= Nip1_pr[Nip1_pr.length - 1 - i];
-		byte[] p = F_k.compute(y);
-		byte[] w = F_kprime.compute(y);
+		byte[] p = predata.ssiot_F_k.compute(y);
+		byte[] w = predata.ssiot_F_kprime.compute(y);
 
 		timer.start(P.IOT, M.online_write);
 		con2.write(p);