基于部分有序分层加密的叛徒追踪
摘要
近年来,越来越多的企业和个人已将数据迁移到云中。为了满足这一实际需求,本文研究了如何在基于角色的访问控制(RBAC)与云存储之间建立桥梁,以充分保护现有RBAC系统的投资。我们提出了一种新的方案,用于安全地将资源从RBAC系统迁移至云存储。该方案充分利用了RBAC的优势,为访问云资源提供了一种设计良好且易于管理的方法,无需用户干预。该方案称为部分有序分层加密(PHE),它在公钥基础设施中实现了类似于RBAC中角色层次结构的部分有序密钥层次结构。此外,该构造还提供了叛徒追踪功能,以支持高效的数字取证。性能分析表明,我们的构造具有以下特点:支持用户的动态加入与撤销、固定大小密文和解密密钥,以及在大规模系统中具有较低开销。
关键词: 安全 · Encryption · Cloud存储 · Partial order · 密钥层次结构 · Traitor tracing
引言
近年来,越来越多的企业和个人已将个人数据和大型归档系统等数据转移到云中。基于云的存储通过提供按需容量、低成本服务和长期归档,对消费者尤其具有吸引力。此外,云服务为人们的生活带来了极大的便利,因为消费者可以随时随地按需访问云中的应用程序和数据。
然而,将信息系统中的资源迁移到公共云时存在一些障碍,特别是对于大量现有的RBAC系统而言。其中一个障碍是迁移资源的安全性。几项最近的调查[1]显示,88%的潜在云用户担心其数据的隐私,而安全问题经常被列为阻碍云采用的首要因素。不幸的是,传统的安全机制(如访问控制技术)由于外包服务的特性,不适用于云环境。
云存储的特性以及云服务提供商的不可信或诚实但好奇的假设。另一方面,由于存储在云中的数据具有巨大的潜在商业价值,因此保护外包数据免受反叛者通过非法解码器(或非法解密软件)进行非法重新分发的行为变得日益重要。
为了解决这一问题,基于属性的加密(ABE)[2–6]近年来被提出。尽管ABE是一种满足多种应用需求的强大工具,但由于缺乏对偏序关系的支持,当前的ABE方案无法满足现有RBAC系统的需求。众所周知,RBAC是一种工业界公认且广泛采用的访问控制模型。在此模型中,角色层次结构(RH)是一个重要概念,反映了组织结构中的权力和责任关系。从数学上讲,角色层次结构是偏序。遗憾的是,这种偏序关系在现有的ABE中仍无法实现。因此,有必要开发一种新的与RBAC兼容的加密方案,以支持从RBAC系统向云的安全迁移。
为了构建与RBAC模型[7]兼容的密码系统,已设计了多种分层密钥管理(HKM)方案[8,9]。这些现有方案具有以下共同特征:1) 每个用户拥有一个与其在RH中的角色 $c_i$ 相对应的秘密密钥 $sk_i$;2) 存在一种有效的方法,可根据RH中的偏序关系 $c_j \prec c_i$,由自身密钥 $sk_i$ 推导出后代的密钥 $sk_j$;3) 密钥推导可在存在单向函数的前提下实现。
现有方案可以借助偏序结构有效地派生密钥。然而,这类派生过程存在以下问题:
– 一个角色可能被分配给多个共享相同秘密密钥的用户。这意味着无法区分这些被分配的用户;并且
– 秘密密钥的派生无法支持额外的功能,例如在面向群体的密码系统中进行数字取证时的叛徒追踪。
为解决这些问题,有必要设计一种分层密码系统的构造方法,并考虑一些最近提出的密码技术所提供的新特性,例如 IBE[2], HIBE[10] 和 ABE[11]。在这种构造中,用户秘密密钥必须是唯一的,并与用户身份相关联。此外,应避免此类构造中的秘密密钥派生。为此,我们引入了一种基于公钥设置的新分层密钥结构。我们的构造能够实现以下功能:
– 在基于角色的访问控制中,每个角色都被分配一个公钥(称为角色密钥),并且这些公钥之间根据RH存在一个推导函数;
– 每个用户拥有唯一的身份和私钥,其中保留了其角色信息,但禁止推导秘密密钥;以及
– 这种密钥结构可用于建立一些重要的安全机制,例如加密、签名、撤销和叛徒追踪。
我们的密钥结构的一个显著优势是能够无缝集成到现有的RBAC系统中。因此,RBAC系统可以直接使用公共角色密钥,根据用户分配的角色对资源进行加密,而拥有高级角色的用户则可以使用其隐私密钥对加密资源进行解密。
这种密码系统可用于将现有RBAC系统中的资源安全迁移到云中。我们方案的其他潜在应用包括电子邮件加密系统(EES)、点对点(P2P)数据共享的隐私保护以及加密文件系统(EFS)。
表1. 几种密钥管理方法与用户管理的比较 $^a$
| 有状态方案 | 无状态方案 | 无状态方案 | 无状态方案 | |
|---|---|---|---|---|
| LKH[12] | CS[13] | LSD[14] | 我们的工作 | |
| 密码学设置 | 对称密钥 | 对称密钥 | 对称密钥 | 公钥 |
| 用户密钥存储 | $O(\log n)$ | $O(\log n)$ | $O(\log^{1+\varepsilon} n)^b$ | $O(1)$ |
| 加密 cost | $O(n^{1/k})^c$ | $O(\log \log n)$ | $O(\log n)$ | $O(t + \frac{n}{m})$ |
| 平均带宽 | $O(t \log(n/t))$ | $O(t \log(n/t))$ | $O(t)$ | $O(t + \frac{n}{m})$ 固定 |
| 最坏情况带宽 | $\min(t \log \frac{n}{t} + t, n - t)$ | $\min(t \log \frac{n}{t}, n - t)$ | $\min(4t - 2, n - t)$ | $t + \frac{n}{m}$ 固定 |
| 叛徒追踪 | $O(\log n)$ | $O(\log n)$ | $O(t \log(n/t))$ | $O(\log(\frac{n}{m}) + \frac{m}{t})^d$ |
| 密钥更新复杂性 | high | 中等 | low | 不修改 |
其中,$^a$ $n$ 是用户的总数,$t$ 是被撤销设备的数量,$m$ 是子集中的平均用户数。$^b$ $\varepsilon$ 是任意数 > 0。$^c$ $k$ 是一个参数,表示为获得合理计算成本所需的分层子集数量,即当 $n$ 小于一万亿时,$n^{1/8} < \log n$。$^d$ 指偏好评估。
我们的贡献。在本文中,我们的目标是建立基于角色的访问控制(RBAC)与安全云存储之间的桥梁,以充分保护现有RBAC系统的投资。为实现这一目标,我们的核心任务是构建一种有效的兼容RBAC的密码系统,用于云数据加密。
这类密码系统充分利用了RBAC的优势,提供了一种设计良好且易于管理的云资源访问方式,无需用户干预。为完成该任务,我们提出了一种新的密码系统,称为具有叛徒追踪功能的部分有序分层加密(PHE)。本工作的主要贡献总结如下:
– 我们提供了一种实用的部分有序分层加密(PHE)构造,不仅具有语义安全和安全密钥层级,还支持以下特性:无状态接收者、动态授权、紧密安全以及大量用户;
– 我们对密码系统进行了完整的安全分析,包括在选择明文攻击下的语义安全。更重要的是,我们的方案满足一种新的密钥管理安全定义,称为安全密钥层级,可抵御权限攻击和访问攻击;并且
– 我们提供了基于密钥层次结构的叛徒追踪机制,这对于保护长期密码系统的完整性和有效性,以及防止通过非法解码器(或非法解密软件)泄露云外包数据具有重要的实际意义。
此外,我们的PHE方案提供了多种新的安全特性,例如公共用户标签、固定大小用户密钥存储、$O(\log(n))$追踪、更低的计算开销和通信带宽。
表1展示了我们的方案与一些广播加密方案的比较,包括逻辑密钥层次结构(LKH)[12], 完全子树(CS)[13], 子集差分(SD)[15], 和分层子集差分(LSD)[14]。尽管一些现有的公钥方案已采用分层结构,但由于这些方案未为每个用户分配唯一密钥,因而无法实现叛徒追踪功能,故本比较未考虑此类方案。从表1可以看出,我们的方案在传输、存储、计算以及叛徒追踪成本方面均显著优于现有方法。
组织结构
本文其余部分的组织结构如下:第2节介绍研究背景和密钥结构定义。在第3节中,我们提出了用于基于角色的访问控制的PHE方案。第4节描述了用于数字取证的叛徒追踪机制。安全分析结果分别在第5节中展示。我们在第6节总结相关工作。我们在第7节进行总结并讨论未来工作。
背景与定义
给定一个安全密钥层级 $\Psi= \langle C, E, K \rangle$ 以及类的总数 $n$,我们可以定义一个$(t, n)$-部分有序分层加密(PHE),该加密机制可确保内容提供者在最多存在 $t$ 个合谋者的假设下,将消息安全地传输给一组授权用户。更正式地说,一个具有安全参数 $s$ 的$(t, n)$-PHE方案是由6个概率算法(Setup, Join, Encrypt, Decrypt, Trace)组成的元组,具体描述如下:
-
设置 (Ω, s, t):输入一个偏序层次结构 Ω、一个安全参数 s 和一个最大合谋数量 t。它输出一个主加密密钥 $pk_0$ 作为密码系统的起点、一组公开参数 $P_1$,以及一个作为管理者密钥的主密钥 $mk$。
-
加入 (P, s, $c_i$ 或 $u_{i,j}$):包含两个子算法:
– 加入 (P, mk, $c_i$):输入为管理者密钥 $mk$ 和群组标识符 $c_i$。生成一个加密密钥 $pk_i$ 和一些公开参数 $pp_i$ 作为该类的描述。$P = P \cup {pp_i}$ 被公开。
– 加入 (P, mk, $u_{i,j}$):输入为管理者密钥 $mk$ 和用户标识符 $u_{i,j}$。输出一个用户密钥 $sk_{i,j}=(lab_{i,j}, dk_{i,j})$。$P = P \cup {lab_{i,j}}$ 和 $sk_{i,j}$ 被安全地发送给 $u_{i,j}$。 -
Encrypt (P, $pk_i$, M):使用公钥 $pk_i$ 对消息 M 进行加密,并输出密文 $C_i$。
-
Decrypt (P, $sk_{i,j}$, $C_k$):使用解密密钥 $dk_{i,j}$ 对密文 $C_k$ 进行解密,并在满足 $u_{i,j} \in c_i$ 和 $c_i \preceq c_k$ 的条件下输出消息 M。
-
TraceD (P, pk, mk):假设一个对手使用 $k$ 个用户密钥 $R = {sk_{i_1,j_1}, \cdots, sk_{i_k,j_k}}$ 构造了一个解密盒 D。作为关于 D 的预言机算法,它以 pk, mk 为输入,能够确定合谋 R 中的至少一个密钥。如果解码器 D 只能作为预言机进行查询,而无法被打开以揭示其内部密钥,则称该追踪算法为“黑盒”;如果存在一种有效的密码系统,在至多 $t$ 个密钥合谋的情况下仍能保持安全,则称该方案为“$t$-抗合谋”。需要注意的是,四个算法(Setup, Join, Encrypt, Decrypt)用于在RBAC模型下实现基本的密码访问控制,而算法 Trace 则为数字取证提供叛徒追踪功能。
用于访问控制的PHE方案
3.1 提出的PHEScheme
给定一个安全密钥层级 $\Omega= \langle C, E \rangle$,一个安全参数 $s$,以及最大合谋大小 $t$。设 $G_q$ 是一个阶为 $q$ 的素数群,且 $\log_2 q > s$。可以取 $G_q$ 作为 $Z_p^ $ 中阶为 $q$ 的子群,其中 $p$ 是一个满足 $q|p - 1$ 的大素数。令 $g \in_R Z_p^ $ 为 $G_q$ 的生成元。
- 设置 (Ω, s, t):管理员选择随机整数 $a_1, \cdots, a_t \in Z_q^*$,以构造一个次数为 $t$ 的随机多项式 $f(x) = \sum_{i=1}^t a_i x^i (\text{mod } q)$。因此,它随机选择 $t$ 个整数 $x_1,\cdots, x_t$ 来生成 $(x_1, f(x_1)) \cdots, (x_t, f(x_t))$。它将参数 $P={p, q,(x_1, g^{f(x_1)}) \cdots, (x_t, g^{f(x_t)})}$ 公开。不失一般性,我们假设 $c_0$ 是Ω中唯一的最高级别类别。它为 $c_0$ 选择一个随机整数 $s_0 \in_R Z_q$ 作为其秘密,使得随机多项式 $f(x)$ 被替换为 $p_0(x) = s_0 + \sum_{i=1}^t a_i x^i (\text{mod } q)$。然后使用 $(x_1,p_0(x_1)) \cdots, (x_t, p_0(x_t))$ 生成一个初始化加密密钥:
$$
pk_0= \langle g, z_{0,0},(x_1, z_{0,1}),\cdots,(x_t, z_{0,t}), T_0 \rangle \tag{1}
= \langle g, g^{p_0(0)},(x_1, g^{p_0(x_1)}),\cdots,(x_t, g^{p_0(x_t)}), \emptyset \rangle
$$
其中,$z_{0,i}= g^{p_0(x_i)}= g^{s_0} \cdot g^{f(x_i)} (\text{mod } p)$ 由 $P$ 和 $T_0=\emptyset$ 计算得出,$\emptyset$ 表示空初始控制域。系统管理员将 $mk={s_0, a_1,\cdots, a_t}$ 保密。
-
加入
(P, mk, $c_i$ 或 $u_{i,j}$): 包含两种形式:
(a) 加入 (P, mk, $c_i$): 为了生成 $c_i \in C$ 的 $pk_i$ 和 $pp_i$,管理员为 $c_i$ 分配一个随机的 $s_i \in Z_q$ 作为其秘密。对于 $\forall c_l \in C$ 和 $c_i \prec_d c_l$,它计算 $t_{i,l}= g^{(s_l-s_i)} (\text{mod } p)$ 作为该关系的公开参数,然后将 $pp_i={t_{i,l}}_{c_i \prec_d c_l}$ 定义为直接支配 $c_i$ 的所有关系的集合。最后,它将 $s_i$ 和 $pp_i$ 分别追加到 $mk$ 和 $P$ 中,即 $mk= mk \cup {s_i}$ 和 $P= P \cup pp_i$。
加密密钥 $pk_i$ 在 $c_i$ 中可以从多项式 $p_i(x) = s_i + f(x)$ 计算得到。就 $mk$ 和 $P$ 而言,管理员拥有
$$
pk_i= \langle g, z_{i,0},(x_k, z_{i,k})
{k=1}^t, T_i \rangle \tag{2}
= \langle g, g^{p_i(0)},(x_k, g^{p_i(x_k)})
{k=1}^t, T_i \rangle,
$$
其中,$T_i$ 是 $\uparrow c_i$ 中所有关系的集合,即 $T_i={t_{j,l}}_{c_j,c_l\in\uparrow c_i,c_j\prec_d c_l}$
(b) 加入 (P, mk, $u_{i,j}$):为了生成 $sk_{i,j}$ 以对应 $u_{i,j}$,管理员使用秘密 in mk 计算随机多项式 $p_i(x) = s_i + f(x) (\text{mod } q)$。它生成一个新的随机整数 $x_{i,j} \in_R Z_q$,并通过秘密信道将 $sk_{i,j}=(x_{i,j},p_i(x_{i,j}))$ 发送给用户,其中 $lab_{i,j}= x_{i,j}, dk_{i,j}=p_i(x_{i,j})$,以及 $P= P \cup {lab_{i,j}}$。
- Encrypt (P, $pk_i$, M): 对于一个会话密钥 $ek \in G_q^2$,用户随机选择一个随机数 $r \in_R Z_q$,然后按如下方式计算密文 $pk_i$:
$$
C_i= \langle h, S_i,(x_k, h_{i,k})
{k=1}^t, T’_i \rangle \tag{3}
= \langle g^r, e_k \cdot z
{i,0}^r,(x_k, z_{i,k}^r)
{k=1}^t,{t’
{k1,k2}}
{t
{k1,k2} \in T_i} \rangle .
$$
其中,$h_{i,k}= z_{i,k}^r (\text{mod } p)$,$t’ {k1,k2} = t {k1,k2}^r$,以及 $T’ i={t {k1,k2}^r} {t {k1,k2} \in T_i}$ 表示一个控制域,该域包含 $\uparrow c_i$ 中的所有关系。
- 解密 (P, $sk_{i,j}$, $C_l$):
在接收到密文 $C_l= \langle h, S_l,(x_k, h_{l,k}) {k=1}^t,{ t’ {k1,k2}} {t {k1,k2} \in T_l} \rangle$ 后,用户使用私钥 $sk_{i,j}= \langle x_{i,j}, y_{i,j} \rangle$ 计算以下方程,若满足 $u_{i,j} \in c_i, c_i \preceq c_l$, 且
$$
U_{C_l}(sk_{i,j})=
\frac{h^{y_{i,j}} \cdot \lambda_0(x_{i,j}) \prod_{k=1}^t h_{l,k}^{\lambda_k(x_{i,j})}}{(\prod_{c_{k1} \prec_d c_{k2} \in \Delta(l,i)} t’
{k1,k2})^{\lambda_0(x
{i,j})}}, \tag{4}
$$
其中,$\lambda_k(x_{i,j}) =\prod_{l=0,l\neq k}^t \frac{x_l}{x_l -x_k} (\text{mod } q)$ 是拉格朗日插值多项式 $^3$ 关于 ${x_0= x_{i,j} , x_1,\cdots, x_t}$ 的系数,且 $\Delta(l, i)={c_{k1} \prec_d c_{k2} :c_{k1} , c_{k2} \in \Gamma(l, i)}$ 表示在 $c_i$ 与 $c_l$ 之间的任意路径上的直接支配关系集合。因此可以恢复出明文 $e_k= S_i/U_{C_l}(sk_{i,j})$。
$^2$ 明文(ek或 M)必须转换为 $G_q$ 的元素,参见ElGamal加密系统。$^3$ 给定一组 $t+1$ 不同的数据点 $(x_0, y_0) \cdots,(x_t, y_t)$,语言插值多项式是一个线性组合 $L(x) =\sum_{j=0}^t y_j \lambda_j(x)$,其中系数 $\lambda_j(x) =\prod_{i=0,i=j}^t \frac{x - x_i}{x_j - x_i}$。这里,我们设定 $x= 0$ 来计算 $L(0)$。
在继续之前,我们简要说明该加密方案通过
$$
U_{C_l}(sk_{i,j}) =
\frac{g^{p_i(x_{i,j})}\cdot\lambda_0(x_{i,j})\cdot r \prod_{k=1}^t g^{p_l(x_k)}\cdot\lambda_k(x_{i,j})\cdot r}{(\prod_{c_{k1}\prec_d c_{k2} \in \Delta(l,i)} t_{k1,k2}^r)^{\lambda_0(x_{i,j})}}
=
\frac{g^{p_i(x_{i,j})}\cdot\lambda_0(x_{i,j})\cdot r \prod_{k=1}^t g^{p_l(x_k)}\cdot\lambda_k(x_{i,j})\cdot r}{g^{\sum_{c_{k1} \prec_d c_{k2} \in \Delta(l,i)}(s_{k2}-s_{k1})\cdot\lambda_0(x_{i,j})\cdot r}}
=
\frac{g^{p_i(x_{i,j})}\cdot\lambda_0(x_{i,j})\cdot r \prod_{k=1}^t g^{p_l(x_k)}\cdot\lambda_k(x_{i,j})\cdot r}{g^{(s_i-s_l)\cdot\lambda_0(x_{i,j})\cdot r}}
= g^{p_l(x_{i,j})}\cdot\lambda_0(x_{i,j})\cdot r \prod_{k=1}^t g^{p_l(x_k)}\cdot\lambda_k(x_{i,j})\cdot r
= g^{\sum_{k=0}^t p_l(x_k)\cdot\lambda_k(x_0)} \cdot r= g^{p_l(0)\cdot r}= z_{l,0}^r. \tag{5}
$$
其中 $s_i-s_l=\sum_{c_{k1}\prec_d c_{k2} \in \Delta(l,i)}(s_{k2} -s_{k1})(\text{mod } q)$,对于 $c_i$ 与 $c_l$ $^4$ 之间的任意路径 $\Gamma(l, i)$,且 $(,j) = s_l + f(x_{i,j}) = p_i(x_{i,j}) - (s_i - s_l) (\text{mod } q)$。
3.2 进一步讨论
事实上,上述过程也是从底层(初级类)到顶层(高级类)构建的。在存在多个最高级类的情况下,Setup算法仍然适用。不失一般性,我们假设 $c^{(1)} 0, c^{(2)}_0, \cdots, c^{(l)}_0$ 是Ω中的最高级类。然后,为 $c^{(i)}_0$ 随机选择一个整数 $s^{(i)}_0 \in_R Z_q$ 作为该类的 秘密 ,从而构造出 $l$ 个随机 多项式 ,$p^{(i)}_0(x)=s^{(i)}_0+\sum {k=1}^t a_k x^k,$,其中 $c^{(l)}_0$。最后,生成 加密密钥 :
$$
pk^{(i)}
0= \langle g, z^{(i)}
{0,0},(x_1, z^{(i)}
{0,1}),\cdots,(x_t, z^{(i)}
{0,t}), T_0 \rangle
= \langle g, g^{p^{(i)}_0(0)},(x_1, g^{p^{(i)}_0(x_1)}),\cdots,(x_t, g^{p^{(i)}_0(x_t)}), \emptyset \rangle,
$$
其中,$g^{p^{(i)}_0 (x_k)}= g^{s^{(i)}_0} g^{f(x_k)} (\text{mod } p)$。
为了共享信息,通常会将最低级别类的加密密钥 $pk_n$ 公开,这被称为 主加密密钥 。例如,在企业管理系统中,如果使用“工程部”类的加密密钥发送消息,则所有员工都可以使用自己的私钥进行解密。此外,考虑到大规模组织中的大量类,加密密钥存储比率也是一个重要特征。我们当然希望该比率尽可能低。由于 $p_i(x)=(s_i-s_l)+p_l(x)$,用户可以利用已知的 $pk_j$ 和公开参数 $P$ 为 $i= j$ 生成 $pk_i$。例如,用户可以通过 $T˙ i= \prod {c_j \prec_d c_l \in \Delta(n,i)} t_{j,l} = g^{\sum_{c_j \prec_d c_l \in \Delta(n,i)}(s_l -s_j)}=g^{s_i -s_n} (\text{mod } p)$ 从最低级别的加密密钥 $pk_n$ 计算出她/他自己的加密密钥 $pk_i$,并且
对于不同的路径,我们有相同的多项式 $p_i(x) = s_i + \sum_{i=1}^t a_i x^i,$,因为对于任意路径 $s_i, s_{i-1},\cdots, s_1, s_l$,$p_i(x)=(s_i - s_{i-1}) + (s_{i-1} - s_{i-2}) + \cdots + (s_1 - s_l) + p_l(x)$。
$$
pk_i= \langle g, z_{i,0},(x_k, z_{i,k})
{k=1}^t, T_i \rangle \tag{6}
= \langle g, z
{n,0} \cdot T˙
i,(x_k, z
{n,k} \cdot T˙
i)
{k=1}^t, T_i \rangle,
$$
其中,$z_{n,k} \cdot T˙ i= g^{p_n(x_k)}\cdot g^{s_i-s_n}= g^{p_i(x_k)} (\text{mod } p)$,且 $T_i$ 由公式(2)从 $P$ 求得。因此,用户只需存储一个加密密钥和一个私钥,$j=(label {i,j}, dk_{i,j})$。
密钥层次结构保存在公开参数 $P$ 中,与用户私钥无关,因此只需动态修改公开参数即可支持密钥层次结构的变化。
用于叛徒追踪的PHE方案
对于具有可证明安全性的密码系统,对手很难直接将其攻破,但对手可能会采用其他手段来破坏系统。众所周知,“攻陷堡垒最容易的方式是从内部发起”。基于同样的思想,对手与一些被腐蚀用户(称为叛徒)之间的合谋攻击就是面向群组的密码系统的一种内部攻击。在这种攻击中,对手可能获得一组合法用户的秘密密钥,从而解密密文。为了抵御此类攻击,近年来提出了叛徒追踪技术。通常,叛徒追踪算法是一种有效的检测方法,能够根据发现的盗版解码器,从一组授权用户中找出被腐蚀用户。我们希望追踪算法仅能将任何盗版解码器作为黑盒进行访问,并基于该解码器对不同输入密文的响应来执行追踪。
叛徒追踪是一种在现有面向群组的密码系统中支持数字取证的有效机制。近年来,一些基于多项式插值方法的追踪方案也已被提出。本文在已有方案的基础上,针对我们的部分有序密钥层次结构提出了一种新的叛徒追踪方案。该算法仅需知道用户的公开标签 $label_{i,j}$,而无需其私钥。需要注意的是,作为数字取证手段的叛徒追踪存在一个前提条件:对手无法伪造一个“未使用”的密钥以逃避追踪。我们将证明这种攻击对我们的方案是不可行的。接下来,我们从以下两个方面关注追踪算法。
4.1 单密钥追踪
单密钥追踪算法侧重于逐一找出合谋中的反叛者。容易发现,在被攻破的类中,最多 $t$ 个用户无法伪造一个新的未使用密钥,因此只要搜索该类中所有已使用的密钥,就能找出所有叛徒。对于此类合谋攻击,我们可以采用基于撤销的算法,将一个由可疑密钥撤销的密文构造成非法解码器。如果该解码器无法工作,则说明此基于撤销的密钥至少包含一个反叛者。否则,我们搜索该集合中的其他用户。最后,我们可以找到所有叛徒。为了提高性能,我们可以同时检查 $t$ 个可疑密钥。因此,搜索复杂度为 $O(m/t)$,其中 $m$ 是一个安全类或一组用户中的用户总数。
许多追踪算法[16]已经注意到,$sk_1, \cdots, sk_m$ 的某个线性组合也是一个“新”私钥,但在这种情况下,对手并不局限于使用原始解密算法来构建解密盒。在这种情况下,这个“单密钥”并不是一个新密钥,而是某些密钥的线性组合。对于这样的解码器,我们可以构造一个加密密钥,其中包含 $t$ 用户密钥,并在该子集中的密钥之间搜索所有组合。因此,搜索复杂度为 $O(\binom{t}{m})$。
4.2 层级追踪
层级追踪算法是一种在部分有序密钥层次结构下更高效地查找叛徒的方法。根据门限密码系统的特性,我们提出的方案是在诚实类中基于CDH假设的 $t$-抗攻击加密,表明叛徒无法串通在被破坏的类之外伪造新密钥。这一特性为我们构建追踪算法提供了优势。
与单密钥追踪不同,我们可以首先遍历密钥层次结构中的每个类 $c_i$,以定位叛徒的可疑类,然后在每个类中使用单密钥追踪算法找出实际的叛徒。基于这一思路,针对一个非法解码器,我们提出了一种基于密钥层次结构的黑盒叛徒追踪算法,该算法包含两个步骤:子树搜索和子集遍历,如下所示:
V1. 子树搜索 :给定一个密钥层次结构 $\Psi$,我们从 $C$ 中的 $c_i \leftarrow c_n$(最低级别类)开始,自底向上执行以下过程:
-
S1 . 随机选择 $t$ 个未使用的份额 $\langle x_1, x_2, \cdots, x_t \rangle$,并构造一个启用块:
$$
C_i= \langle g^r, e_k \cdot g^{r p_i(0)},(x_k, g^{r p_i(x_k)}) {k=1}^t,{t^r {j,l}} {t {j,l} \in T_i} \rangle .
$$ -
S2 . 将 $\langle C_i, E(e_k, M) \rangle$ 发送给解码器。
-
S3 . 如果解码器能够正确返回消息 $M$,我们将 $c_i$ 视为可疑类别,并对 $\forall c_j \prec_d c_i$ 使用 $c_i \leftarrow c_j$ 运行 V1;否则,使用 $c_i$ 的兄弟节点重复执行 V1。
V2. 子集遍历 :设 $\langle c’_1, c’_2, \cdots, c’_k \rangle$ 为由 V1 确定的可疑子集集合,对该集合中的每个 $c’_i$,我们执行以下过程:
-
T1 . 随机选择 $c’ i$ 中任意 $m$ 个用户的标签 ${x {i,1}, \cdots, x_{i,m}}$、$m \leq t$,然后随机选择 $t - m$ 个未使用的共享份额 $\langle v_1, v_2, \cdots, v_{t-m} \rangle$,并构造一个启用块:
$$
C’ i = \langle g^r, e_k \cdot g^{r p_i(0)},(x {i,j}, g^{r p_i(x_{i,j})}) {j=1}^m, (v_k, g^{r p_i(v_k)}) {k=1}^{t-m}, \emptyset \rangle .
$$ -
T2 . 向盗版解码器发送 $\langle C’_i, E(e_k, M) \rangle$。
-
T3 . 如果解码器未正确输出 $M$,我们将标签集合 ${x_{i,1}, \cdots, x_{i,m}}$ 视为一组叛徒,并减少该集合的密钥数量以执行 T1。否则,重复执行 T1 直到没有更多用户。
因此,我们的追踪算法通过密钥层次结构将用户划分为大量类,从而改善了计算复杂度和搜索时间。特别是,在最坏情况下,子树搜索的复杂度为 $O(\log n)$ 次查询,其中 $n$ 是类的数量。
安全分析
我们通过挑战者与对手之间的一系列安全游戏来定义PHE方案的安全性。偏序层次结构 $\Omega$ 和系统参数 $P$ 是固定的,且允许对手依赖于它们。用户可以分为两类:诚实用户和被腐蚀用户,从而构建出一个被腐蚀用户的集合 $R$。相应的类被称为诚实类 $C_1$ 或被破坏的类 $C_2$,在被破坏的类中,被腐蚀用户可以访问所有加密消息。有时,同一个类中可能存在多个诚实用户和被腐蚀用户。我们首先定义一个通用模型以抵御合谋攻击:
-
初始化 :挑战者 $B$ 构建一个任意的偏序层次结构 $\Omega$,然后运行 $Setup(\Omega, s, t)$ 以生成部分有序密钥层次结构 $\Psi$ 和初始公开参数 $P$,并将它们发送给对手 $A$。
-
学习阶段 :$A$ 自适应地发出 $n$ 次查询 $q_1, \cdots, q_n$ 以获取 $\Psi$ 的信息,其中 $q_i$ 为以下之一:
- 诚实类/用户查询 ($u_{i,j} \in R$):使用 $Join(P, mk, c_i$ 或 $u_{i,j}$),$B$ 生成一个类/用户标签 $(pp_i, pk_i, lab_{i,j})$ 并将 $lab_{i,j}$ 发送给 $A$。
- 被攻破类/用户查询 ($u_{i,j} \in R$):$B$ 使用被腐蚀用户生成一个类 $(pp_i, pk_i)$,或生成一个用户标签 $lab_{i,j}$ 和一个解密密钥 $dk_{i,j}$,并返回 $(lab_{i,j}, dk_{i,j})$ 给 $A$。
$A$ 最终形成一个密钥层次结构 $\Psi$(包含 $P, pk_i$)和一个合谋集合 ${sk_{i,j}} {u {i,j} \in R}$。请注意,解密查询是不必要的,因为 $A$ 可以使用被破坏的密钥来生成它。
-
挑战阶段 :$A$ 选择两个等长的明文 $M_0, M_1 \in M$,并指定一个类 $c_i$,希望在该类上接受挑战。$B$ 随机选取一个随机比特 $b \in {0, 1}$,并向 $A$ 发送挑战密文 $C_i= Encrypt(P, pk_i, M_b)$ 或 $Revoke(P, pk_i, M_b, R_i)$。其中,$R_i$ 表示 $\uparrow r_i$ 中的所有被腐蚀用户。
-
猜测 :$A$ 输出一个猜测 $b’ \in {0, 1}$。如果 $b = b’$,则 $A$ 获胜,否则失败。
这个游戏有几个重要的变体:
- 在选择明文攻击(CPA)的游戏中,对手 $A$ 在学习阶段不得发出被破坏的用户查询和解密查询。
- 在用户私钥攻击的游戏中,挑战者 $B$ 在挑战阶段不得发出挑战密文。对手 $A$ 在猜测阶段以多项式时间返回一个伪造的私钥。
- 在未授权访问攻击游戏中,用户可超越其权限,我们进行上述游戏。
我们用 $Adv_{E,A}(t, n)$ 表示对手 $A$ 在游戏中获胜的优势:
$$
Adv_{E,A}(t, n)= \left| \Pr[A_E(C_i)= b] - \frac{1}{2} \right|
$$
我们说一个PHE是 $(t, n)$-安全的,如果对于所有设置参数 $P$ 以及所有概率多项式时间的对手 $A$,函数 $Adv_{E,A}(t, n)$ 是关于 $s$ 的可忽略函数。
语义安全是公钥加密方案中广泛使用的一种安全概念。非正式地说,它要求从密文中无法获取关于明文的任何信息。这一安全要求同样适用于PHE方案。我们证明,在决策性Diffie-Hellman(DDH)假设下,我们的加密方案在面对选择明文攻击时具有语义安全性(IND-CPA),如下述定理所示:
定理1 . 所提出的 $(t,n)$-PHE 方案在假设 $G_q$ 中的判定性 Diffie-Hellman(DDH)问题难以解决的前提下,对于选择明文攻击是语义安全的。
显然,语义安全不足以满足“1:n”加密方案的安全要求。在设计密钥层次结构和广播方案时,必须考虑所有类型的潜在攻击。密钥层次结构的安全性必须确保对手无法通过分析公钥、密文和用户的私钥获得任何优势。目前存在两种针对PHE方案的攻击策略:
-
权限攻击 :该攻击旨在更改已授权用户的权限或获取其他用户的密钥。这种攻击也包含两种方式:
- 针对被破坏类的合谋攻击,其中 $R={u_{i_k,j_k}} {k=1}^t$ 中的被腐蚀用户希望伪造一个在 ${c {i_1}, \cdots, c_{i_t}}$ 中的(新的或未使用的)密钥(称为被破坏的类)。这种攻击的目的是避免被追踪并陷害无辜用户。
- 针对诚实类的合谋攻击,其中 $R={u_{i_k,j_k}} {k=1}^t$ 中的被腐蚀用户希望伪造一个在 $C\backslash{c {i_1}, \cdots, c_{i_t}}$ 中的(新的或未使用的)密钥。这种攻击的目的是改变偏序层次结构中的权限。 -
访问攻击 :其重点在于通过被腐蚀用户的合谋,使对手获得破坏密码系统的优势,或扩大访问范围,特别是获得破坏基于撤销算法的优势。
我们希望采用适当的技术来防止上述攻击,但由于叛徒在被发现之前已经是授权用户,因此从技术手段上无法避免合谋攻击。因此,叛徒追踪是一种有效威慑合谋攻击的方法。然而,我们必须确保叛徒无法伪造一个‘未使用过的’密钥以逃避追踪,而必须留下一些‘已放弃的’证据线索以便找到他们。我们给出如下安全密钥层级(SKH)的定义:
定义1 (安全密钥层级) . 一个 $(t, n)$-PHE 方案 $(S, J, E, D)$ 被认为具有满足以下条件的安全密钥层级 $\langle C, E, K \rangle$:
-
有效性 :对于 $c_i \in C$ 中的任意成员 $u_{i,j}$,会话密钥 $e_k$ 可以从 $Bl$ 和 $sk_{i,j}$ 高效计算得出,其中 $c_i \preceq c_l$。然后,对于在 $G(1^n)$ 范围内的每一对 $(pk_l, sk_{i,j})$ 以及每一个序列 $M_n$, $|M_n| \leq poly(n)$,
$$
\Pr[D(sk_{i,j}, E(pk_l, M_n))= M_n] \geq 1 - \frac{1}{|p(1^n)|};
$$
$\frac{1}{|p(1^n)|}$ 表示可忽略或可忽略地小,意味着其绝对值在渐近意义上小于任何多项式界限。 -
权限攻击 :对于任意集合 $R \subseteq {u_{i_1,j_1}, \cdots, u_{i_m,j_m}}, |R| \leq t$,计算用户 $u_{i,j} \in R$ 的 $sk_{i,j}$ 以及(公开的)加密密钥 $pk$ 在计算上是不可行的。那么对于每个概率多项式时间算法 $A$、每个多项式 $p(\cdot)$ 以及所有足够大的 $n$,
$$
\Pr[A(pk, {sk_{i_l,j_l}} {u {i_l,j_l} \in R})= sk_{i,j} : sk_{i_l,j_l} \in {sk_{i,j}} {u {i_l,j_l} \in R}] < \frac{1}{|p(n)|};
$$
其中,$pk= P \cup {pk_i}_{c_i \in C}$。 -
访问攻击 :对于任意集合 $R \subseteq {u_{i_1,j_1}, \cdots, u_{i_m,j_m}}, |R| \leq t$,从合谋集合 $R$ 以及任何密文 $C_l= E_{pk_l}^{R}(M_n)$ 中计算上不可行地获得攻破基于撤销的算法的优势,其中 $E_R$ 表示在 $R$ 上的基于撤销的算法,且 $M_n$ 是一个满足 $|M_n| \leq poly(n)$ 的序列。那么,对于每一个概率多项式时间算法 $A$,每一对多项式有界函数 $f, h:{0, 1}^ \rightarrow {0, 1}^ $(见[17]),每一个多项式 $p(\cdot)$,以及所有足够大的 $n$,
$$
\Pr[A(pk, h(X_n), E_{pk_l}^{R}(X_n), {sk_{i,j}} {u {i,j} \in R})= f(X_n)]
< \Pr[A(pk, h(X_n), {sk_{i,j}} {u {i,j} \in R}) = f(X_n)]+ \frac{1}{|p(n)|}.
$$
其中,$f(X_n)$ 表示对手试图从明文 $X_n$ 中获取的信息,而 $h(X_n)$ 表示关于明文的先验部分信息。
在此定义中,条件3)针对基于撤销机制的风险,并提出了这一安全要求(比定理1更严格),该要求除了附加的密钥信息 ${sk_{i,j}}
{u
{i,j} \in R}$ 对于一组被撤销用户 $R$ 外,符合“语义安全”的定义。众所周知,一个加密方案是语义安全的当且仅当其具有不可区分的加密(见[17]中的定理5.2.5)。因此,我们将方程(9)替换为以下方程
$$
\left| \Pr[A(pk, {sk_{i,j}}
{u
{i,j} \in R}, E_{pk_l}^{R}(X_n))= 1] -
\Pr[A(pk, {sk_{i,j}}
{u
{i,j} \in R}, E_{pk_l}^{R}(Y_n))= 1] \right| < \frac{1}{|p(n)|},
$$
使得证明方案抵抗访问攻击的安全性比以往更容易。根据此定义,我们可以证明以下定理。
定理2 . 所提出的 $(t, n)$-PHE 方案具有满足定义1的抗权限攻击和访问攻击的安全密钥层次结构。
在该定理的证明中,针对权限攻击的安全性包含两种情况:对诚实类的权限攻击和对被破坏类的权限攻击。由于篇幅限制,上述定理的证明被省略了。
相关工作
对于大规模面向群组的通信,广播加密最早于1991年被提出[18],随后由Fiat和Naor于1994年正式定义[19]。自那时起,它已成为密码学界的一个热门课题。在对称密钥环境中,只有受信任的系统设计者才能向接收者广播数据。然而,公钥方案最早由Boneh等在1999[20]中提出,可以发布一个短的公钥,使任何人都能广播数据,从而克服了对称密钥环境的缺陷。此外,Boneh等在面向群组加密的发展中做了大量工作,例如,Boneh、Sahai和Waters[21]于2006年提出了一种完全抗共谋的叛徒追踪方案,其密文大小为 $O(\sqrt{n})$,私钥大小为 $O(1)$,其中 $n$ 是用户的总数。然而,这些工作未考虑层次结构。
Boneh和Franklin于2001年提出了第一个完整的基于身份的加密(IBE)[22],其中公钥可以是任意字符串,例如电子邮件地址。然而,除非某些成员在拥有相同身份时共享相同的私钥,否则IBE不支持广播功能。基于这一思路,Boneh等提出了一种分层基于身份的加密(HIBE)系统以支持组织层级[23],但这种层级必须是树形结构,并且由于所有用户全局共享分层身份/私钥,因而无法实现基于身份的撤销和追踪。此外,基于属性的加密(ABE)也被考虑作为一种有效的组通信方法[24],但现有的ABE方案尚未能够支持分层结构。
对于基于偏序关系的密码系统,Akl和Taylor于1982年提出了一种简单的方案来解决多级安全问题。2005年,Kim[25]提出了一种使用多种单向函数的多级安全密钥管理系统。2008年,Zhong[26]提出了一种基于椭圆曲线密码系统和单向哈希函数的方法,用于解决动态访问问题。另一个相关领域是带时间控制的分层密钥管理。例如,2002年,Tseng提出了一种基于卢卡斯函数的时间约束方案[27],但该方案易受易和叶所提出的合谋攻击。2004年,Hwang[28]以及2008年Bertino等[29]分别提出了基于防篡改设备和哈希函数的类似方案。尽管这些工作支持带时间控制的实时广播,而非通用的访问控制和数字取证,但其分层技术对于分层管理仍具有学习阶段的借鉴价值。2007年,De Santis等总结并基于已有方案[30]提供了若干可证明安全的分层密钥分配方案。
结论与未来工作
本文构建了一种有效的兼容RBAC的密码系统,用于云数据加密。在未来工作中,我们计划引入一个全面的基于角色的密码系统,以支持多种安全机制,如加密、签名和认证。同时,我们将研究一种更高效的密码系统,以实现适用于大规模组织实际RBAC应用的大规模条件访问控制系统。
基于PHE的叛徒追踪方案
961

被折叠的 条评论
为什么被折叠?



