## 3 Proposed LAO-3D Block Cipher
### Encryption Algorithm  
The round transformation of the proposed LAO-3D block cipher consists of three different functions as shown in Algorithm 1. ```
1:\(RoundKeysGeneration(Key)\)
2:\(AddRoundKey(State,RoundKey_{0})\)
3:for\(i=1\)to\(20\)do
4:\(SubColumn(State)\)
5:\(Double3 DRotation(State,RoundKey_{i})\)
6:endfor
```  
**Algorithm 1** Pseudocode of the LAO-3D block cipher (encryption). In this notation, all three functions that include the AddRoundKey, SubColumn, and Double3 DRotation are operated on arrays where the inputs are the cipher State and RoundKey. The overall encryption and decryption processes of the LAO-3D algorithm are displayed in Figure 5.  
For the decryption process, the functions are to be operated on in reverse order with 20 rounds of the Double3 DRotation and SubColumn functions followed by AddRoundKey. Similarly, all RoundKeys are applied in reverse order in the course of the decryption. Algorithm 2 displays all functional transformations of the algorithm. ```
1:\(RoundKeysGeneration(Key)\)
2:for\(i=1\)to\(20\)do
3:\(Double3 DRotation^{-1}(State,RoundKey_{21-i})\)
4:\(SubColumn^{-1}(State)\)
5:endfor
6:\(AddRoundKey(State,RoundKey_{0})\)

Figure 5: LAO-3D Block Cipher Process. #### 3.2.1 AddRoundKey

In the AddRoundKey function, the cipher State \(A=\{(a_{3,15},\ldots,a_{3,0}),\)\((a_{2,15},\ldots,a_{2,0}),\)\((a_{1},\)\(15,\ldots,a_{1,0}),\)\((a_{0,15},\ldots,a_{0,0}):a_{i,j}\in A\) for \(i=(3,\ldots,0)\) and \(j=(15,\ldots,0)\}\) applied a bitwise XOR with the RoundKey \(K=\{(k_{3,15},\ldots,k_{3,0}),\)\((k_{2,15},\ldots,k_{2,0}),\)\((k_{1,15},\ldots,k_{1,0}),\)\((k_{0,15},\ldots,k_{0,0})\) : \(k_{i,j}\in K\) for \(i=(3,\ldots,0)\) and \(j=(15,\ldots,0)\}\) to produce the cipher State \(B=\{(b_{3,15},\ldots,b_{3,0}),\)\((b_{2,15},\ldots,b_{2,0}),\)\((b_{1,15},\ldots,b_{1,0}),\)\((b_{0,15},\ldots,b_{0,0}):b_{i,j}\in B\) for \(i=(3,\ldots,0)\) and \(j=(15,\ldots,0)\}\) as derived in equation (1). The 64 bits RoundKey are generated using the key schedule algorithm. \[B=A\oplus K \tag{1}\]

#### 3.2.2 Sub-Column

SubColumn is a non-linear bit substitution that runs independently on every column of the State. This function implements the PRESENT S-box that applies the 4-by-4-bit substitution operation as shown in Table 1[25]. The S-box is chosen because of its competitive cryptographic characteristics and small hardware footprint. The input for the S-box used in the SubColumn function is represented by \(Col_{j}=\{(b_{3,j},\ldots,b_{0,j}):b_{i,j}\in Col_{j}\) for \(i=(3,\ldots,0)\) and \(j=(15,\ldots,0)\}\) and the output is \(S(Col_{j}),\) which can be represented by \(\{(c_{3,j},\ldots,c_{0,j}):c_{i,j}\in S(Col_{j})\) for \(i=(3,\ldots,0)\) and \(j=(15,\ldots,0)\}\) as depicted in Figure 6.

#### 3.2.3 Double3 DRotation

The Double3 DRotation is constructed by combining three functions that include the 3 DBitRotation_X-axis, AddRoundKey, and 3 DBitRotation_Z-axis to provide better permutation to the proposed block cipher. 1. 3 DBitRotation_X-axis: A specific rotation formation that follows a clockwise direction at the X-axis. The cipher State of every Slice before and after executing the 3 DBitRotation_X-axis function is shown in Figure 7. Values of the 3 DBitRotation_X -axis function can be presented in the form of a permutation table as shown in Table 2. \begin{table}
\begin{tabular}{c c c c c c c c c c c c c c c} \hline \(x\) & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & A & B & C & D & E & F \\ \hline S(\(x\)) & 5 & E & F & 8 & C & 1 & 2 & D & B & 4 & 6 & 3 & 0 & 7 & 9 & A \\ \hline \end{tabular}
\end{table} 
Table 1: S-box. Figure 6: SubColumn Function.