数论基础
Carmichael函数:(nin Z^+,forall ain Z_n^+),若能满足(a^x equiv 1 (mod n))的最小x,记为λ(n),称为Carmichael函数
定理:(nin Z^+),设(n=n_1·n_2),且((n_1,n_2))=1,则λ(n)=[λ((n_1)),λ((n_2))]
证明.
(forall ain Z_n^+,a^{lambda(n)} equiv 1mod n)
(ecause n_1mid n)
( herefore a^{lambda(n)} = 1mod n_1)
( herefore lambda(n_1)midlambda(n))
同理,(lambda(n_2)midlambda(n))
( herefore [lambda(n_1),lambda(n_2)]midlambda(n))
设(Z_{n_1}^+ = lbrace a_i |0 < i le n_1 brace,Z_{n_2}^+ = lbrace b_j|0 < j le n_2 brace)
则(Z_n^+=lbrace n_2a_i+n_1b_j brace)
((n_2a_i+n_1b_j)^{lambda(n_1)} equiv n_2^{lambda(n_1)} equiv 1mod n_1)
则((n_2a_i+n_1b_j)^{[lambda(n_1),lambda(n_2)]}equiv 1mod n_1)
同理,((n_2a_i+n_1b_j)^{[lambda(n_1),lambda(n_2)]}equiv 1mod n_2)
(ecause [n_1,n_2]=n)
( hereforeforall ain Z_n^+,a^{[lambda(n_1),lambda(n_2)]}equiv 1mod n)
( herefore lambda(n)mid [lambda(n_1),lambda(n_2)])
( herefore [lambda(n_1),lambda(n_2)]=lambda(n))
Carmichael函数的取值:
- 当原根存在时,显然(lambda(n)=varphi(n)),即当n=(2,4,p^{alpha},2p^{alpha})
- 如果n = (p_1^{a_1}·p_2^{a_2}cdots p_s^{a_s}),根据上面的定理,则λ(n) = [(lambda(p_1^{a_1}),lambda(p_2^{a_2}),cdots,lambda(p_s^{a_s}))]
- 如果n = (2^{alpha},alphage 3),则λ(n) = (frac{varphi(n)}{2})
定理:设(nin Z^+,win Z_n^+),则(w^{nlambda(n)}equiv 1mod n^2)
证明.
(w^{lambda(n)}equiv 1mod n)
( herefore exists kin Z_N^+, w^{lambda(n)} = 1+kn)
((w^{lambda(n)})^n=(1+kn)^n=1+Sigma_1^n C^i_n(kn)^i=1+kn^2+Sigma_2^n C^i_n(kn)^iequiv 1mod n^2)
Paillier加密方案
Paillier加密方案是欧洲通用的一种同态的公钥加密方案,其构造如下:
- Gen:取两个大素数p,q,令n=pq,λ=[p-1,q-1],概率均匀的选择一个g(in Z^+_{n^2}),并且满足 n | ord(g),则(n,g)为公钥,(p,q,λ)为私钥
- Enc:对消息m(in Z^+_n),概率均匀的选择一个r(in Z^+_n),则密文 c = (r^ng^mmod n^2)
- Dec:解密m' = (frac{L(c^λmod n^2)}{L(g^λmod n^2)}),其中L(x)=(frac{x-1}{n})
正确性验证:
因为(g^{lambda}equiv 1mod n)
不妨令(g^{lambda}=1+kn,kin Z^+)
m' = (frac{frac{c^{lambda}-1}{n}}{frac{g^{lambda}-1}{n}}=frac{frac{(r^ng^m)^{lambda}-1}{n}}{frac{1+kn-1}{n}})
(equivfrac{frac{(g^{lambda})^m-1}{n}}{k}equivfrac{frac{(1+kn)^m-1}{n}}{k}equivfrac{frac{1+mkn+Sigma_2^mC_m^i(kn)^i-1}{n}}{k})
(equivfrac{km}{k}equiv mmod n^2)