This repository contains the codebase and experimental results for my thesis focused on the benchmarking and performance evaluation of Fully Homomorphic Encryption (FHE) schemes. The project utilizes the OpenFHE library to conduct systematic analysis across various encryption paradigms.
The primary goal of this research is to evaluate the practical performance overheads of different FHE schemes, specifically CKKS, BGV, and BFV under varying security parameters and circuit depths. This suite serves as the empirical foundation for the comparative analysis presented in my thesis.
- Benchmarking: Comprehensive benchmarking of homomorphic encryption schemes, including BGV (integer), BFV (integer), and CKKS (floating point). Experiments systematically sweep multiplicative depths and ring dimensions, while profiling execution time and peak heap memory usage. An automated python pipeline generates comparative performance graphs for analysis.
- Linear Regression: Test of linear regression model. WORK IN PROGRESS.
.
├── benchmark/ # Core C++ benchmark suite
│ ├── bfv/ # BFV (Brakerski-Fan-Vercauteren) benchmarks
│ ├── bgv/ # BGV (Brakerski-Gentry-Vaikuntanathan) benchmarks
│ ├── ckks/ # CKKS (Cheon-Kim-Kim-Song) benchmarks
│ └── results/ # Benchmark results
└── README.md
Below are the performance trends observed during the benchmark sweeps.
| Execution Time | Memory Usage |
|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| Execution Time | Memory Usage |
|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| Execution Time | Memory Usage |
|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
- CMake >= 3.14
- C++17 compliant compiler (GCC 11+, Clang 12+)
- OpenFHE (Latest stable)
- Python 3 (for visualization)
- Benchmarking: Follow guide in
benchmark/README.md
Benchmarks were performed on the following hardware/software stack:
- CPU: AMD Ryzen 9800X3D
- Memory: 48GB DDR5 @ 6000MHz (12GB Swap)
- OS: Windows Subsystem for Linux (WSL)
- Optimization:
-march=nativeenabled. - Parallelism:
GenCryptoContext, used inBM_ContextCreationas test and also in the other cases to create the context without being accounted in execution time, is a single-core operation.- All other benchmark operations leverage multi-threading via OpenMP for maximum performance.
Important
Memory Disclaimer: Reported peak memory usage is obtained from the system allocator and reflects heap usage only. Values are indicative and may vary across environments (e.g., WSL vs bare metal); swap memory is not included.
Note: Benchmarks were performed on a local workstation using hardware optimization (-march=native). Results may vary based on CPU architecture and available memory.
This project is licensed under the BSD 2-Clause License - see the LICENSE file for details.













































