HCBE:实现细粒度访问控制
立即解锁
发布时间: 2025-08-20 00:56:51 阅读量: 2 订阅数: 12 

### HCBE:实现细粒度访问控制
#### 1. HCBE 方案定义
假设属性层次结构中的节点数量为 m。在 HCBE 中,层次代码表示为一组离散值 $U_m = \{ (Pcode_1, Ncode_1), (Pcode_2, Ncode_2), \cdots, (Pcode_k, Ncode_k), \cdots, (Pcode_m, Ncode_m) \}$,满足总排序 $0 \leq Pcode_1 \leq Pcode_2 \leq \cdots \leq Pcode_m \leq Z_m$ 和 $0 \leq Ncode_1 \leq Ncode_2 \leq \cdots \leq Ncode_m \leq Z_m$,其中 $Z_m$ 是最大整数。
应用 BDF 来实现属性层次结构,具体步骤如下:
1. 设 $G_{n'}$ 是 RSA 类型复合阶 $n' = p'q'$ 的乘法群,其中 $p'$ 和 $q'$ 是两个大素数。
2. 选择随机生成元 $\phi_1, \phi_2 \in G_{n'}$ 和随机数 $\theta_1, \theta_2 \in Z_{n'}^{*}$,其中 $\theta_1$ 和 $\theta_2$ 在 $Z_{n'}^{*}$ 中的阶足够大。
3. 定义映射函数 $\psi_1(.), \psi_2(.)$ 从整数集 $U_m$ 到 $V_m = \{ (v_{Pcode_1}, v_{Ncode_1}), \cdots, (v_{Pcode_k}, v_{Ncode_k}), \cdots, (v_{Pcode_m}, v_{Ncode_m}) \}$,如下所示:
- $v_{Pcode_k} = \phi_1^{\theta_1^{Z_m - Pcode_k}}$
- $v_{Ncode_k} = \phi_2^{\theta_2^{Z_m - Ncode_k}}$
4. 根据 $\psi_1(.)$ 和 $\psi_2(.)$ 的定义,定义 BDFs $f_1(.), f_2(.)$ 如下:
- 当 $Pcode_k \geq Pcode_j$ 时,$v_{Pcode_j} \leftarrow f_1(v_{Pcode_k}) = (v_{Pcode_k})^{\theta_1^{Pcode_k - Pcode_j}}$
- 当 $Ncode_k \geq Ncode_j$ 时,$v_{Ncode_j} \leftarrow f_2(v_{Ncode_k}) = (v_{Ncode_k})^{\theta_2^{Ncode_k - Ncode_j}}$
HCBE 方案的定义包含以下算法:
| 算法 | 输入 | 输出 | 说明 |
| ---- | ---- | ---- | ---- |
| Setup$(1^{\kappa}, \tilde{A}) \to (MK, PK_{\tilde{A}})$ | 安全参数 $\kappa$ 和属性层次结构 $\tilde{A}$ | 主密钥 $MK$ 和系统公钥 $PK_{\tilde{A}}$ | 数据所有者执行 |
| GenKey$(MK, u_k, \tilde{L}) \to SK_{\tilde{L}}$ | 主密钥 $MK$、用户 $u_k$ 和访问权限 $\tilde{L}$ | 用户 $u_k$ 在访问权限 $\tilde{L}$ 上的私钥 $SK_{\tilde{L}}$ | 数据所有者执行,每个属性 $A_k \in \tilde{L}$ 与授权时间 $[t_a, t_b]$ 和层次代码 $\{ Pcode_k, Ncode_k \}$ 相关联 |
| Encrypt$(PK_{\tilde{A}}, \hat{AP}) \to (\hat{HP}, e_k)$ | 公钥 $PK_{\tilde{A}}$ 和访问策略 $\hat{AP}$ | 会话密钥 $e_k$ 和密文头 $\hat{HP}$ | 数据所有者执行,每个属性 $A_l \in \hat{AP}$ 与时间条件 $[t_i, t_j]$ 和层次代码 $\{ Pcode_l, Ncode_l \}$ 相关联 |
| Delegate$(SK_{\tilde{L}}, \tilde{L}') \to SK_{\tilde{L}'}$ | 私钥 $SK_{\tilde{L}}$ 和访问权限 $\tilde{L}'$ | 代理服务器的派生私钥 $SK_{\tilde{L}'}$ | 数据用户执行,当 $\tilde{L}' \preceq \tilde{L}$ 时进行操作 |
| Decrypt1$(SK_{\tilde{L}'}, \hat{HP}) \to \hat{H}'_P$ | 派生私钥 $SK_{\tilde{L}'}$ 和密文头 $\hat{HP}$ | 新的密文头 $\hat{H}'_P$ | 代理服务器执行,当 $\tilde{L}'$ 满足 $\hat{AP}$ 时输出新密文头 |
| Decrypt2$(SK_{\tilde{L}}, \hat{H}'_P) \to e_k$ | 私钥 $SK_{\tilde{L}}$ 和新密文头 $\hat{H}'_P$ | 会话密钥 $e_k$ | 数据用户执行,用于解密存储的数据 |
以下是 HCBE 方案主要流程的 mermaid 流程图:
```mermaid
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;
A([开始]):::startend --> B(Setup):::process
B --> C(GenKey):::process
C --> D(Encrypt):::process
D --> E{是否需要委托?}:::decision
E -- 是 --> F(Delegate):::process
E -- 否 --> G(Decrypt1):::process
F --> G
G --> H(Decrypt2):::process
H --> I([结束]):::startend
```
#### 2. 具体算法实现
##### 2.1 Setup$(1^{\kappa}, \tilde{A}) \to (MK, PK_{\tilde{A}})$
给定双线性映射系统 $SN = (N = pq, G, G_T, e)$,其中 $G$ 和 $G_T$ 是复合阶 $n = sn'$ 的循环群,$e: G \times G \to G_T$。该算法步骤如下:
1. 选择随机生成元 $\omega \in G, g \in G_s$ 和 $\phi, \phi, \phi_1, \phi_2 \in G_{n'}$,其中 $G_s$ 和 $G_{n'}$ 是 $G$ 的两个子群,满足 $e(g, \phi) = e(g, \phi) = e(g, \phi_1) = e(g, \phi_2) = 1$,但 $e(g, \omega) \neq 1$。
2. 选择四个随机数 $\lambda, \mu, \theta_1, \theta_2 \in Z_{n}^{*}$,并使用哈希函数 $H: \{ 0, 1 \}^* \to G$,将根属性 $R$ 映射为随机群元素。
3. 选择两个随机指数 $\alpha, \beta \in Z_{n}^{*}$,并设置 $h = \omega^{\beta}, \eta = g^{1 / \beta}, \zeta = e(g, \omega)^{\alpha}$。
4. 主密钥设置为 $MK = (g^{\alpha}, \beta, p, q, n')$,公钥设置为:
$PK_{\tilde{A}} = (SN, \omega, g, \phi, \phi, \phi_1, \phi_2, h, \eta, \zeta, \lambda, \mu, \theta_1, \theta_2, H)$
##### 2.2 GenKey$(MK, u_k, \tild
0
0
复制全文
相关推荐










