## 3 Preliminaries
### Step-by-Step Process
\begin{table}
\begin{tabular}{c c c c c} \hline \hline
**Step \#** & **Parameter** & **Process by** & **Input Taken** & **Output Delivered** \\ \hline Step \# 1 & \(GlobalSetup(\lambda)\to GP\) & Central authority (\(CA\)) & Security parameter (\(\lambda\)) & Global public parameters \\ \hline Step \# 2 & \(\begin{array}{c}AASetup(GP,aid)\\ (APK_{aid},ASK_{aid})\end{array}\) & Attribute authority (\(AA\)) & Global parameters (\(GP\)) and authority identity (\(aid\)) & Authority’s public/secret key pair (\(APK_{aid},ASK_{aid}\)) \\ \hline Step \# 3 & \(\begin{array}{c}SKGen(GP,ASK_{aid},\\uid,S_{aid,aid})\to SK_{S,aid,aid}\end{array}\) & Attribute authority (\(AA\)) & Global parameters (\(GP\)), authority secret key (\(ASK_{aid}\)), end-user identity (\(uid\)) and set of end user’s attributes & Secret key (\(SK_{S,aid,aid}\)) for end user (\(uid\)) \\ \hline Step \# 4 & \(\begin{array}{c}AttrGroupKey(aid,x)\\ (KEK_{TREE_{x}},AGK)\end{array}\) & Attribute authority (\(AA\)) & Authority identity (\(ai\)) and attribute (\(x\)) & Binary State Tree \(KEK_{TREE_{x}}\) and attribute-group key \(AGK\) for attribute \(x\) \\ \hline Step \# 5 & \(\begin{array}{c}Fog.Enc(\mathcal{A},GP,\{APK\}_{aid})\\ \rightarrow\mathcal{CT}^{\prime}_{out}\end{array}\) & Fog nodes & Authority identity (\(aid\)) and attribute (\(x\)) & Ciphertext \(\mathcal{CT}^{\prime}_{out}\) \\ \hline Step \# 6 & \(\begin{array}{c}DO.Enc(m,\mathcal{A},GP,\{APK\}_{aid})\\ \rightarrow\mathcal{CT}\end{array}\) & Data owners & Message \(m\), access policy (\(a_{p}\)), global parameters (\(GP\)) and set of authority public keys (\(APK_{aid}\)) & \(\mathcal{CT}\) \\ \hline Step \# 7 & \(ReEnc(\mathcal{CT},\{AGK\})\rightarrow\mathcal{CT}^{\prime}\) & \(CSP\) & Ciphertext \((\mathcal{CT})\) and set of attribute-group keys (\(AGK\)) & Re-encryption ciphertext \(\mathcal{CT}^{\prime}\) \\ \hline Step \# 8 & \(\begin{array}{c}PreDec(uid,\{AGK\},\\ \{SK_{S,uid,aid}\})\rightarrow\{SK_{S,uid,i}\},\mathcal{CN}^{\prime^{\prime}} \end{array}\) & End users & End-user identity (\(uid\)), set of attribute-group keys (\(AGK\)) & \(SK^{\prime}_{S,uid,i}\) and \(OSK_{S,uid}\) \\ \hline Step \# 9 & \(\begin{array}{c}Fog.Dec(\mathcal{CT}^{\prime},GP,OSK_{S,uid})\\ \rightarrow\mathcal{CT}^{\prime}_{out}\end{array}\) & Fog nodes & Ciphertext \((\mathcal{CT}^{\prime})\), global parameters (\(GP\)) and key (\(OSK_{S,uid}\)) & Partially decrypted ciphertext \((\mathcal{CT}_{out})\) \\ \hline Step \# 10 & \(\begin{array}{c}end{array}-user.Dec,\\ (\mathcal{CT}^{\prime}_{out},uid,SK_{S,uid,id})\rightarrow\\ (m/\bot)\end{array}\) & End users & Partially decrypted ciphertext \((\mathcal{CT}^{\prime}_{out})\), end-user identity (\(uid\)) and key (\(SK_{S,uid,id}\)) & Message (\(m\)) or \(\bot\) \\ \hline Step \# 11 & \(KeyUpdate\) & End users & Revoked attribute (\(x\)) & Attribute-group key (\(AGK^{\prime}_{x}\)) \\ \hline Step \# 12 & \(\begin{array}{c}CTUpdate\Big{(}\mathcal{CT}^{\prime},x,AGK^{{}^{\prime}}_{x} \Big{)}\rightarrow\\ \mathcal{CT}^{*}\end{array}\) & \(CSP\) & Ciphertext \((\mathcal{CT}^{\prime})\), revoked attribute \(x\) and attribute-group key (\(AGK^{\prime}_{x}\)) & \(\mathcal{CT}^{*}\) \\ \hline \hline \end{tabular}
\end{table} 
Table 3: Step-by-step process for different parameters in the proposed algorithm.