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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c41449d53d0b01d9bcc9076fe9068c3990bc0d2f84641ef3af5cfe78af7d1823
|
|
| MD5 |
83d571a24118cff067c3214a2a70c4dd
|
|
| BLAKE2b-256 |
69186f3efe690165e619ca3ea3f39867826bafa3415d9ac85c8dc8197a4c0540
|