# An Improved Ciphertext-Policy Attribute-Based Encryption Scheme in Power Cloud Access Control
## Our Proposed Scheme Model  
### System Model  
Our PCAC scheme builds the system model which is shown in Figure 2. The model contains a total of five agencies: Power Cloud (**PC**), Central Key Authority (**CKA**), Key Share (**KS**), Data Source (**DS**), and User (**U**).  
Figure 1: Access Tree Structure.  
**PC**: PC provides storage service to DSs and Us. A great deal of raw data is saved in the PC which needs fine-grained access control, like power transmission data, electricity data, account information, etc. PC is also an authority of the system. However, PC is not fully trusted, because there is a risk of being attacked. Therefore, the PC stores the ciphertext \(C_{T}\) of all collected data. PC also needs to save some of the ciphertext of the symmetric key \(k\), which is distributed by CKA. PC is responsible for managing and coordinating the work of all agencies. When the system is initializing, the PC selects the system parameters \(k^{\prime}\). \(k^{\prime}\) is used to generate the attribute sets \(S\) and the pair of public key and private key (\(P\!k\), \(Sk\)), for each agency. The encrypt and decrypt algorithms are also constructed by these parameters. When the secret key SK is generated, PC needs to audit the user's action and prevent our system from giving access to malicious users.  
**CKA**: CKA is responsible for the distribution and coordination of KSs' tasks. CKA shares the computation overhead of PC. CKA also stores the users' attribute sets and DSs' static general access structure which has been generated when PC initializes the system. When uploading the data, CKA is responsible for generating the LSSS sharing matrix \(M_{LSSS}\) through the access tree, and distributing the ciphertext CT to KSs, according to some policies. The ciphertext is part of the secret key SK and it will work in a decrypt algorithm, which is executed by U. During the user's action audit phase, CKA needs to interact with the user and send the result to the PC for audit. If the audit is successful, CKA will generate secret key SK and send it to the user.  
**KS**: KS is responsible for storing a part of the ciphertext CT assigned by CKA, in order to prevent PC from being attacked and revealing all CT. For an access structure, there are multiple KSs involved in key sharing. Every KS does not know the other KSs who take part in the same access structure, and the data the KS saved does not contain other KSs' information. U cannot communicate with KSs directly. Only CKA is accessible to the data saved in KSs.  
**U**: U is user of power cloud service, and U can't upload the data to PC. Each U has his/her own attribute set, and CKA will determine whether the user has the file access with it. When a U enters the system, the PC distributes a specific public-private key pair (\(P\!k_{U}\), \(Sk_{U}\)) to U, for identity verification, key generation, and file decryption. The request for data requires to be verified twice (attribute set verification led by CKA and action auditing performed by the PC). If U does not pass these verifications at the same time, U will not be able to gain access to the file.  
**DS**: DSs are collectors of data. In the power cloud, the DSs may be smart meters, cameras, and other electronic equipment or some collectors. All the data \(C_{T}\) saved in PC comes from DSs, but DSs can't download data from the PC. The PC distributes an identity \(DS_{id}\) to each DS when the system is initialized. DS's action should be verified to prevent any attack which comes from the DS's side.  
Figure 2: Power Cloud Access Control (PCAC) System Model.