25、基于属性的加密、访问控制与数据存储方案解析

基于属性的加密、访问控制与数据存储方案解析

1. 基于属性加密与访问控制基础

在基于属性的加密(ABE)领域,密文策略属性基加密(CP - ABE)有着独特的特性。其加密复杂度会随着访问策略的规模线性增长。在加密过程中,主密钥会依据访问策略树以递归的方式嵌入到密文中,在访问策略的每一层,密钥会被分割到当前根节点的所有子树中。不过,安全级别与访问策略树并无关联。也就是说,即便加密服务提供商(ESP)掌握了访问策略树中大部分而非全部的密钥,只要存在至少一个ESP未知的密钥,主密钥在信息理论上就是安全的。因此,我们可以将大部分加密复杂度安全地卸载给ESP,只需在本地处理少量的密钥信息。

而在解密方面,CP - ABE的解密算法计算量较大,因为对密文和私钥进行双线性对运算属于计算密集型操作。隐私保护的CP - ABE(PP - CP - ABE)通过安全地盲化私钥,并将昂贵的配对运算卸载给数据服务提供商(DSP)来解决这一计算问题。而且,这种卸载操作不会将密文的数据内容暴露给DSP,因为解密的最后一步是由解密者完成的。

2. 攻击模型

恶意攻击者的目标是在未经数据所有者(DO)授权的情况下,获取云中的数据。服务提供商(ESP、DSP和存储服务提供商SSP)与攻击者可能会联合起来进行合谋攻击,他们会尝试解密密文,并获取未授权访问的解密密钥。例如,由于DSP能够获取大量盲化私钥,他们可能会收集足够的信息,从众多盲化私钥中破解出解密密钥SK。此外,攻击者还可能利用ESP为DO提供加密服务的优势,来破解加密数据。特别地,攻击者试图破坏前向保密性,即当用户被撤销对某个文件的访问权限后,即便他可能拥有该文件的本地副本,也不能获取该文件的任何未来更新。

3. 访问策略树

PP - CP - ABE中使用的访问策略树由叶节点和内部节点组成。每个叶节点代表一个属性,每个内部节点是一个逻辑门,如AND、OR、n - of - m等。为了便于描述,定义了以下几个函数和术语:
- parent(x) :返回节点x的父节点。
- att(x) :表示数据访问树中叶节点x关联的属性。
- 访问树T由一组叶节点(属性)和内部节点(逻辑门)组成,它定义了数据访问策略。如果用户拥有一组属性,这些属性满足树的逻辑运算并能到达根节点,那么该用户就可以访问由T保护的密钥。这里的“拥有”指用户拥有与该组属性对应的私钥。AND和OR是最常用的逻辑门。
- numx :节点x的子节点数量。节点x的子节点y由一个从1到 numx 的索引整数 index(y) 唯一标识。
- 阈值 kx :当x为AND门时, kx = numx - 1 ;当x为OR门或叶节点时, kx = 0 kx 在使用阈值密钥共享方案时作为节点x的多项式次数。

以下是一个简单的访问策略树示例:

graph TD;
    A[Root] --> B[Att1];
    A --> C[Att2];
    A --> D[Attn];
    A --> E[Attn+1];
4. 安全证明定义
  • Co - DBDH假设 :给定$G_1$、$G_1^a$、$G_1^b$、$G_2 \in G$和$T \in G_T$,很难区分$T = e(G_1, G_2)^{ab}$。
  • DLDH假设 :给定$G$、$G_1$、$G_2$、$G^a$、$G_1^b$、$T \in G$,很难区分$T = G_2^{a + b}$。
5. 隐私保护的CP - ABE
5.1 构建概述

PP - CP - ABE的基本思想是将加密和解密算法中计算密集但非关键的部分卸载给服务提供商,同时保留关键密钥。与所有计算都在本地进行的原始CP - ABE方案相比,这种计算卸载不会降低安全级别。

5.2 系统设置与密钥生成
  • 可信机构(TA)首先运行Setup来初始化PP - CP - ABE系统,选择一个素数阶p的双线性映射$e: G_0 \times G_0 \to G_1$,生成元为g。然后,TA随机选择两个$\alpha, \beta \in Z_p$。公开参数发布为:
    $PK = \langle G_0, g, h = g^{\beta}, e(g, g)^{\alpha} \rangle$
  • 主密钥为$MK = (\beta, g^{\alpha})$,只有TA知道。
  • 每个用户需要向TA注册,TA会验证用户的属性,并为用户生成合适的私钥。属性可以是任何定义、分类或注释用户的描述性字符串。密钥生成算法GenKey的输入是分配给用户的一组属性S,输出是与S中每个属性对应的一组私钥组件,具体操作如下:
    1. 选择一个随机的$r \in Z_p$。
    2. 为每个属性$j \in S$选择一个随机的$r_j \in Z_p$。
    3. 计算私钥:
    $SK = \langle D = g^{(\alpha + r)/\beta}; \forall j \in S : D_j = g^r \times H(j)^{r_j}; D_j’ = g^{r_j} \rangle$
    4. 通过安全通道将SK发送给DO。
