In the key generation algorithm of cp-abe there are attributes: $x_1, x_2,...x_n \in \{0,1\}^*$

$r, r_{x_1}, r_{x_2},...r_{x_n} \xleftarrow{R} Z_p$ are chosen randomly to generate the private key $SK$ where.

$SK = [g^{\left(\alpha+r\right)/\beta}, g^r \cdot H(x_1)^{r_{x_1}}, g^{r_{x_1}}, ..., g^r \cdot H(x_n)^{r_{x_n}}, g^{r_{x_n}}]$

My question is, are those random $r's$ randomly chosen by the key authority each time a user requests a private key for certain attributes or is it generated once for all users and each user will be given the private key based on their attributes.

To be more clear assume user A claims attributes $x_1, x_2$ while user B claims $x_1, x_3$. They both at different times request a private key containing a component for attribute $x_1$. So is $r_{X_1}$ generated once for each user request or is it the same for both requests? Of course $g^r \cdot H(x_1)^{r_{x_1}}, g^{r_{x_1}}$ will be affected as well if they are different.

  • $\begingroup$ Hmm, I wonder together with "Community" what happened to this question. I can remember October being a busy time with many Q's and fewer answers. Then again, the user seems to have abandoned it as well. $\endgroup$
    – Maarten Bodewes
    Feb 18, 2017 at 14:15

1 Answer 1


You're talking about the KeyGen algorithm of Bethencourt's CP-ABE. The scheme is described in general and this KeyGen algorithm is supposed to be executed for each user secret key request in full which includes choosing new $r_x$ values.
So, your (actual?) concern that different users who have the same attributes could collude is unfounded.

However, a key authority can add single attributes to an existing user secret key, but for this it is necessary to know $r$ (by storing it in an internal database) or a trick shown by Denisow et al. in "Dynamic Location Information in Attribute-Based Encryption Schemes".


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.