一、攻击/安全威胁
1. Sybil Attack(女巫攻击)
- 在对等网络中,节点通常具有多个身份标识,通过控制系统的大部分节点来消弱冗余备份的作用。
- 在P2P网络中,因为节点随时加入退出等原因,为了维持网络稳定,同一份数据通常需要备份到多个分布式节点上,这就是数据冗余机制。女巫攻击是攻击数据冗余机制的一种有效手段。
2. Kerckhoffs原理
- 即使除密钥外的整个系统的一切都是公开的,这个密码体制也必须是安全的。尤其是即使攻击者知道系统的加密算法和解密算法,此系统也必须是安全的。
二、密码算法
1. 哈希算法
加密哈希算法 Cryptographic Hash Algorithms(例如MD5, SHA-1)
感知哈希算法 Perceptual Hash Algorithm
- aHash:平均值哈希。速度比较快,但是常常不太精确
- pHash:感知哈希。精确度比较高,但是速度方面较差一些
- dHash:差异值哈希。精确度较高,且速度也非常快
汉明距离 Hamming distance
- 在信息论中,两个等长字符串之间的汉明距离(英语:Hamming distance)是两个字符串对应位置的不同字符的个数。换句话说,它就是将一个字符串变换成另外一个字符串所需要替换的字符个数。
- 汉明重量是字符串相对于同样长度的零字符串的汉明距离,也就是说,它是字符串中非零的元素个数:对于二进制字符串来说,就是1的个数,所以11101的汉明重量是4。
2. 椭圆曲线加密ECC
椭圆曲线离散对数问题
(elliptic curve discrete logarithm problem ECDLP) 远难于离散对数问题 (discrete logarithm problem) ,椭圆曲线密码系统的单位比特强度要远高于传统的离散对数系统。因此在使用较短的密钥的情况下,ECC(elliptic curve discrete) 可以达到于DL系统相同的安全级别。这带来的好处就是计算参数更小,密钥更短,运算速度更快,签名也更加短小。因此椭圆曲线密码尤其适用于处理能力、存储空间、带宽及功耗受限的场合。
椭圆曲线
(1)定义
- 一条椭圆曲线是在射影平面上满足威尔斯特拉斯方程(Weierstrass) 所有点的集合
(2)形式
Y
2
Z
+
a
1
X
Y
Z
+
a
3
Y
Z
2
=
X
3
+
a
2
X
2
Z
+
a
4
X
Z
2
+
a
6
Z
3
Y^2Z+a_1XYZ+a_3YZ^2=X^3+a_2X^2Z+a_4XZ^2+a_6Z^3
Y2Z+a1XYZ+a3YZ2=X3+a2X2Z+a4XZ2+a6Z3
(3)特点
- 椭圆曲线方程是一个齐次方程
- 曲线上的每个点都必须是非奇异的(光滑的),偏导数 F x ( x , y , z ) F_x(x,y,z) Fx(x,y,z)、 F y ( x , y , z ) F_y(x,y,z) Fy(x,y,z)、 F z ( x , y , z ) F_z(x,y,z) Fz(x,y,z)不同时为 0 0 0
- 圆曲线的形状,并不是椭圆的。只是因为椭圆曲线的描述方程,类似于计算一个椭圆周长的方程故得名
(4)一般方程
y
2
=
x
3
+
a
x
+
b
;
4
a
3
+
27
b
2
≠
0
y^2=x^3+ax+b;4a^3+27b^2 \ne 0
y2=x3+ax+b;4a3+27b2=0
(5)椭圆曲线示例
(6)非椭圆曲线示例
3. 椭圆曲线阿贝尔群
椭圆曲线加法运算:
给定点A和点B,C’点为AB延长线与曲线的交点,做其对称点C,那么A+B=C
计算A+A,做A的切线与曲线上B相交,B的对称点C即为A+A结果,A+A=C
交换群(阿贝尔群)性质
在数学中,群是一种代数结构,由一个集合以及一个二元运算所组成。已知集合和运算(G,*) 如果是群则必须满足如下要求:
- 封闭性: ∀ a , b ∈ G , a ∗ b ∈ G ∀a,b∈G,a*b ∈ G ∀a,b∈G,a∗b∈G
- 结合性: ∀ a , b , c ∈ G , 有 ( a ∗ b ) ∗ c = a ∗ ( b ∗ c ) ∀a,b,c∈G ,有 (a*b)* c = a* (b*c) ∀a,b,c∈G,有(a∗b)∗c=a∗(b∗c)
- 单位元: ョ e ∈ G , ∀ a ∈ G , 有 e ∗ a = a ∗ e = a ョe∈G,∀a ∈G,有e*a = a*e = a ョe∈G,∀a∈G,有e∗a=a∗e=a
- 逆元: ∀ a ∈ G , ョ a − 1 ∀a ∈G , ョa^{-1} ∀a∈G,ョa−1使得 a ∗ a − 1 = a − 1 ∗ a = e a*a^{-1} = a^{-1}*a = e a∗a−1=a−1∗a=e
- 交换性: a ∗ b = b ∗ a a*b= b*a a∗b=b∗a
4. 有限域椭圆曲线
椭圆曲线是连续的,并不适合用于加密;所以,我们必须把椭圆曲线变成离散的点,我们要把椭圆曲线定义在有限域上。
我们给出一个有限域
F
p
F_p
Fp
- F p F_p Fp中有 p p p( p p p为质数)个元素v0,1,2,…, p-2,p-1$
- F p F_p Fp的加法是 a + b ≡ c ( m o d p ) a+b≡c(\mod p) a+b≡c(modp)
- F p F_p Fp的乘法是 a × b ≡ c ( m o d p ) a×b≡c(\mod p) a×b≡c(modp)
- F p F_p Fp的除法是 a ÷ b ≡ c ( m o d p ) a÷b≡c(\mod p) a÷b≡c(modp),即 a × b − 1 ≡ c ( m o d p ) a×b^{-1}≡c (\mod p) a×b−1≡c(modp), b − 1 b-1 b−1也是一个 0 0 0到 p − 1 p-1 p−1之间的整数,但满足 b × b − 1 ≡ 1 ( m o d p ) b×b-1≡1 (\mod p) b×b−1≡1(modp)
- F p F_p Fp的单位元是 1 1 1,零元是 0 0 0
- F p F_p Fp域内运算满足交换律、结合律、分配律
椭圆曲线 E p ( a , b ) E_p(a,b) Ep(a,b), p p p为质数, x , y ∈ [ 0 , p − 1 ] x,y∈[0,p-1] x,y∈[0,p−1]
y 2 = x 3 + a x + b ( m o d p ) y^2=x^3+ax+b(\mod p) y2=x3+ax+b(modp)
选择两个满足下列约束条件的小于 p p p的非负整数 a 、 b a、b a、b
4 a 3 + 27 b 2 ≠ 0 ( m o d p ) 4a^3+27b^2 \ne 0(\mod p) 4a3+27b2=0(modp)
在有限域上的椭圆曲线自然也是有其加法的,但是已经不是几何意义上的加法了
对于椭圆曲线上一点
G
G
G ,若存在最小的正整数
n
n
n ,使得
n
G
=
O
∞
nG=O∞
nG=O∞ ,则称
n
n
n 为
G
G
G 的阶。对于有限域上的的所有点都是有阶的。
5. 椭圆曲线加密(ECC)
初始化
利用 E C C ECC ECC进行加密首先需要给出 p , a , b , G , n p,a,b,G,n p,a,b,G,n。其中:
- p p p通常选取一个很大的素数以防止穷举
- a a a和 b b b是椭圆曲线的参数
- G G G为给定的椭圆曲线上的点
- n n n为 G G G的阶
椭圆曲线加密正是利用了前面所说的给定自然数m计算 m G mG mG很容易而给定 m G mG mG的结果无法很快计算 m m m这一个性质。
ECC保密通信的算法
- A l i c e Alice Alice选定曲线 E p ( a , b ) Ep(a,b) Ep(a,b),并在上面取一点G作为基点,以及选区私钥 k k k并计算公钥 K = k G K=kG K=kG;
- A l i c e Alice Alice将 E p ( a , b ) , K , G E_p(a,b),K,G Ep(a,b),K,G发送给 B o b Bob Bob;
- B o b Bob Bob接收消息之后首先将信息m编码到点 M M M,并产生一个随机整数 r ( r < n ) r(r < n) r(r<n);
- B o b Bob Bob计算 C 1 = M + r K C_1=M + rK C1=M+rK 和 C 2 = r G C2 = rG C2=rG并将 C 1 , C 2 C_1,C_2 C1,C2发送给 A l i c e Alice Alice;
- A l i c e Alice Alice计算 C 1 − k C 2 C_1−kC_2 C1−kC2即可得到 M M M,解密得到消息 m m m
6. Bilinear Groups(双线性对映射)
性质
(1) 一般性质
- a. G 1 = G 2 G1=G2 G1=G2时,称为对称,对于 ∀ P , Q ∈ G \forall P,Q \in G ∀P,Q∈G,都有 e ( P , Q ) = e ( Q , P ) e(P,Q)=e(Q,P) e(P,Q)=e(Q,P);
- b.因为对于 G G G中的一个生成元 g g g,总存在整数 p 、 q p、q p、q使得 P = g p 和 Q = g q P=g^p和Q=g^q P=gp和Q=gq成立;
- c.因此有 e ( P , Q ) = e ( g p , g q ) = e ( g , g ) p q = e ( g , g p q ) = e ( g q , g p ) = e ( Q , P ) e(P,Q) = e(g^p,g^q) = e(g,g)^{pq}= e(g,g^{pq})= e(g^q, g^p) = e(Q,P) e(P,Q)=e(gp,gq)=e(g,g)pq=e(g,gpq)=e(gq,gp)=e(Q,P)
(2)乘法性质
- e ( x , y z ) = e ( x , y ) e ( x , z ) e(x,yz)=e(x,y)e(x,z) e(x,yz)=e(x,y)e(x,z)
- e ( x , y / z ) = e ( x , y ) e ( x , z ) − 1 = e ( x , y ) / e ( x , z ) e(x,y/z)=e(x,y)e(x,z)^{-1}=e(x,y)/e(x,z) e(x,y/z)=e(x,y)e(x,z)−1=e(x,y)/e(x,z)
7. BLS Short Signature Scheme
(Boneh, Lynn, and Shacham 短签名机制)
Verify(验证):
e
(
g
,
σ
)
=
e
(
g
,
H
(
m
)
x
)
=
e
(
g
,
H
(
m
)
)
x
=
e
(
g
x
,
H
(
m
)
)
=
e
(
P
K
,
H
(
m
)
)
e(g,\sigma) = e(g,H(m)^x) = e(g,H(m))^x = e(g^x,H(m)) = e(PK,H(m))
e(g,σ)=e(g,H(m)x)=e(g,H(m))x=e(gx,H(m))=e(PK,H(m))
8. Identity Based Cryptosystems
IBE算法,包括四个过程Setup,Extract,Encrypt,Decrypt:
(1) Setup: 安全参数
k
k
k作为输入,输出系统参数
p
a
r
a
m
s
params
params和主密钥
m
a
s
t
e
r
−
k
e
y
master-key
master−key,其中系统参数包含了对有限明文空间
M
M
M和密文空间
C
C
C的描述;系统参数是公开的,主密钥只有 PKG (Private Key Generator)拥有;
(2)Extract: 将
p
a
r
a
m
s
,
m
a
s
t
e
r
−
k
e
y
params,master-key
params,master−key以及随机的身份
I
D
∈
{
0
,
1
}
∗
ID \in \{0,1\}^*
ID∈{0,1}∗作为输入,返回私钥
d
d
d,ID是一个随机的字符串被视作公钥,
d
d
d是对应的私钥;
(3)Encrypt: 输入
p
a
r
a
m
s
,
I
D
,
m
∈
M
params,ID,m \in M
params,ID,m∈M,返回密文
c
∈
C
c \in C
c∈C;
(4)Decrypt: 输入
p
a
r
a
m
s
,
I
D
,
c
∈
C
params,ID,c \in C
params,ID,c∈C以及私钥
d
d
d,返回明文
m
∈
M
m \in M
m∈M
IBE算法具体设计
2001年,
B
o
n
e
h
Boneh
Boneh和
F
r
a
n
k
l
i
n
Franklin
Franklin正式给出IBE的定义,安全模型,并应用双线性对(
B
i
l
i
n
e
a
r
M
a
p
Bilinear Map
BilinearMap)构造了一个安全的
I
B
E
IBE
IBE方案:
通俗方案
(1)Setup:根据安全参数
k
k
k选取循环群
G
G
G,生成元
g
g
g,阶为素数
p
p
p,第三方(KGC)选取主密钥
m
k
∈
Z
p
mk \in Z_p
mk∈Zp,计算公钥
P
k
=
g
m
k
∈
G
P_k=g^{mk} \in G
Pk=gmk∈G;
(2)Extract:用户将自己的
I
D
ID
ID作为公钥发送给第三方,第三方返回其私钥
S
I
D
=
H
(
I
D
)
m
k
∈
G
S_{ID}=H(ID)^{mk} \in G
SID=H(ID)mk∈G,其中
H
H
H为映射到群内元素的哈希算法;
(3)Encrypt:选取
m
∈
M
m \in M
m∈M,随机数
r
∈
Z
p
∗
r \in Z_p^*
r∈Zp∗,计算
<
c
1
=
g
r
,
c
2
=
e
(
H
(
I
D
)
r
,
P
k
)
m
>
<c_1=g^r,c_2=e(H(ID)^r,P_k)m>
<c1=gr,c2=e(H(ID)r,Pk)m>
(4)Decrypt:
m
=
c
2
e
(
S
I
D
,
c
1
)
m=\frac{c_2}{e(S_{ID},c_1)}
m=e(SID,c1)c2
9. Certificateless Public Key Cryptography
基本介绍
(1)定义:无证书加密是IBE方案的一种变体,目的是为了解决IBE方案面临的密钥托管(密钥由凭证管理中心或者KGC生成)的问题
(2)方案:传统的密钥生成过程从KGC和用户分开,KGC首先生成一个密钥对,此时的私钥只是系统的部分私钥,然后由用户随机生成最终的密钥
10. 剩余系
如果一个剩余系中包含了这个正整数
n
n
n 所有可能的余数(一般地,对于任意正整数
n
n
n,有
n
n
n 个余数:
0
,
1
,
2
,
.
.
.
,
n
−
10
,
1
,
2
,
.
.
.
,
n
−
1
0,1,2,...,n-10,1,2,...,n−1
0,1,2,...,n−10,1,2,...,n−1),那么就被称为是模n的一个完全剩余系,记作
Z
n
Z_n
Zn;而简化剩余系就是完全剩余系中与n互素的数的那些元素,记作
Z
n
∗
Z_n^*
Zn∗
Z
n
Z_n
Zn里面的每一个元素代表所有模
n
n
n意义下与它同余的整数。例如
n
=
5
n=5
n=5时,
Z
5
Z_5
Z5的元素
3
3
3实际上代表了
3
,
8
,
13
,
18
,
.
.
.
.
,
5
k
+
3
(
k
∈
N
)
3, 8, 13, 18,....,5k + 3(k \in N)
3,8,13,18,....,5k+3(k∈N), 这些模
5
5
5余
3
3
3的数。我们把满足同余关系的所有整数看作一个同余等价类。