1.一种基于属性加密的区块链隐私数据访问控制方法,包括如下步骤:
(1)初始化:
(1a)输入系统安全参数1λ,生成阶为素数p的第一乘法循环群G0、第二乘法循环群G1和有限域Zp,随机选择第一乘法循环群G0的生成元g,定义双线性映射e:G0×G0→G1;
(1b)从有限域Zp中选取N个元素作为系统属性,组成系统属性集合S,按照属性之间的相关性将S中的属性划分到n棵树中,设第i棵树的深度为li,定义l=max{li}i∈[1,n]表示n棵树的最大深度,i∈[1,n];
(1c)随机选择第一向量U=(uθ)1≤θ≤l和第二向量U′=(u′θ′)1≤θ′≤n,其中,uθ表示属性树的第θ层对应的公开参数,uθ∈G0,u′θ′表示第θ′棵属性树对应的公开参数,u′θ′∈G0;定义为有限域Zp中与p互素的元素集合,在中选择两个大小不同的随机数α和β,计算公开参数Y=e(g,g)α,生成系统参数PK和主私钥MK:
PK=(G0,g,gβ,Y,U,U′),
MK=(α,β);
(2)身份注册:
(2a)使用者向系统提出注册申请,获取与其真实身份信息对应的身份标识ID及使用者属性集合Su,并提交给权威中心CA,其中使用者包括普通用户和监管中心,监管中心获取的属性权限高于其管辖范围内普通用户的属性权限,
(2b)权威中心CA验证使用者的身份标识ID及使用者属性集合Su的正确性,若正确,执行步骤(3),否则,终止注册;
(3)密钥分发:
(3a)权威中心CA对使用者属性集合Su中第j个属性aj,计算其属性私钥dj、私钥参数Dj和权限参数集合D′j;
(3b)权威中心CA计算该使用者的私钥SK:
其中,D=g(α+r)/β是该使用者的私钥SK中的部分密钥;
(3c)权威中心CA将该使用者的私钥SK通过安全信道发送给该使用者秘密保存;
(4)加密交易隐私数据:
(4a)交易方A制定访问控制策略P,并通过线性秘密共享体制LSSS构造访问控制结构(M,ρ),其中M是c行d列的生成矩阵,ρ是将集合{1,2,…,δ,...,d}中的元素映射到密文策略属性集L中属性的映射,密文策略属性集L是访问控制策略P中所有属性的集合;
(4b)选择随机秘密值生成秘密值s的d个秘密份额{sδ}δ∈[1,d],其中,sδ是秘密值s的第δ个秘密份额,δ∈[1,d];
(4c)对于密文策略属性集L中的第j′个属性aj′,计算其属性密文Cj′和策略参数C′j;
(4d)交易方A输入要加密的交易明文信息m,生成密文E:
其中,是包含交易明文信息m的部分密文,C=gβs是包含秘密值s的部分密文;
(5)上传交易数据:
(5a)交易方A通过安全签名算法Sig对密文E及附加验证信息M′进行签名,将生成的初步签名文件σA发给交易方B;
(5b)交易方B收到初步签名文件σA,解密其中的密文E,查看交易信息正确无误后,对初步签名文件σA进行签名,生成最终签名文件σB,并广播至区块链;
(6)执行交易:
(6a)系统在一段时间内选出记账最快最好的记账员F;
(6b)记账员F将包含这段时间内所有交易信息的数据区块在区块链中广播,区块链中每个节点都可以对该数据区块中的交易信息进行验证,如果交易信息真实有效,就将该区块添加到区块链中;
(6c)记账员F使用加法同态算法对交易双方A和B的账户余额进行变更;
(7)访问密文:
(7a)用户或监管中心在查看某条交易信息的具体内容前,首先验证自己的属性集合Su是否满足访问控制策略P:
若不满足,则无法正确执行解密操作;
若满足,则选出满足访问控制策略P的授权集合S′u,执行步骤(7b),其中,
(7b)在授权集合S′u中选出能覆盖密文策略属性aj′的使用者属性aj,其中aj∈Su;
(7c)计算使用者属性aj的解密权限值d′j和双线性对
(7d)对区块链中交易信息的密文E解密,得到交易明文信息m。
2.根据权利要求1所述的方法,其特征在于,步骤(3a)中计算属性私钥dj、私钥参数Dj和属性权限参数集合D′j,按照如下公式计算:
其中,g是第一乘法循环群G0的生成元,r是用于抵抗共谋攻击的随机数,u′i表示第i棵属性树对应的公开参数,h是使用者属性aj在属性树中的深度,uk是属性树第k层的公开参数,ajk是使用者属性aj的路径Rj=(aj0,aj1…,ajk,…,ajh)中第k层的相应属性,k∈[0,h],rj是属性随机数,rj∈Zp,是属性树第h+1层到第li层的公开参数。
3.根据权利要求1所述的方法,其特征在于,步骤(4b)中计算秘密值s的d个秘密份额{sδ}δ∈[1,d],按照如下公式计算:
sδ=Mδ·v,
其中,sδ是与策略属性aj′对应的秘密值s的第δ个秘密份额,Mδ是生成矩阵M的第δ行,δ∈[1,d],随机向量v=(s,v2,…,vc)T,s是随机选择的秘密值,v2,…,vc是从有限域Zp中随机选择的c-1个随机数。
4.根据权利要求1所述的方法,其特征在于,步骤(4c)中计算属性密文Cj′和策略参数C′j′,按照如下公式计算:
其中,u′i′表示第i′棵属性树对应的公开参数,h′是策略属性aj′在属性树中的深度,uk′是属性树第k′层的公开参数,aj′k′是策略属性aj′的路径Rj′=(aj′0,aj′1,…,aj′k′,...,aj′h′)中第k′层的相应属性,k′∈[0,h′],g是第一乘法循环群G0的生成元,sδ是与策略属性aj′对应的秘密值s的第δ个秘密份额,δ∈[1,d]。
5.根据权利要求1所述的方法,其特征在于,步骤(5a)中的交易方A通过安全签名算法Sig对密文E及附加验证信息M′进行签名,按照如下公式进行:
其中,σA是交易方A签名后的初步签名文件,附加验证信息M′包含了比特币的金额数量和来源信息,sA是交易方A的签名私钥,||表示级联运算,IDA是交易方A的身份标识。
6.根据权利要求1所述的方法,其特征在于,步骤(5b)中对初步签名文件σA进行签名,按照如下公式进行:
其中,σB是交易方B生成的最终签名文件,sB是交易方B的签名私钥,IDA是交易方A的身份标识,IDB是交易方B的身份标识,||表示级联运算。
7.根据权利要求1所述的方法,其特征在于,步骤(7b)中在授权集合Su′中选出能覆盖策略属性aj′的使用者属性aj,需同时满足以下条件:#
使用者属性aj在第i棵属性树中,策略属性aj′在第i′棵属性树中,二者之间满足:i=i′;
使用者属性aj的深度h与策略属性aj′的深度h′之间满足:h≤h′;
使用者属性aj的路径Rj=(aj0,aj1,…,ajk,…,ajh)与策略属性aj′的路径Rj′=(aj′0,aj′1,…,aj′k′,...,aj′h′)之间满足:当k=k′时,ajk=aj′k′,其中k∈[0,h],k′∈[0,h′]。
8.根据权利要求1所述的方法,其特征在于,步骤(7c)中计算解密权限值d′j和双线性对Ajδ,按如下公式计算:
其中,dj是属性私钥,是权限参数集合D′j中的元素,表示使用者属性aj的权限参数,aj′,h+1,aj′,h+2,...,aj′h′是密文策略属性aj′的路径Rj′=(aj′0,aj′1,…,aj′k′,...,aj′h′)中第h+1层到第h′层的相应属性,rj是随机数,rj∈Zp,Cj′是策略属性aj′的属性密文,Dj是策略属性aj′的私钥参数,C′j′是策略属性aj′的策略参数,sδ是与策略属性aj′对应的秘密值s的第δ个秘密份额。
9.根据权利要求1所述的方法,其特征在于,步骤(7d)中对区块链中交易信息的密文E解密,按如下公式计算:
其中,m为解密后的交易明文信息,是包含交易明文信息m的部分密文,C是包含秘密值s的部分密文,D是使用者私钥SK中的部分密钥,λδ为集合{λδ}δ∈I中第δ个参数,λδ∈Zp,集合{λδ}δ∈I是根据LSSS方案的重构性质得到的参数集合,I={δ:ρ(δ)∈S′u},ρ(δ)表示用映射ρ将δ映射到密文策略属性集L中的策略属性aj′。