1.一种支持批验证的安全多方认证方法,其特征在于,该方法包括以下步骤:系统管理员选取安全参数,生成系统公开参数和主私钥,并将所述系统公开参数写入区块链;
系统管理员利用所述系统公开参数和主私钥,为每个用户分配属性向量和用户标签,具体包括:针对每个用户Uj,系统管理员为其指定一个二进制属性向量其中,αj,l=1表示该用户拥有属性al∈A,αj,l=0表示该用户不拥有属性al∈A,1≤j≤n,1≤l≤m;
针对每个用户Uj,系统管理员根据 中元素的取值对二进制属性向量 进行分割,得到两个分割属性向量 和
针对每个用户Uj,系统管理员计算用户标签为其中矩阵乘法为域Zp上的运算,Lj,1=(θj,1,1,θj,1,2,…,θj,1,m)以及针对每个用户Uj,系统管理员随机选取参数 并计算到公开参数和 其中 和 表示循环群G上的幂运算;
系统管理员将属性向量 和用户标签Lj发送给用户Uj;
并将生成的用户公开参数写入区块链;所述主私钥表示为 其中,m×m的可逆矩阵S1=[si,j]m×m和S2=[ti,j]m×m,si,j∈Zp以及ti,j∈Zp,Zp表示域, 表示m维的向量;针对认证需求,系统管理员利用所述系统公开参数和主私钥生成一个密文谓词标签,并写入区块链,具体包括:
针对本次认证需求,系统管理员指定一个二进制标签向量 其中,αl,l=1表示子集B包含属性al∈A,αl,l=0表示子集B不包含属性al∈A;
针对本次认证需求,系统管理员根据 中元素的取值对二进制标签向量 进行分割,得到两个分割标签向量 和
针对本次认证需求,系统管理员计算密文谓词标签为其中矩阵乘法为域Zp上的运算;
针对本次认证需求,系统管理员选取门限值τ,该门限值满足针对本次认证需求,系统管理员随机选取一个认证参数系统管理员将密文谓词标签 门限值τ和认证参数δ写入区块链;
每个用户利用所述系统公开参数和所述密文谓词标签生成自己的元数据并写入区块链,具体包括:每个用户Uj验证下式是否成立:其中,·表示Zp上的向量内积运算;如果上式成立,说明用户Uj是满足谓词条件的用户,则用户Uj继续执行后续步骤,否则终止执行后续步骤;
每个用户Uj构造如下一元函数:根据认证参数 计算得到函数值ψj(δ),并使用多项式长除法计算得到一元函数记χj(x)的系数向量为(χj,0,χj,1,…,χj,2m);
每个用户Uj计算得到元数据
每个用户Uj将自己的用户标签Lj=(Lj,1,Lj,2)和元数据Γj写入区块链;
每个用户利用所述系统公开参数批量验证其他用户的元数据是否正确,如果正确则继续挑选出满足谓词条件的合法用户,以完成认证过程,具体包括:每个用户Uj根据其他用户Uz的标签Lz=(Lz,1,Lz,2)、元数据Γz以及公开参数Dz,计算得到中间参数 以及 其中,1≤z≤n且z≠j;
每个用户Uj验证下式是否成立:Cz表示用户Uz的公开参数;
若成立,则断定其他所有用户的元数据均合法,否则,说明某些用户的元数据不合法,用户Uj进一步单独对每个用户的元数据进行验证。
2.根据权利要求1所述一种支持批验证的安全多方认证方法,其特征在于,所述系统公开参数表示为:
其中,G和GT表示素数p阶的循环群, G×G→GT表示双线性映射运算, 表示m维向量,d0,d1,d2,...,d2m表示参数,g表示生成元,c表示域Zp上的非0元素, 表示域Zp的非零元素子集{1,2,..,p‑1}。
3.根据权利要求1所述的一种支持批验证的安全多方认证方法,其特征在于,所述挑选出满足谓词条件的合法用户,具体包括:使用以下方法单独对每个其他用户Uz的元数据进行验证,对不能通过验证的用户进行剔除:
用户Uj针对合法的用户的集合U'中的每个用户Uz∈U'验证下式是否成立:如果成立,则说明该用户Uz∈U'的属性集满足预定的谓词条件,从而成功完成对用户Uz∈U'的认证;否则,认定用户Uz∈U'不合法。
4.一种支持批验证的安全多方认证系统,采用权利要求1所述的一种支持批验证的安全多方认证方法,其特征在于,该系统包括:系统初始化模块,用于生成系统公开参数和主私钥,并将所述系统公开参数写入区块链;
用户属性分配模块,用于利用系统公开参数和主私钥,为每个用户分配属性向量和用户标签,并将生成的用户公开参数写入区块链;
认证初始化模块,用于利用所述系统公开参数和主私钥生成一个密文谓词标签,并写入区块链;
认证响应模块,用于利用所述系统公开参数和所述密文谓词标签生成自己的元数据并写入区块链;
验证模块,用于利用所述系统公开参数批量验证其他用户的元数据是否正确,如果正确则继续挑选出满足谓词条件的合法用户,以完成认证过程。
5.一种计算机可读存储介质,存储计算机程序,采用权利要求1所述的一种支持批验证的安全多方认证方法,其特征在于,所述计算机程序被处理器运行时执行如下步骤:选取安全参数,生成系统公开参数和主私钥,并将所述系统公开参数写入区块链;
利用所述系统公开参数和主私钥,为每个用户分配属性向量和用户标签,并将生成的用户公开参数写入区块链;
利用所述系统公开参数和主私钥生成一个密文谓词标签,并写入区块链;
利用所述系统公开参数和所述密文谓词标签生成自己的元数据并写入区块链;
利用所述系统公开参数批量验证其他用户的元数据是否正确,如果正确则继续挑选出满足谓词条件的合法用户,以完成认证过程。