一、攻击/安全威胁
1 Sybil Attack(女巫攻击)
- 在对等网络中,节点通常具有多个身份标识,通过控制系统的大部分节点来消弱冗余备份的作用。
- 在P2P网络中,因为节点随时加入退出等原因,为了维持网络稳定,同一份数据通常需要备份到多个分布式节点上,这就是数据冗余机制。女巫攻击是攻击数据冗余机制的一种有效手段。
2 Kerckhoffs原理
- 即使除密钥外的整个系统的一切都是公开的,这个密码体制也必须是安全的。尤其是即使攻击者知道系统的加密算法和解密算法,此系统也必须是安全的。
二、密码算法
1 哈希算法
1.1 加密哈希算法 Cryptographic Hash Algorithms(例如MD5, SHA-1)
1.2 感知哈希算法 Perceptual Hash Algorithm
- aHash:平均值哈希。速度比较快,但是常常不太精确
- pHash:感知哈希。精确度比较高,但是速度方面较差一些
- dHash:差异值哈希。精确度较高,且速度也非常快
1.3 汉明距离 Hamming distance
- 在信息论中,两个等长字符串之间的汉明距离(英语:Hamming distance)是两个字符串对应位置的不同字符的个数。换句话说,它就是将一个字符串变换成另外一个字符串所需要替换的字符个数。
- 汉明重量是字符串相对于同样长度的零字符串的汉明距离,也就是说,它是字符串中非零的元素个数:对于二进制字符串来说,就是1的个数,所以11101的汉明重量是4。
2 椭圆曲线加密ECC
2.1 椭圆曲线离散对数问题
(elliptic curve discrete logarithm problem ECDLP) 远难于离散对数问题 (discrete logarithm problem) ,椭圆曲线密码系统的单位比特强度要远高于传统的离散对数系统。因此在使用较短的密钥的情况下,ECC(elliptic curve discrete) 可以达到于DL系统相同的安全级别。这带来的好处就是计算参数更小,密钥更短,运算速度更快,签名也更加短小。因此椭圆曲线密码尤其适用于处理能力、存储空间、带宽及功耗受限的场合。
2.2 椭圆曲线
(1)定义
- 一条椭圆曲线是在射影平面上满足威尔斯特拉斯方程(Weierstrass) 所有点的集合
(2)形式
Y2Z+a1XYZ+a3YZ2=X3+a2X2Z+a4XZ2+a6Z3Y^2Z+a_1XYZ+a_3YZ^2=X^3+a_2X^2Z+a_4XZ^2+a_6Z^3Y2Z+a1XYZ+a3YZ2=X3+a2X2Z+a4XZ2+a6Z3
(3)特点
- 椭圆曲线方程是一个齐次方程
- 曲线上的每个点都必须是非奇异的(光滑的),偏导数Fx(x,y,z)F_x(x,y,z)Fx(x,y,z)、Fy(x,y,z)F_y(x,y,z)Fy(x,y,z)、Fz(x,y,z)F_z(x,y,z)Fz(x,y,z)不同时为000
- 圆曲线的形状,并不是椭圆的。只是因为椭圆曲线的描述方程,类似于计算一个椭圆周长的方程故得名
(4)一般方程
y2=x3+ax+b;4a3+27b2≠0y^2=x^3+ax+b;4a^3+27b^2 \ne 0y2=x3+ax+b;4a3+27b2̸=0
(5)椭圆曲线示例

(6)非椭圆曲线示例

2.3 椭圆曲线阿贝尔群
(1)椭圆曲线加法运算:
给定点A和点B,C’点为AB延长线与曲线的交点,做其对称点C,那么A+B=C

计算A+A,做A的切线与曲线上B相交,B的对称点C即为A+A结果,A+A=C

