#cryptography #public-key-encryption #seal
#криптография #шифрование с открытым ключом #печать
Вопрос:
Я пытаюсь понять, как работает схема SEAL-CKKS, и мне интересно, какого уровня умножения мы можем достичь, используя эту схему?
Как 100 возможных?
Ответ №1:
Большинство приложений с высокой точностью, использующих CKKS, вероятно, останутся значительно ниже уровня 20. Все, что выше этого, на мой взгляд, чрезвычайно велико и заставило бы меня подумать об альтернативных подходах.
Уровень 100 в принципе возможен, но вряд ли будет практичным из-за огромного размера параметров, который для этого потребуется. По умолчанию ПЕЧАТЬ имеет относительно низкий предел poly_modulus_degree
, но это должно быть возможно увеличить. Также существует ограничение на количество coeff_modulus
простых чисел, но для этих ограничений нет какой-либо действительно фундаментальной причины, и вы, вероятно, сможете увеличить их без проблем.
Обратите внимание, что вам нужно будет самостоятельно выполнить оценку безопасности для такого большого coeff_modulus
и poly_modulus_degree
, и если вы используете печать 3.3, вам нужно будет отключить проверки безопасности, перейдя sec_level_type::none
в SEALContext::Create
.
Чтобы увеличить заглавные буквы, отредактируйте SEAL_POLY_MOD_DEGREE_MAX
и SEAL_COEFF_MOD_COUNT_MAX
в native/src/seal/util/defines.h
.
Также возможно, что в будущем SEAL реализует некоторую форму начальной загрузки для схемы CKKS, которая затем допускала бы такие вычисления, но, возможно, только с очень низкой точностью.