1.一种基于区块链的协同细粒度访问控制方法,其特征在于,包括:S1:用户终端构造资源访问请求,并利用资源访问服务器的区块链公钥对该资源访问请求加密后发送给所述资源访问服务器,所述资源访问请求中包含用户终端的身份信息以及待访问的资源列表,所述身份信息包括用户终端根据区块链管理平台的指示生成的用户终端区块链身份标识IDuser以及身份属性证书,所述用户终端中存储有资源管理者为其分发的授权凭证,所述授权凭证为所述资源管理者根据为自身管理的每个身份属性生成的属性私钥和所述用户终端在请求授权过程中向该资源管理者发送的身份属性证书列表计算得到的凭证;
S2:所述资源访问服务器利用本地存储的自身的区块链私钥对接收到的资源访问请求进行解密,所述资源访问服务器的区块链私钥和区块链公钥为所述资源访问器在向所述区块链管理平台注册的过程中根据所述区块链管理平台的指示生成的私钥和公钥;
S3:所述资源访问服务器利用解密得到的IDuser确定对应用户终端的区块链公钥,并利用对应用户终端的区块链公钥验证解密得到的身份属性证书的真实性,所述用户终端的区块链公钥为所述用户终端在向所述区块链管理平台注册的过程中根据所述区块链管理平台的指示公钥;
S4:所述资源访问服务器在确定解密得到的身份属性证书真实后,利用该身份属性证书和预先存储的区块链管理平台用户属性撤销列表判断该用户终端是否有身份属性被撤销,如是,转至S5,否则,转至S6;
S5:所述资源访问服务器拒绝该用户终端的资源访问请求;
S6:所述资源访问服务器判断解密得到的资源列表中的资源的类型是否是数据类型,如是,转至S7,否则,转至S9;
S7:所述资源访问服务器生成数据密文,并使用用户终端的区块链公钥加密该数据密文后将该数据密文发送给对应的用户终端,所述数据密文中嵌有用于进行加密的加密属性集、经加密的数据消息以及加密属性公钥集,所述加密属性集为从资源管理者AAi管理的身份属性集合中选择出来用于加密的属性集合,所述加密属性公钥集为基于所述资源管理者为其管理的每个身份属性生成的属性公钥进行指数运算后得到的集合;
S8:用户终端利用自身的区块链私钥解密接收到的信息得到数据密文,并利用本地存储的授权凭证对该数据密文进行解密;
S9:所述资源访问服务器利用挑战应答协议实现对所述用户终端的认证,在认证通过后允许所述用户终端进行资源的访问,否则拒绝该用户终端的资源访问请求。
2.如权利要求1所述的基于区块链的协同细粒度访问控制方法,其特征在于,在步骤S1之前包括:
S11:用户终端、资源访问服务器和资源管理者注册到区块链管理平台中;
步骤S11包括:
S111:区块链管理平台初始化;
S112:用户终端、资源访问服务器和资源管理者根据所述区块链管理平台的指示生成各自的区块链公私钥对、区块链身份标识和身份属性证书;
S113:所述用户终端、资源访问服务器和资源管理者根据步骤S12的生成结果分别配置自身的区块链公私钥对、区块链身份标识和身份属性证书。
3.如权利要求2所述的基于区块链的协同细粒度访问控制方法,其特征在于,在步骤S11和步骤S1之间包括:
S12:各资源管理者初始化;存在N个资源管理者,且每一资源管理者各自管理一个身份属性集合,且各身份属性集合互不相交;
步骤S12包括:
S121:资源管理者AAi生成自己的主私钥yi;AAi表示第i个资源管理者,i∈[1,N];
N‑1
S122:AAi选取N‑1次的多项式fi(x)=ci,0+ci,1x+...+ci,N‑1x ,并根据该多项式的系数ci,k计算资源管理者AAi主私钥的背书值Ci,k,并向其他AAj广播自身的背书值,ci,0=yi,e(g,g)表示的双线性映射;
S123:资源管理者AAi计算自身主私钥的共享ti,j,并利用AAj的区块链公钥加密该共享发送给对应的AAj;
S124:AAj接收到AAi发送的共享,并利用自身的区块链私钥解密,并根据解密结果判断AAi是否是诚实的,如是,转至S126,否则,转至S125;
S125:AAi重新发送主私钥的共享给AAj,直至AAj判定AAi诚实为止;
S126:AAi利用接收到的其他所有资源管理者广播的主私钥的背书值计算的主公钥Y0;
S127:AAi为其管理的每个身份属性生成对应的属性私钥和属性公钥得到属性私钥集合{atti,m}和属性公钥集合{ATTi,m},其中, g表示双线性群的生成元,n为AAi管理的身份属性集合身份属性的总个数,atti,m表示AAi为其管理的第m个身份属性生成的属性私钥,ATTi,m表示AAi为其管理的第m个身份属性生成的属性公钥;
S128:AAi将所述属性公钥公布,并将自身的属性私钥存储在本地;
步骤S7中的数据密文中包括经主公钥Y0加密的数据消息。
4.如权利要求3所述的基于区块链的协同细粒度访问控制方法,其特征在于,步骤S123中通过公式 计算AAi主私钥的共享,其中 表示利用哈希函数H1对资源管理者AAj的区块链身份标识进行处理;
步骤S124包括:AAj利用自身的区块链私钥解密AAi发送的共享后判断是否成立,如是,则判定AAi是诚实的,否则,判定AAi是不诚实的;
步骤S126中通过公式 计算主公钥Y0。
5.如权利要求4所述的基于区块链的协同细粒度访问控制方法,其特征在于,在步骤S12与步骤S1之间还包括:
S13:资源管理者针对用户终端生成对应的授权凭证,并将该授权凭证发送给对应的用户终端;
步骤S13包括:
S131:用户终端构造授权凭证生成请求,并利用资源管理者的区块链公钥对该请求加密后发送给对应的资源管理者AAi,所述授权凭证生成请求中包括用户终端的区块链身份标识IDuser以及用户终端预先从本地存储的身份属性证书中选择出来的身份属性证书列表{ATTCerti},ATTCerti表示用户终端向资源管理者AAi发送的身份属性证书;
S132:资源管理者AAi利用自身的区块链私钥对接收到的授权凭证生成请求进行解密得到用户终端发送的区块链身份标识和身份属性证书列表;
S133:资源管理者AAi在验证用户的身份属性证书真实后利用用户终端的身份属性证书和预先存储的区块链管理平台用户属性撤销列表判断该用户终端是否有身份属性被撤销,如是,转至S134,否则,转至S135;
S134:资源管理者AAi拒绝为该用户终端生成授权凭证;
S135:资源管理者AAi根据请求中的身份属性证书列表确定用户终端的权限,为该用户终端发送的身份属性证书列表所指示的身份属性集中自己管理的身份属性生成用户终端对应的属性私钥,并利用自身的主私钥yi生成用户终端的全局私钥;
S136:资源管理者AAi利用用户终端的区块链公钥加密生成的属性私钥和全局私钥作为授权凭证发送给用户终端;
S137:用户终端在接收到授权凭证后利用自身的区块链私钥解密得到对应的属性私钥和全局私钥并存储在本地。
6.如权利要求5所述的基于区块链的协同细粒度访问控制方法,其特征在于,步骤S135包括:
S1351:资源管理者AAi针对区块链身份标识为IDuser的用户终端生成随机数 并选d‑1
取d‑1次的多项式pi(x)=ai,0+ai,1x+...+ai,d‑1x ,S1352:资源管理者AAi针对属性证书列表中自己管理的身份属性通过公式 生成用户终端对应的属性私钥Di,m,并通过公式 生成用户终端对应的全局私钥
7.如权利要求6所述的基于区块链的协同细粒度访问控制方法,其特征在于,步骤S7包括:
资源访问服务器对资源管理者AAi的每一属性公钥进行指数运算得到加密属性公钥集选取随机数s作为加密指数,输出密文CT并发送给对应的用户终端,其中,表示从资源管理者AAi管理的身份属性集合中选择出来的用于加密的加密属性集,M表示数据消息。
8.如权利要求7所述的基于区块链的协同细粒度访问控制方法,其特征在于,步骤S8包括:
S81:当 时,用户终端利用自己的属性私钥和加密属性集做配对运算恢复出资源管理者AAi为该用户终端生成的 表示该用户终端拥有的总属性集;
S82:用户终端利用恢复得到的 以及拉格朗日插值算法恢复出第一解密密钥S83:用户终端利用全局私钥 和密文中的C″计算得到第二解密密钥A;
A84:用户终端利用 和A解密密文中的C′得到数据消息M,
9.如权利要求1所述的基于区块链的协同细粒度访问控制方法,其特征在于,步骤S9包括:
S91:资源访问服务器生成临时访问许可TAP密文,利用用户终端的区块链公钥对该临时访问许可TAP密文加密后发送给对应的用户终端,所述临时访问许可TAP密文中包含用于进行加密的加密属性集、经加密的TAP消息以及加密属性公钥集;
S92:用户终端自身的区块链私钥解密接收到的信息得到TAP密文,并利用本地存储的授权凭证对该TAP密文进行解密得到访问许可明文;
S93:用户终端使用自身的区块链私钥签名访问许可明文,并将访问许可明文和签名通过该资源访问服务器的区块链公钥加密发送给该资源访问服务器;
S94:该资源访问服务器使用自身的区块链私钥解密并验证TAP,认证通过之后,允许该用户终端进行资源的访问,否则,拒绝该用户终端所有的资源访问请求。
10.如权利要求1‑9任一项所述的基于区块链的协同细粒度访问控制方法,其特征在于,所述方法还包括:
当某个用户终端的身份属性被撤销时,区块链平台发布用户身份属性撤销通知,并同步到所有实体共同维护的用户属性撤销列表中;
该用户终端重新注册到区块链身份管理平台,生成新的区块链身份标识和区块链公私钥对,重新获得授权凭证。