5.3 PP - CP - ABE加密

为了卸载加密计算并保护数据隐私,DO需要指定一个策略树$T = T_{ESP} \land T_{DO}$,其中$\land$是连接两个子树$T_{ESP}$和$T_{DO}$的AND逻辑运算符。$T_{ESP}$是将由ESP执行的数据访问策略,$T_{DO}$是DO控制的数据访问策略。$T_{DO}$通常包含少量属性,以减少DO的计算开销,它可以是只有一个属性的子树。具体操作步骤如下:
1. DO操作
- 如果$T_{DO}$有一个属性,DO可以随机指定一个1次多项式$q_R(x)$,并设置$s = q_R(0)$,$s_1 = q_R(1)$,$s_2 = q_R(2)$。
- 将${s_1, T_{ESP}}$发送给ESP。
2. ESP操作
- 对于$T_{ESP}$中的每个节点$x$,随机选择一个次数为$d_x = k_x - 1$的多项式$q_x$,其中$k_x$是密钥共享阈值:
- 对于$T_{ESP}$的根节点$R_{ESP}$,选择一个$d_{R_{ESP}}$次多项式,使得$q_{R_{ESP}}(0) = s_1$。
- 对于$T_{ESP}$中除$R_{ESP}$之外的每个节点$x$,设置一个$d_x$次多项式,使得$q_x(0) = q_{parent(x)}(index(x))$。
- 生成临时密文:
$CT_{ESP} = { \forall y \in Y_{ESP} : C_y = g^{q_y(0)}, C_y’ = H(att(y))^{q_y(0)} }$,其中$Y_{ESP}$是$T_{ESP}$中的叶节点集合。
3. DO继续操作
- 执行$Encrypt(s_2, T_{DO})$,得到:
$CT_{DO} = { \forall y \in Y_{DO} : C_y = g^{q_y(0)}, C_y’ = H(att(y))^{q_y(0)} }$
- 计算$eC = M e(g, g)^{\alpha s}$和$C = h^s$,其中M是消息。
- 将$CT_{DO}$、$eC$、$C$发送给ESP。
4. ESP最终操作
- 生成密文:
$CT = \langle T = T_{ESP} \land T_{DO}; eC = M e(g, g)^{\alpha s}; C = h^s; \forall y \in Y_{ESP} \cup Y_{DO} : C_y = g^{q_y(0)}; C_y’ = H(att(y))^{q_y(0)} \rangle$
- 将CT发送给SSP。

以下是加密流程的mermaid流程图:

graph LR;
    A[DO] -->|{s1, TESP}| B[ESP];
    A -->|CTDO, eC, C| B;
    B -->|CT| C[SSP];
    A -->|计算s, s1, s2| A1[指定qR(x)];
    B -->|选择qx| B1[生成CTESP];
    A -->|执行Encrypt(s2, TDO)| A2[生成CTDO];
    A -->|计算eC, C| A3[准备发送数据];
    B -->|生成CT| B2[完成加密];
5.4 卸载解密

