支持细粒度发送者权限控制的SCPEKS方案解析
立即解锁
发布时间: 2025-08-31 01:29:12 阅读量: 7 订阅数: 15 AIGC 

### 支持细粒度发送者权限控制的 SCPEKS 方案解析
#### 1. 引言
在当今数字化时代,数据的安全存储和检索至关重要。可搜索公钥加密(PEKS)技术为数据的安全检索提供了有效的解决方案。本文将详细介绍一种支持细粒度发送者权限控制的 SCPEKS 方案,包括其系统模型、算法定义、安全模型、具体构造以及性能分析。
#### 2. SCPEKS 相关定义
##### 2.1 系统模型
SCPEKS 系统模型包含四种实体:信任权威机构、数据发送者、数据接收者和云服务器。
- **信任权威机构**:负责系统初始化,为数据发送者和接收者生成密钥。接收数据发送者的属性后,通过安全通道为其分发对应属性的密钥,并生成 PKTree 的根节点分发给数据接收者。
- **数据发送者**:可能诚实或恶意。其密钥与某些属性对应,可被接收者验证。发送者使用自己的密钥和接收者的公钥加密关键词生成可搜索密文,然后将其与加密数据上传到云服务器。
- **数据接收者**:可能诚实或恶意。使用自己的密钥生成包含访问控制策略的合法陷门,将其发送到云服务器进行关键词搜索。
- **云服务器**:诚实但好奇。接收接收者的陷门后,验证发送者的属性是否满足访问控制策略,以及密文是否与陷门匹配。若都满足,则将匹配的加密数据返回给接收者。
```mermaid
graph LR
A[信任权威机构] -->|Sender Keys| B[数据发送者]
A -->|Receiver Keys| C[数据接收者]
B -->|Encrypted Data, Ciphertext| D[云服务器]
C -->|Trapdoor| D
D -->|Encrypted Data| C
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
A:::process
B:::process
C:::process
D:::process
```
##### 2.2 算法定义
SCPEKS 方案由五个算法组成:
- **Setup (1λ)**:由信任权威机构运行,输入安全参数 1λ,输出主公共密钥 mpk 和主秘密密钥 msk。后续算法默认使用 mpk 作为隐式输入。
- **SkGen (σ, msk)**:信任权威机构运行,输入数据发送者的属性 σ,输出对应属性的发送者密钥 ssk。
- **RkGen (sk, ID, τ, Tree)**:由信任权威机构或 PKTree 中的节点运行,输入节点或权威机构的密钥 sk、接收者或根节点的身份 ID、时间戳 τ 和 PKTree,为接收者或根节点生成公钥和私钥对 (rsk, rpk)。
- **Encryption (w, σ, ssk, rpk)**:数据发送者运行,输入关键词 w、属性 σ、发送者密钥 ssk 和接收者公钥 rpk,输出 w 的密文 Ct。
- **Trapdoor (w, R, rsk)**:数据接收者运行,输入关键词 w、策略 R 和接收者密钥 rsk,输出陷门 T = (R, Tw)。
- **Test (Ct, T)**:云服务器运行,输入密文 Ct 和陷门 T,若 Ct 包含与 Tw 相同的关键词且满足策略 R,则输出 1,否则输出 0。
##### 2.3 安全模型
安全的 SCPEKS 需要满足密文不可区分性和不可伪造性:
- **密文不可区分性**:在密文不可区分性游戏中,若不存在多项式有界的对手 A 对挑战者 C 有不可忽略的优势,则 SCPEKS 满足密文不可区分性。游戏流程如下:
1. **Setup**:挑战者 C 输入安全参数 1λ,生成 mpk 和 msk,将 mpk 发送给 A,保留 msk。
2. **Query Phase 1**:A 进行各种查询,包括 SkGen、RkGen、Trapdoor 和 Encryption 查询。
3. **Challenge**:A 选择发送者属性 σ∗、接收者公钥 rpk∗和未在之前查询中出现的关键词 w∗0, w∗1 发送给 C。C 随机选择 b ∈ {0, 1},计算 Ct∗ = Encryption(w∗b, σ∗, sskσ∗, rpk∗) 并返回给 A。
4. **Query Phase 2**:A 再次进行查询,但对 Trapdoor 查询有约束,不能是 (w∗0, rpk∗) 或 (w∗1, rpk∗)。
5. **Guess**:A 输出猜测位 b′,若 b = b′ 则 A 获胜。
- **不可伪造性**:在不可伪造性游戏中,若不存在多项式有界的对手 A 对挑战者 C 有不可忽略的优势,则 SCPEKS 满足不可伪造性。游戏流程如下:
1. **Setup**:挑战者 C 输入安全参数 1λ,生成 mpk 和 msk,将 mpk 发送给 A,保留 msk。
2. **Query Phase**:A 进行各种查询,包括 SkGen、RkGen、Encryption 和 Trapdoor 查询。挑战者 C 维护 LS 和 LE 列表记录查询信息。
3. **Guess**:A 发送密文 Ct∗和策略 R∗给 C。若 Verify (Ct∗, R∗) = 1,且 (Ct∗, R∗) 满足特定要求,则游戏输出 1,否则输出 0。
#### 3. SCPEKS 的构造
##### 3.1 Setup (1λ)
输入安全参数 1λ,生成两个素数阶循环群 G 和 GT,两个不同生成元 g, h ← G 和双线性映射 e : G × G → GT。选择多个密码哈希函数,随机选择 α, β ∈ Z∗p,生成主秘密密钥 msk = (gα, β) 和主公共密钥 mpk = (G, GT, e, p, g, h, gβ, e(g, g)α, H1, H2, H3, H4, H5)。
##### 3.2 SkGen (σ, msk)
输入数据发送者的属性 σ = (σ1, σ2, ..., σl) 和 msk,随机选择 s ← Z∗p,计算发送者的密钥 ssk1,i = gαH1(σi)s 和 ssk2 = gs,其中 i = {1, ..., l}。
##### 3.3 RkGen (msk/ski, IDRt/IDrcv, τ, Tree)
根据是否首次运行分为两种情况:
- 首次运行:输入主秘密密钥 msk、根节点身份 IDRt 和时间戳 τ,运行 PKTree.BuildTree (mpk, msk, IDRt, τ) 为根节点生成公钥 pkRt 和私钥 skRt。
- 非首次运行:输入 PKTree 中节点 i 的密钥 ski、数据接收者身份 IDrcv、时间戳 τ 和 PKTree,运行 PKTree.AddNode (mpk, Tree, ski, IDrcv, τ) 为 IDrcv 生成私钥 rsk,并将其设为子节点。IDrcv 的公钥 rpk = gH2(rsk)。
##### 3.4 Encryption (w, σ, ssk, rpk)
输入关键词 w、属性 σ、发送者密钥 ssk 和接收者公钥 rpk,随机选择 r1, r2, r3 ← Z∗p,计算密文:
- C1 = e(rpkr1·H4(w), H3(IDrcv))
- C2 = gr1
- C3 = hr1
- C4 = ssk2 · gr2
- C5 = gr3
- 对于每个 i ∈ [1, l],C6,i = ssk1,i · H1(σi)r2 · H5(C1−5)r3,其中 C1−5 表示 C1 ∥ C2 ∥ C3 ∥ C4 ∥ C5。
最终输出密文 Ct = (σ, C1, C2, C3, C4, C5, C6,i)。
##### 3.5 Trapdoor (w, R, rsk)
输入要搜索的关键词 w、接收者指定的策略 R 和接收者密钥 rsk,随机选择 t1 ← Zp,计算 T1 = ht1 · H3(IDrcv)H2(rsk)H4(w) 和 T2 = gt1,输出陷门 T = (R, Tw = (T1, T2))。
##### 3.6 Test (Ct, T)
输入密文 Ct 和陷门 T = (R, T1, T2),解析策略 R 为 (M, ρ) 格式,随机选择 −→x = (1, x2, ..., xn) ← Zn×1p,计算 −→λ = (λ1, λ2, ..., λl)⊤ = M−→x,计算 {wi ∈ Zp}i∈I 使得 i∈Iwi−→M i = (1, 0, ..., 0),I = {i : ρ(i) ∈ S}。检查以下等式是否成立:
C1 · e(T2, C3) · i∈I e(C6,i, g) / (e(H1(σi), C4) · e(H5(C1−5), C5))λiwi = e(g, g)α · e(C2, T1)
若等式成立,输出 1,否则输出 0。
#### 4. 安全证明和性能分析
##### 4.1 安全证明
- **定理 1**:若存在概率多项式时间对手 A 在密文不可区分性游戏中以不可忽略的优势获胜,则可构造概率多项式时间对手 B 以不可忽略的优势解决决策性 BDH 假设。
- **定理 2**:若存在概率多项式时间对手 A 在不可伪造性游戏中以不可忽略的优势获胜,则可构造概率多项式时间对手 B 以不可忽略的概率解决计算性 BDH 假设。
##### 4.2 性能分析
- **功能比较**:与其他相关 PEKS 方案比较,我们的方案不仅支持双向访问控制,还支持多用户场景下的细粒度访问控制,更具灵活性。
| 方案 | 接收者控制 | 发送者控制 | 细粒度控制 |
| ---- | ---- | ---- | ---- |
| FKS - HPABE | √ | × | √ |
| HEPKS | √ | × | √ |
| PAEKS | √ | √ | × |
| dIBAEKS | √ | √ | × |
| 我们的方案 | √ | √ | √ |
- **计算成本比较**:与 MA - dIBAEKS 比较,我们的方案在实现细粒度访问控制的同时,保持了相似甚至更低的计算成本。
| 算法 | MA - dIBAEKS | 我们的方案 |
| ---- | ---- | ---- |
| SkGen | (E + H) × l | (l + 1)E + lH |
| RkGen | E + H | E |
| Encryption | (3E + H + 2P) × l | (l + 6)E + (l + 3)H + P |
| Trapdoor | (2E + H + P + M) × l | 3E + 3H |
| Test | (2E + 2P + M) × l | (i + 1)H + (2i + 3)P |
- **通信成本比较**:与 MA - dIBAEKS 比较,我们的方案在实现更灵活的访问控制的同时,保持了相似甚至更低的通信成本。
| 项目 | MA - dIBAEKS | 我们的方案 |
| ---- | ---- | ---- |
| 发送者密钥 | |G| × l | (l + 1)|G| + |σ| |
| 接收者密钥 | 2|G| | 2|G| |
| 密文 | (2|G| + |GT|) × l | |GT| + (l + 4)|G| + |σ| |
| 陷门 | 2|G| × l | 2|G| + |R| |
通过实验分析,在 PC 上使用 PBC 库进行模拟,结果表明我们的方案在实际应用中具有良好的性能。
综上所述,我们提出的 SCPEKS 方案在安全性和性能方面都具有优势,为数据的安全存储和检索提供了一种有效的解决方案。
### 支持细粒度发送者权限控制的 SCPEKS 方案解析
#### 4. 安全证明和性能分析(续)
##### 4.1 安全证明(续)
在上述两个定理的证明过程中,对手 B 通过模拟与对手 A 的游戏过程,利用 A 的优势来解决相应的 BDH 假设问题。
对于定理 1 的证明,对手 B 接收一个决策性 BDH 实例,然后与对手 A 进行密文不可区分性游戏:
- **Setup 阶段**:B 随机选择参数并设置主公共密钥 mpk 发送给 A,同时将 H3 编程为随机预言机。
- **Query 阶段 1**:
- **Hash 预言机 OH**:对于输入的身份 ID,随机选择 rj ∈ Z∗p,输出 H3(ID) = (hc)rj。
- **SkGen 预言机 OS**:运行 SCPEKS.SkGen(σ) 为 A 生成发送者密钥 ssk。
- **RkGen 预言机 OR**:若 ID 之前已查询过,返回之前的结果;否则,运行 SCPEKS.RkGen(sk, ID, τ, Tree) 生成相应的节点和密钥。
- **Trapdoor 预言机 OT**:随机选择 t1 ∈ Zp,返回陷门 T = (Tw = (T1, T2), R)。
- **Challenge 阶段**:A 选择身份 ID∗和两个关键词 w∗0, w∗1 发送给 B。B 随机选择 b ∈ {0, 1} 和 r2, r3 ← Z∗p,计算 Ct∗和 Node∗。
- **Query 阶段 2**:A 进行查询,但不能对 (ID∗, w∗0) 或 (ID∗, w∗1) 进行 Trapdoor 查询。
- **Guess 阶段**:A 输出猜测位 b′,若 b = b′,则 B 向决策性 BDH 挑战者返回 R = e(g, h)abc,否则返回 R 是 GT 中的随机元素。
对于定理 2 的证明,对手 B 接收一个计算性 BDH 挑战,然后与对手 A 进行不可伪造性游戏:
- **Setup 阶段**:B 初始化游戏,设置主公共密钥 mpk 发送给 A,将 H1 编程为随机预言机,隐式设置主秘密密钥 gα。
- **Query 阶段**:
- **Hash 预言机 OH**:对于输入的属性 σi,根据 R(σi) 的值选择不同的 r 和 r′,返回 (gb)rgr′ 并记录信息。
- **SkGen 预言机 OS**:随机选择 s ∈ Zp,计算发送者密钥 ssk1i 和 ssk2。
- **RkGen 预言机 OR**:与密文不可区分性游戏相同。
- **Trapdoor 预言机 OT**:与密文不可区分性游戏相同。
- **Guess 阶段**:A 输出密文 Ct∗和策略 R∗,B 进行一系列计算,若满足条件则可计算出 e(g, g)abc。
```mermaid
graph LR
A[对手 B] -->|Setup| B[对手 A]
B -->|Query Phase 1| A
A -->|Response| B
B -->|Challenge| A
A -->|Query Phase 2| A
A -->|Guess| B
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
A:::process
B:::process
```
##### 4.2 性能分析(续)
- **实验分析**:在 PC 上使用 3.8 GHz Intel(R) Core(TM) i5 - 1135G7 CPU 和 16 GB 内存,基于 PBC 库(Type A 曲线,q - bits = 512)对我们的方案进行模拟。实验结果如图所示,横坐标分别表示属性数量 l 和关键词数量 k,纵坐标表示运行时间和存储大小。
| 实验指标 | 实验条件 | 结果 |
| ---- | ---- | ---- |
| 运行时间 | l = 5 | 如图 3a 所示 |
| 运行时间 | k = 1 | 如图 3b 所示 |
| 存储大小 | l = 5 | 如图 3c 所示 |
| 存储大小 | k = 1 | 如图 3d 所示 |
从实验结果可以看出,我们的方案在不同属性数量和关键词数量的情况下,运行时间和存储大小都表现出良好的性能。随着属性数量或关键词数量的增加,运行时间和存储大小的增长趋势较为平缓,说明该方案具有较好的扩展性。
#### 5. 总结
本文详细介绍了一种支持细粒度发送者权限控制的 SCPEKS 方案。该方案通过合理的系统模型设计,包括信任权威机构、数据发送者、数据接收者和云服务器,实现了数据的安全存储和检索。
在算法定义方面,明确了 Setup、SkGen、RkGen、Encryption、Trapdoor 和 Test 六个算法的具体功能和输入输出。安全模型满足密文不可区分性和不可伪造性,通过安全证明表明该方案在决策性 BDH 假设和计算性 BDH 假设下是安全的。
性能分析结果显示,与其他相关 PEKS 方案相比,我们的方案不仅支持双向访问控制,还支持多用户场景下的细粒度访问控制,在计算成本和通信成本上也具有优势,同时在实际实验中表现出良好的性能和扩展性。
未来,该方案可以进一步优化和扩展,例如考虑更复杂的访问控制策略、提高算法的效率等,以适应不断变化的安全需求和应用场景。
0
0
复制全文
相关推荐