(2)交换群(阿贝尔群)性质
在数学中,群是一种代数结构,由一个集合以及一个二元运算所组成。已知集合和运算(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=ea*a^{-1} = a^{-1}*a = ea∗a−1=a−1∗a=e
- 交换性:a∗b=b∗aa*b= b*aa∗b=b∗a
2.4 有限域椭圆曲线
椭圆曲线是连续的,并不适合用于加密;所以,我们必须把椭圆曲线变成离散的点,我们要把椭圆曲线定义在有限域上。
我们给出一个有限域FpF_pFp
- FpF_pFp中有ppp(ppp为质数)个元素v0,1,2,…, p-2,p-1$
- FpF_pFp的加法是a+b≡c(mod  p)a+b≡c(\mod p)a+b≡c(modp)
- FpF_pFp的乘法是a×b≡c(mod  p)a×b≡c(\mod p)a×b≡c(modp)
- FpF_pFp的除法是a÷b≡c(mod  p)a÷b≡c(\mod p)a÷b≡c(modp),即 a×b−1≡c(mod  p)a×b^{-1}≡c (\mod p)a×b−1≡c(modp),b−1b-1b−1也是一个000到p−1p-1p−1之间的整数,但满足b×b−1≡1(mod  p)b×b-1≡1 (\mod p)b×b−1≡1(modp)
- FpF_pFp的单位元是111,零元是000
- FpF_pFp域内运算满足交换律、结合律、分配律
椭圆曲线Ep(a,b)E_p(a,b)Ep(a,b),ppp为质数,x,y∈[0,p−1]x,y∈[0,p-1]x,y∈[0,p−1]
y2=x3+ax+b(mod  p)y^2=x^3+ax+b(\mod p)y2=x3+ax+b(modp)
选择两个满足下列约束条件的小于ppp的非负整数a、ba、ba、b
4a3+27b2≠0(mod  p)4a^3+27b^2 \ne 0(\mod p)4a3+27b2̸=0(modp)
在有限域上的椭圆曲线自然也是有其加法的,但是已经不是几何意义上的加法了

对于椭圆曲线上一点 GGG ,若存在最小的正整数 nnn ,使得 nG=O∞nG=O∞nG=O∞ ,则称 nnn 为 $Gv 的阶。对于有限域上的的所有点都是有阶的。
2.5 椭圆曲线加密(ECC)
(1)初始化
利用ECCECCECC进行加密首先需要给出p,a,b,G,np,a,b,G,np,a,b,G,n。其中:
- ppp通常选取一个很大的素数以防止穷举
- aaa和bbb是椭圆曲线的参数
- GGG为给定的椭圆曲线上的点
- nnn为GGG的阶
椭圆曲线加密正是利用了前面所说的给定自然数m计算mGmGmG很容易而给定mGmGmG的结果无法很快计算mmm这一个性质。
(2)ECC保密通信的算法
- AliceAliceAlice选定曲线Ep(a,b)Ep(a,b)Ep(a,b),并在上面取一点G作为基点,以及选区私钥k并计算公钥K=kG;
- AliceAliceAlice将Ep(a,b),K,GE_p(a,b),K,GEp(a,b),K,G发送给BobBobBob;
- BobBobBob接收消息之后首先将信息m编码到点MMM,并产生一个随机整数r(r<n)r(r < n)r(r<n);
- BobBobBob计算C1=M+rKC_1=M + rKC1=M+rK 和C2=rGC2 = rGC2=rG并将C1,C2C_1,C_2C1,C2发送给AliceAliceAlice;
- AliceAliceAlice计算C1−kC2C_1−kC_2C1−kC2即可得到MMM,解密B得到消息mmm
3 Bilinear Groups(双线性对映射)
3.1 性质

(1) 一般性质
- a.G1=G2G1=G2G1=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.因为对于GGG中的一个生成元ggg,总存在整数p、qp、qp、q使得 P=gp和Q=gqP=g^p和Q=g^qP=gp和Q=gq成立;
- c.因此有e(P,Q)=e(gp,gq)=e(g,g)pq=e(g,gpq)=e(gq,gp)=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,yz)=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)
4 BLS Short Signature Scheme
(Boneh, Lynn, and Shacham 短签名机制)

