门限 Paillier 加密方案

1.Paillier同态加密算法

1.1 加解密过程:

1.1.1密钥生成

1.随机选择两个大素数p,q,满足gcd(pq,(p-1)(q-1))=1p,q长度相等。

2.计算n=pq以及\lambda =lcm(p-1,q-1),这里lcm表示最小公倍数。

3.随机选择g \in Z_{n^{2}}^{*},也可令g = n+1,优化计算速度

4.定义L函数L(x)=\frac{x-1}{n},计算\mu

\mu =(L(g^{\lambda} mod\ n^{2} ))^{-1} mod\ n=\frac{n}{g^{\lambda}mod \ n^{2} -1}mod \ n=\frac{n}{g^{\lambda }-1\ mod \ n^{2}}mod\ n

公钥(n,g),私钥(\lambda ,\mu )

1.1.2 加密

1.输入明文信息m,满足0\leqslant m\leqslant n

2.选择随机数r \in Z_{n}^{*}gcd(r,n)=1

3.计算密文c=g^{m}r^{n} \ mod \ n^{2},若g = n+1,则:

g^{m}=(n+1)^{m}=\binom{m}{0}n^{m}+\binom{m}{1}n^{m-1}+...+\binom{m}{m-1}n^{2}+mn+1 mod \ n^{2}=mn+1\ mod \ n^{2}

1.1.3 解密

1.输入密文c,满足c\in Z_{n^{2}}^{*}

2.计算m=L(c^{\lambda}\ mod n^{2})\cdot \mu \ mod\ n

1.2 正确性与安全性

1.2.1 解密正确性

g \in Z_{n^{2}}^{*}时,\lambda =k_{1}(p-1)=k_{2}(q-1),根据费马小定理,g^{\lambda }= g^{k_{1}(p-1)}\equiv 1 \ mod \ p同理,g^{\lambda }= g^{k_{2}(q-1)}\equiv 1 \ mod \ q所以g^{\lambda }= k_{3}\cdot p+1=k_{4}\cdot q+1所以k_{3}\cdot p=k_{4}\cdot q,又因为p,q互素,所以k_{3}=t\cdot q , k_{4}=t\cdot p所以g^{\lambda }= t\cdot p\cdot q+1所以g^{\lambda }= t\cdot p\cdot q+1=t\cdot n+1\equiv 1\ mod\ n,而

g^{\lambda n}=(tn+1)^{n}=\binom{n}{0}(tn)^{n}+\binom{n}{1}(tn)^{n-1}+...+\binom{n}{n-1}(tn)^{2}+tn\cdot n+1 mod \ n^{2}=1\ mod \ n^{2}

所以

d(c)=L(c^{\lambda}\ mod n^{2})\cdot \mu \ mod\ n\equiv \frac{(g^{m}r^{n})^{\lambda }mod\ n^{2}-1}{n}\cdot \frac{n}{g^{\lambda }-1\ mod \ n^{2}}mod\ n\equiv \frac{g^{\lambda m}-1mod\ n^{2}}{g^{\lambda }-1\ mod \ n^{2}}mod\ n\equiv \frac{tmn\ mod\ n^{2}}{tn\ mod\ n^{2}}mod\ n\equiv m

1.2.2 同态加正确性

注意明文的加法是加密域的乘法

d((c_{1}\cdot c_{2})mod\ n^{2})=d(g^{m_{1}}r^{n}\cdot g^{m_{2}}r^{n}mod\ n^{2})=d(g^{m_{1}+m_{2}}(r^{2})^{n}mod\ n^{2})=m_{1}+m_{2}

1.2.3 同态标量乘正确性

注意明文的乘法是加密域的指数运算

d((c_{1}^{a})mod\ n^{2})=d(g^{m_{1}a}r^{na}mod\ n^{2})=d(g^{m_{1}a}(r^{n})^{a}mod\ n^{2})=m_{1}a

1.2.4 安全性

Paillier方案满足加密方案的标准安全定义:语义安全,即在选择明文攻击下的密文的不可区分性(IND-CPA)。直观地说,就是密文不会泄露明文中的任意信息。方案安全性可以归约到判定性合数剩余假设。、

2.门限 Paillier 加密方案

2.1 加解密过程:

2.1.1 密钥生成

1.选择两个大素数p,q,计算n=pq

2.选择3个随机参数\beta ,a,b,计算公钥:

g=(1+n)^{a}*b^{n} mod \ n^{2}

3.采用Shamir秘密共享方案选择随机参数m,将私钥SK=\beta *m进行拆分,计算私钥多项式f(x)=\sum_{i=0}^{t}a_{i}x^{i}

Shamir秘密共享方案

4.每个用户i的私钥:s_{i}=f(i)mod\ nm

5.公钥:PK=(n,g,\theta ),\theta =L(g^{m\beta })=am\beta mod\ n

6.验证密钥VK_{i}=v^{\Delta s_{i}}mod\ n^{2},公开用于验证用户提交的s_{i}的正确性,其中\Delta =l!l为用户数

2.1.2 加密

1.选择随机数x\in Z_{n}^{*}

2.计算密文:c=g^{M}x^{n}mod\ n^{2}

2.1.3 解密

1.部分解密(每个用户单独执行):c_{i}=c^{2\Delta s_{i}}mod\ n^{2}

2.合并解密:当收集到t+1份有效解密份额后,计算:

M=L(\prod_{j\in S }c_{j}^{2\mu_{S,0,j}}mod\ n^{2})*\frac{1}{4\Delta ^{2}\theta }mod\ n

其中\mu _{S,0,j}=\Delta *\prod_{j^{`}\in S \backslash \{j\}}\frac{j^{`}}{j^{`}-j}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值