# Secure and Efficient Deduplication for Cloud Storage with Dynamic Ownership Management
## 5 The Proposed Secure Deduplication Protocol
### Initial Data Upload  
The client can gain ownership of data in the cloud storage by successfully uploading them. There are two types of data uploads: initial uploads, which involve data not yet stored in the cloud, and subsequent uploads, which pertain to data that are already present. The detailed process of the initial upload is as follows:  
**Step 1. **: **Upload pre-work. ** Client \(i\) must blind encrypt and send data to CS. * The client \(i\) calculates the hash value \(h(m)\) of the message \(m\). * The client calculates \(m\oplus h(m)=M\) and a hash value \(h(M)\). \(M\) is a blind encrypted value sent to the CS. Not only is it generated faster than the encryption operation, but also the characteristics of the plaintext are not revealed to the CS. * The client randomly selects \(r_{i}\). This will be used to prove the client themselves. * The client stores \(h(m)\), \(h(M)\), and \(r_{i}\). The \(h(m)\) is used to recover \(m\) from \(M\) when data downloading. The \(h(M)\) is used to identify the desired data when requesting an ownership update or data download. The \(r_{i}\) is used to identify the client. * The client sends an upload request, \(M\), and \(r_{i}\) to the CS. **Step 2. **: **Deduplicate data. ** The CS determines whether the received data are duplicated and processes the data according to the case. * The CS calculates the hash value \(h(M)\) of the received \(M\). * The CS checks whether \(h(M)\) and \(r_{i}\) exist in the \(ACL\). The initial upload means no data in the cloud storage. In this case, no information exists in the \(ACL\). * The CS stores \(h(M)\) and \(r_{i}\) in \(ACL\). Also, since there are no data in the cloud storage, CS must encrypt \(M\) and send it to the cloud storage. * The CS encrypts \(M\) with the hash value \(h(M)\). Encrypting data with a hash value is called MLE. Hash values are always the same for the same data. Thus, MLE can generate the same ciphertext for the same data. * The CS sends a store request, \(h(M)\), and \(C=E(M)\) to the cloud storage. **Step 3. **: **Re-encrypt data. ** Cloud storage generates a group key and re-encrypts the data. * The cloud storage generates a group key, denoted as \(GK_{I}\), by encrypting the results of XOR operations on \(h(M)\) and session \(I\) with the cloud storage's \(SK_{C}\) \begin{table}
\begin{tabular}{l l} \hline \hline
**Notation** & **Description** \\ \hline \(m\) & The plaintext \\ \(h(\cdot)\) & The cryptographic hash function \\ \(M\) & The blind-encrypted data \\ \(C\) & The ciphertext \\ \(r_{i}\) & The random value of client \(i\) \\ \(ACL\) & The access control list of CS \\ \(CTL\) & The ciphertext list of cloud storage \\ \(E(\cdot)\) & The symmetric encrypt function \\ \(SK_{C}\) & The secret key of cloud storage \\ \(i,j,n\) & The client identification name \\ session \(I,J,N\) & The session identification in progress \\ \(GK_{N}\) & The group key for session \(N\) \\ \(RC_{N}\) & The re-encrypted data for session \(N\) \\ \(RGK\) & The distribution group key \\ \(RGK_{adder},RGK_{other}\) & The distribution group key for client \(n\) \\ \(CRGK_{n}\) & The distribution group key for client \(n\) \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Notations. * The cloud storage performs an XOR operation on the ciphertext \(C\) and the group key \(GK_{I}\). The \(C\) is received from the CS. The result of the XOR operation is a re-encrypted ciphertext \(RC_{I}\) for session \(I\). Whenever an ownership update occurs, the cloud storage refreshes a group key \(GK_{N}\) and a re-encrypted ciphertext \(RC_{N}\) for the session \(N\). * The cloud storage stores \(h(M)\), \(GK_{I}\), and \(RC_{I}\) in a ciphertext list of cloud storage (\(CTL\)). * The cloud storage generates an \(RGK\) to distribute the refreshed group key. Since there are no owners in the previous session, the \(RGK\) generates only \(GK_{I}\). * The cloud storage sends the generated \(RGK\) to the CS and requests it to be sent to the data owner. **Step 4. Send refreshed group key. ** The CS sends the group key to the legitimate client.