У меня есть эти настройки SEAL
seal::EncryptionParameters parms;
parms.set_poly_modulus("1x^2048 + 1");
parms.set_coeff_modulus(seal::coeff_modulus_128(2048));
parms.set_plain_modulus(1 << 8);
seal::SEALContext context(parms);
seal::IntegerEncoder encoder(context.plain_modulus());
seal::KeyGenerator keygen(context);
seal::PublicKey public_key = keygen.public_key();
seal::SecretKey secret_key = keygen.secret_key();
seal::Encryptor encryptor(context, public_key);
seal::Evaluator evaluator(context);
seal::Decryptor decryptor(context, secret_key);
Я сохранил public_key
, secret_key
и parms
в файлы для дальнейшего использования. Я использовал public_key
, чтобы зашифровать некоторые данные и сохранить их в базе данных. Я использую сохраненный parms
на сервере с базой данных для выполнения некоторых математических операций над сохраненным Ciphertexts
, например. evaluator.add(stored_ciphertext1, stored_ciphertext2, result_ciphertext3);
.
Теперь, скажем, другой человек хочет:
- Выполнить вычисления на
Ciphertexts
, сохраненном мной.
- Загрузите несколько новых зашифрованных
Ciphertexts
в базу данных рядом с моей.
Для варианта 1 второму человеку нужны только мои сохраненные parms
, чтобы выполнить evaluator.add()
на моем Ciphertexts
, или он может создать новый один раз для этой цели?
Для варианта 2 второй человек должен иметь доступ к моему сохраненному public_key
, поскольку создание набора new_public_key
, new_secret_key
не позволит мне правильно расшифровать любые данные, зашифрованные с помощью new_public_key
, верно?
Теперь, чтобы сделать вещи более запутанными :-) скажем, второй человек создал свои new_public_key
, new_secret_key
и загрузил свои Ciphertexts
в другую таблицу в той же базе данных. Теперь я хочу выполнить некоторые перекрестные вычисления, используя его и мой Ciphertexts
. Есть ли способ для этого или он никогда не может работать, потому что каждый из нас использовал разные public_key
для шифрования?