WonderFullyHE — C++17-библиотека для приближённых защищённых вычислений на CKKS поверх Microsoft SEAL.
Стабильный API подключается через:
#include "m2424/m2424.hpp"Клонирование с Microsoft SEAL:
git clone --recurse-submodules <repo-url>Сборка библиотеки, приложений и тестов:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=ON
cmake --build build -j
ctest --test-dir build --output-on-failureМинимальный пример:
./build/bin/demo_basicdemo_basic— минимальный цикл шифрования и вычисления.demo_secure_stats— зашифрованные сумма и среднее.bench_ckks— измерение базовых CKKS-операций.bench_coeff_to_slot— раздельные измерения setup, prepare и warm apply factorized CoeffToSlot, а также счётчики операций, ключей и памяти.
Остальные demos и benchmarks собираются по умолчанию и служат примерами API или измерительными утилитами.
По умолчанию CTest запускает быстрые детерминированные инвариантные тесты.
Библиотека содержит каталог проектных кандидатов bootstrapCandidates(). Это не
готовые реализации bootstrap: кандидат становится применимым только после
полной оценки подтверждённых границ ошибок через forecastBootstrapFeasibility.
Первый измерительный фильтр кандидатов запускается отдельно и не реализует bootstrap-алгоритмы:
./build/bin/bench_bootstrap_candidates --all
./build/bin/bench_bootstrap_candidates balanced_8192_s55Последняя базовая калибровка: docs/bootstrap_candidate_baseline.md.
Synthetic DFT-планы над обычными CKKS-слотами не входят в API CoeffToSlot.
Bootstrap CoeffToSlot принимает только результат modRaiseToTop и возвращает
два ciphertext с первой и второй половинами coefficient-side plaintext.
#include "m2424/m2424.hpp"
auto adapter = m2424::SealAdapter::create(m2424::profiles::basic_ckks());
adapter.generateKeys(true, true);
auto encrypted = adapter.encrypt(adapter.encode({1.0, 2.0, 3.0}));
auto product = adapter.multiply(encrypted, encrypted);
auto reduced = adapter.relinearize(product);
auto squared = adapter.rescaleToNext(reduced);
auto decoded = adapter.decode(adapter.decrypt(squared));docs/architecture.mddocs/bootstrap_candidate_baseline.md
Публичные классы и методы документированы в заголовочных файлах через Doxygen. После установки Doxygen HTML-документацию можно сгенерировать так:
cmake -S . -B build
cmake --build build --target docsГлавная страница будет создана в build/docs/html/index.html.
Структура каталога сборки:
build/
bin/ # demos, benchmarks и тесты
lib/ # библиотека m2424 и Microsoft SEAL
docs/html/ # HTML-документация Doxygen