## 3 The Proposed Scheme
### Concrete Construction  
Based on the previously defined algorithms, the authors will introduce a substantial formation of multi-user CP-ABE scheme with keyword search for medical cloud systems. Table 1 first summarizes several utilized notations. The operation of each algorithm is concretely described as follows. **Setup:** On inputting a security parameter \(k\), the TA chooses a random numbers \(d\in Z_{p}\)* as the master secret key, and then generates essential parameters, as shown in Table 1.  
**ABE-KeyGen:** Each DU can request his/her attribute key (ABE-Key) from the TA by sending the correlated identity \(id\) and attribute set \(\mathbf{w}\). Utilizing the information \(\mathbf{w}\) and \(id\), the TA first selects \(t\in_{R}\)\(Z_{p}\)* to derive  
\[K=(g^{t})^{d}(g^{d}), \tag{1}\]  
\[L=(g^{g})^{t}, \tag{2}\]  
\[\{K_{x}=H(x)^{t}\}_{x\in w}. \tag{3}\]  
Then, TA records \((id,g^{dt})\) in the user list and the ABE-Key \(d_{id,\,w}=(K,L,\,\{K_{x}\})\) would be returned to the DU through a secure channel. **KS-KeyGen:** Each DU could request his/her keyword search key (KS-Key) from the TA by sending the correlated identity \(id\). Utilizing the information \(id\), the TA first checks whether the user's identity is stored in the user list. Otherwise, the TA will deny this request. Then, DU chooses a random number \(u\in Z_{p}\)* to compute the following parameter for the TA. \[q_{u}=g^{u} \tag{4}\]  
After receiving \(q_{u}\), the TA retrieves \(g^{dt}\) from the user list to compute  
\[q_{id}=(g^{dt})(q_{u}{}^{d}). \tag{5}\]  
The KS-Key \(q_{id}\) is sent back to the DU through a secure channel. DU also keeps the chosen random number \(u\) for decryption in the future. **Encrypt:** When DO wants to encrypt his/her sensitive data \(msg\) for uploading to the CS, DO first defines an access policy \(\mathbb{A}\) over a set of parties \(\mathbf{P}\) who are able to decrypt his/her sensitive data \(msg\). According to LSSS, the secret-sharing scheme for the access policy \(\mathbb{A}\) could be expressed as \((M_{l\times n},\,\rho)\) using a random vector \(\mathbf{v}=(s,y_{2},\ldots,y_{n})\in_{R}\)\(Z_{p}\)* and a mapping function \(\rho\). Then, DO utilizes the share algorithm of LSSS to obtain \(l\) share values \(\lambda_{i}=\langle\mathbf{M}_{i},\,\mathbf{v}\rangle\) and computes the following parameters:  
\[C=[e(g,g)^{d}]^{s}\cdot(msg), \tag{6}\]  
\[C^{\prime}=g^{s}, \tag{7}\]  
\[\{C_{i}=g^{d\lambda_{i}}H(\rho(i))^{-s}\}, \tag{8}\]  
Here, the ciphertext \(ct\) is composed of \((C,\,C^{\prime},\,\{C_{i}\})\). \begin{table}
\begin{tabular}{l l} \hline \hline
**Notation** & **Description** \\ \hline \(p\) & a large prime \\ \(G_{1}\),\(G_{2}\) & multiplicative cyclic groups of prime order \(p\) \\ \(g\) & a generator of \(G_{1}\) \\ \(e\) & bilinear pairing function satisfying \(e\): \(G_{1}\times G_{1}\to G_{2}\) \\ \(H\) & one-way hash function \\ \(F\) & message authentication code (MAC) \\ \(d\) & the private key of TA \\ \(g^{d},e(g,g)^{d}\) & the public keys of TA \\ \(g\) & the private key of PS \\ \(g^{\rho}\) & the public key of PS \\ \(\Omega\) & universe of all attributes, i.e., \(\Omega=[attr_{1},\ldots,attr_{n}]\) \\ \(w\) & the attribute set of DU, \(w\subseteq\Omega\) \\ \(\Lambda\) & the set of all keywords, i.e., \(\Lambda=[kw_{1},\ldots,kw_{l}]\) \\ \(kw\) & a subset of keywords, i.e., \(kw\subseteq\Lambda\) \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Symbol notations. **Index:** For creating an index in relation to the keyword set \(\mathbf{kw}\), the DO first picks an integer \(t_{i}\in_{R}Z_{p}{}^{*}\) for each keyword \(k\mathbf{w}_{i}\in\)\(\mathbf{kw}\), and then computes  
\[\{k_{i}=[e(g,g)^{d}]^{s}\cdot e(g,H(k\mathbf{w}_{i}))^{s}]_{k\mathbf{w}_{i}\in\mathbf{kw}}, \tag{9}\]  
\[\textit{IX}(\mathbf{kw})=\{(t_{i},f_{i}=F(k_{i},t_{i}))\}_{k\mathbf{w}_{i}\in\mathbf{kw}}, \tag{10}\]  
Next, the index set \(\textit{IX}(\mathbf{kw})\) along with the corresponding ciphertext \(ct\) and the access policy (\(M_{l\times n},\rho\)) are delivered to the PS.