You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This repository contains the implementation of SDSSE, the Dynamic Searchable Symmetric Encryption (DSSE) schemes (SDSSE-CQ and SDSSE-CQ-S) we proposed in the PETS submission "*Searchable Encryption for Conjunctive Queries with Extended Forward and Backward Privacy*". The proposed scheme aims to enable conjunctive queries over DSSE schemes with Forward/Backward privacy gurantees. Note that this is a proof-of-concept code implementation and does not include an interactive interface. Instead, we provide a guidance on how to set the parameters to run this code towards various input sizes.
3
+
Paper title: **Searchable Encryption for Conjunctive Queries with Extended Forward and Backward Privacy**
4
4
5
-
## Requirements
5
+
Artifacts HotCRP Id: **#12**
6
+
7
+
Requested Badge: **Reproduced**
8
+
9
+
## Description
10
+
This repository contains the implementation of SDSSE, the Dynamic Searchable Symmetric Encryption (DSSE) schemes (SDSSE-CQ and SDSSE-CQ-S) we proposed in the PETS submission "Searchable Encryption for Conjunctive Queries with Extended Forward and Backward Privacy".
11
+
The proposed scheme aims to enable conjunctive queries over DSSE schemes with Forward/Backward privacy gurantees.
12
+
Instead, we provide a guidance on how to set the parameters to run this code towards various input sizes.
13
+
14
+
### Security/Privacy Issues and Ethical Concerns
15
+
16
+
This artifact will not cause any risk to the security or privacy of the reviewer's machine.
17
+
The artifact will not lead to ethical concerns because:
18
+
1. It leverages open-source software with proper licenses for the implementation.
19
+
2. As a privacy-enhancing design, the artifact contributes positively to the society by fortifying
20
+
data privacy in the cloud.
21
+
22
+
## Environment
23
+
24
+
### Accessibility
25
+
Our code is available in GitHub. Please access the code via this link.
26
+
27
+
You may use the following command to pull the code to your local machine:
28
+
```bash
29
+
git clone
30
+
```
31
+
32
+
### Set up the environment
33
+
**Requirements**
6
34
7
35
* Git
8
36
* Ubuntu version >= 16.04
@@ -11,30 +39,61 @@ This repository contains the implementation of SDSSE, the Dynamic Searchable Sym
11
39
* openssl version >= 1.1.0h
12
40
* The Pairing-Based Cryptography Library (PBC) version 0.5.14
13
41
14
-
### Some Notes for the System Requirements
42
+
####Some Notes for the System Requirements
15
43
16
44
1. The above setting represents the oldest version we tested with our implementation. We cannot guarantee the code will be compatible with any environments that are older than the above environment settings. On the other hand, although the code has been tested in some newer environments, including Ubuntu 20.04 and gcc/g++ 9.0, we still cannot guarantee its correctness on the latest version of above software, especially because some openssl APIs are deprecated.
17
45
18
-
2. The implementation cannot run with MacOS because the file system (APFS) of MacOS is not case-sensitive. This creates a collision between the PBC C++ Wrapper and the original PBC library, making the building toolkit unable to build the required library correctly. This issue cannot be addressed even if we run a Docker container upon MacOS since it inherits the underlying file system features. To address this issue, the only solution is to re-format your MacOS file system to APFS (case-sensitive), but this will create incompatibility on some native MacOS software. Hence, we do not recommand to running our code with MacOS.
46
+
2. The implementation cannot run with MacOS because the file system (APFS) of MacOS is not case-sensitive. This creates a collision between the PBC C++ Wrapper and the original PBC library, making the building toolkit unable to build the required library correctly. This issue cannot be addressed even if we run a Docker container upon MacOS since it inherits the underlying file system features. To address this issue, the only solution is to re-format your MacOS file system to APFS (case-sensitive), but this will create incompatibility on some native MacOS software. Hence, we do not recommend to running our code with MacOS.
47
+
48
+
#### Setup Process
49
+
We provide two ways to set up the environment for this artifact:
50
+
51
+
**Option 1: Docker Container**
19
52
20
-
## Building
53
+
This artifact provides the docker container to run the code.
54
+
After downloading the artifact, please use the following command to build the docker container:
55
+
```bash
56
+
cd SDSSE/Container
57
+
docker compose up
58
+
```
59
+
After building the container, use the following command to connect to the container:
60
+
```bash
61
+
docker exec -it SDSSE-dev sh
62
+
```
63
+
The source code will be mapped to the path `~/SDSSE` inside the container.
64
+
65
+
Describe how the reviewers should set up the environment for your artifact, including downloading and installing dependencies and the installation of the artifact itself.
66
+
Be as specific as possible here.
67
+
If possible, use code segments to simply the workflow, e.g.,
68
+
69
+
**Option 2: Use a Physical Machine**
21
70
22
-
Download this repository, and run the following commands:
71
+
The `Dockerfile` under `SDSSE/Container` provides a list of necessary software to run the code and how to install them.
72
+
Following the list, you can setup a bare-metal server to compile our code.
73
+
74
+
#### Build the Code
75
+
Run the following commands to build the code:
23
76
24
77
```bash
25
-
cd SDSSE-76F6
78
+
cd SDSSE
26
79
mkdir build
27
80
cd build
28
81
# use cmake to build the code
29
82
cmake ..
30
83
cmake --build . --target [SDSSECQ|SDSSECQS]
31
84
```
32
85
33
-
##Usage
86
+
### Test the environment
34
87
After compiling the project, you can run the following commands to start the test program:
For instance, the following command sets an encrypted database on `SDSSECQ` with keyword-id pairs `(w1, i), 0 <= i <= 9` and `(w2, i), 0 <= i <= 4`, and deletes `(w1, 0)` and `(w2, 0)` (10% deletion).
93
+
It then performs a single keyword search over `w1` and a conjunctive one with `w1` and `w2`.
94
+
```bash
95
+
cd ../Data
96
+
../build/SDSSECQ 10 5 1
38
97
```
39
98
40
99
If you experience runtime errors, indicating that the libpbc cannot be found in your system, please run the following command to check `LD_LIBRARY_PATH`:
@@ -43,14 +102,95 @@ echo $LD_LIBRARY_PATH
43
102
```
44
103
to ensure the path `usr/local/lib` is in that enviroment variable. You may need to manually add it in if there is no such path inside and meet the corresponding runtime error.
45
104
46
-
## Parameters
105
+
## Artifact Evaluation
106
+
107
+
### Parameters
47
108
As mentioned, the current implementation is a proof-of-concept prototype.To evaluate the proposed protocol, we also implement two test programs to generate synthesis datasets and run our proposed DSSE protocol over them.
48
109
49
-
### Dataset Size
50
-
The source code of those test programs can be found in the root path of the project, namely `SDSSECQ.cpp` and `SDSSECQS.cpp`. The code in this repository inserts 1000 files with two keywords "Alice" and "Bob", deletes 100 files (10% deletion), and then executes the conjunctive query ("Alice" AND "Bob"). To enlarge the size of dataset, one can modify the above two files by increasing the numbers of insertions/deletions or adding more keywords.
110
+
####Dataset Size
111
+
The source code of those test programs can be found in the root path of the project, namely `SDSSECQ.cpp` and `SDSSECQS.cpp`. The code in this repository inserts 1000 files with two keywords "Alice" and "Bob", deletes 100 files (10% deletion), and then executes the conjunctive query ("Alice" AND "Bob"). To enlarge the size of dataset, one can modify the above two files by increasing the numbers of insertions/deletions or adding more keywords.
51
112
52
113
Besides, as the number of keyword-id pairs increases, we should use a larger Bloom filter to keep the XSet for conjunctive queries. Hence, the `XSET_SIZE` and `XSET_HASH` in `Util
53
114
/CommonUtil.h` should be updated accordingly. Note that the current parameters `XSET_SIZE=2875518` and `XSET_HASH=20` can support conjunctive queries against a dataset with 100k keyword-id pairs with less than 10^-7 false positive rate. We would refer our readers to [here](https://hur.st/bloomfilter/) to compute the new Bloom filter parameters as required.
54
115
55
-
### Deletion
116
+
####Deletion
56
117
Since the deletion is also based on Bloom filter, there are another two Bloom filter parameters, i.e., `GGM_SIZE` and `HASH_SIZE` to be set with the increasing number of deletion operations. The current parameters are `GGM_SIZE=579521` and `HASH_SIZE=5`, which are sufficient for 100 deletions (with only 10^-21 false positive rate) in the test code. Please also update these two parameters when the number of deletion increases by referring to the above Bloom filter calculator.
118
+
119
+
### Main Results and Claims
120
+
121
+
#### Main Result 1: Constant and Small Time For Insertion/Deletion
122
+
As shown in `Table 3`, after fixing the parameter, the insertion time and deletion time for each `(keyword, id)` is a constant.
123
+
Please refer to `Experiment 1` to see how to reproduce the result.
124
+
125
+
#### Main Result 2: The search time is linear
126
+
As shown in `Figure 3-7`, if a proper parameter is set for the scheme, the query delay is linear to the variable, i.e., |w1| and |w2|.
127
+
Please refer to `Experiment 2, 3 and 4` to see how to reproduce the result.
128
+
129
+
### Experiments
130
+
131
+
#### Experiment 1: Insertion and Deletion Time
132
+
After setting the parameter as in the `Parameters` section, re-build the code with the instructions in the `Build the Codes`.
133
+
Then, execute the following command under the `Data` folder.
0 commit comments