形式化定义
基本的形式化定义包含4个基本的多项式算法.
(1) 系统初始化:
Setup(
λ
\lambda
λ) → {PK, MSK}
输入安全参数
λ
\lambda
λ, 输出系统公钥PK和系统主私钥MSK.
(2) 私钥生成:
KeyGen(PK, MSK, S) → SK
输入公钥PK, 主私钥MSK, 属性集合S, 用户密钥SK.
(3) 数据加密:
Encrypt(PK,
A
\mathbb{A}
A, M) → CT
输入系统公钥PK , 访问结构
A
\mathbb{A}
A, 明文M, 输出密文CT.
(4) 数据解密:
Decrypt(PK, CT, SK) → M
输入公钥PK, 密文CT, 用户私钥SK, 输出明文M. 否则解密失败.
安全模型
基本的CP-ABE方案安全性基于挑战者和攻击者之间的博弈过程进行证明. 过程概括为
(1) 系统初始化: 攻击者
A
\mathcal{A}
A选择一个挑战访问结构
A
∗
\mathbb{A}^*
A∗发送给挑战者
B
\mathcal{B}
B. (目的是攻击所选择的挑战访问结构, 尝试通过非对应的私钥询问解密挑战结构的密文.
(2) 参数设置阶段: 挑战者 B \mathcal{B} B运行Setup算法, 得到PK, MSK, 将PK发送给 A \mathcal{A} A, 然后保留MSK.
(3) 密钥查询阶段 1: 攻击者 A \mathcal{A} A查询一系列与属性集合 S 1 , S 2 , . . . , S q ′ S_1, S_2, ..., S_{q'} S1,S2,...,Sq′有关的密钥, 即 A \mathcal{A} A发送属性集合给 B \mathcal{B} B, 然后 B \mathcal{B} B返回对应私钥给 A \mathcal{A} A. 但要求所有的私钥查询都不能满足挑战访问结构 A ∗ \mathbb{A}^* A∗.
(4) 挑战阶段: A \mathcal{A} A提交两个等长消息 M 0 ∗ , M 1 ∗ M_0^*, M_1^* M0∗,M1∗给 B \mathcal{B} B, B \mathcal{B} B随机选择 β ∈ { 0 , 1 } \beta \in \{0, 1\} β∈{0,1}, 加密 M β ∗ M_\beta^* Mβ∗得到挑战密文 C T b ∗ CT_b^* CTb∗, 然后发送给 A \mathcal{A} A.(即不可区分性安全目标
(5) 密钥查询阶段 2: 类似密钥查询阶段 1, 攻击者 A \mathcal{A} A再查询另一系列与属性集合 S q ′ + 1 , S q ′ + 2 , . . . , S q S_{q' + 1}, S_{q' + 2}, ..., S_q Sq′+1,Sq′+2,...,Sq有关的密钥, 即 A \mathcal{A} A发送属性集合给 B \mathcal{B} B, 然后 B \mathcal{B} B返回对应私钥给 A \mathcal{A} A. 但要求所有的私钥查询都不能满足挑战访问结构 A ∗ \mathbb{A}^* A∗.
(6) 猜测阶段: 攻击者
A
\mathcal{A}
A输出
β
′
∈
{
0
,
1
}
\beta' \in \{0, 1\}
β′∈{0,1}, 如果
β
′
=
β
\beta' = \beta
β′=β, 称
A
\mathcal{A}
A赢得游戏.
A
\mathcal{A}
A在游戏中的优势为
A
d
v
A
=
∣
P
r
[
β
′
=
β
]
−
1
2
∣
Adv_{\mathcal{A}} = | Pr[\beta' = \beta] - \frac{1}{2}|
AdvA=∣Pr[β′=β]−21∣
定义
如果没有多项式时间内的攻击者
A
\mathcal{A}
A以不可忽略的优势攻破上述安全模型, 则称基本CP-ABE方案是安全的.