Skip to main content

csclib

Project description

Build

@server:$ python3 -m venv env
@server:$ source env/bin/activate
@server:$ cd python/csclib
@server:$ make
@server:$ pip3 install .

To compute precomputed tables, in the same directory as config.txt

@server:$ mkdir PRE
@server:$ python3 -c "from csclib import *; Csclib_precompute()"

Environment

Computation is performed on 3 PCs (or 1 PC). They are called server, party_1, and party_2. The server receives input data in plaintext, converts it into shares, and sends them to party 1 and 2. It also generates correlated randomness and sends it to party 1 and 2. Currently, the server also performs all computations in plaintext for answer checking. party_1 and party_2 perform computation while communicating with each other.

Execution

Set the IP addresses and ports of the 3 PCs in config.txt.

127.0.0.1 9800 # server
127.0.0.1 9810 # party 1
127.0.0.1 9820 # party 2

Each line specifies a PC IP address and base port. Three ports are used starting from that value. (In this example, the server uses 9800, 9801, 9802.) When running on one PC, set all IP addresses to localhost (127.0.0.1). All port numbers must be different. When using multiple PCs, specify each IP address. Also, if communicating with other PCs, firewall settings may need to be changed.

Assuming the script is script.py, run the following in the same directory as config.txt on each of the 3 PCs (terminals):

@server:$  python3 dbtest.py 0
@party_1:$ python3 dbtest.py 1
@party_2:$ python3 dbtest.py 2

config.txt format

[options]
parties 3                   # number of parties (party 0, 1, 2)
channels 1                  # number of channels when using multithreading
comm_no_delay 1             # use whichever communication mode is faster between 1 and 0
warn_precomp 1              # warn when precomputation tables do not exist
[parties]
127.0.0.1 9800 # server      # IP address and port number for party 0
127.0.0.1 9810 # party 1     # IP address and port number for party 1
127.0.0.1 9820 # party 2     # IP address and port number for party 2
[mt_seeds] # party seed*5
0 123 456 789 0 0            # random seeds used by party 0 (5 integers)
1 234 567 890 0 1
2 345 678 234 0 2
3 456 789 345 0 3
[pre_bt]                    # correlated randomness for Beaver triples
0 PRE/PRE_BT.dat            # file storing correlated randomness used by channel 0
[pre_of] # bits channel filename
1 0 PRE/PRE_OF1.dat         # whether overflow occurs for 1-bit values (whether both party bits are 1)
[pre_b2a] # bit expansion (convert 1-bit value to log q bits)
0 PRE/PRE_B2A.dat
[pre_onehot] # bits xor channel filename
1 0 0 PRE/PRE_OHA1.dat
[pre_onehot_shamir] # bits channel filename
1 0 PRE/PRE_OHS1.dat
[pre_onehot_shamir3] # bits irr_poly channel filename
4 13 0 PRE/PRE_OHS3_0x13.dat
[pre_onehot_rss] # bits irr_poly channel filename
4 13 0 PRE/PRE_OHR_0x13.dat
[pre_ds] # n bs inverse channel filename      # double shares for permutation; n = permutation length, bs = block size
2 1 0 0 PRE/PRE_DS_n1_w30.dat
4 1 0 0 PRE/PRE_DS_n2_w30.dat
8 1 0 0 PRE/PRE_DS_n3_w30.dat
2 1 1 0 PRE/PRE_DSi_n1_w30.dat
4 1 1 0 PRE/PRE_DSi_n2_w30.dat
8 1 1 0 PRE/PRE_DSi_n3_w30.dat
[pre_uv] #n old_q new_q channel fname         # create unit vectors
2 32 4 0 PRE/PRE_UV_n2_oq32_nq4.dat

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

csclib-202606143.tar.gz (148.7 kB view details)

Uploaded Source

File details

Details for the file csclib-202606143.tar.gz.

File metadata

  • Download URL: csclib-202606143.tar.gz
  • Upload date:
  • Size: 148.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for csclib-202606143.tar.gz
Algorithm Hash digest
SHA256 c41449d53d0b01d9bcc9076fe9068c3990bc0d2f84641ef3af5cfe78af7d1823
MD5 83d571a24118cff067c3214a2a70c4dd
BLAKE2b-256 69186f3efe690165e619ca3ea3f39867826bafa3415d9ac85c8dc8197a4c0540

See more details on using hashes here.

Supported by

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