Policy-based Chameleon Hash for Blockchain Rewriting with Black-box Accountability (基于策略的变色龙哈希和具有黑盒问责的区块链重写)
这篇文章是ACSAC20上的一篇区块链相关论文,并且友好的在文中附上了源码链接,供大家进行实验仿真,还是不错的,且论文写的也非常好,比较适合阅读。以下是我个人在读后记录的笔记和个人的理解,理解还有许多不足,建议还是看原文!
- 原文链接:Policy-based Chameleon Hash for Blockchain Rewriting with Black-box Accountability
文章目录预览
-
- 一、背景与贡献预备知识
-
- 二、 预备知识
-
- 2.1 ABET、CHET、PCH和ABE名词解释:
- 2.2 双线性映射
- 2.3 基于属性密文策略的具有黑盒可追溯的加密技术
- 2.4 数字签名
- 三、主要内容
-
- 3.1 系统模型
- 3.2 应用(重点1)
- 3.3 实例化和实施(重点2)
- 四、总结心得
一、背景与贡献预备知识
1.1 写作背景
文章开篇,国际惯例。首先介绍区块链相关背景,然后引出了重写区块链的必要性,并指出目前主要为两种类型的区块链重写(若对背景不是很了解的可以结合related work一起看):
- 1)区块级重写:直接用变色龙哈希替换传统区块Merkle树根节点的哈希值。
- 2)交易级重写:发生在特定区块中的交易上。Derler等人介绍了基于策略变色龙哈希(PCH)的区块链重写,它包括以下特性。首先,PCH支持交易级重写。其次,PCH通过使用基于属性加密ABE实现了细粒度的区块链重写,具体来说,访问策略被嵌入到交易和具有PCH陷门的交易修改者中,若其对应的PCH陷门的属性满足嵌入式访问策略则可以修改交易。
动机:基于PCH的区块链重写会有安全问题,例如交易修改者可能滥用重写特权,并在不被识别的情况下恶意重写区块链。交易修改者可以否认他对交易的恶意重写,因为其他具有不同PCH陷门的交易修改者可能满足交易中嵌入的相同访问策略。这种安全威胁存在的原因是因为加密原语ABE有一个固有的属性:匿名。
另外,问责制是区块链重写的关键。
1.2 主要过程和贡献
本文引入基于策略的变色龙哈希和黑盒问责(PCHBA),用于确保区块链重写、实现匿名和问责,若对修改后的交易无争议,则交易修改者仍然是匿名的。主要过程如下:
- (1)上传过程:Owner上传可变交易,并输出一个基于策略的变色龙哈希值,该哈希值包括一个密文和一个签名。在此过程中,owner加密一个临时陷门,并附上签名,它还可以限制指定方可以解密这个临时陷门。(为了在基于策略的变色龙哈希中生成签名,所有者使用ta的签名密钥和签名将临时陷门随机化)
- (2)修改过程:若Modifier同时拥有AA所给的变色龙密钥和解密获得的PCH中的临时陷门,则才允许修改者重写可变交易。它还可以使用自身的签名密钥和签名随机化相同的临时陷门,以此来链接消息-签名对,从而实现可靠性。
- (3)黑盒问责过程:
- 第一步,找到链接的交易(给定一组交易,公众与相同临时陷门相关联,所以他们可以链接相应的消息签名对,从而将交易链接到其修改后的版本);
- 第二步,找到被指定的修改者(给定一个访问黑盒,ABET的黑盒可追溯性,公众都可以通过访问黑盒交互获得一组被指定的修改者);
- 第三步,将修改的交易链接到可靠的修改者(由于PCHBA的匿名性确保了可变交易不会透露修改者身份信息,只有AA可以使用其主密钥将修改的交易链接到可靠的修改者)。
黑盒问责两层含义:
- 1)任何公共用户都可以识别一组被指定的交易修改者,其PCH陷门被用于生成访问设备/黑盒。该访问黑盒包括不同交易修改者的各种改写权限;
- 2)在对修改后的交易发生争议的情况下,属性授权机构(AA)可以将修改后的交易与负责的交易修改者联系起来(即一对一映射)。
主要贡献:
- 1)通用框架:介绍了第一个PCHBA(具有黑盒问责的基于策略的变色龙哈希)的通用框架用于区块链的重写,它不允许交易修改者拒绝对该修改者所修改的任何交易进行恶意重写。
- 2)实例化:给出了一个PCHBA实例,并通过实施和评价验证其实用性。
二、 预备知识
2.1 ABET、CHET、PCH和ABE名词解释:
- (1)基于属性加密的黑盒可追溯(ABET):由基于密文策略的属性加密(CP-ABE)方案和匿名层次结构的基于身份加密(HIBE)方案构造了ABET方案。
- 1)主密钥对结合CP-ABE和HIBE的密钥对;
- 2)解密密钥与HIBE身份层次结构中深度 i i i 处的一组属性和身份相关联,密文与深度 j j j 处的一个访问策略和另一个身份相关联;
- 3)若属性集满足访问策略且 j ≤ i j\leq i j≤i,则进行解密。深度 i i i 比 j j j 更接近根节点,也确保黑盒的可追溯性。
- 为了构造真实的ABET,依赖方案[9]中的CP-ABE和方案[14]中的HIBE,并用非对称配对 e : G × H → G T e: \mathbb{G} \times \mathbb{H}\to \mathbb{G}_T e:G×H→GT将ABET扩展到一个匿名版本。基本思想为:修改者的解密密钥中基于身份的元素属于G组,密文中基于身份的元素属于H组(若主密钥未知,密文可以隐藏修改者身份)。
- 并提出了一种新的复合假设,证明了ABET的语义安全性:决策线性指数(DLE),它是基于标准的决策线性(DLIN)[9]和双线性Diffie-hellman指数(BDHE)[14]。
- 并提出了一个新的假设,证明了ABET的密文匿名性:扩展的决策性Diffier-hellman(eDDH),它在非对称环境下扩展了标准的DDH。
- (2)带有临时陷门的变色龙哈希(CHET)
- (3)基于策略的变色龙哈希(PCH)
- (4)基于属性加密(ABE)
2.2 双线性映射
令 ( g , h ) (g,h) (g,h)表示两个群生成器,给定安全参数 λ \lambda λ作为输入,输出群 G , H \mathbb{G},\mathbb{H} G,H。我们定义 ( g , h ) (g,h) (g,h)的输出为 ( q , G , H , G T , e ) (q,\mathbb{G},\mathbb{H},\mathbb{G}_T, e) (q,G,H,GT,e),其中 q q q是一个素数, G , H \mathbb{G},\mathbb{H} G,H和 G T \mathbb{G}_T GT是阶为 q q q的循环群,双线性映射 e : G × H → G T e:\mathbb{G}\times\mathbb{H}\to \mathbb{G}_T e:G×H→GT满足:
- 1)双线性: ∀ g , h ∈ G \forall g,h\in G ∀g,h∈G和 a , b ∈ Z q a,b\in \mathbb{Z}_q a,b∈Zq,我们有 e ( g a , h b ) = e ( g , h ) a b e(g^a,h^b)=e(g,h)^{ab} e(ga,hb)=e(g,h)ab。
- 2)非退化性:在 G T \mathbb{G}_T GT中, ∃ g ∈ G \exists g\in \mathbb{G} ∃g∈G使得 e ( g , h ) e(g,h) e(g,h)具有 q q q阶。我们假设群操作 G , H \mathbb{G},\mathbb{H} G,H和 G T \mathbb{G}_T GT和双线性映射 e e e关于 λ \lambda λ在多项式时间上是可计算的。将 G 和 H \mathbb{G}和\mathbb{H} G和H视为源群, G T \mathbb{G}_T GT作为目标群。
定义决策线性指数(DLE):给定群生成器 g ∈ G g \in \mathbb{G} g∈G和 h ∈ H h \in \mathbb{H} h∈H,定义以下分布是可忽略的。(见原文公式)
定义扩展的决策性Diffier-hellman(eDDH):给定群生成器 g ∈ G g \in \mathbb{G} g∈G和 h ∈ H h \in \mathbb{H} h∈H,定义以下分布是可忽略的。(见原文公式)
2.3 基于属性密文策略的具有黑盒可追溯的加密技术
单调跨度程序(MSP)(重点理解MSP):一个具有秘密领域的秘密共享方案 ∏ \prod ∏ 实现了访问结构 Λ \Lambda Λ,被称为在 Z q \mathbb{Z}_q Zq上是线性的。如果满足以下两个条件:
- 1)秘密 s ∈ Z q s\in \mathbb{Z}_q s∈Zq对每个属性的份额构成了 Z q \mathbb{Z}_q Zq上的一个向量;
- 2)对每个访问结构 Λ \Lambda Λ都存在一个矩阵M有 n 1 n_1 n1行和 n 2 n_2 n2列称为 ∏ \prod ∏的共享生成矩阵。对于 u = 1 , . . . , n 1 u=1,...,n_1 u=1,...,n1,本文从属性域 U \mathbb{U} U中的属性 π ( u ) \pi(u) π(u)定义一个函数 π \pi π标记M的行 u u u。考虑列向量 v ˉ = ( s , r 2 , . . . , r n 2 ) T \bar{v} = (s,r_2,...,r_{n_2})^T vˉ=(s,r2,...,rn2)T,其中 s ∈ Z q s\in \mathbb{Z}_q s∈Zq是共享的秘密,而 r 2 , . . . , r n 2 ∈ Z q r_2,...,r_{n_2}\in \mathbb{Z}_q r2,...,rn2∈Zq是随机选取的。后面还有一段,这里就不再赘述(首先自己不是很理解,其次码公式挺花时间的)
密文策略的ABET:由以下算法构成 A B E T = ( S e t u p , K e y G e n , E n c , D e c , T r a c e ) ABET = (Setup, KeyGen, Enc, Dec, Trace) ABET=(Setup,KeyGen,Enc,Dec,Trace)假设索引(或标识)空间为 { 1 , . . . , k } \{1,...,k\} {1,...,k},其中 k k k表示系统中的用户总数。
- 1) S e t u p ( 1 λ ) → ( m s k , m p k ) Setup(1^{\lambda})\to (msk, mpk) Setup(1λ)→(msk,mpk)
- 2) K e y G e n ( m s k , δ ) → s s k i KeyGen(msk, \delta)\to ssk_i KeyGen(msk,δ)→sski: δ \delta δ表示用户的属性集, s s k i ssk_i sski表示解密密钥。
- 3) E n c ( m p k , m , Λ , j ) → C Enc(mpk, m, \Lambda, j)\to C Enc(mpk,m,Λ,j)→C: m m m表示消息, Λ \Lambda Λ表示访问结构, j ∈ { 1 , k + 1 } j\in \{1,k+1\} j∈{1,k+1}表示索引, C C C表示密文,其包含了 Λ \Lambda Λ。
- 4) D e c ( m p k , C , s s k i ) → m Dec(mpk, C, ssk_i)\to m Dec(mpk,C,sski)→m:且 1 = Λ ( δ ) Λ ( j ≤ i ) 1 =\Lambda(\delta) \Lambda (j\leq i) 1=Λ(δ)Λ(j≤i)成立。
- 5) T r a c e ( m p k , D , ϵ ) → K T Trace(mpk, \mathbb{D}, \epsilon)\to \mathbb{K}_T Trace(mpk,D,ϵ)→KT: D \mathbb{D} D表示一个与属性集 δ D \delta_\mathbb{D} δD相关联的密钥解密设备, ϵ > 0 \epsilon>0 ϵ>0表示与 λ \lambda λ相关的多项式参数, K T \mathbb{K}_T KT表示指定用户的解密密钥索引集合。
2.4 数字签名
一个数字签名方案 ∑ \sum ∑包括 ( S e t u p , K e y G e n , S i g n , V e r i f y ) (Setup, KeyGen, Sign, Verify) (Setup,KeyGen,Sign,Verify)四个算法构成。
- 1)简单的密钥生成。 S e t u p ( 1 λ ) → p p Setup(1^\lambda )\to pp Setup(1λ)→pp、 K e y G e n ( p p ) → ( s k , v k ) KeyGen(pp)\to (sk, vk) KeyGen(pp)→(sk,vk),其中 v k vk vk是通过确定性算法由 s k sk sk生成的, K e y G e n ′ ( p p , s k ) → v k KeyGen'(pp,sk)\to vk KeyGen′(pp,sk)→vk。
- 2)线性的密钥。 K e y G e n ′ ( p p , s k + Δ ( s k ) ) = M v k ( p p , K e y G e n ′ ( p p , s k ) , Δ ( s k ) ) KeyGen'(pp, sk+\Delta(sk)) = M_{vk}(pp, KeyGen'(pp,sk), \Delta(sk)) KeyGen′(pp,sk+Δ(sk))=Mvk(pp,KeyGen′(pp,sk),Δ(sk)),其中 M v k M_{vk} Mvk表示由 p p pp pp的确定性算法, v k vk vk表示验证密钥, Δ ( s k ) \Delta(sk) Δ(sk)表示一个位移值作为输入,输出一个位移验证密钥 v k ′ vk' vk′。 Δ \Delta Δ表示两个密钥之间的差值或位移。
- 3)线性的签名。两个相同的分布 { Sign ( p p , s k + Δ ( s k ) , m ) → σ ′ } \{\operatorname{Sign}(p p, s k+\Delta(s k), m)\to \sigma'\} {Sign(pp,sk+Δ(sk),m)→σ′} 和 { σ ′ ← M Σ ( p p , v k , m , σ , Δ ( s k ) ) } \left\{\sigma^{\prime} \leftarrow M_{\Sigma}(p p, v k, m, \sigma, \Delta(s k))\right\} {σ′←MΣ(pp,vk,m,σ,Δ(sk))},其中 σ ← Sign ( p p , s k , m ) \sigma \leftarrow \operatorname{Sign}(p p, s k, m) σ←Sign(pp,sk,m), 和 M Σ M_{\Sigma} MΣ表示由 p p pp pp的确定性算法, ( m , σ ) (m, \sigma) (m,σ)表示消息签名对,输出位移签名 σ ′ \sigma' σ′。
- 4)线性的验证。要求验证 V e r i f y ( p p , M v k ( p p , v k , Δ ( s k ) ) , m , M Σ ( p p , v k , m , σ , Δ ( s k ) ) ) = 1 Verify\left(pp, M_{vk}(pp, vk, \Delta(sk)), m, M_{\Sigma}(pp, vk, m, \sigma, \Delta(s k))\right)=1 Verify(pp,Mvk(pp,vk,Δ(sk)),m,MΣ(pp,vk,m,σ,Δ(sk)))=1, 并且 V e r i f y ( p p , v k , m , σ ) = 1 Verify(p p, v k, m, \sigma)=1 Verify(pp,vk,m,σ)=1
三、主要内容
3.1 系统模型
系统模型主要包括三种类型的用户:属性授权机构(AA)、交易所有者(Owner)和交易修改者(Modifier)。
如下图,owner将哈希对象(可变交易)附加到区块链中,之后由AA授予重写权限的modifier来修改哈希对象,而哈希链的链接则保持不变。若修改后的交易发生争议,AA可以决定修改后的交易是否确实被该modifier修改。
基于策略的变色龙哈希(PBCHA)包含以下算法:
- 1) S e t u p ( 1 λ ) → ( s k , p k ) Setup(1^\lambda)\to(sk,pk) Setup(1λ)→(sk,pk):输入安全参数 λ \lambda λ,输出变色龙哈希密钥对 ( s k , p k ) (sk, pk) (sk,pk)。
- 2) K e y G e n ( s k , δ ) → s k δ KeyGen(sk, \delta)\to sk_\delta KeyGen(sk,δ)→skδ:将变色龙的私钥 s k sk sk,和属性集 δ ∈ U \delta \in \mathbb{U} δ∈U作为输入,输出密钥 s k δ sk_{\delta} skδ,它是由身份 I D ′ ID' ID′索引。
- 3) H a s h ( p k , m , ∧ , I D ) → ( h , r , δ ) Hash(pk, m, \land, ID)\to (h,r,\delta) Hash(pk,m,∧,ID)→(h,r,δ):将变色龙的公钥 p k pk pk,消息 m ∈ M m\in \mathbb{M} m∈M,策略 ∧ \land ∧和身份 I D ID ID作为输入,输出变色龙哈希值 h h h,随机数 r r r和签名 σ \sigma σ。在这个过程后,变色龙哈希值 h h h出现在区块链中。请注意 M = { 0 , 1 } ∗ \mathbb{M}=\{0, 1\}^* M={0,1}∗表示一般消息空间。
- 4) V e r i f y ( p k , m , h , r , σ ) → b = { 0 , 1 } Verify(pk, m, h, r, \sigma)\to b=\{0,1\} Verify(pk,m,h,r,σ)→b={0,1}:将变色龙的公钥 p k pk pk,消息 m m m,变色龙哈希值 h h h,随机数 r r r,和签名 δ \delta δ作为输入,输出一个位 b b b。
- 5) A d a p t ( s k δ , m , m ′ , h , r , δ , I D ′ ) → r ′ Adapt(sk_{\delta},m,m',h,r,\delta,ID')\to r' Adapt(skδ,m,m′,h,r,δ,ID′)→r′:将密钥 s k δ sk_\delta skδ,消息 m m m和 m ′ m' m′,变色龙哈希值 h h h,随机数 r r r,签名 δ \delta δ和身份 I D ′ ID' ID′作为输入,若 1 = ∧ ( δ ) 1=\land(\delta) 1=∧(δ)和 I D ≤ I D ′ ID\leq ID' ID≤ID′,则输出新随机数 r ′ r' r′。
- 6) J u d g e ( s k , T , O ) Judge(sk, \mathbb{T}, O) Judge(sk,T,O):将变色龙的私钥 s k sk sk,交易集 T \mathbb{T} T和访问黑盒 O O O中的一组被指控身份作为输入,输入一个(或多个)链接的交易标识对。
安全模型:在许可区块链中,交易所有者是诚实的一方,假设属性权威机构是诚实方,则需考虑三种安全保证,包括不可区分性、抗碰撞性和问责性。
3.2 应用(重点1)
这小节给出了PCHBA在区块链重写中的应用。在high-level,即使某些基于策略的可变交易已经被修改,区块链保持完整。每个区块存储一组交易,并且TX_ROOT在一个区块内累积的所有交易。(如下图中Merkle树的根哈希)
表示AA的一方,包括变色龙公钥 p k pk pk使用与地址owner公钥对应密钥下签署的交易。AA为系统中所有modifier发出秘密密钥。若交易所有者ID希望将某些基于策略的交易附加到区块链中,则必须使用 H a s h ( p k , m , ∧ , I D ) Hash(pk, m,\land,ID) Hash(pk,m,∧,ID)对这些交易进行哈希。
如上图所示,一个区块 B i B_i Bi累积四笔交易 T ( i , 1 ) , T ( i , 2 ) , T ( i , 3 ) , T ( i , 4 ) T_{(i,1)},T_{(i,2)},T_{(i,3)},T_{(i,4)} T(i,1),T(i,2),T(i,3),T(i,4),其中 T ( i , 1 ) T_{(i,1)} T(i,1)和 T ( i , 3 ) T_{(i,3)} T(i,3)是基于策略的交易,它们具有不同的访问策略和相同的身份 ( ∧ ( i , 1 ) , I D ) (\land_{(i,1)},ID) (∧(i,1),ID)、 ( ∧ ( i , 3 ) , I D ) (\land_{(i,3)},ID) (∧(i,3),ID),它们是由交易所有者ID选择。其余交易照常处理,即 T ( i , 2 ) T_{(i,2)} T(i,2)和 T ( i , 4 ) T_{(i,4)} T(i,4)使用传统的抗碰撞哈希函数H进行哈希。
当需要修改基于策略的交易时,交易修改者ID‘与变色龙密钥 s k δ ′ sk_\delta ' skδ′满足 ( ∧ ( i , 1 ) , I D ) (\land_{(i,1)},ID) (∧(i,1),ID)、 ( ∧ ( i , 3 ) , I D ) (\land_{(i,3)},ID) (∧(i,3),ID)(例如 1 = ∧ ( i , 1 ) ( δ ′ ) 1=\land_{(i,1)}(\delta ') 1=∧(i,1)(δ′)和 I D ≤ I D ′ ID\leq ID' ID≤ID′)可以计算哈希值A和C的有效碰撞(或随机数),并提供新的随机数。现在,修改者广播新的随机数到区块链网络。所有参与者都验证新随机数的正确性(即验证算法),并通过用新的随机数替换旧的随机数来更新区块链的本地副本。由于交易中的随机数、签名和密文并不包含在聚合的哈希计算中,而是作为交易/区块的非哈希部分提供,所以PREV_H的值永远不会被修改。
若某些交易是使用PCHBA创建的,可以确保:1)不可区分性,给定一个随机数,任何公共用户都无法确定与交易 T ( i , 1 ) T_{(i,1)} T(i,1)(或 T ( i , 3 ) T_{(i,3)} T(i,3))相关的随机数是使用Hash还是Adapt算法创建的;2)抗碰撞性,使得只有交易修改者ID’具有足够的重写权限来重写区块链;3)问责性,即如果对修改后的交易存在争议,AA可以将每一笔修改后的交易关联到一个负责的交易修改者。
3.3 实例化和实施(重点2)
这个小节给出了PCHBA的实例化,和实现与评估分析。首先,为了启动CHET,可以使用[19]中基于离散对数(DL)的变色龙哈希构造。同时,基于RSA和基于DL的变色龙哈希具有双线性映射[19]。其次,选择CP-ABE方案[9]和匿名HIBE方案[14]来实例化ABET。
为了构建一个实际的ABET,我们需要底层ABE方案中密文的大小是恒定的(即,与系统中的用户数量无关)。因此,本文依赖于最近的ABE方案[9]和HIBE方案[14]。然后,后面是具体实例化过程,实验评估。
在ABET方案中,给哈希函数 H 1 H_1 H1提供两种类型的输入: ( y , l , t ) (y, l , t) (y,l,t)或 ( v , l , t ) (v , l, t) (v,l,t),其中 y y y是任意字符串, v v v是一个正整数, l ∈ 1 , 2 , 3 l\in {1, 2, 3} l∈1,2,3和 t ∈ 1 , 2 t\in {1, 2} t∈1,2。把两个输入表示为 y l t ylt ylt和 0 v l t 0vlt 0vlt,其中 0 0 0用于区分第一种格式。将用户的身份表示为向量,并假设交易修改者身份为 I D i = ( I 1 , . . . , I i ) ∈ ( Z q ) i ID_i = (I_1,...,I_i)\in (Z_q)^i IDi=(I1,...,Ii)∈(Zq)i,交易所有者身份为 I D j = ( I 1 , . . . , I j ) ∈ ( Z q ) j ID_j = (I_1,...,I_j)\in (Z_q)^j IDj=(I1,...,Ij)∈(Zq)j,且 j ≤ i j\leq i j≤i。定义 I D i ID_i IDi更靠近根节点, I D j ID_j IDj更靠近叶子节点。本文允许交易修改者 I D i ID_i IDi解密由交易所有者 I D j ID_j IDj生成的基于策略密文。
- (1) S e t u p ( 1 λ ) Setup(1^\lambda) Setup(1λ):输入安全参数λ,输出
- 1)变色龙密钥对 ( s k , p k ) = ( x , h x ) (sk, pk)= (x, h^x) (sk,pk)=(x,hx),其中 x ∈ Z q ∗ x\in Z_q^* x∈Zq∗;
- 2)主公钥 m p k = ( g , h , H 1 , H 2 , T 1 , T 2 , { g 1 α , . . . , g k α } , { h 1 , . . . , h k } , g α , h d / α , h 1 / α , h β / α ) mpk =(g, h, H_1, H_2, T_1, T_2,\{g_1^\alpha, ...,g_k^\alpha\},\{h_1,...,h_k\},g^\alpha,h^{d/\alpha},h^{1/\alpha},h^{\beta/\alpha}) mpk=(g,h,H1,H2,T1,T2,{g1α,...,gkα},{h1,...,hk},gα,hd/α,h1/α,hβ/α)
- 3)主私钥 m s k = ( a 1 , a 2 , b 1 , b 2 , α , β , g d 1 , g d 2 , g d 3 , { z 1 , ⋯ , z k } ) msk =\left(a_{1}, a_{2}, b_{1}, b_{2}, \alpha, \beta, g^{d_{1}}, g^{d_{2}}, g^{d_{3}},\left\{z_{1}, \cdots, z_{k}\right\}\right) msk=(a1,a2,b1,b2,α,β,gd1,gd2,gd3,{z1,⋯,zk})
- 其中 ( a 1 , a 2 , b 1 , b 2 , α , β ) ∈ Z q ∗ , ( d 1 , d 2 , d 3 ) ∈ Z q , { z 1 , . . . , z k } ∈ Z q , d = d 1 + d 2 + d 3 (a_{1}, a_{2}, b_{1}, b_{2}, \alpha, \beta)\in Z_q^*, (d_1,d_2, d_3)\in Z_q,\{z_1,...,z_k\}\in Z_q, d= d_1+d_2 +d_3 (a1,a2,b1,b2,α,β)∈Zq∗,(d1,d2,d3)∈Zq,{z1,...,zk}∈Zq,d=d1+d2+d3, g g g是群 G \mathbb{G} G的生成元, h h h是群 H \mathbb{H} H的生成元, ( G , H , G T ) (\mathbb{G}, \mathbb{H}, \mathbb{G}_T) (G,H,GT)阶为 q q q的群, H 1 = h a 1 , H 2 = h a 2 , T 1 = e ( g , h ) d 1 a 1 + d 3 / α , T 2 = e ( g , h ) d 2 a 2 + d 3 / α , { g 1 , . . . , g k } = { g z 1 , . . . , g z k } H_1=h^{a_1},H_2=h^{a_2}, T_1=e(g, h)^{d_1a_1+d_3/\alpha}, T_2=e(g,h)^{d_2a_2+d_3/\alpha},\{g_1,...,g_k\}=\{g^{z_1},...,g^{z_k}\} H1=ha1,H2=ha2,T1=e(g,h)d1a1+d3/α,T2=e(g,h)d2a2+d3/α,{g1,...,gk}={gz1,...,gzk},和 { h 1 , . . . , h k } = { h z 1 , . . . , h z k } \{h_1,...,h_k\}=\{h^{z_1},...,h^{z_k}\} {h1,...,hk}={hz1,...,hzk}。
- (2) K e y G e n ( s k , δ ) KeyGen(sk, \delta) KeyGen(sk,δ):输入变色龙秘密密钥 s k sk sk和属性集 δ \delta δ,输出秘密密钥 s k δ t = ( x , s s k i ) sk_{\delta_t}=(x, ssk_i) skδt=(x,sski)。
- 1)选择 ( r 1 , r 2 ) ∈ Z q ∗ , R ∈ Z q , r = r 1 + r 2 (r_1,r_2)\in Z_q^*, R\in Z_q, r=r_1+r_2 (r1,r2)∈Zq∗,R∈Zq,r=r1+r2,计算 s k 0 = ( h b 1 r 1 , h b 2 r 2 , h ( r 1 + r 2 ) / α , g 1 / α , g r / α , g R ) sk_0 = (h^{b_1r_1}, h^{b_2r_2},h^{(r_1+r_2)/\alpha},g^{1/\alpha},g^{r/\alpha},g^R) sk0=(hb1r1,hb2r2,h(r1+r2)/α,g1/α,gr/α,gR)。
- 2)选择 σ y ∈ Z q \sigma_y \in Z_q σy∈Zq,所有 y ∈ δ y\in \delta y∈δ和 t = { 1 , 2 } t = \{1, 2\} t={1,2},计算 s k y , t = H 1 ( y 1 t ) b 1 r 1 / a t ⋅ H 1 ( y 2 t ) b 2 r 2 / a t ⋅ H 1 ( y 3 t ) r 1 + r 2 α a t g σ y α a t sk_{y,t}=H_1(y1t)^{b_1r_1/a_t} ·H_1(y2t)^{b_2r_2/a_t} ·H_1(y3t) ^{\frac{r_1+r_2}{\alpha a_t}} g^{\frac{\sigma_y}{\alpha a_t}} sky,t=H1(y1t)b1r1/at⋅H1(y2t)b2r2/at⋅H1(y3t)αatr1+r2gαatσy,和集合 s k y = ( s k y , 1 , s k y , 2 , g − σ y ) \mathrm{sk}_{y}=\left(\mathrm{sk}_{y, 1}, \mathrm{sk}_{y, 2}, g^{-\sigma_{y}}\right) sky=(sky,1,sky,2,g−σy)
- 3)选择 σ ′ ∈ Z q \sigma^{\prime} \in Z_{q} σ′∈Zq,对于 t = { 1 , 2 } t = \{1, 2\} t={1,2},计算 s k t ′ = g d t ⋅ H 1 ( 011 t ) b 1 ⋅ r 1 / a t ⋅ H 1 ( 012 t ) b 2 ⋅ r 2 / a t ⋅ H 1 ( 013 t ) r 1 + r 2 α ⋅ a t ⋅ g σ ′ α ⋅ a t \mathrm{sk}_{t}^{\prime}=g^{d_{t}} \cdot H_{1}(011 \mathrm{t})^{b_1 \cdot r_{1} / a_t} \cdot H_{1}(012 \mathrm{t})^{b_2 \cdot r_2/ a_t} \cdot H_1(013t)^{\frac{r_1+r_2}{\alpha \cdot a_t}} \cdot \mathrm{g}^{\frac{\sigma^{\prime}}{\alpha \cdot a_t}} skt′=gdt⋅H1(011t)b1⋅r1/at⋅H1(012t)b2⋅r2/at⋅H1(013t)α⋅atr1+r2⋅gα⋅atσ′,和集合 s k ′ = ( s k 1 ′ , s k 2 ′ , g d 3 ⋅ g − σ ′ ) \mathrm{sk}^{\prime}=\left(\mathrm{sk}_{1}^{\prime}, \mathrm{sk}_{2}^{\prime}, g^{d_{3}} \cdot g^{-\sigma^{\prime}}\right) sk′=(sk1′,sk2′,gd3⋅g−σ′)
- 4)最后计算 s k 1 = g d ⋅ I D ^ i α ⋅ r ⋅ g β ⋅ R , s k 2 = { g i − 1 α ⋅ r , ⋯ g 1 α ⋅ r } \mathrm{sk}_{1}=g^{d} \cdot \widehat{I D}_{i}^{\alpha \cdot r} \cdot g^{\beta \cdot R}, \mathrm{sk}_{2}=\left\{g_{i-1}^{\alpha \cdot r}, \cdots g_{1}^{\alpha \cdot r}\right\} sk1=gd⋅ID iα⋅r⋅gβ⋅R,sk2={gi−1α⋅r,⋯g1α⋅r},解密密钥为 s s k i = ( s k 0 , { s k y } y ∈ δ , s k ′ , s k 1 , s k 2 ) s s k_{i}=\left(s k_{0},\left\{s k_{y}\right\}_{y \in \delta}, s k^{\prime}, s k_{1}, s k_{2}\right) sski=(sk0,{sky}y∈δ,sk′,sk1,sk2),在解密密钥中,交易修改者的身份(标识)表示为 I D ^ i = g k I 1 ⋯ g i I l ⋅ g ∈ G \widehat{I D}_{i}=g_{k}^{I_{1}} \cdots g_{i}^{I_{l}} \cdot g \in \mathbb{G} ID i=gkI1⋯giIl⋅g∈G。
- (3) H a s h ( p k , m , M , I D j ) Hash(pk, m , M, ID_j) Hash(pk,m,M,IDj):在策略 ( M , π ) (M ,\pi) (M,π)下哈希一个消息 m ∈ Z q m\in Z_q m∈Zq和身份 I D j = ( I 1 , . . . , I j ) ID_j = (I_1, ...,I_j) IDj=(I1,...,Ij),交易所有者执行以下操作:
- 1)选择随机数 r ∈ Z q ∗ r\in Z_q^* r∈Zq∗,计算 p = p k r p=pk^r p=pkr。
- 2)选择临时陷门R,计算 e = H 2 ( R ) , h ′ = h e e = H_2(R),h'=h^e e=H2(R),h′=he,R表示一个最短字符串。
- 3)计算变色龙哈希 b = p ⋅ h ′ m b = p·h'^{m} b=p⋅h′m
- 4)生成签名/验证密钥对 ( s k , v k ) (sk, vk) (sk,vk),其中 ( s k , v k ) = ( s , I D ^ j α ⋅ s ) , ( s 1 , s 2 ) ∈ Z q ∗ , s = s 1 + s 2 (s k, v k)=\left(s, \widehat{I D}_{j}^{\alpha \cdot s}\right),\left(s_{1}, s_{2}\right) \in \mathbb{Z}_{q}^{*}, s=s_{1}+s_{2} (sk,vk)=(s,ID jα⋅s),(s1,s2)∈Zq∗,s=s1+s2。
- 5)使用策略 ( M , π ) (M,\pi) (M,π)和身份 I D j ID_j IDj生成在消息 M = ( r , R ) M=(r, R) M=(r,R)上的密文。(后面太长省略)
- 6)生成签名 e p k = g e s k , σ = e s k + s k ⋅ H 2 ( e p k ∣ ∣ c ) epk = g^{esk},\sigma = esk+sk·H_2(epk||c) epk=gesk,σ=esk+sk⋅H2(epk∣∣c),其中 ( e s k , e p k ) (esk, epk) (esk,epk)表示临时密钥对, c = h s k + ( R ∣ ∣ 0 l − ∣ R ∣ ) c = h^{sk +(R||0^{l-|R|})} c=hsk+(R∣∣0l−∣R∣)表示签名消息。
- 7)输出 ( m , p , h ′ , b , C , c , e p k , σ ) (m ,p, h', b, C, c, epk, \sigma) (m,p,h′,b,C,c,epk,σ)。
- (4) V e r i f y ( p k , m , p , h ′ , b , C , c , e p k , σ ) Verify(pk, m, p, h',b, C, c, epk, \sigma) Verify(pk,m,p,h′,b,C,c,epk,σ):任何公共用户都可以验证给定一个哈希 ( b , h ′ ) (b, h') (b,h′)是有效的, 如果 b = p ⋅ h ′ m b = p·h'^m b=p⋅h′m且 e ( g α , c t 2 ) σ = e ( e p k , c t 1 ) ⋅ e ( g , c t 3 ) H 2 ( e p k ∣ ∣ c ) e(g^\alpha, ct_2)^\sigma=e(epk,ct_1)·e(g,ct_3)^{H_2(epk||c)} e(gα,ct2)σ=e(epk,ct1)⋅e(g,ct3)H2(epk∣∣c), c t 1 = v k ct_1 = vk ct1=vk,则输出1。
- (5) A d a p t ( s k δ t , m , m ′ , p , h ′ , b , C , c , e p k , σ , I D i ) Adapt(sk_{\delta_t},m,m',p,h',b,C,c,epk,\sigma,ID_i) Adapt(skδt,m,m′,p,h′,b,C,c,epk,σ,IDi):带有密钥 s k δ t sk_{\delta_t} skδt的交易修改者,一个新消息 m ′ ∈ Z q m'\in Z_q m′∈Zq,身份 I D i = ( I 1 , . . . , I i ) ID_i = (I_1,...,I_i) IDi=(I1,...,Ii),执行以下操作:
- 1)检查 1 = ? Verify ( p k , m , p , h ′ , b , C , c , e p k , σ ) 1 \stackrel{?}{=} \operatorname{Verify}\left(\mathrm{pk}, m, p, h^{\prime}, b, C, c, e p k, \sigma\right) 1=?Verify(pk,m,p,h′,b,C,c,epk,σ)。
- 2)检索加密的临时陷门R。(后面太长省略)
- 3)获取加密的随机数 r r r。(后面太长省略)
- 4)派生出一个适应性随机数 r ′ = r + ( m − m ′ ) ⋅ e / x r'=r+(m-m')·e/x r′=r+(m−m′)⋅e/x,并计算 p ′ = p k r ′ p'=pk^{r'} p′=pkr′,其中 e = H 2 ( R ) e =H_2(R) e=H2(R)。
- 5)生成一个签名/验证密钥对 ( s k ′ , v k ′ ) (sk',vk') (sk′,vk′),其中 ( s k ′ , v k ′ ) = ( s ′ , I D ^ i α ⋅ s ′ ) , ( s 1 ′ , s 2 ′ ) ∈ Z q ∗ (sk',vk')=\left(s^{\prime}, \widehat{I D}_{i}^{\alpha \cdot s^{\prime}}\right),\left(s_{1}^{\prime}, s_{2}^{\prime}\right) \in \mathbb{Z}_{q}^{*} (sk′,vk′)=(s′,ID iα⋅s′),(s1′,s2′)∈Zq∗, and s ′ = s 1 ′ + s 2 ′ s^{\prime}=s_{1}^{\prime}+s_{2}^{\prime} s′=s1′+s2′。
- 6)使用随机数 ( s 1 ′ , s 2 ′ ) (s_1',s_2') (s1′,s2′)、策略 ( M , π ) (M, \pi) (M,π)和身份 I D i ID_i IDi,在消息 M ′ = ( r ′ , R ) M'=(r',R) M′=(r′,R)上生成密文 C ′ C' C′。
- 7)生成签名 e p k ′ = g e s k ′ , σ ′ = e s k ′ + s k ′ ⋅ H 2 ( e p k ′ ∥ c ′ ) e p k^{\prime}=g^{e s k^{\prime}}, \sigma^{\prime}=e s k^{\prime}+s k^{\prime} \cdot \mathrm{H}_{2}\left(\mathrm{epk}^{\prime} \| \mathrm{c}^{\prime}\right) epk′=gesk′,σ′=esk′+sk′⋅H2(epk′∥c′),其中 c ′ = h s k ′ + ( R ∥ 0 l − ∣ R ∣ ) c^{\prime}=h^{s k^{\prime}+\left(R \| 0^{l-|R|}\right)} c′=hsk′+(R∥0l−∣R∣)。
- 8)输出 ( m ′ , p ′ , h ′ , b , C ′ , c ′ , e p k ′ , σ ′ ) \left(m^{\prime}, p^{\prime}, h^{\prime}, b, C^{\prime}, c^{\prime}, e p k^{\prime}, \sigma^{\prime}\right) (m′,p′,h′,b,C′,c′,epk′,σ′)。
- (6) J u d g e Judge Judge算法就懒得码了,超长…
四、总结心得
本文提出了一个基于策略的变色龙哈希的通用框架,该框架具有黑盒问责,用于区块链重写。该方案可以帮助阻止任何变色龙陷门持有者的恶意改写区块链。最后给出了一个实际实例,来表明本方案适合于区块链应用程序。
文章中的公式确实多,证明也比较复杂,需要花时间耐心阅读,本人暂且也是一知半解,上面应该有许多理解(翻译)不对的地方,建议看原文比较好!后续若有修改或更深的理解,也会相应的更新。