# Security Enhancement for Data Migration in the Cloud
## 4 Proposed Model
### Overview of the Encoding Process  
The encoding process consists of three levels of security: encryption with 256-bit key length, IDA and Hashing algorithm. During the encoding process in Figure 2, the user original data or file \(F\) is firstly encrypted using the AES-256 algorithm. The encryption key \(\kappa\) is generated randomly, yet managed and protected by the consumer or the IT manager [24]. Secondly, the preceding encrypted data file \(F^{\prime}=\zeta(F,\kappa)\) is broken into \(n\) separated slices file in such a way that knowledge of at least any \(m\) of these \(n\) slices can be used to reconstruct the encrypted data file \(F^{\prime}\). Assume \(F^{\prime}=(Y_{1},\cdots,Y_{S})\) be a file of size \(S\) (measured in some scale i.e., strings symbols or bytes). The symbols \(Y_{i}\) is interpreted as an element in some finite field \(\mathbb{F}\)[25]. The file \(F^{\prime}\) can be split into blocks of \(m\) symbols or bytes. Thus, \(F^{\prime}=(Y_{1},\cdots,Y_{m})\), \((Y_{m+1},\cdots,Y_{2m}),\cdots,(Y_{S-m+1},\cdots,Y_{S})\). \begin{table}
\begin{tabular}{l l} \hline \hline
**Notations** & **Description** \\ \hline \(F\) & Original data \\ \(F^{\prime}\) & Encrypted data \\ \(F^{\prime\prime}\) & Slices set \\ \(F^{\prime\prime\prime}\) & Encoded set \\ \(f_{i}\) & Slice data file \\ \(\zeta_{i},\Delta\) & Encryption, Decryption \\ \(\kappa\) & Encryption key \\ \(f_{i}^{\prime}=H(f_{i})\) & Hash value using SHA-512 \\ \(|\ |\) & Concatenation \\ \(S=|F^{\prime}|\) & Encrypted file length \\ \(n\) & total number of slices \\ \(m\) & number of symbols/bytes required to reconstruct \(F^{\prime}\) \\ \(\omega=|f_{i}|\) & Slice data file length \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Notation and parameter description. Figure 2: Encoding steps. We lay out the file \(F^{\prime}\) as an \(m\times\omega\) matrix, where \(\omega\) is the size of each data slice:  
\[\Omega_{m\times\omega}= \begin{pmatrix}\mathrm{Y}_{1}&\mathrm{Y}_{m+1}&\cdots& \mathrm{Y}_{(\omega-1)\cdot m+1}\\ \mathrm{Y}_{2}&\mathrm{Y}_{m+2}&\cdots&\mathrm{Y}_{(\omega-1)\cdot m+2}\\ \vdots&\vdots&\ddots&\vdots\\ \mathrm{Y}_{m}&\mathrm{Y}_{2m}&\cdots&\mathrm{Y}_{\omega\cdot m}\end{pmatrix} ; \quad\omega=\left(\frac{S}{m}\right). \tag{1}\]  
Hence, \(\mathrm{Y}_{i}=\mathrm{Y}_{(i-1)m+1}\), \(\mathrm{Y}_{(i-1)m+2}\), \(\cdots,\mathrm{Y}_{im}\) are the \(i^{th}\) blocks of \(m\) symbols. Consider \(G\) to be the \(n\times m\) Cauchy matrix used to transform the original matrix \(\Omega\) into \(n\) slices:  
\[G_{n\times m}= \begin{pmatrix}a_{11}&a_{12}&\cdots&a_{1m}\\ a_{21}&a_{22}&\cdots&a_{2m}\\ \vdots&\vdots&\ddots&\vdots\\ a_{n1}&a_{n2}&\cdots&a_{nm}\end{pmatrix} .\]  
Each subset of \(m\) rows is a linearly independent vector [26]. To disperse, we multiply \(G\) and \(\Omega\), which yields an \(n\times\omega\) matrix \(\delta\):  
\[G\cdot\Omega= \begin{pmatrix}a_{11}&a_{12}&\cdots&a_{1m}\\ a_{21}&a_{22}&\cdots&a_{2m}\\ \vdots&\vdots&\ddots&\vdots\\ a_{n1}&a_{n2}&\cdots&a_{nm}\end{pmatrix} \cdot \begin{pmatrix}\mathrm{Y}_{1}& \mathrm{Y}_{m+1}&\cdots&\mathrm{Y}_{(\omega-1)\cdot m+1}\\ \mathrm{Y}_{2}&\mathrm{Y}_{m+2}&\cdots&\mathrm{Y}_{(\omega-1)\cdot m+2}\\ \vdots&\vdots&\ddots&\vdots\\ \mathrm{Y}_{m}&\mathrm{Y}_{2m}&\cdots&\mathrm{Y}_{\omega\cdot m}\end{pmatrix} \] \[= \begin{pmatrix}f_{11}&f_{12}&\cdots&f_{1\omega}\\ f_{21}&f_{22}&\cdots&f_{2\omega}\\ \vdots&\vdots&\ddots&\vdots\\ f_{n1}&f_{n2}&\cdots&f_{n\omega}\end{pmatrix} =\delta_{n\times\omega}\]  
where \(f_{ij}=\sum_{k=1}^{m}a_{ik}\cdot\mathrm{Y}_{(j-1)m+k}\); \(1\leqslant i\leqslant n\); \(1\leqslant j\leqslant\omega\). Given \(\Omega\), a dispersal algorithm can produce a matrix \(\delta\) consisting of \(n\) rows and \(\omega\) columns. Each row of \(\delta\) corresponds to a specific file slice: \(f_{i}=(f_{i1},f_{i2},\cdots,f_{i\omega})\). Therefore, applying IDA to \(F^{\prime}\) will produce \(F^{\prime\prime}\) consisting of \(n\) slices.