背景
Paillier 加密系统是 Pascal Paillier 在 1999 年发明的。属于公钥密码体制范畴。至于什么是公钥密码体制,在RSA 中已经介绍,这里直接介绍算法的原理。
数论基础
基础部分
一些基础的数论基础可以在 数论基础 看到,可以先对模运算和欧拉定理有个初步了解。
数阶和原根
整数的阶
定义: 对于
g
c
d
(
a
,
n
)
=
1
gcd (a, n) = 1
gcd(a,n)=1, 即
a
,
n
a, n
a,n 互素的整数,满足
a
r
≡
1
(
m
o
d
n
)
a^ r \equiv 1 (mod\,n)
ar≡1(modn) 的最小整数
r
r
r, 称为
a
a
a 模
n
n
n 的阶。符号表示为
o
r
d
n
a
ord_na
ordna。
举个例子,2模 7 的阶:
2
1
≡
2
(
m
o
d
7
)
,
2
2
≡
4
(
m
o
d
7
)
,
2
3
≡
1
(
m
o
d
7
)
2^1\equiv2(mod\,7), 2^2\equiv4(mod\,7),2^3\equiv1(mod\,7)
21≡2(mod7),22≡4(mod7),23≡1(mod7)。
那么我们说 2 模 7 的阶就是 3,记为
o
r
d
7
=
3
ord_7=3
ord7=3;
原根
定义:设
n
n
n 是正整数,
a
a
a 为整数,当
a
a
a 模
n
n
n 的阶为
ϕ
(
n
)
\phi(n)
ϕ(n),此时称
a
a
a 为模
n
n
n 的一个原根。
举个例子,设
n
n
n 为 7,
a
a
a 为 3:
3
1
≡
3
(
m
o
d
7
)
,
3
2
≡
2
(
m
o
d
7
)
,
3
3
≡
6
(
m
o
d
7
)
,
3
4
≡
4
(
m
o
d
7
)
,
3
5
≡
5
(
m
o
d
7
)
,
3
6
≡
1
(
m
o
d
7
)
3^1\equiv3(mod\,7),3^2\equiv2(mod\,7),3^3\equiv6(mod\,7),3^4\equiv4(mod\,7),3^5\equiv5(mod\,7),3^6\equiv1(mod\,7)
31≡3(mod7),32≡2(mod7),33≡6(mod7),34≡4(mod7),35≡5(mod7),36≡1(mod7),我们知道
ϕ
(
7
)
=
6
\phi(7)=6
ϕ(7)=6。
所以说 3 为模 7 的原根。
我们发现,这些余数构成了模 7 的剩余类,其实对于任意的
a
a
a,都可以找到
x
x
x,使得
3
x
≡
a
(
m
o
d
7
)
3^x\equiv{a}(mod\,7)
3x≡a(mod7)。
卡迈克尔函数 Carmichael function
在数论中,卡迈克尔函数的定义为:设
g
c
d
(
a
,
n
)
=
1
gcd(a,n)=1
gcd(a,n)=1使得
a
m
≡
1
(
m
o
d
n
)
a^m\equiv1(mod\,n)
am≡1(modn) 成立的最小正整数
m
m
m,将
m
m
m记作
λ
(
n
)
\lambda(n)
λ(n)。
下图是一张卡迈克尔函数
λ
(
n
)
\lambda(n)
λ(n)与欧拉函数
ϕ
(
n
)
\phi(n)
ϕ(n)的对比表:
n | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
λ ( n ) \lambda(n) λ(n) | 1 | 1 | 2 | 2 | 4 | 2 | 6 | 2 | 6 | 4 | 10 | 2 | 12 | 6 | 4 | 4 |
ϕ ( n ) \phi(n) ϕ(n) | 1 | 1 | 2 | 2 | 4 | 2 | 6 | 4 | 6 | 4 | 10 | 4 | 12 | 6 | 8 | 8 |
示例
对于 8 的卡迈克尔函数是2,即
λ
(
8
)
=
2
\lambda(8)=2
λ(8)=2,即对于任意的
a
a
a 满足
g
c
d
(
a
,
8
)
=
1
gcd(a, 8)=1
gcd(a,8)=1,有
a
2
≡
1
(
m
o
d
8
)
a^2\equiv1(mod\,8)
a2≡1(mod8),也就是说
1
2
≡
1
(
m
o
d
8
)
,
3
2
≡
1
(
m
o
d
7
)
,
5
2
≡
1
(
m
o
d
8
)
,
7
2
≡
1
(
m
o
d
8
)
1^2\equiv1(mod\,8),3^2\equiv1(mod\,7),5^2\equiv1(mod\,8),7^2\equiv1(mod\,8)
12≡1(mod8),32≡1(mod7),52≡1(mod8),72≡1(mod8)。
而对于欧拉函数来说,
ϕ
(
8
)
=
4
\phi(8)=4
ϕ(8)=4,因为欧拉函数只需要满足与 8 互素的
a
a
a,有
a
4
≡
1
(
m
o
d
8
)
a^4\equiv1(mod\,8)
a4≡1(mod8),不需要满足
a
a
a 是最小的。
卡迈克尔函数的一些特性
设
n
=
p
q
n=pq
n=pq,其中
p
p
p 和
q
q
q 是大素数,那么
ϕ
(
n
)
=
(
p
−
1
)
(
q
−
1
)
\phi(n)=(p-1)(q-1)
ϕ(n)=(p−1)(q−1),
λ
(
n
)
=
l
c
m
(
p
−
1
,
q
−
1
)
\lambda(n)=lcm(p-1, q-1)
λ(n)=lcm(p−1,q−1),lcm 为求最小公倍数。其中
|
Z
n
2
∗
|
=
ϕ
(
n
2
)
=
n
ϕ
(
n
)
|\mathbb{Z}_{n^2}^*|=\phi(n^2)=n\phi(n)
|Zn2∗|=ϕ(n2)=nϕ(n),对于任意
ω
∈
Z
n
2
∗
\omega\in \mathbb{Z}_{n^2}^*
ω∈Zn2∗,有如下性质:
{
ω
λ
=
1
m
o
d
n
ω
n
λ
=
1
m
o
d
n
2
\begin{cases} \omega^\lambda=1\,mod\,n\\ \omega^{n\lambda}=1\,mod\,n^2 \end{cases}
{ωλ=1modnωnλ=1modn2
其它
设
1
+
n
∈
Z
n
2
∗
1+n\in\mathbb{Z}_{n^2}^*
1+n∈Zn2∗。
那么,
(
1
+
n
)
2
≡
1
+
2
n
+
n
2
≡
(
1
+
2
n
)
m
o
d
n
2
(1+n)^2\equiv1+2n+n^2\equiv(1+2n)\,mod\,n^2
(1+n)2≡1+2n+n2≡(1+2n)modn2
(
1
+
n
)
3
≡
1
+
3
n
+
n
3
≡
(
1
+
3
n
)
m
o
d
n
2
(1+n)^3\equiv1+3n+n^3\equiv(1+3n)\,mod\,n^2
(1+n)3≡1+3n+n3≡(1+3n)modn2
(
1
+
n
)
v
≡
1
+
v
∗
n
+
[
n
的
高
次
幂
]
≡
(
1
+
v
∗
n
)
m
o
d
n
2
(1+n)^v\equiv1+v*n+[n的高次幂]\equiv(1+v*n)\,mod\,n^2
(1+n)v≡1+v∗n+[n的高次幂]≡(1+v∗n)modn2
以上这些就是推导Paillier 算法所需要的数论知识。