Skip to main content

SECYAN c++ implementation

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

secyan_python-0.3.5.tar.gz (20.4 MB view details)

Uploaded Source

Built Distributions

secyan_python-0.3.5-cp38-cp38-macosx_10_15_x86_64.whl (848.3 kB view details)

Uploaded CPython 3.8 macOS 10.15+ x86-64

secyan_python-0.3.5-cp37-cp37m-macosx_10_15_x86_64.whl (848.3 kB view details)

Uploaded CPython 3.7m macOS 10.15+ x86-64

secyan_python-0.3.5-cp36-cp36m-macosx_10_15_x86_64.whl (848.3 kB view details)

Uploaded CPython 3.6m macOS 10.15+ x86-64

File details

Details for the file secyan_python-0.3.5.tar.gz.

File metadata

  • Download URL: secyan_python-0.3.5.tar.gz
  • Upload date:
  • Size: 20.4 MB
  • Tags: Source
  • Uploaded using 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

File hashes

Hashes for secyan_python-0.3.5.tar.gz
Algorithm Hash digest
SHA256 ed378f23822e3c65b64cec7ec1a561ffbb02ce6cd6be38847955a86cb7b2906c
MD5 86380bc9edc1a3a7472259cb02108999
BLAKE2b-256 07a2d0e6b5ea7fcf2420c6413d0e17222bc9f870e564f10438fa7c723bd1f5b1

See more details on using hashes here.

File details

Details for the file secyan_python-0.3.5-cp38-cp38-macosx_10_15_x86_64.whl.

File metadata

  • Download URL: secyan_python-0.3.5-cp38-cp38-macosx_10_15_x86_64.whl
  • Upload date:
  • Size: 848.3 kB
  • Tags: CPython 3.8, macOS 10.15+ x86-64
  • Uploaded using 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

File hashes

Hashes for secyan_python-0.3.5-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 4dbd16971aea4a15e0625c660950fb9c7800f2718545f3c7f919007060322a2b
MD5 86fac294c045b18c69775ac380ca4b48
BLAKE2b-256 be0e3560cdb551f8c3cd0256e06a690afee15833b42867d698f49d59752b41c9

See more details on using hashes here.

File details

Details for the file secyan_python-0.3.5-cp37-cp37m-macosx_10_15_x86_64.whl.

File metadata

  • Download URL: secyan_python-0.3.5-cp37-cp37m-macosx_10_15_x86_64.whl
  • Upload date:
  • Size: 848.3 kB
  • Tags: CPython 3.7m, macOS 10.15+ x86-64
  • Uploaded using 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

File hashes

Hashes for secyan_python-0.3.5-cp37-cp37m-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 4096ba23c3d62e5569e468e0a32286c992e4b37494eb38d14ad3e9a017fa7764
MD5 0a2c71b32741bb9d9dbfec4e096c76e3
BLAKE2b-256 923f65aa0e782399b68ec8139f2a461067636ecef5bea9c161f4f74d4c7bb490

See more details on using hashes here.

File details

Details for the file secyan_python-0.3.5-cp36-cp36m-macosx_10_15_x86_64.whl.

File metadata

  • Download URL: secyan_python-0.3.5-cp36-cp36m-macosx_10_15_x86_64.whl
  • Upload date:
  • Size: 848.3 kB
  • Tags: CPython 3.6m, macOS 10.15+ x86-64
  • Uploaded using 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

File hashes

Hashes for secyan_python-0.3.5-cp36-cp36m-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 bb62d96751e2590ae98f1f4a4172ea8e1474527307b0cb17aefed72070a3d031
MD5 9fdb35a0efac809bf9f124d4b41a06fa
BLAKE2b-256 8c5910425630fa18a7f5154315f987feecb462cb575b447f350eaf2eeec2cb64

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page