用于无收据和完全私密选举的加密机制
1. 加密与验证基础算法
在随机化结束时,输出 $C = (CT’, D’)$。验证函数 $Ver (PK, C)$ 会先检查 $PK$ 或 $C$ 是否能正确解析,若不能则中止并输出 0。若能正确解析,会分别检查关于 $opk$ 在 $(1, \hat{g} 1, \hat{g}_2)$ 和 $(1, \hat{h}_1, \hat{h}_2)$ 上的 LHSP 签名 $\hat{\sigma}_2, \hat{\sigma}_3$ 的有效性,以及所有 $\tau = Hash(opk)$ 的 Groth - Sahai 证明,若至少有一个验证失败则输出 0,否则输出 1。解密函数 $Dec(SK, C)$ 会先调用 $Ver (PK, C)$,若结果为 0 则输出 $\perp$,否则根据 $SK = {(\alpha_i, \beta_i)} {i = 1}^3$ 和 $CT$ 中包含的 $(cm = (c_0, c_1, c_2), cr, cq)$ 输出 $M = c_0 \cdot c_1^{-\alpha_1} \cdot c_2^{-\beta_1}$,$R = cr \cdot c_1^{-\alpha_2} \cdot c_2^{-\beta_2}$,$Q = cq \cdot c_1^{-\alpha_3} \cdot c_2^{-\beta_3}$。
2. 验证方程
验证方程用于检查使用该构造生成的有效密文是否满足条件。验证函数 $Ver (PK, C)$ 会先检查 $PK$ 或 $C$ 是否能正确解析,若不能则中止并输出 0。然后,会私下验证与 CPA 加密部分相关的第一个验证,其余四个验证会
超级会员免费看
订阅专栏 解锁全文
36

被折叠的 条评论
为什么被折叠?



