Welcome to the code repository for our PETS'23 paper:
Save The Implicit Flow? Enabling Privacy-Preserving RP Authentication in OpenID Connect.
This repository contains the implementation and benchmarks of the
Note that the commitment scheme
- Paper: C:Pedersen91
- Code: src/building-blocks/com/pc.js
For the multi-message signature scheme
- Paper: RSA:PoiSan16
- Code: src/building-blocks/mms/ps.js
If you utilize our code implementation or draw insights from our paper, we kindly request that you cite our work accordingly.
@inproceedings{PETS:KroLeh23,
author = {Maximilian Kroschewski and Anja Lehmann},
title = {Save The Implicit Flow? Enabling Privacy-Preserving RP Authentication in OpenID Connect},
journal = {Proceedings on Privacy Enhancing Technologies},
volume = {4},
pages = {96--116},
year = {2023}
}
To ensure a smooth experience, please make sure you have the following prerequisites installed in your environment:
- Node.js
- npm
- (Optional) Docker
Follow the steps below to set up the repository:
- Clone this repository to your local environment.
- Run the command
npm install
to install the necessary dependencies.
You have the option to run the benchmarks either locally or within a Docker container. The following flags can be provided to customize the benchmark execution:
# Set the number of executions; default is 100
BENCHMARK_COUNT=1
# Use optimized proofs (AIF_ZKP only); default is 0
OPTIMIZED_PROOFS=1
# Dev-flag that excludes all RSA operations; default is 0
WITHOUT_RSA=1
Execute the benchmarks locally using the following commands:
# Example without flags
npm run benchmark
# Examples with flags
BENCHMARK_COUNT=1 OPTIMIZED_PROOFS=0 WITHOUT_RSA=0 npm run benchmark
BENCHMARK_COUNT=1 OPTIMIZED_PROOFS=1 npm run benchmark
If you prefer to use Docker, build the image first. This step is only required once:
docker build -t aif .
Run the container using the command:
docker run -e BENCHMARK_COUNT=10 -e OPTIMIZED_PROOFS=1 aif npm run benchmark
The tests for the building blocks can be found in the tests/building-blocks directory, while the tests for the schemes are located in tests/schemes. You can execute all tests by running the following command:
npm test