This repository contains proof-of-concept Go implementations of bootstrapping algorithms for encrypted real vectors in the CKKS scheme, based on the Lattigo library. It is built around a variant of the SlotToCoeff operation called SCORE. It focuses on the conventional CKKS bootstrapping [1] and the SPRU bootstrapping [2], and accompanies the paper [3].
Simply ensure that you have Go 1.23 or higher installed.
Implementations and benchmarks:
-
boot_tests/main.go: Contains implementations and benchmarks comparing the conventional bootstrapping procedure [1] with the SCORE-based variant [3]. -
spru_tests/main.go: Contains implementations and benchmarks comparing the SPRU bootstrapping procedure [2] with the SCORE-based variant [3].
Supporting files:
-
lattigo-main/: A copy of Lattigo with minor modifications enabling SCORE and SPRU functionality. -
go.modandgo.sum: Standard Go module files managing dependencies and build configuration. -
CHANGES.md: A summary of all modifications made to the Lattigo library.
The experiments in boot_tests/main.go and spru_tests/main.go
compare the performance of the conventional CKKS bootstrapping
and the SPRU bootstrapping against their SCORE variants.
All experiments use the parameter sets defined in [3].
The results are printed directly in the terminal as benchmark tables
summarizing timing and precision.
To execute the experiments, run the following from the repository root:
go run ./boot_testsOr:
go run ./spru_tests-
Jung Hee Cheon, Kyoohyung Han, Andrey Kim, Miran Kim, and Yongsoo Song.
Bootstrapping for Approximate Homomorphic Encryption.
In Advances in Cryptology – EUROCRYPT 2018. Springer, 2018. -
Jean-Sébastien Coron and Robin Köstler.
Low-Latency Bootstrapping for CKKS using Roots of Unity, 2025.
https://eprint.iacr.org/2025/651. -
Tim Seuré.
SCORE: A SlotToCoeff Optimization for Real-Vector Encryption in CKKS, 2025.
Link to be added.