Я использую 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
без секретного ключа? Эти ситуации важны, когда я или кто-то другой выполняет некоторые вычисления с внешне сохраненными зашифрованными текстами, например в облачной базе данных и необходимо проверить серверную часть бюджета шума, не раскрывая секретный ключ.