CP - ABE的解密算法计算量较大,PP - CP - ABE通过将昂贵的配对运算卸载给DSP来解决这一问题,且不会将密文的数据内容暴露给DSP。具体步骤如下:
1. DO操作
- 为了保护数据内容,DO首先选择一个随机的$t \in Z_p$,盲化其私钥,计算$eD = D^t = g^{t(\alpha + r)/\beta}$。
- 记盲化私钥为$\tilde{SK} = \langle eD = g^{t(\alpha + r)/\beta}, \forall j \in S : D_j = g^r \cdot H(j)^{r_j}, D_j’ = g^{r_j} \rangle$。
- 检查其拥有的属性是否满足访问策略T,如果满足,将${\tilde{SK}}$发送给DSP,并请求SSP将密文发送给DSP。
2. SSP操作
- 收到请求后,将$CT’ = { T; C = h^s; \forall y \in Y_1 \cup Y_2 : C_y = g^{q_y(0)}; C_y’ = H(att(y))^{q_y(0)} }$($CT’ \subset CT$)发送给DSP。
3. DSP操作
- 当DSP收到${\tilde{SK}}$和$CT’$后,运行Decrypt($\tilde{SK}$, $CT’$)算法:
- 对于$Y = Y_{ESP} \cup Y_{DO}$中的每个节点$y$,DSP运行递归函数DecryptNode($CT’$, $\tilde{SK}$, $R$),其中$R$是T的根节点。递归函数的处理过程如下:
- DecryptNode($CT’$, $\tilde{SK}$, $y$) = $\frac{e(D_i, C_y)}{e(D_i’, C_y’)} = \frac{e(g^r \cdot H(i)^{r_i}, g^{q_y(0)})}{e(g^{r_i}, H(i)^{q_y(0)})} = e(g, g)^{r q_y(0)} = F_y$
- 对于节点x的每个子节点y,调用DecryptNode($CT’$; $\tilde{SK}$; $y$)并存储输出为$F_y$。设$S_x$是任意一个大小为$k_x$的子节点集合,DSP计算:
$F_x = \prod_{y \in S_x} F_y^{\Delta_{i, S_x’}(0)} = \prod_{y \in S_x} (e(g; g)^{r \cdot q_y(0)})^{\Delta_{i, S_x’}(0)} = \prod_{y \in S_x} (e(g; g)^{r \cdot q_{parent(y)}(index(y))})^{\Delta_{i, S_x’}(0)} = \prod_{y \in S_x} (e(g; g)^{r \cdot q_x(i) \cdot \Delta_{i, S_x’}(0)} = e(g, g)^{r q_x(0)}$
其中$i = index(z)$,$S_x’ = { index(z) : z \in S_x }$,$\Delta_{i, S_x’}(0)$是拉格朗日系数。最终,递归算法返回$A = e(g, g)^{rs}$。
- 计算$e(C, eD) = e(h^s, g^{t(\alpha + r)/\beta}) = e(g, g)^{trs} \cdot e(g, g)^{t\alpha s}$。
- 将${ A = e(g, g)^{rs}, B = e(C, eD) = e(g, g)^{trs} \cdot e(g, g)^{t\alpha s} }$发送给DO。
4. DO最终操作
- 收到${ A, B }$后,计算$B’ = B^{1/t} = e(g, g)^{rs} \cdot e(g, g)^{\alpha s}$,然后恢复消息:
$M = \frac{eC}{(B’/A)} = \frac{M e(g, g)^{\alpha s}}{(e(g, g)^{rs} \cdot e(g, g)^{\alpha s})/e(g, g)^{rs}}$

以下是解密流程的表格总结:
| 参与方 | 操作步骤 |
| ---- | ---- |
| DO | 盲化私钥,检查属性,发送请求 |
| SSP | 发送密文给DSP |
| DSP | 运行递归函数,计算结果,发送给DO |
| DO | 恢复消息 |

基于属性的加密、访问控制与数据存储方案解析

6. 基于属性的数据存储
6.1 数据管理概述

频繁的数据更新会给文件管理带来额外的成本。例如,要更新现有文件(如更改加密数据库的某些数据字段),需要将加密数据从SSP下载到DSP进行解密。更新完成后,ESP需要重新加密数据并上传到SSP。这种重新加密过程需要进行数据的下载和上传,可能会产生较高的通信和计算开销,从而增加DO的成本。

为了解决这个成本问题,可以将文件划分为独立的块,每个块独立加密。当需要更新文件时,DO只需下载需要更新的特定块,这样可以避免对整个数据进行重新加密。此外,可以使用“懒”重新加密策略对单个块实施数据访问控制。例如,当某个文件的数据访问成员发生变化(即访问树发生变化)时,可以记录该事件,但不立即对文件进行更改。直到需要更新数据内容时,再使用PP - CP - ABE方案进行重新加密。

将数据划分为多个小块也会带来额外的开销,因为每个数据块都需要附加额外的控制信息进行数据管理。例如,控制消息应包括块ID和指向其对应数据访问树T的指针。下图展示了存储在SSP中的示例文件:

graph LR;
    A[文件] --> B[块1];
    A --> C[块2];
    A --> D[块n];
    B --> B1[BID1];
    B --> B2[Ptr1];
    B --> B3[加密数据1];
    C --> C1[BID2];
    C --> C2[Ptr2];
    C --> C3[加密数据2];
    D --> D1[BIDn];
    D --> D2[Ptrn];
    D --> D3[加密数据n];

ABDS系统需要确定在已知文件大小的情况下,合适的数据块大小。设计目标是在考虑以下简单假设的基础上,最小化存储和通信开销:
1. 每次数据更新只影响少量数据,例如更新数据库中的某些数据字段。
2. 在每个单位时间段内,需要更新的块数量是已知的。
3. 每个数据块被更新的概率相同。

基于以上讨论,可以将单位时间段内的总成本C建模为:
$C = 2nS_bC_c + \frac{F}{S_b}S_cC_s$
其中,n是单位时间段内更新的块数量,2n表示一次更新包括一次加密和一次解密,需要两次传输;$S_b$是块的大小;$C_c$是云存储提供商和无线通信服务提供商收取的数据传输成本率;F是文件的大小;$S_c$是每个数据块的控制数据大小;$C_s$是存储的收费率。为了最小化成本C,DO可以对上述公式进行最小化处理,得出最优块大小:
$S_b \geq 2\sqrt{2nC_cFS_cC_s}$

6.2 设置

PP - CP - ABE允许使用描述性属性制定灵活的策略,对存储的数据实施数据访问控制。例如,如果Alice想将一个文件共享给所有计算机科学(CS)专业的学生,她可以指定策略“CS AND Student”。所有属性满足该策略的用户都可以解密数据。

除了系统中启用的一组描述性属性外,每个用户还被分配一个唯一的二进制ID:$b_0b_1…b_{n - 2}b_{n - 1}$。可以定义“位分配属性”,用“$B_i$”或“$\overline{B_i}$”表示ID中第i位的二进制值。$B_i$表示ID的第i位为1;$\overline{B_i}$表示ID的第i位为0。如果ID的长度为n,则位分配属性的总数为2n。这意味着两个二进制值映射到一个位位置(一个为值0,一个为值1)。因此,具有ID u的DO由位分配集合$S_u$唯一标识。此外,多个DO可能具有位分配的公共子集。例如,DO u1的ID为000,DO u2的ID为001,$S_{u1} = { \overline{B_0}, \overline{B_1}, \overline{B_2} }$,$S_{u2} = { \overline{B_0}, \overline{B_1}, B_2 }$,$S_{u1} \cap S_{u2} = { \overline{B_0}, \overline{B_1} }$。当DO想将数据共享给任意一组DO时,可以使用位分配属性。在这种情况下,使用描述性属性可能难以有效地描述这组DO。

6.3 上传新文件

在将新文件上传到SSP之前,ESP和DO都需要确定加密参数,如块大小。然后,DO使用访问策略$T_{ESP}$调用ESP,$T_{ESP}$是要应用于上传文件的访问策略。以下是后续介绍中使用的一些术语定义:
- 文字(Literal) :变量或其补码,例如$b_1$,$\overline{b_1}$等。
- 乘积项(Product Term) :由AND连接的文字,例如$b_2b_1b_0$。
- 积之和表达式(Sum - of - Product Expression,SOPE) :由OR连接的乘积项,例如$b_2b_1b_0 + b_2$。

给定共享数据接收者集合S,成员函数$f_S()$(形式为SOPE)指定接收者列表:
$f_S(b_u^1, b_u^2, …, b_u^n) =
\begin{cases}
0, & \text{如果} u \in S \
1, & \text{如果} u \notin S
\end{cases}$
例如,如果子组$S = { 000, 001, 011, 111 }$,则$f_S = \overline{b_0}\overline{b_1}\overline{b_2} + \overline{b_0}\overline{b_1}b_2 + \overline{b_0}b_1b_2 + b_0b_1b_2$。

上传新文件的操作步骤如下:
1. DO和ESP确定加密参数,如块大小。
2. DO调用ESP并提供访问策略$T_{ESP}$。
3. 根据成员函数$f_S()$确定接收者列表。
4. 按照PP - CP - ABE加密流程对文件进行加密。
5. 将加密后的文件块上传到SSP。

以下是上传新文件流程的表格总结:
| 步骤 | 操作 |
| ---- | ---- |
| 1 | 确定加密参数 |
| 2 | 调用ESP并提供访问策略 |
| 3 | 确定接收者列表 |
| 4 | 加密文件 |
| 5 | 上传文件块到SSP |

综上所述,基于属性的加密、访问控制和数据存储方案(如PP - CP - ABE和ABDS)为云计算环境中的数据安全和管理提供了有效的解决方案。通过合理的设计和操作,可以在保证数据安全的同时,降低成本并提高效率。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值