Skip to content

Commit

Permalink
Removed Level-sites needing precision as we shouldn't trust it with t…
Browse files Browse the repository at this point in the history
…hresholds. Also removed the 'site' suffix for both client and server, to stay consistent with the paper.
  • Loading branch information
Andrew Quijano committed Jun 24, 2023
1 parent 184d4d6 commit 200d554
Show file tree
Hide file tree
Showing 11 changed files with 28 additions and 53 deletions.
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -242,10 +242,10 @@ aws eks update-kubeconfig --name ppdt --region us-east-2
- Run the same commands as shown below. It is similar to [the previous section](#running-kubernetes-commands), but we point to different yaml files since it is pulling the container image from dockerhub.
```bash
# Make sure you aren't running these too early!
kubectl apply -f eks-config/k8/level_sites
kubectl apply -f eks-config/k8/server_site
kubectl apply -f eks-config/k8/level_sites
kubectl apply -f eks-config/k8/server -l role=server

kubectl apply -f eks-config/k8/client
kubectl apply -f eks-config/k8/client -l role=client
kubectl exec <CLIENT-SITE-POD> -- bash -c "gradle run -PchooseRole=weka.finito.client --args <VALUES-FILE>"
```
- Obtain the results of the classification using `kubectl logs` to the pods deployed on EKS.
Expand Down
24 changes: 5 additions & 19 deletions eks-config/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,27 +7,13 @@ metadata:
version: "1.27"

# Managed Node Groups show up on AWS console
# Label is necessary so I can target where the pods go with kubectl apply
# For best performance, I am isolating each level-site pod to its own node.
managedNodeGroups:
# Currently I have 10 level-sites
- name: level-sites
instanceType: t2.large
labels: { role: level-site }
minSize: 10
minSize: 12
maxSize: 15
desiredCapacity: 10
maxPodsPerNode: 1

- name: client
instanceType: t2.large
labels: { role: client }
minSize: 1
maxSize: 1
desiredCapacity: 1
maxPodsPerNode: 1

- name: server
instanceType: t2.large
labels: { role: server-site }
minSize: 1
maxSize: 1
desiredCapacity: 1
maxPodsPerNode: 1
desiredCapacity: 12
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
kind: Service
apiVersion: v1
metadata:
name: ppdt-server-site-service
name: ppdt-server-service
spec:
clusterIP: None # clusterIP must be None to create a headless service
selector:
job-name: ppdt-server-site-deploy # must match Job name
job-name: ppdt-server-deploy # must match Job name
ports:
- protocol: TCP
port: 9000
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
apiVersion: batch/v1
kind: Job
metadata:
name: ppdt-server-site-deploy
name: ppdt-server-deploy
spec:
template:
spec:
subdomain: ppdt-server-site-service # has to match Service name
restartPolicy: OnFailure

containers:
- name: ppdt-server-site-deploy
- name: ppdt-server-deploy
image: andrewquijano92/ppdt
imagePullPolicy: IfNotPresent
command: ["/bin/sh"]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
kind: Service
apiVersion: v1
metadata:
name: ppdt-server-site-service
name: ppdt-server-service
spec:
clusterIP: None # clusterIP must be None to create a headless service
selector:
job-name: ppdt-server-site-deploy # must match Job name
job-name: ppdt-server-deploy # must match Job name
ports:
- protocol: TCP
port: 9000
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
apiVersion: batch/v1
kind: Job
metadata:
name: ppdt-server-site-deploy
name: ppdt-server-deploy
spec:
template:
spec:
subdomain: ppdt-server-site-service # has to match Service name
subdomain: ppdt-server-service # has to match Service name
restartPolicy: OnFailure

containers:
- name: ppdt-server-site-deploy
- name: ppdt-server-deploy
image: ppdt:experiment
imagePullPolicy: IfNotPresent
command: ["/bin/sh"]
Expand Down
1 change: 0 additions & 1 deletion src/main/java/weka/finito/client.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import java.security.KeyPair;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.Base64;
import java.util.HashMap;
import java.util.Hashtable;
Expand Down
6 changes: 0 additions & 6 deletions src/main/java/weka/finito/level_site_server.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,6 @@ public static void main(String[] args) throws NoSuchPaddingException, NoSuchAlgo
System.out.println("Port is not defined.");
System.exit(1);
}
try {
our_precision = Integer.parseInt(System.getenv("PRECISION"));
} catch (NumberFormatException e) {
System.out.println("Precision is not defined.");
System.exit(1);
}
if(AES_Pass == null || AES_Pass.isEmpty()) {
System.out.println("AES_PASS is empty.");
System.exit(1);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
import weka.finito.structs.NodeInfo;


public final class server_site implements Runnable {
public final class server implements Runnable {

private static final String os = System.getProperty("os.name").toLowerCase();
private final String training_data;
Expand Down Expand Up @@ -80,12 +80,12 @@ public static void main(String[] args) {

// Create and run the server.
System.out.println("Server Initialized and started running");
server_site server = new server_site(args[0], level_domains, port, precision, port);
server server = new server(args[0], level_domains, port, precision, port);
server.run();
}

// For local host testing, (GitHub Actions CI, on PrivacyTest.java)
public server_site(String training_data, String [] level_site_ips, int [] level_site_ports, int precision,
public server(String training_data, String [] level_site_ips, int [] level_site_ports, int precision,
int server_port) {
this.training_data = training_data;
this.level_site_ips = level_site_ips;
Expand All @@ -95,7 +95,7 @@ public server_site(String training_data, String [] level_site_ips, int [] level_
}

// For Cloud environment, (Testing with Kubernetes)
public server_site(String training_data, String [] level_site_domains, int port, int precision, int server_port) {
public server(String training_data, String [] level_site_domains, int port, int precision, int server_port) {
this.training_data = training_data;
this.level_site_ips = level_site_domains;
this.port = port;
Expand All @@ -111,7 +111,7 @@ private static String hash(String text) throws NoSuchAlgorithmException {

private void client_communication() throws Exception {
ServerSocket serverSocket = new ServerSocket(server_port);
System.out.println("Server-site ready to get public keys from client-site");
System.out.println("Server ready to get public keys from client");

try (Socket client_site = serverSocket.accept()) {
ObjectOutputStream to_client_site = new ObjectOutputStream(client_site.getOutputStream());
Expand All @@ -124,24 +124,24 @@ private void client_communication() throws Exception {
o = from_client_site.readObject();
this.dgk_public = (DGKPublicKey) o;

System.out.println("Server-site collected keys from client");
System.out.println("Server collected keys from client");

// Train level-sites
get_level_site_data(ppdt, all_level_sites);

System.out.println("Server-site trained DT and created level-sites");
System.out.println("Server trained DT and created level-sites");

// Now I know the leaves to send back to the client
String [] leaf_array = leaves.toArray(new String[0]);
to_client_site.writeObject(leaf_array);

System.out.println("Server-site sent the leaves back to the client");
System.out.println("Server sent the leaves back to the client");
}
serverSocket.close();
}

private static boolean isUnix() {
return (server_site.os.contains("nix") || server_site.os.contains("nux") || server_site.os.contains("aix"));
return (server.os.contains("nix") || server.os.contains("nux") || server.os.contains("aix"));
}

private static void printTree(ClassifierTree j48, String base_name)
Expand Down
4 changes: 0 additions & 4 deletions src/main/java/weka/finito/structs/level_order_site.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,9 @@
package weka.finito.structs;

import security.DGK.DGKOperations;
import security.DGK.DGKPublicKey;
import security.misc.HomomorphicException;
import security.paillier.PaillierCipher;
import security.paillier.PaillierPublicKey;

import java.io.Serializable;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;

Expand Down
4 changes: 2 additions & 2 deletions src/test/java/PrivacyTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import weka.finito.AES;
import weka.finito.client;
import weka.finito.level_site_server;
import weka.finito.server_site;
import weka.finito.server;

import javax.crypto.NoSuchPaddingException;
import java.io.BufferedReader;
Expand Down Expand Up @@ -90,7 +90,7 @@ public static String test_case(String training_data, String features_file, int l
}

// Create the server
server_site cloud = new server_site(training_data, level_site_ips, level_site_ports, precision, server_port);
server cloud = new server(training_data, level_site_ips, level_site_ports, precision, server_port);
Thread server = new Thread(cloud);
server.start();

Expand Down

0 comments on commit 200d554

Please sign in to comment.