XTS-AES is a disk encryption mode of operation that uses the block cipher AES. Several studies have been conducted to improve the encryption speed using XTS-AES according to the increasing disk size. Among them, there are researches on parallel encryption of XTS-AES using GPU. Although these studies focus on parallel encryption of AES, optimization for the entire XTS mode has not been performed. The reason is that the <inline-formula> <tex-math notation="LaTeX">$\alpha ^{j}$ </tex-math></inline-formula> computation process included in XTS mode is not suitable for parallel operation. Therefore, in this paper, we proposed several techniques for high-speed encryption in GPU by modifying XTS-AES into a form that is advantageous for parallel operation. The core idea is to pre-calculate the <inline-formula> <tex-math notation="LaTeX">$\alpha ^{j}$ </tex-math></inline-formula> calculation on the CPU into a form that is easy to operate on the GPU. To achieve this goal, we analyzed the <inline-formula> <tex-math notation="LaTeX">$\alpha ^{j}$ </tex-math></inline-formula> calculation process and present the parts that can be optimized. First, we presented a method that can replace multiple operations with a single table reference through the analyzed <inline-formula> <tex-math notation="LaTeX">$\alpha ^{j}$ </tex-math></inline-formula> computation progress. Thereafter, we proposed a method that can be calculated by partially skipping the entire <inline-formula> <tex-math notation="LaTeX">$\alpha ^{j}$ </tex-math></inline-formula> computation process that must be sequentially calculated through the table reference technique. For the proposed optimization implementation, we presented various results for evaluating the optimal implementation. In addition, we compared the performance of XTS-AES OpenSSL implementation on CPU and our proposed optimization implementation on GPU.
Read full abstract