一、攻击/安全威胁

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+a1​XYZ+a3​YZ2=X3+a2​X2Z+a4​XZ2+a6​Z3

(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&lt;n)r(r &lt; 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∗​,计算&lt;c1=gr,c2=e(H(ID)r,Pk)m&gt;&lt;c_1=g^r,c_2=e(H(ID)^r,P_k)m&gt;<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的数。我们把满足同余关系的所有整数看作一个同余等价类。