Skip to main content

Secure Yannakakis: Join-Aggregate Queries over Private Data


More Docs are under /docs folder

Requirements

For Debian Linux

  • build-essential (gcc >= 8)
  • cmake >= 3.12
  • libssl-dev
  • libgmp-dev
  • libboost-all-dev (Boost >= 1.66)

For macOS

  • brew install cmake
  • brew install openssl
  • brew install gmp
  • brew install boost
  • brew install pybind11

CMAKE-flag -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DOPENSSL_LIBRARIES=/usr/local/opt/openssl/lib

Run the example in Docker

First install docker on your local machine, and then in the main folder, run

docker-compose build dev
dokcer-compose up dev

And now you can ssh into the container like

ssh user@localhost -p 2222

Configure and Compile

git clone --recurse-submodules https://github.com/Aqua-Dream/SECYAN
cd SECYAN
mkdir Release
cd Release
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j 8

Run Demo

Switch to the output folder Release/src/example.

# Server
> ./secyandemo
Who are you? [0. Server, 1. Client]: 0
Establishing connection... Finished!
Which query to run? [0. Q3, 1. Q10, 2. Q18, 3. Q8, 4. Q9]: 2
Which TPCH data size to use? [0. 1MB, 1. 3MB, 2. 10MB, 3. 33MB, 4. 100MB]: 2
Start running query...
Dummy Relation!

Running time: 5277ms
Communication cost: 266.873 MB
Finished!
# Client
> ./secyandemo
Who are you? [0. Server, 1. Client]: 1
Establishing connection... Finished!
Which query to run? [0. Q3, 1. Q10, 2. Q18, 3. Q8, 4. Q9]: 2
Which TPCH data size to use? [0. 1MB, 1. 3MB, 2. 10MB, 3. 33MB, 4. 100MB]: 2
Start running query...
row_num o_custkey       o_orderkey      o_orderdate     o_totalprice    c_name annotation
1       667     29158   1995-10-21      439687.19       00000667        305
2       178     6882    1997-04-09      422359.62       00000178        303

Running time: 3714ms
Communication cost: 266.41 MB
Finished!

Run Benchmark

Switch to the output folder Release/src/example.

> ./benchmark
Usage: ./benchmark
 -r [Role: 0/1, default: 0 (SERVER), required]
 -a [IP-address, default: 127.0.0.1, optional]
 -p [Port (will use port & port+1), default: 7766, optional]
 -n [Number of test runs, default: 3, optional]
 -q [Query ID (3,10,18,8,9,0), default: 0, i.e. test all queries. , optional]

Program exiting
> ./benchmark -r 0 -p 7706 > result_server.txt &
> ./benchmark -r 1 -p 7706 -q 3> result_client.txt &

Remark

  • SECYAN only read the last 8 digits of string from data file. For example, the the first row of column c_name in customer.tbl is Customer#000000001, but it will be outputted as 00000001.
  • To use your own data, please refer to the format of files under data folder. SECYAN currently cannot generate annotations automatically. You need to write the annotation columns on your own.
  • To run your own query, please refer to the file data/TPCH.cpp. SECYAN currently cannot generate codes from SQL automatically. You need to rewrite your query into combinations of operators (Aggregation,SemiJoin,Join,etc.).

Acknowledgment

Thank SixSiebenUno for helping writing the code.

Metadata

Release files for secyan-python 0.3.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for secyan-python 0.3.7
File Size Uploaded
secyan_python-0.3.7.tar.gz 20.4 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for secyan-python 0.3.7
File
secyan_python-0.3.7-cp39-cp39-macosx_10_15_x86_64.whl CPython 3.9 CPython 3.9 macOS 10.15+ x86-64 Details
secyan_python-0.3.7-cp38-cp38-macosx_10_15_x86_64.whl CPython 3.8 CPython 3.8 macOS 10.15+ x86-64 Details
secyan_python-0.3.7-cp37-cp37m-macosx_10_15_x86_64.whl CPython 3.7 CPython 3.7 pymalloc macOS 10.15+ x86-64 Details
secyan_python-0.3.7-cp36-cp36m-macosx_10_15_x86_64.whl CPython 3.6 CPython 3.6 pymalloc macOS 10.15+ x86-64 Details

Total release size: 23.8 MB

Release files / secyan_python-0.3.7.tar.gz

Download URL secyan_python-0.3.7.tar.gz
Size 20.4 MB
Tags Source
SHA-256 checksum
How to use checksums
5d80c26d660f2167cce70c621a1f70e2f93af2d4fdc4ec1f6f2bf96d99277857
BLAKE2b-256 checksum
How to use checksums
79acff8bb7f62504d69825ef563a788b212c2b15bd610cf2e0d939d593297717
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.9.6

Release files / secyan_python-0.3.7-cp39-cp39-macosx_10_15_x86_64.whl

Download URL secyan_python-0.3.7-cp39-cp39-macosx_10_15_x86_64.whl
Size 848.3 kB
Tags CPython 3.9 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
70eee7d5c3def9192fc81b1ccb66a72a0bc4573b818586a406426b08bd0906c2
BLAKE2b-256 checksum
How to use checksums
c7317b389606bd5ec1b28dc95e25902587c2f303b195032a58111b8761582382
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.9.6

Release files / secyan_python-0.3.7-cp38-cp38-macosx_10_15_x86_64.whl

Download URL secyan_python-0.3.7-cp38-cp38-macosx_10_15_x86_64.whl
Size 848.3 kB
Tags CPython 3.8 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
c185e3b3a1422b36d22660110f056ca3b36385b757673e7bbc6597de4b687d82
BLAKE2b-256 checksum
How to use checksums
0c7a683345cc460b803a5e84fb842033b6123efe9e1353ce92304b99f21c1818
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.8.11

Release files / secyan_python-0.3.7-cp37-cp37m-macosx_10_15_x86_64.whl

Download URL secyan_python-0.3.7-cp37-cp37m-macosx_10_15_x86_64.whl
Size 848.3 kB
Tags CPython 3.7 CPython 3.7 pymalloc macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
b7f4890ece0fe46d636493ce49bc70608f203663b3810ea488d6846fef20af85
BLAKE2b-256 checksum
How to use checksums
c2111f207aa07cff80f1bb069bca153244ebe5c31741f7d79ccaf92e8c728ec5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.7.11

Release files / secyan_python-0.3.7-cp36-cp36m-macosx_10_15_x86_64.whl

Download URL secyan_python-0.3.7-cp36-cp36m-macosx_10_15_x86_64.whl
Size 848.3 kB
Tags CPython 3.6 CPython 3.6 pymalloc macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
fe7ce89b8098a32778098e139014256fd075b91f936faf316116a1351782fa0f
BLAKE2b-256 checksum
How to use checksums
80ff9c20c04590b10c9e13807953665a3a6fe1cb888c932ebb25cca443249288
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.6.14

Release history Release notifications | RSS feed

This release

0.3.7 This release

5 release files

0.3.5

4 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.7

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.1

3 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page