verifiable searchable symmetric encryption (database
Towards Efficient Verifiable Conjunctive Keyword Search for Large Encrypted Database
- Language: Java
11.X - MySQL:
8.0+ - Package Control manager: maven
该库中的Element计算过程会直接更改 Element自身, 所以必须使用duplicate().
用于项目新开始所需要执行的步骤
jPBC initial link refer this
- ParamsPropertiesGenerator 用于创建 jPBC 的基础参数,
没有对TYPE_A.properties的特殊需求不需要启动, 花费时间比较长(实际上 MBP-15'花了 2Hours+没有跑出来) - 提高效率,只用 Bilinear 话,在 Pairing 之前加入此代码:
PairingFactory.getInstance().setUsePBCWhenPossible(true);Ref - PublicKey Gen: 发现原先代码指数 exp 错误, 已改正 12-25-2019
数据库相关操作.
Efficiency: sql 语句预处理 sql prepared statement
Clusion
CryptoPrimitives
Printer print message by level
测试文件, 使用 JUnit4, 参考自JUnit4
如何读取参考 resource
由 jPBC 自带,暂时只用 typeA 的参数a.properties
- init/ParamsPropertiesGenerator 做测试;
- 大素数源代码
p,q和乘积n均为 0; - utils/SerializableElement/readObject 判定
存疑🤨, 不清楚他的具体判断; - PRF /Init/MasterKey 可以只写一个 byte 作 random;
- 论文中的
${ Z_n^* }$ 和 jpbc 中的${Z_r^*}$ 区别很大, 论文中${n = p \times q}$ , 如果有${Z_r}$ 域可以选择 mod 就好了; - 论文中 secret key
${sk = s}$ 是怎么生成的?;
${\mathbb{G}}$ 域生成即可(by Wang.); 使用过程中用了${\mathbb{Z_r}}$ -
${z \leftarrow F_p(K_Z,g^{\frac{1}{w}} \textnormal{ mod } n \parallel c)}$ -
${c}$ 是级联;
-
- line-2:
${1/w_1}$ 中${w_1}$ str2byte; - 论文里面的
${K_T}$ 为笔误; - line-3 暂时设置为 keyword 固定对应的 fileId 数量(count);
BETTER flexible 的方式可以在 Setup 的过程中 data owner 创建每个 keyword(encrypted)和其对应的文件数量, 到时候直接查询即可减少大量的循环. - line-5 g^exp 需要 pow 还是 powZn(jpbc)?
- insertKeyPairSet 与 WangScheme 差别比较大, 均使用了原生函数. ATTENTION need check
- db/DBModule 利用
BloomFilter判断 XSet 是否在 XSets; - 若知道匹配次数匹配次数, 则可实现pre-processing;
- 重写暂时不用
多线程操作. - 启用 MySQL 连接池,降低多次连接资源开销(T2)
- SSE-Clusion > Google Guava
- preLab-crypt-misc
- jPBC-paper
- jPBC-doc
- jPBC-demos