Verify(验证):e(g,σ)=e(g,H(m)x)=e(g,H(m))x=e(gx,H(m))=e(PK,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))
5 Identity Based Cryptosystems
5.1 IBE算法,包括四个过程Setup,Extract,Encrypt,Decrypt:
(1) Setup: 安全参数kkk作为输入,输出系统参数paramsparamsparams和主密钥master−keymaster-keymaster−key,其中系统参数包含了对有限明文空间MMM和密文空间CCC的描述;系统参数是公开的,主密钥只有 PKG (Private Key Generator)拥有;
(2)Extract: 将params,master−keyparams,master-keyparams,master−key以及随机的身份ID∈{0,1}∗ID \in \{0,1\}^*ID∈{0,1}∗作为输入,返回私钥ddd,ID是一个随机的字符串被视作公钥,ddd是对应的私钥;
(3)Encrypt: 输入params,ID,m∈Mparams,ID,m \in Mparams,ID,m∈M,返回密文c∈Cc \in Cc∈C;
(4)Decrypt: 输入params,ID,c∈Cparams,ID,c \in Cparams,ID,c∈C以及私钥ddd,返回明文m∈Mm \in Mm∈M
5.2 IBE算法具体设计
2001年,BonehBonehBoneh和FranklinFranklinFranklin正式给出IBE的定义,安全模型,并应用双线性对(BilinearMapBilinear MapBilinearMap)构造了一个安全的IBEIBEIBE方案:



5.3 通俗方案
(1)Setup:根据安全参数kkk选取循环群GGG,生成元ggg,阶为素数ppp,第三方(KGC)选取主密钥mk∈Zpmk \in Z_pmk∈Zp,计算公钥Pk=gmk∈GP_k=g^{mk} \in GPk=gmk∈G;
(2)Extract:用户将自己的IDIDID作为公钥发送给第三方,第三方返回其私钥SID=H(ID)mk∈GS_{ID}=H(ID)^{mk} \in GSID=H(ID)mk∈G,其中HHH为映射到群内元素的哈希算法;
(3)Encrypt:选取m∈Mm \in Mm∈M,随机数r∈Zp∗r \in Z_p^*r∈Zp∗,计算<c1=gr,c2=e(H(ID)r,Pk)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=c2e(SID,c1)m=\frac{c_2}{e(S_{ID},c_1)}m=e(SID,c1)c2
6 Certificateless Public Key Cryptography
6.1 基本介绍
(1)定义:无证书加密是IBE方案的一种变体,目的是为了解决IBE方案面临的密钥托管(密钥由凭证管理中心或者KGC生成)的问题
(2)方案:传统的密钥生成过程从KGC和用户分开,KGC首先生成一个密钥对,此时的私钥只是系统的部分私钥,然后由用户随机生成最终的密钥
剩余系
如果一个剩余系中包含了这个正整数 nnn 所有可能的余数(一般地,对于任意正整数nnn,有 nnn 个余数:0,1,2,...,n−10,1,2,...,n−10,1,2,...,n-10,1,2,...,n−10,1,2,...,n−10,1,2,...,n−1),那么就被称为是模n的一个完全剩余系,记作ZnZ_nZn;而简化剩余系就是完全剩余系中与n互素的数的那些元素,记作 Zn∗Z_n^*Zn∗
ZnZ_nZn里面的每一个元素代表所有模nnn意义下与它同余的整数。例如n=5n=5n=5时,Z5Z_5Z5的元素333实际上代表了3,8,13,18,....,5k+3(k∈N)3, 8, 13, 18,....,5k + 3(k \in N)3,8,13,18,....,5k+3(k∈N), 这些模555余333的数。我们把满足同余关系的所有整数看作一个同余等价类。
浙公网安备 33010602011771号