1.一种具有前向安全性的组密钥分发方法,假设组内有n个用户{U1,U2,…,Un},用户Uk随机创建的一个t次对称二元多项式:fk(x,y)=(ak00+ak10x+ak01y+ak11xy+ak20x2+ak02y2+ak21x2y+ak12xy2+ak22x2y2+…+akttxtyt)mod q,其中q是一个大素数,akij=akji;此外,有n+1个常数是公开信息{x1,x2,…,xn,x’};k=1,2,…,n;ak00、…、aktt是二元多项式fk(x,y)的系数,由用户Uk随机选择;k=1,2,…,n;
其特征在于,所述方法包括以下步骤:
步骤1:系统初始化;
步骤1的具体实现包括以下子步骤:
步骤1.1:用户Uk随机创建一个t次对称二元多项式fk(x,y),并分别将x1,x2,…,xn,x’作为第一参数带入到二元多项式fk(x,y)中,产生n+1个t次一元多项式:fk(x1,y),fk(x2,y),…,fk(xn,y),fk(x’,y);
步骤1.2:用户Uk通过安全信道将fk(xl,y)和fk(x’,y)发送给用户Ul,l=1,2,…,k-1,k+
1,…,n;
步骤1.3:用户Uk创建一个n×n的二维表Ak,并将表里的n×n个元素初始化为0;
步骤2:每个用户检测步骤1中其他用户随机生成的二元多项式是否是对称的t次二元多项式;
若是,则继续执行步骤3;
若否,则终止执行或重启初始化过程;
步骤3:具有前向安全性的组密钥分发;
步骤4:组密钥的安全获取。
2.根据权利要求1所述的具有前向安全性的组密钥分发方法,其特征在于,步骤2的具体实现内包括以下子步骤:步骤2.1:用户Uk验证收到的2(n-1)个一元多项式(f1(xk,y),f2(xk,y),…,fk-1(xk,y),fk+1(xk,y),…,fn(xk,y),f1(x’,y),f2(x’,y),…,fk-1(x’,y),fk+1(x’,y),…,fn(x’,y))是否均是t次一元多项式;
步骤2.2:用户Uk通过验证等式f1(xk,x’)=f1(x’,xk),f2(xk,x’)=f2(x’,xk),…,fk-1(xk,x’)=fk-1(x’,xk),…,fn(xk,x’)=fn(x’,xk)是否成立来确定收到的2(n-1)个一元多项式是否均是由对称二元多项式产生的;
首先计算 和 然后验证等式 是否
成立,如果成立,则说明2(n-1)个一元多项式均是由对称二元多项式产生的;
如果上述两个验证均通过,则说明用户Uk收到的2(n-1)个一元多项式是合法的,即它们均是由对称的二元t次多项式产生的。
3.根据权利要求2所述的具有前向安全性的组密钥分发方法,其特征在于:假设用户Uk(k∈{1,2,…,n})要向组内的m个用户 发起组内安全通信,m
则步骤3的具体实现内包括以下子步骤:
步骤3.1:用户Uk随机选择一个组密钥key,然后计算他与用户Ur1之间的“用户对密钥”:keyk,r1=(fk(xk,xr1)+fk(x’,xk+xr1+Ak[k][r1]×x’))mod q,计算他与用户Ur2之间的“用户对密钥”:keyk,r2=(fk(xk,xr2)+fk(x’,xk+xr2+Ak[k][r2]×x’))mod q,…,计算他与用户Urm之间的“用户对密钥”:keyk,rm=(fk(xk,xrm)+fk(x’,xk+xrm+Ak[k][rm]×x’))mod q;
步骤3.2:用户Uk更新自己的二维表Ak,以便下一次Uk与{Ur1,Ur2,…,Urm}这些用户之间生成新的“用户对密钥”从而实现前向安全性;
首先随机生成m个随机数r1′,r′2,…,r′m,然后对Ak进行更新:Ak[k][r1]=(Ak[k][r1]+r1′)modq,Ak[k][r2]=(Ak[k][r2]+r2′)modq,…,
Ak[k][rm]=(Ak[k][rm]+r′m)modq;
步骤3.3:基于对称加密算法E和“用户对密钥”对组密钥和随机数进行加密得到如下密文: 并将这些密文分别发送给用户Ur1,Ur2,…,Urm。
4.根据权利要求3所述的具有前向安全性的组密钥分发方法,其特征在于,步骤4的具体实现包括以下子步骤:步骤4.1:用户Url计算他与用户Uk之间的“用户对密钥”:keyk,rl=(fk(xrl,xk)+fk(x’,xk+xrl+Arl[k][rl]×x’))mod q,接着用密钥keyk,rl对 进行解密得到组密钥key和随机数rl′;l=1,2,…,m;
步骤4.2:用户Url根据随机数rl′更新自己的二维表Arl:Arl[k][rl]=(Ak[k][rl]+rl′)modq。