Я использую SEAL 2.3.1, и это моя установка параметров:
seal::EncryptionParameters parms;
parms.set_poly_modulus("1x^2048 + 1"); // n = 2048
parms.set_coeff_modulus(coeff_modulus_128(2048)); // q = 54-bit prime
parms.set_plain_modulus(1 << 8); // t = 256
seal::SEALContext context(parms);
И некоторые Ciphertext encrypted1;
, содержащие число 5. В руководстве говорится, что можно использовать класс seal :: Simulator для чтенияшумовой бюджет без секретного ключа.Единственное, что я нашел, было это в файле simulator.h
.
/**
Creates a simulation of a ciphertext encrypted with the specified encryption
parameters and given invariant noise budget. The given noise budget must be
at least zero, and at most the significant bit count of the coefficient
modulus minus two.
@param[in] parms The encryption parameters
@param[in] noise_budget The invariant noise budget of the created ciphertext
@param[in] ciphertext_size The size of the created ciphertext
@throws std::invalid_argument if ciphertext_size is less than 2
@throws std::invalid_argument if noise_budget is not in the valid range
*/
Simulation(const EncryptionParameters &parms, int ciphertext_size,
int noise_budget);
Я могу установить его с другим Ciphertext encrypted2
:
seal::Simulation(parms, encrypted2.size(), (context.total_coeff_modulus().significant_bit_count() - log2(context.poly_modulus().coeff_count() - 1) - log2(context.plain_modulus().value()));
Но с помощью этогосоздавать только симулированный зашифрованный текст без реальной связи с фактическим encrypted1
бюджетом зашифрованного текста.
Есть ли способ приблизить шумовой баланс encrypted1
без секретного ключа?Эта ситуация важна, когда я или кто-то еще выполняем некоторые вычисления на внешне сохраненных шифротекстах, например, в облачной базе данных, и ему необходимо проверить серверную часть шума, не раскрывая секретный ключ.