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-202606191.tar.gz (149.6 kB view details)

Uploaded Source

File details

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

File metadata

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

File hashes

Hashes for csclib-202606191.tar.gz
Algorithm Hash digest
SHA256 d0c9f9980bd658398f6ca1383bd539881651e540115eb1f49804ad110e146475
MD5 63750a5c0c4f8406ff588f44274f83df
BLAKE2b-256 1e089d7bccae06e2ab8e0aeef5a9e2b81a6666b0cb104d84481efb4f5c02b0ab

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