问题标签 [seal]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
encryption - 使用 MS 印章比较两个密文?
你能告诉我如何使用 SEAL 库比较两个密文吗?
我有两个密文 C1 和 C2 使用分数编码器编码然后加密。
有没有办法比较 C1 和 C2 是否相等?(C1 == C2 返回布尔值)。
我检查了 ciphertext.h 文件,但找不到比较子例程。
有些东西告诉我,我可以通过使用 BinaryEncoder 对它们进行编码并逐位比较来比较两个密文。
我怎么能去实施呢?
seal - SEAL 代码中的刷新和有效性检查操作
在阅读同态加密标准时,我遇到了这两个操作:
- 刷新(参数、标志、EK、C1)→ C2。
- 有效性检查(参数,EK,[C],COMP)→标志。
我在 SEAL 代码中搜索了它们的实现,但找不到任何实现,尽管我认为第一个仅实现为evaluator.relinearize()
.
seal - 在同态加密中使用伽罗瓦自同构
SEAL(简单加密算术库)使用伽罗瓦自同构来实现批量计算(即,在一次操作中并行地添加和乘法许多密文)。
批处理过程在SEAL 2.3.1 手册的5.6 伽罗瓦自同构和7.4 CRT 批处理中进行了描述。
特别是,上面的两个部分指出以下环是同构的。
\prod_{i=0}^{n} \mathbb{Z}_t \cong \prod_{i=0}^{n} \mathbb{Z}_t[\zeta^{2i+1}] \cong \mathbb{Z}_t[x]/(x^n+1)
其中 \zeta 是单位模 t 的原始 2n 次根。
可以在此处找到上述等式的图像(Stackoverflow 暂时不允许我显示图像)
相同的部分还指出,可以使用 Galois Automorphims将明文元组映射\prod_{i=0}^{n} \mathbb{Z}_t
到。\mathbb{Z}_t[x]/(x^n+1)
更准确地说,可以将 n 维\mathbb{Z}_t
向量明文视为 2×(n/2) 矩阵,并且伽罗瓦自同构对应于该矩阵的列和行的旋转。
在对明文向量(行和列的旋转)应用伽罗瓦自同构之后,可以获得 中的对应元素\mathbb{Z}_t[x]/(x^n+1)
,该元素将用于批量计算。
我的问题如下。
1-为什么\mathbb{Z}_t[\zeta^{2i+1}]
同构\mathbb{Z}_t
?
2-如何精确地使用伽罗瓦自同构将 n 维\mathbb{Z}_t
向量明文映射到 中的元素\mathbb{Z}_t[x]/(x^n+1)
?或者换一种说法,Compose操作是如何工作的?你如何使用伽罗瓦自同构(行和列旋转)来计算它?
==================================================== =======================
seal - SEAL 中的自动参数选择
SEAL库(v 2.1.3)提供了一个自动参数选择工具,以帮助为给定的密文评估函数选择最佳参数值。
但是,当前版本的 SEAL 仅支持整数编码器。换句话说,它只支持输入是整数加密的情况。
有没有办法扩展 SEAL 中的自动参数选择工具以覆盖 FractionalEncoder?换句话说,有没有办法调整自动参数选择工具来处理评估函数的输入是有理数的情况?
c++ - 与多个用户一起处理 SEAL 密文
我的 SEAL v2.3.1 中有这些 SEAL 设置:
我已将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
的加密方式?
seal - 简单加密算术库 (SEAL) 如何将密文保存到文件中
我在 C++ 中使用 SEAL 库。我想将密文保存到文件中。我正在考虑将其转换为字符串类型并保存它。我想要一个包含所有密文的文件,并在需要时将文件上传到内存以再次使用它们。我还必须保存加密和解密密钥,以便以后解密结果。
有人使用过这个密码库并且知道如何将生成的密文保存到文件中吗?我只是在学习如何使用这个库,而且我是 C++ 新手,所以我正在为此苦苦挣扎。
谢谢!
seal - SEAL 密文的平方根函数
有没有办法计算密文的平方根函数?我没有看到它在评估器方法中看到它。如果 SEAL 2.3.1 无法实现,那么未来的 SEAL 版本是否可以实现?
c++ - 在 SEAL 2.3.1 中设置 FractionalEncoder
我正在使用这个参数设置:
使用此编码FractionalEncoder encoder(context.plain_modulus(), context.poly_modulus(), A, B, C);
器A=512, B=128
和C=2
如果我理解正确,那么A和B的设置取决于n的大小,这意味着 A + B <= 2048 必须成立,对吗?
使用上面的poly_modulus、coeff_modulis和plain_modulus设置决定A和B的大小时,一般规则是什么?由于选择较小的值并没有充分利用明文大小的潜力。我的猜测是A应该增加,因为B仅用于小数部分的精度。
c++ - 在没有密钥的情况下读取密文的剩余噪声预算
我使用 SEAL 2.3.1,这是我的参数设置:
还有一些Ciphertext encrypted1;
持有数字 5。手册说可以使用 seal::Simulator 类来读取噪声预算,而无需密钥。我发现的唯一东西就是simulator.h
文件中的这个。
我可以用其他一些设置它Ciphertext encrypted2
:
但是使用它只会创建一个模拟的密文,而与实际的encrypted1
密文噪声预算没有任何真正的联系。
有没有办法在encrypted1
没有密钥的情况下估算噪声预算?当我或其他人对外部存储的密文(例如在云数据库中)进行一些计算并且需要在不泄露密钥的情况下检查噪声预算服务器端时,这种情况很重要。
mean - Microsoft SEAL:查找 PolyCRT 密文的均值
有没有一种简单的方法来计算使用 PolyCRTBuilder 组成并加密的密文的平均值。
这是代码片段:
基本上我有一个数组,我使用 SEAL 中的批处理技术将所有数组元素打包成一个密文。创建密文后,我需要找到密文数组的平均值。平均值应该是密文 (IntegerEncoded or FractionalEncoded) 。有没有办法在不使用密钥的情况下实现这一点?谢谢你。