目前我正在使用同态库 HElib,我对 AES 实现有一些疑问。
一方面,我成功地对明文进行了简单的 HE 加密,并对密文进行了一些操作。这很好用。 另一方面,我在 HElib 上使用 AES 实现来加密数据并对其进行解密,它也运行良好。
现在我希望能够使用此实现的所有功能:对使用此 AES 加密的数据执行一些 HE 操作。
在简单的 HE 加密中,操作是在对象 Ctxt 上进行的,但是当我们使用 AES 的实现时,所有密文都是 Ctxt 的 vector ,我不知道如何操纵这些 vector 。
我以 Test_AES.cpp 文件为例,我使用相同的参数来制作上下文并生成 key 。(这里我只放我认为重要的部分,假设你对这个库有一点了解,但如果您需要我可以编写的所有代码)
所以首先我加密一个简单的 vector 1。
Vec<uint8_t> ptxt(INIT_SIZE,nBlocks*16); //Vector of 1
vector<Ctxt> doublyEncrypted;
hAES.homAESenc(doublyEncrypted,encryptedAESkey,ptxt); // Encryption of the vector store
//in doublyEncrypted
所以正如图书馆所说的那样,我们有 doublyEncrypted = Enc_HE(Enc_AES(myvector))。
现在解密
hAES.homeAESdec(doublyEncrypted,encryptedAESkey);
现在我们的 doublyEncrypted 是一个 Enc_HE(myvector)。 此时我应该可以对我的加密 vector 进行一些操作了。 由于 doublyEncrypted 是 Ctxt 的 vector ,我尝试了类似的方法:
for(long i=0;i<(long)doublyEncrypted.size();i++){
doublyEncrypted[i].addCtxt(doublyEncrypted[i]);
}
但是当我用 key 解密它并解码它时,我得到的是一个 vector 0(我应该得到一个 vector 2)。 我还尝试添加一个不同的加密 vector ,但我得到了一些随机十六进制值的 vector 。
所以我的问题是,在 HElib 上实现 AES 是否有可能对密文进行一些操作,是否有人使用这个库足以进行这样的思考。
提前致谢!
最佳答案
万一有人遇到这个:
发帖者显然误解了同态加密的工作原理。在代码示例中,他们首先使用 HElib 对明文进行同态加密。然后使用同态属性将该密文处理成表示明文的 AES 加密的密文。在此 AES 加密中添加一些内容显然会产生无意义的结果。 HElib 不会神奇地将 AES 转换为同态密码系统。
关于c++ - 在 HElib 上使用 AES 实现; addCtxt 函数失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29748691/