https笔记
DH密钥交换
加入Alice要和Bob交互, 其私钥分别是a和b,
A的公钥为:
A
=
G
a
m
o
d
P
A = G^a mod P
A=GamodP
B的公钥为:
B
=
G
b
m
o
d
P
B = G^b mod P
B=GbmodP
此时, 对于G,P,A,B双方都是可见的, 然后即可计算出相同的K.
共享密钥K为:
K
=
B
a
m
o
d
P
K = B^a mod P
K=BamodP
以及
K
=
A
b
m
o
d
P
K = A^b mod P
K=AbmodP
其中, 他们的K是相等的
$$
B^a\mod p\\ = (G^b\mod p)^a\mod p\\=(G^{ab}\mod p)\\
A^b\mod p\\ = (G^a\mod p)^b\mod p\\=(G^{ab}\mod p)\\
$$
证明:
g
m
o
d
p
=
x
(1)
g\mod p = x \tag{1}
gmodp=x(1)
g
÷
p
=
y
(2)
g\div p = y \tag{2}
g÷p=y(2)
根据1和2可得:
g
=
x
+
p
∗
y
(3)
g = x + p * y \tag{3}
g=x+p∗y(3)
那么
(
g
m
o
d
p
)
a
m
o
d
p
=
x
a
m
o
d
p
(g\mod p)^a \mod p = x^a \mod p
(gmodp)amodp=xamodp
将3带入上式可得:
(
g
−
p
∗
y
)
a
(g - p * y)^a % p
(g−p∗y)a
使用二项式展开公式展开, 有:
(
∑
i
=
0
i
=
a
C
a
i
∗
g
i
∗
(
−
p
∗
y
)
a
−
i
)
m
o
d
p
=
(
C
a
0
∗
g
0
∗
(
−
p
∗
y
)
a
+
C
a
1
∗
g
1
∗
(
−
p
∗
y
)
a
−
1
+
⋅
+
C
a
a
∗
g
a
∗
(
−
p
∗
y
)
0
)
m
o
d
p
=
g
a
m
o
d
p
(\sum_{i = 0}^{i = a}C_{a}^{i}*g^{i}*(-p*y)^{a - i})\mod p\\\\ =(C_{a}^{0}*g^{0}*(-p*y)^{a} + C_{a}^{1}*g^{1}*(-p*y)^{a - 1} + \cdot + C_{a}^{a}*g^{a}*(-p*y)^{0})\mod p \\\\ = g^a \mod p
(i=0∑i=aCai∗gi∗(−p∗y)a−i)modp=(Ca0∗g0∗(−p∗y)a+Ca1∗g1∗(−p∗y)a−1+⋅+Caa∗ga∗(−p∗y)0)modp=gamodp
该式除了最后一项都是p的整数倍, 因此取mod必为0.
综上,
(
g
m
o
d
p
)
a
m
o
d
p
=
g
a
m
o
d
p
(g\mod p)^a\mod p = g^a\mod p
(gmodp)amodp=gamodp