NANO: Cryptographic Enforcement of Readability and Editability Governance in Blockchain Databases | IEEE Journals & Magazine | IEEE Xplore
NANO 区块链数据库中可读性和可编辑性治理的加密实施方案
于2023年11月发表在CCF A类期刊 IEEE TDSC上
一.引言
最近,越来越多的区块链数据库(例如 BigchainDB、ChainifyDB 和 Postchain)在学术界和工业界涌现出来。与传统的集中式数据库不同,区块链数据库可以通过共识提供去中心化的环境,从而将数据所有权从中心化的权威转移到用户手中。此外,区块链数据库可以通过加密技术确保数据库中数据的完整性。因此,区块链数据库已经成为新兴的数据库范式,并存储了越来越多的个人和组织数据。
区块链数据库确保所有用户都可以以明文形式读取数据,但没有人可以编辑数据。然而,随着像 CCPA 和 GDPR 等新的数据法规的出现,加上数据的重要性不断增加,人们开始要求部署用于管理数据所有权的偏好设置(即可读性和可编辑性)。一些可编辑的区块链已经被提出,通过结合变色龙哈希和基于线性秘密共享矩阵的属性基加密技术,实现了对数据编辑的精细治理。
然而,现有的可编辑的基于区块链的数据库没有考虑到可读性治理,其中数据以明文形式存储,并且对所有用户可见,可能导致严重的数据泄露和滥用。
实现可读性治理的一种简单方式是引入额外的可读性策略来控制哪些用户可以读取数据。
然而,在实际应用此扩展面临着两个挑战。
1:策略隐私保护。在许多策略敏感的应用程序中(例如智能医疗和交通),这些访问策略包含大量的私人信息(例如健康状况和地理位置),应该受到保护。
2:高效的用户撤销。当用户丢失其密钥或滥用其编辑权限恶意编辑数据,有必要及时撤销这些被窃取的密钥。如果直接更新密钥和密文造成不可接受的区块链开销。
本文解决了上述两个挑战,并提出了一个以数据所有者为中心的许可区块链数据库(即 NANO),提供隐私保护和可撤销的向下兼容数据所有权治理。
即具有可编辑性权限的用户也被赋予可读性权限
NANO 在数据所有权治理中同时保护策略隐私。数据所有者可以指定精细的可读性和可编辑性策略,并隐藏。
NANO 实现了具有线性开销的高效用户撤销机制,在废除被撤销用户的密钥的同时保留其他用户的密钥。
表1展示了本方案与现有的相关方案在可读性和可编辑性治理,用户撤销,策略隐私,安全性方面的比较
二.预备知识
下面简要介绍基于牛顿插值公式的秘密共享和变色龙哈希的定义,这是NANO的组成部分。
基于牛顿插值公式的秘密共享可以生成一个秘密,并将其转换为多项式参数,以隐藏这个秘密。牛顿插值公式可以支持严格的向下兼容权限。
因此NANO选择其来分发变色龙哈希的陷门和数据的解密密钥。
包括秘密生成阶段:假设存在(n+1)个点(x0, y0), · · · ,(xn, yn)。插值点表示为xi,插值表示为 yi。给定一个插值多项式 f(x),对于所有的 i = 0, 1, 2, · · · , n,yi 可以表示为 yi = f(xi)。
下面计算牛顿基 ni(x)。当 i = 0 时,n0(x) = 1;否则,ni(x) = (x-x0) *(x-x1)*(x-xi-1)。
结合牛顿基ni(x),得到牛顿插值多项式 Qn(x)= ;参数 Ki 表示第 i 阶差商。秘密 s = Qn(0)
下面看一下差商的计算过程:
x的零阶差商就是f(x) K0就是x0的零阶差商 即f(x0)。
K1表示x0,x1的一阶差商,一阶差商可以由两个零阶差商计算得到,即:
二阶差商也是如此,将x1 x2一阶差商和x0 x1的一阶差商放到分子上相减,末项减首项做分母
以此类推 Ki表示x0到xi的i 阶差商。
随后,令 x = 0,计算牛顿参数 {ni(0)}i=0到n 以及参数 {Ki}i=0到n,并将其公布出去。
秘密重建阶段。由于牛顿插值多项式由i阶差商和第i个牛顿参数相乘 再对i=0到n求和,所以利用发布出去的差商和牛顿参数,就重建秘密 s=Qn(0)
然后是变色龙哈希,拥有变色龙哈希陷门的用户可以高效地计算出变色龙哈希碰撞;
对于没有陷门的其他用户,通过确保他们几乎无法找到有效的变色龙哈希碰撞来保持安全。其包括五个算法
首先是公共参数生成:给定安全参数 λ,算法输出公共参数 P P。假定 P P 被作为所有其他算法的隐式输入。
密钥生成:得到私钥 sk 和公钥 pk。
哈希生成:将公钥 pk 和消息 m 作为输入,算法输出一个变色龙哈希值 h 和一个随机值 r。
哈希验证:将公钥 pk、消息 m、哈希值 h 和随机值 r 作为输入,并输出一个决策 d。
如果 h 有效,则 d 等于 1,否则为 0。
消息修改:输入私钥 sk、消息m、新消息m ′、哈希值 h 和随机值 r。然后输出新的随机值 r ′。
三.系统架构
下面是NANO的系统架构,由三个实体组成:区块链节点(即服务节点和特权节点)
服务节点通常是服务提供商,负责存储来自数据所有者的数据并执行用户的数据查询请求。
特权节点,通常是数据库开发者或监管者,负责生成系统参数并监督区块链。
数据所有者通常是个人或组织,将加密数据上传至服务节点,并指定对应的访问策略。
用户按着对数据的访问权限分为:
未授权用户。未授权用户无法读取和编辑数据。
授权读者。授权读者可以读取但无法编辑数据。
授权编辑者。授权编辑者可以读取和编辑数据。
然后是问题表述 本文旨在解决的问题可以概括如下。
假设一个数据所有者利用可读性策略Pr和可编辑性策略Pe对消息m进行加密,并生成数据对(C, h, oh)。
随后,数据对被提交到服务节点。所有用户都可以验证对(C, h, oh)的有效性。
假设具有属性σ(西格玛)的用户试图访问消息。用户将他的属性结合起来生成查询陷门T
服务节点利用T查询相应的数据,而不会泄露用户的隐私。
假设用户具有可读性权限,那么σ中的属性应该包含Pr中的
如果Pr ̸⊂ σ,则是未授权用户,无法读取消息。
如果Pr ⊂ σ,则是授权读者,只能读取消息。
如果Pe ⊂ σ,则是授权编辑者,可以读取和编辑消息。
此外,如果发生用户撤销案例,服务节点可以利用用户符号γ(伽马)实现高效的用户撤销。
四.协议构造
系统设置算法:
给定安全参数λ,生成双线性群(p,g,G,GT,e),其中e是双线性映射。
用户的属性空间是U,U的大小是n。特权节点生成n个随机值{ri}i=1到n。随后计算
{Ri = g^ri } i=1到n。
接下来,将这三个抗碰撞哈希函数共享给特权节点。
最后,将主公钥mpk =(p,g,G,GT,e,{Ri}i=1到n,H1[·],H2[·],H3[·])发布给所有实体,每个特权节点设置主私钥msk = {ri} i=1到n。
密钥生成算法:
1 用户选择一个特权节点,并利用他的属性集σ请求密钥skσ。
2 在接收到密钥请求后,选定的特权节点生成随机值γ 作为用户标识。随后计算skσ ri从原本的n个随机数中找到属性集σ对应的部分
3 然后,特权节点将γ发送给服务节点,将skσ发送给用户。
如果需要吊销用户,服务节点只需删除相应的用户符号γ。之后,用户的密钥skσ将无效
哈希生成算法:
数据所有者向服务节点提交消息m,并为用户生成两个访问策略,即可读性策略Pr和可编辑性策略Pe。
接下来管理可读性策略,生成相关密文:
1.选择随机值o1和o2
2.将可读性策略Pr作为输入,按照以下方式生成牛顿参数Kr(i)和Nr,i(x):
其中Pr,i代表Pr中的第i个元素,Kr(i)代表牛顿插值多项式中的第i个差商。
3.基于牛顿参数Kr(i)和Nr,i(x),数据所有者计算多项式qr(x)如下:
其中qr(0) = 秘密s1,{ai} i=1到n-1 代表牛顿插值多项式系数。 另外,令x为0,计算{Nr,i(0)}i=0到Pr。
由前文可知:Kr(i) {Nr,i(0)}可以恢复出秘密s1
4.基于差商Kr(i)和牛顿基Nr,i(0),选择的随机值(o1,o2) 计算可读性策略的密文:
Cm为加密后的消息,C1可以解密Cm;C2和C3用来验证用户的属性集是否符合
然后,为处理可编辑性策略和哈希值验证,数据所有者执行以下操作:
1.选择随机值o3,o4和变色龙哈希陷门x。
2.生成类似于上述的新Newton参数Ke(i)和Ne,i(x)
3.基于Newton参数,计算牛顿插值多项式qe(x)如下:
其中qe(0) = 秘密s2,{bi}i=1到n−1 表示多项式系数。
4.然后,数据所有者计算可编辑性策略的密文:
Cx为陷门密文 C4可以解密出陷门;C5和C6用来验证用户的属性集是否符合,C7用来验证哈希值是否有效
5.接下来,数据所有者选择随机值oh 并生成密文哈希值h = H3[g H2[Cm] · g x·oh ](变色龙哈希)
6.最后,数据所有者生成总密文C = {Cm,{C1,i} Pr i=1,{C2,i} Pr i=1,C3,Cx,{C4,i} Pe i=1,{C5,i} Pe i=1,C6,C7},
包括 消息密文;可读性策略密文; 陷门密文;可编辑性策略密文; 以及哈希值h和随机值oh。
验证算法:
所有用户可以按照以下方式验证密文哈希的有效性:
如果上述方程成立,则密文哈希是有效的。
匹配算法:用户利用他的密钥skσ生成查询陷门T:
1.选择随机值α ∈ Zp。
2.将密钥skσ作为输入计算
T0 = g^α 。 T1,i = skσ,i^α。i=1到σ 即对用户的属性集进行加密(7)
3.用户生成陷门T = {T0,{T1,i} σ i=1}并将T发送给服务节点。
收到用户的陷门T后,服务节点首先执行可读性权限判断:
1.从其本地存储获取相应的用户符号γ。
2.从属性密文{T1,i} σ i=1选择出包含|Pr|个元素的序列Pr,1,并计算:
如果查询陷门T1包含的用户属性集满足可读性策略且用户标识γ有效,那么就能进行牛顿插值秘密共享的恢复过程,把秘密s1恢复出来,再与C3进行验证,推导过程见后面
如果方程8成立,则用户是授权读者,dm等于1。
然后,服务节点执行可编辑性权限判断:
从策略密文{T1,i} σ i中选择(|Pe| − |Pr|)个元素,并结合Pr,1构造序列Pe,1。
接下来,服务节点计算
(9)
如果查询陷门T1包含的用户属性集满足可编辑性策略且用户标识γ有效,那么就能进行牛顿插值秘密共享的恢复过程,把秘密s2恢复出来,再与C6进行验证,具体证明见后文
如果方程9成立,则用户是授权编辑者,dm等于2。
dm等于1,则服务节点将处理后的密文C∗r = {Cm,{C ∗ 1,i = C 1 γ 1,i} Pr i=1}和Pr,1返回给用户,Pr,1代表用户属性集用于可读性匹配的部分。
dm等于2,则服务节点将处理后的密文C∗e = {Cm,{C ∗ 1,i = C 1 γ 1,i} Pr i=1,Cx,{C ∗ 4,i = C 1 γ 4,i} Pe i=1,C7},oh,Pr,1和Pe,1返回给用户,
其中Pe,1代表用户属性集用于可编辑性匹配的部分。
注意这里的策略Pr1和Pe1从查询陷门T1选出 被用户加密的
Cm和C1可以解密出消息;Cx和C4可以解密出陷门;
否则,dm等于0,表示用户对此消息没有授权。
读取算法:
授权读者可以从服务节点获取C∗r和Pr,1。
然后,用户按以下操作读取消息:
将密钥skσ和用户属性序列Pr,1作为输入,计算
因为Pr1是匹配的,可以进行牛顿插值秘密共享的恢复过程,把秘密s1恢复出来,与Cm中的相抵消,解出消息m
编辑算法:
授权编辑者可以从服务节点获取C∗e ,Pr,1和Pe,1。然后,授权编辑者按以下操作修改消息:
首先将密钥skσ和用户属性序列Pe,1作为输入,
因为Pe1匹配,可以进行牛顿插值秘密共享的恢复过程,把秘密s2恢复出来,与Cx中的相抵消,解出陷门x
然后,授权编辑者选择新消息m ′,随机数o ′ 1 和秘密s ′ 1 ,并计算新密文C′ m
接下来,根据哈希h的计算方式,要保证其不变,就需要基于Cm,C′ m,x,oh,计算新随机值o ′ h
最后,授权编辑者选择随机数o′2o′3o′4 秘密s′2,生成新总密文C ′ = {C ′ m,{C ′ 1,i} P ′ r i=1,{C ′ 2,i} P ′ r i=1,C ′ 3 ,C ′ x ,{C ′ 4,i} P ′ e i=1,{C ′ 5,i} P ′ e i=1,C ′ 6 ,和新的随机值o ′ h ,类似于HashGen阶段。
五.安全性分析
下面证明了NANO在可读性治理和可编辑性治理方面的正确性。
定理1. 在NANO中,仅当用户的属性集σ满足数据所有者的可读性策略,即Pr ⊂ σ时,dm等于1且用户是授权读者。
证明:主要关注Match和Read阶段的正确性。
在匹配阶段,服务节点从加密后用户属性集中选择一个序列Pr,1计算
在读取阶段,用户基于他的密钥skσ,用户计算
根据牛顿插值公式,仅当策略Pr被满足,即Pr ⊂ σ时,可以恢复出秘密s1,并且这两个方程成立。才能完成匹配和读取过程。
定理2. 在NANO中,仅当用户的属性集σ满足数据所有者的可编辑性策略,即Pe ⊂ σ时,dm等于2且用户是授权编辑者。
证明:与定理1类似,首先证明在匹配阶段确定用户是否是授权编辑者的正确性。
服务节点从加密后的用户属性集中构造出序列Pe1,然后计算
接下来,在编辑阶段,用户基于他的密钥skσ,计算
根据牛顿插值公式,仅当策略Pe被满足,即当Pe⊂σ时,用户才能恢复变色龙哈希陷门x。
然后,基于恢复的变色龙哈希陷门x,为保证哈希值h不变,即满足以下等式,计算出新随机值o′h
因此,定理2被证明。
定理. NANO的安全性意味着用户隐私,即属性隐私和策略隐私。
证明:对于属性隐私,用户的属性被包含于密钥当中
在KeyGen阶段,由于通信渠道是安全的,除了选定的特权节点外,用户的属性集σ将不被公开。
在Match阶段,密钥用于生成查明陷门T,属性隐私意味着陷门T0和T1不可区分。
T0和T1分别由属性集σ0, σ1生成,敌手A已知属性集σ0, σ1,并提交给模拟器B
模拟器B选择随机值α,然后在敌手A的视角外抛掷硬币b,选择一个属性集,计算
挑战密文Tb =(Tb,0 = gα,{Tb,1,i = g^skσb,i^α}i=1-σb)发送给敌手A
A具有可忽略优势ϵ猜测b′ = b 即猜出B使用的是哪个属性集生成的陷门:
敌手在已知σ0, σ1, Tb的情况下,攻破属性隐私的概率小于ϵ(伊普西隆)
因此,在Match阶段,敌手A无法破解属性隐私。在其他阶段,即设置、HashGen、Verify、Read和Adapt阶段,A无法获得与密钥skσ相关的信息。因此,NANO保护了属性隐私。
在NANO中,敌手A有两种方式来破解策略隐私。
第一种方式是A从数据所有者生成的密文C中恢复策略(Pr,Pe)。
换句话说,A从{C1,i}Pri=1,{C2,i}Pri=1,{C4,i}Pei=1,{C5,i}Pei=1中恢复牛顿系数。
这是离散对数问题,对于任何概率多项式时间的对手来说都是困难的。因此,对手A无法从密文C中破解策略隐私。
第二种方式是A在Match阶段通过用户串通尝试恢复策略。
假设用户可以与其他用户串通。在KeyGen阶段,特权节点为每个用户引入唯一的随机值γ。在NANO中,只有服务节点可以获得γ。
假设一个具有γ0的授权用户与l个未经授权的用户({γi}i=1-l)串通,并试图破坏NANO中的可读性治理。
授权用户将密文Cm C1*分享给未经授权的用户,根据密文的解密方式计算
其中γ∗表示{γi}i=0-l。由于基于牛顿插值公式秘密分享的完整性,可以看出
PPr,1i=0 (γ∗·Kr(i)·Nr,i(0))γ0不等于初始秘密s1。因此,用户无法破坏可读性治理。类似地,可以证明用户无法通过串通攻击来破坏可编辑性治理。
六.总结
下面是实验评估
本文与几种最先进的基于变色龙哈希的数据所有权治理方案进行比较,注意所有先前的方案忽略了可读性治理。
图a展示了不同数量属性时密钥生成的时间开销:可以观察到 NANO 的效率高于其他方案。这是因为特权节点仅为了抵抗用户合谋而选择一个随机标识 γ,并在 NANO 中执行 O(σ) 指数运算。而在其他方案中,需要额外的哈希操作或配对操作来生成秘密密钥。
图b展示了不同策略大小时哈希生成的时间开销。在 DerlerSSS19 和 TianLLS020 中,数据所有者为每个访问控制矩阵元素执行两次指数运算和两次哈希操作。由于 MaXNHD22 中的数据所有者需要执行两个变色龙哈希函数,而在 NANO 中只需要一个变色龙哈希函数,因此NANO 的效率高于其他方案。
图c展示了不同策略大小时哈希验证的时间开销。在 DerlerSSS19 和 MaXNHD22 中,需要验证通用陷门和临时陷门,而在 NANO 中只需要验证通用陷门。TianLLS020需要执行耗时的配对操作,成本最高。
图d e f分别展示了不同属性集下不同数量的请求时陷门生成,可读性策略匹配,可编辑性策略匹配的时间开销。观察到随着请求数量的增加,用于陷门生成,可读性策略匹配和可编辑性策略匹配的计算成本与请求数量呈线性关系。为了全面保护用户隐私,NANO 中的服务节点在密文下执行策略匹配,需要大约 O(σ) 配对操作。批处理技术和并行计算可以用于提高效率。
图g展示了不同属性集下不同数量的请求时数据读取的时间开销。由于耗时的策略匹配被委托给了服务节点,授权读者仅计算 O(Pr) 配对操作以读取消息。当存在 50 个请求且 属性集σ = 50 时,授权读者仅需要约 1 秒来读取所有数据。
图h展示了不同属性集下不同数量的请求时数据编辑的时间开销。授权编辑者的计算成本主要包括变色龙哈希陷阱门恢复和哈希生成。在 NANO 中,由于可编辑性的策略匹配被委托给了服务节点,因此授权编辑者的计算成本低于其他方案。
图1展示了哈希上传的 gas 开销:在 NANO 和 TianLLS020 中,只需要在链上存储一个哈希值,而在 DerlerSSS19 和 MaXNHD22 中,需要存储两个哈希值。
图2展示了哈希生成的通信开销:与其他方案相比,NANO 显著降低了哈希生成的通信开销。这是因为在 NANO 中,策略被转换为多项式参数,而其他方案采用线性秘密共享矩阵来表示策略,这引入了更高的通信开销。
总之,实验结果表明,与当前最先进的数据所有权治理方案相比,NANO 在计算成本、gas 消耗和通信开销方面平均提高了 7 倍。