首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多用户SEAL密文工作

多用户SEAL密文工作
EN

Stack Overflow用户
提问于 2018-09-17 19:55:18
回答 1查看 370关注 0票数 2

我的SEAL v2.3.1中有那些SEAL设置:

代码语言:javascript
复制
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_keysecret_keyparms保存到文件中供以后使用。我使用public_key加密一些数据并将其存储在数据库中。我使用服务器上保存的parms与数据库一起对存储的Ciphertexts (如evaluator.add(stored_ciphertext1, stored_ciphertext2, result_ciphertext3); )执行一些数学操作。

现在假设另一个人想:

  1. 在我存储的Ciphertexts上做计算。
  2. 上传一些新的加密Ciphertexts到数据库旁边的我。

对于选项1,第二个人只需要我存储的parms在我的Ciphertexts上执行evaluator.add(),或者他可以为此目的创建新的一次吗?

对于选项2,第二个人必须访问我存储的public_key,因为创建new_public_keynew_secret_key集将不允许我正确地解密使用new_public_key加密的任何数据,对吗?

现在,让事情变得更加混乱:-)假设第二个人已经创建了自己的new_public_keynew_secret_key,并将自己的Ciphertexts上传到了同一个数据库的其他表中。现在,我想使用他和我的Ciphertexts执行一些交叉计算。是否有一种方法可以让它工作,或者它永远不能工作,因为我们每个人都使用不同的public_key进行加密?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-20 16:34:30

对于选项1,第二个人只需要我存储的parms在我的密文上执行evaluator.add(),或者他可以为此目的创建新的一次吗?

对方需要知道你的加密参数是什么。此外,EncryptionParameters对象只依赖于这些参数:您可以使用EncryptionParameters::saveload以序列化(二进制)格式给它们,或者以其他方式让它们知道,这样它们就可以创建自己的EncryptionParameters对象了。

对于选项2,第二个人必须访问我存储的public_key,因为创建new_public_key,new_secret_key集将不允许我正确地解密使用new_public_key加密的任何数据,对吗?

对于第二个人加密数据,让你解密,他们需要你的公钥。是的,它必须和你储存的公钥相同。理论上,可以创建与同一密钥对应的多个公钥,但SEAL2.3.1不支持这一点。

现在,让事情变得更加混乱:-)假设第二个人创建了自己的new_public_key,new_secret_key,并将自己的密文上传到同一个数据库的其他表中。现在我想用他和我的密文进行交叉计算。是否有一种方法可以让它工作,或者它永远不能工作,因为我们每个人都使用不同的public_key进行加密?

这是行不通的;您需要使用与用于加密的公钥对应的秘密密钥进行解密。在这些情况下,可以通过引入一个非合谋的第三方来建立密钥交换服务,该第三方的唯一任务是接收一个密钥下加密的密文,使用某个密钥将其切换到另一个密钥,并将其转发给正确的接收方。密封2.3.1不支持这类通用密钥开关。或者,有一些多密钥的FHE方案,理论上允许这种行为(双方都需要帮助解密),但此时它们并不是非常有效,并且没有在我所知道的任何库中实现。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52374824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档