c++ - 在 HElib 上使用 AES 实现; addCtxt 函数失败

标签 c++ encryption cryptography aes

目前我正在使用同态库 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/

相关文章:

c++ - 函数调用的成本是多少?

java - 如何保证 Netty 连接的安全?

java - 使用 java 的 SHA 1 校验和输出与给定示例不匹配

c++ - 如何消除预编译器定义未定义的警告

c++ - 使用 ITK 将物理点转换为索引

encryption - 解密 .m3u8 播放列表并使用 ffmpeg 将其合并为单个 .mp4 文件

python - jose 加密返回二进制字符串,但使用解码后的字符串解密会在 python 中出现错误

security - 向后 HTTPS;用户与之前生成的私钥进行通信

security - 从欧洲DTCO公司卡读取数据

C++ EXC_BAD_ACCESS,argv[]