Чтение оставшегося шума от шифротекстов без секретного ключа

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

0

Решение

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

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]