问题标签 [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.
javascript - How to allow to add property on object but stop Modifying set of properties on object
I have some global object CD and it has set of properties as follows:
#xA;I want user to allow add properties to cd and cd.config but properties cd.a, cd.b, cd.config.title
to be sealed (no modification allowed) .
User should not be able to delete window.cd or these properties as well (Other properties he can delete or modify).
I tried with following:
#xA;but it thrown following error:
window.cd.config.title.seal is not a function
c++ - 简单加密算术库 (SEAL) 和 seal::Ciphertext 变量
我正在使用 Microsoft Cryptography Research Group 的Simple Encrypted Arithmetic Library (SEAL)库。有没有办法获取内容seal::Ciphertext variable
?我试图理解 ciphertext.h 和 ciphertext.cpp 并发现:
但是我找不到另一个选项来获取任何seal::Ciphertext variable
不是二进制流或只是指向某个内存地址的指针的内容并将其保存为字符串。
如果你们中的任何人从上面的链接中下载了 SEAL 库并在不更改任何内容的情况下提取了它。seal::Ciphertext
您可以在SEAL_2.3.1\SEAL\seal\ciphertext.h和SEAL_2.3.1\SEAL\seal\ciphertext.cpp中找到所有允许的操作
c++ - 在 PostgreSQL C 扩展中包含头文件
我在一个文件中有我的 C 扩展的代码seal_diff_cpp.cpp
:
我用这个快速而肮脏Makefile
的方法来创建我的.so
文件:
当我尝试将我的 C 扩展名复制到 /usr/pgsql-10/lib/ 文件夹后添加
我得到错误:
错误:无法加载库“/usr/pgsql-10/lib/seal_diff_cpp.so”:/usr/pgsql-10/lib/seal_diff_cpp.so:未定义符号:_ZN4seal9Evaluator3subERNS_10CiphertextERKS1_ SQL 状态:XX000
这_ZN4seal9Evaluator3subERNS_10CiphertextERKS1_
是因为使用了seal::<some parameter>
,才创建的,#include <seal/seal.h>
所以不会发生此类错误。SEAL 库是一个外部库,安装/usr/local/include/seal
到.libseal.a
/usr/local/lib/
该错误发生在seal::
对象的第一次声明中,我没有任何问题/错误将它编译到seal_diff_cpp.so
我的所需文件中Makefile
。当我注释所有 SEAL 代码时,扩展与第二个外部库 ( #include <cppcodec/base64_rfc4648.hpp>
)完美运行,该库位于/usr/local/include/cppcodec
.
我在.cpp
文件或文件中的印章库有什么问题Makefile
吗?我是否需要将外部SEAL
和cppcodec
库安装到/usr/pgsql-10/include/
其他pgsql-10
路径中?#include <seal/seal.h>
我有一种行不通的感觉。
更新
按照Alan BritlesMakefile
的建议更改我并运行后,我得到了这个输出,显示链接没有错误:make
g++ -Wl,--no-undefined -std=c++17 -fPIC -Wall -Werror -g -O0 -pthread -I/usr/pgsql-10/include/server -I/usr/local/include/seal -I/usr/local/include/cppcodec -o seal_diff_cpp.o -c seal_diff_cpp.cpp g++ -L/usr/pgsql-10/lib -L/usr/lib64 -Wl,--按需 -Wl,-rpath ,'/usr/pgsql-10/lib',--enable-new-dtags -shared -o seal_diff_cpp.so seal_diff_cpp.o
随着nm -gC seal_diff_cpp.so | grep "seal"
:我得到这个输出:
所以我猜 SEAL 库的链接正确,但我确实有一些重要的符号带有 undefined ( U
),因此我仍然从 PostgreSQL 中得到同样的错误。但是为什么这些符号被标记为未定义?
cmake - 安装简单加密算术库 (SEAL) v2.3.1
我正在尝试在我的 Mac 上安装Simple Encrypted Arithmetic Library (SEAL) v2.3.1(运行 MacOS High Sierra 版本 10.13.6)。
我按照 INSTALL.txt 中的说明进行操作,在尝试构建 SEALExamples 时,运行 cmake 时遇到错误。终端输出如下:
请问你能告诉我如何解决它吗?我不确定这是一般错误还是只是我的计算机。谢谢!
c++ - SEAL:平方运算后解密不正确,即使密文的噪声预算大于零
我对密文和最后的正方形进行了一系列计算。问题是即使有足够的噪声预算来执行平方和重新线性化(在操作之前和之后),当我解密它时,我得到的结果不正确。
奇怪的是,如果我解密和解码,然后在一个新的密文中再次编码和加密,数字,在平方之前,计算是正确的。
我不明白问题出在哪里,因为如果设置的参数有误,那么无论如何我都会得到不正确的结果。
我指定我使用分数编码器,其中积分部分的多项式系数为 64,小数部分的精度为 32 位(以 3 为底),并且我在平方之前的所有计算都是在密文和明文之间执行的。
这是我的意思的一个例子:
我错过了什么?
encryption - 同态加密中的截断
当不允许除法运算时,如何在 HELib 或 SEAL 等同态加密库中实现截断?
我有两个浮点数a=2.3,b=1.5
,我将它们缩放为具有 2 位精度的整数。因此我的编码器看起来基本上是这样encode(x)=x*10^2
的。假设enc(x)
是加密函数,则enc(encode(a))=enc(230)
和enc(encode(b))=enc(150)
。
在乘法时,我们获得了巨大的价值,a*b=enc(23*15)=enc(34500)
因为比例因子也相乘。这意味着我的输入呈指数增长,除非我可以截断结果,因此trunate(enc(34500))=truncate(enc(345))
.
我认为这样的截断函数是不可能的,因为它不能用多项式表示。尽管如此,我想知道如何在数学上执行这种截断是否有任何技巧,或者它是否只是一个未解决的问题?
c++ - 为 SEAL 选择合适的参数并阐明一些数学运算
A)我无法理解这些设置之间的关系:
这张表来自海豹突击队手册。
我特别感兴趣的是数字 54 以及它是如何相对于parms.set_poly_modulus("1x^2048 + 1")
和计算的parms.set_coeff_modulus(coeff_modulus_128(2048))
。
B)我正在尝试为我的用例找到正确的参数。假设我有 10000 个介于 -180 和 +180 之间的小数,我想使用FractionalEncoder
. 执行的操作将是:减法、加法、乘法、平方和指数。结果将保存在一个单独的Ciphertext
变量中。
因此,就我的用例而言,最佳参数是什么:
/li>n, q, t
在a
并且b
在seal::FractionalEncoder encoder(context.plain_modulus(), context.poly_modulus(), a, b, 2)
. 我正在使用a = 512和b = 128,这对于我的用例来说太高了。
如果我的用例发生变化,我如何自己计算这些参数?
seal - 海豹突击队中的分部操作员
我没有在evaluator
. 使用运算时可以使用负指数evaluator.exponentiate()
吗?
c++ - 在 SEAL 中重新线性化一个密文
假设我计算了 2的加法或乘法Ciphertexts
,并将结果放入第三个。如果我想对我的结果Ciphertext
(目标Chipertext
)执行额外的数学运算,是否建议evaluator.relinearize()
在这样做之前使用它?因为如果我理解正确,某些操作Ciphertext
会导致结果Ciphertext
大小大于 2。如果是,那么这将是重新线性化的好方法Ciphertext
吗?
EvaluationKeys ev_keys;
int size = result.size();
keygen.generate_evaluation_keys(size - 2, ev_keys); // We need size - 2 ev_keys for performing this relinearization.
evaluator.relinearize(result, ev_keys);