Skip to content

Interactive 2party bootstrapping#947

Merged
dsuponitskiy merged 8 commits intotmp-devfrom
interactive-2party-bootstrapping
Apr 2, 2025
Merged

Interactive 2party bootstrapping#947
dsuponitskiy merged 8 commits intotmp-devfrom
interactive-2party-bootstrapping

Conversation

@yspolyakov
Copy link
Contributor

@yspolyakov yspolyakov commented Mar 18, 2025

See Appendix D of https://eprint.iacr.org/2023/1203 for details.

  • Initially enabled it only for CKKS. However, later this implementation can be extended to BGV and BFV. So the functions were added with this in mind.
  • Added IntBootDecrypt, IntBootAdd, and IntBootEncrypt to the parent RNS scheme (MultipartyRNS).
  • Added IntBootAdjustScale (special scaling for CKKS) to MultipartyCKKSRNS.
  • Initially only one extra tower will be used for bootstrapping. Later we will make it a configurable parameter. To add the tower, the multiplicative depth needs to be increased by 1.

@yspolyakov yspolyakov added the new feature New feature or request label Mar 18, 2025
@yspolyakov yspolyakov added this to the Release 1.3.0 milestone Mar 18, 2025
@yspolyakov
Copy link
Contributor Author

yspolyakov commented Mar 19, 2025

Notes for @dsuponitskiy

  1. Convert unit-test-interactive-bootstrapping.cpp to unit tests. Include FIXEDMANUAL, FIXEDAUTO, and FIXEDAUTO. Use 1024 as the ring dimension. Support both HYBRID and BV key switching methods. Delete the example after the unit tests are added.
  2. Add unit tests for all scenarios of interactive-bootstrapping.cpp (set ring dimension to 1024). Support both HYBRID and BV key switching methods.
  3. Review the code with the main logic.

Once these are completed, I will revise interactive-bootstrapping.cpp to add more comments and reduce the number of options.

@dsuponitskiy dsuponitskiy force-pushed the interactive-2party-bootstrapping branch 2 times, most recently from f50e1d1 to 1e20a8b Compare April 1, 2025 19:01
@dsuponitskiy dsuponitskiy force-pushed the interactive-2party-bootstrapping branch from 1e20a8b to 4cb9da1 Compare April 2, 2025 00:25
Copy link
Contributor Author

@yspolyakov yspolyakov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I still need to clean up interactive-bootstrapping.cpp

@yspolyakov yspolyakov requested a review from dsuponitskiy April 2, 2025 16:43
@dsuponitskiy dsuponitskiy merged commit 30f9ff9 into tmp-dev Apr 2, 2025
22 checks passed
yspolyakov added a commit that referenced this pull request Apr 2, 2025
* initial version of 2-party interactive CKKS bootstrapping - compiles - still debugging the correctness

* fixed FLEXIBLEAUTOEXT

* added unit test example

* Code corrections

* Added unit tests and removed obsolete examples for interactive 2party bootstrapping

* Disable the new interactive 2party bottstrapping unittests for 128-bit

* clean up the example for interactive bootstrapping

* Corrected clang-18 errors for MB6

---------

Co-authored-by: Yuriy Polyakov <ypolyakod@dualitytech.com>
Co-authored-by: Dmitriy Suponitskiy <dsuponitskiy@dualitytech.com>
@dsuponitskiy dsuponitskiy deleted the interactive-2party-bootstrapping branch April 25, 2025 17:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

new feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add interactive CKKS bootstrapping from Appendix D of https://eprint.iacr.org/2023/1203

3 participants