论文:Linearly Homomorphic Encryption from DDH
CL 同态加密特点:
对群 $G$ 的要求
- $G$ 上求解 DDH 问题是困难的,$G$ 的子群 $F$ 上求解 DL 问题是容易的
- $G$ 的阶是未知的,否则 $G$ 上的 DDH 问题不再是困难的
- 消息 $m$ 的取值空间为 $p$,$p$ 是子群 $F$ 的阶
- 支持无限次模 $p$ 的同态加
- 不同于 Paillier,该同态加密安全性不依赖质因数分解难问题,所以 $p$ 可独立选择而不依赖于安全参数,不过 $p$ 至少是 80 比特
CL 同态加密和 Elgamal 同态加密很像,不过 Elgamal 同态加密要求在群 $G$ 上求解 DDH 问题是困难的,求解 DL 问题是容易的,所以消息 $m$ 必须比较小,以便快速解密,因此 Elgamal 只支持对数次数的同态加。
性能上,在相同的安全级别时,CL 同态加密快于模数为 2048 比特的 Paillier 同态加密。
以下算法是一般版,见论文 第 2.3 节,改进版见论文 第 4.2 节。
Gen 和 Solve
定义 Gen 如下:
$(B, n, p, s, g, f, G, F) \leftarrow Gen(1^{\lambda}, 1^{\mu})$
- 输入是 $\lambda, \mu$,
输出 $(B, n, p, s, g, f, G, F)$
- $s$ 是 $\lambda$ 比特的整数
- $p$ 是 $\mu$ 比特的整数
- $gcd(p,s)=1, n=p \cdot s$
- $B$ 是 $s$ 的上界,可以是 $B=2^{2\lambda}$
- $(G, \cdot)$ 是生成元为 $g$,阶为 $n$ 的循环群,$n$ 的上界是 $Bp$
- $F ⊂ G$ 是 $G$ 的子群,阶为 $p$,生成元为 $f$
- 具体过程见论文 第 3.1 节
在 $G$ 的子群 $F$ 求解 DL 问题如下:
$Solve(B, p, g, f, G, F, X) \rightarrow x$
- 输入 $X=f^x$
- 输出明文 $x$
- 具体过程见论文 第 3.1 节
注意,$G$ 的阶 $n$ 并不会作为 $Solve$ 的输入,只有上界 $Bp$ 被隐式给出。因为如果给出 $n$ 或 $s$ 的话,$x \% p$ 是可以直接算出的,$G$ 上的 DDH 问题也不再是困难的,证明过程见论文 2.1 节。
密钥生成 KeyGen$(1^{\lambda})$
- $(B, n, p, s, g, f, G, F) \leftarrow Gen(1^{\lambda}, 1^{\mu})$
- 随机选择 $x \in [0, Bp-1]$,令 $h = g^x$
- 公钥为 $pk \leftarrow (B, p, g, h, f)$,私钥为 $sk \leftarrow x$
- 返回 $(pk, sk)$
加密 Encrypt$(1^{\lambda}, pk, m)$
- 随机选择 $r \in [0, Bp-1]$
- 计算 $c_1 \leftarrow g^r$
- 计算 $c_2 \leftarrow f^mh^r$
- 返回 $(c_1, c_2)$
解密 Decrypt$(1^{\lambda}, pk, sk, (c_1, c_2))$
- 计算 $M \leftarrow c_2/c_1^x$
- 求解 $m \leftarrow Solve(p, g, f, G, F, M)$
- 返回 $m$
推导:$M \leftarrow c_2/c_1^x = (f^mh^r)/g^{rx}=(f^mg^{xr})/g^{rx}=f^m$
因为在 $G$ 的子群 $F$ 上求解 DL 问题是容易的,所以可以通过 $Solve$ 解出 $m$
同态加 EvalSum$(1^{\lambda}, pk, (c_1, c_2), (c_1',c_2'))$
- 计算 $c_1'' \leftarrow c_1c_1'$ 和 $c_2'' \leftarrow c_2c_2'$
- 随机选择 $r \leftarrow [0, Bp-1]$
- 返回 $(c_1''g^r, c_2''h^r)$
推导:$(c_1, c_2)$ 和 $(c_1', c_2')$ 分别是 $m$ 和 $ m'$ 的密文,可以算出
$$ \begin{align} &M \leftarrow (c_2''h^r) / (c_1''g^r)^x\\ &=(c_2c_2'h^r)/(c_1c_1'g^r)^x\\ &=(c_2/c_1^x)(c_2'/c_1'^x)(h^r/g^{rx})\\ &=f^mf^{m'}\\ &=f^{(m+m') \% p} \end{align} $$
是 $m+m'$ 的解密
同态乘 EvalScal$(1^{\lambda}, pk, (c_1, c_2), \alpha)$
- 计算 $c_1' \leftarrow c_1^{\alpha}$ 和 $c_2' \leftarrow c_2^{\alpha}$
- 随机选择 $r \leftarrow [0, Bp-1]$
- 返回 $(c_1'g^r, c_2'h^r)$
推导:$(c_1,c_2)$ 是 $m$ 的密文,$\alpha$ 是数字,可以算出
$$ \begin{align} &M \leftarrow (c_2'h^r) / (c_1g^r)^x\\ &=(c_2^{\alpha}h^r)/(c_1^{\alpha}g^r)^x\\ &=(c_2/c_1^x)^{\alpha}(h^r/g^{rx})\\ &=f^{m\alpha \% p}\\ \end{align} $$
是 $m\alpha$ 的解密
已有 2 条评论
怎么收藏这篇文章?
@cppqqqqikn 个人博客没有收藏功能