ldsec / pelta

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PELTA

An experimental library for lattice-based commitments

Installation

The only requirement is Golang. The dependencies are pulled automatically. The following shows how to run the code on an Ubuntu based distribution.

$ cd pelta
$ sudo apt install -y golang
$ go run main.go [PARAMETERS]

Parameters

  • --help: Displays information about the parameters.
  • --n: Number of executions. Defaults to 1.
  • --rlwe: Log RLWE ring degree. This can be 10, 11, 12, 13, 14, or 15. Defaults to 13.
  • --commt: Log commitment ring degree. Defaults to 7.
  • --levels: Number of levels for the ring. This can be 1, 2, or 3. Defaults to 1.
  • --delta1: Log2 delta1. Defaults to 25.
  • --lambda: Lambda security parameter. Defaults to 17.
  • --kappa: Kappa security parameter. Defaults to 8.
  • --rel: The relation to run. Can be keygen, aggr_keygen, collective_dec, keyswitch, bootstrapping, or relinkeygen. Defaults to keygen.

Interpreting the output

The program runs the protocol n many times where n is the number of executions supplied through the program arguments. The final output contains both the average and individual running times for Setup, Prover, and Verifier across the runs. For every data point, we also report the timings of its subprocedures. All the presented numbers are in milliseconds.

Example configurations

Here we give the run configuration to be able to run the experiments we have performed for our paper.

Important: Note that the files need to be regenerated for every ring. Please remove the cached files in the root folder by invoking rm *.test after switching the ring parameters.

Table 1: Key generation

$ go run main.go --n 10 --rel keygen

Table 2: Other relations

$ go run main.go --n 10 --rel collective_dec
$ go run main.go --n 10 --rel keyswitch
$ go run main.go --n 10 --rel bootstrapping

Table 3: Collective key generation

$ go run main.go --n 10 --rel aggr_keygen

Table 4: Varying RLWE ring degree

$ go run main.go --n 10 --rlwe 11
$ go run main.go --n 10 --rlwe 12
$ go run main.go --n 10 --rlwe 13
$ go run main.go --n 10 --rlwe 14
$ go run main.go --n 10 --rlwe 15

Table 5: Varying levels

$ go run main.go --n 10 --levels 1
$ go run main.go --n 10 --levels 2
$ go run main.go --n 10 --levels 3

Table 6: Varying commitment ring degree

$ go run main.go --n 10 --commt 7 --lambda 10 --kappa 9 --delta1 25
$ go run main.go --n 10 --commt 10 --lambda 1 --kappa 2 --delta1 29
$ go run main.go --n 10 --commt 13 --lambda 1 --kappa 1 --delta1 32

License

This software and its source code are licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

About

License:Apache License 2.0


Languages

Language:Go 97.0%Language:Shell 3.0%