Чтение оставшегося уровня шума шифротекстов без секретного ключа - PullRequest
0 голосов
/ 10 октября 2018

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

1 Ответ

0 голосов
/ 18 октября 2018

Класс Simulation предназначен для оценки потребления бюджета шума в различных операциях, так что эти операции фактически не нужно выполнять на реальных данных.Кроме того, он использует эвристическую оценку верхних границ для потребления шума, то есть, скорее всего, он переоценивает потребление шума, и этот эффект становится более заметным, когда вычисления более сложны, что иногда приводит к огромным завышенным оценкам потребления шума.Конечно, идея состоит в том, что вычисления гарантированно сработают, если они будут работать в соответствии с симулятором.Типичное использование Simulation было бы через ChooserPoly (и связанные с ним) классы;это продемонстрировано в одном из примеров в SEALExamples/main.cpp для версий SEAL <3.0. </p>

Невозможно узнать или оценить шум в зашифрованном тексте, не зная, как создавался этот зашифрованный текст.Поэтому, если я дам вам зашифрованный текст, не сказав вам ничего другого (кроме параметра шифрования), вы не сможете ничего узнать о бюджете шума, если не знаете секретный ключ.Я согласен с тем, что в некоторых случаях для кого-то может быть важно сразу узнать, действителен ли зашифрованный текст для дальнейших вычислений, но это невозможно без какого-либо внешнего механизма.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...