# Securing IoT Devices against Differential-Linear (DL) Attack Used on Serpent Algorithm
## 4 Research Methodology
### Experimental Contribution of DL Attack on a Newly Generated Mag_Serpent  
Mag_Serpent used a new 32-bit S-Box, which declined to execute C++ _DLCT_ from various computers and machines due to memory limitations on diverse computers and machines. No computers and machines could compute the _DLCT_ of \(2^{4}\)\(\times\)\(2^{32}\) = 16 \(\times\) 429,4967,296 matrix, which is presumed to carry 68,719,476,736 entities. Without _DLCT_, it was impracticable to conduct a DL attack on a newly generated 4 \(\times\) 32 S-Boxes of Mag_Serpent algorithm. No rounds out of 32 were attacked using the DL attack due to the new 32-bit output S-Boxes, which obstructed the development of the _DLCT_ due to memory constraints. A review of how _DLCT_ was theoretically developed was examined and programmed experimentally in C++ code for validation, testing, confirmation, and verification. On the Serpent, the results revealed that the DL attack was possible. The main building blocks that performed all possibilities of the DL attack were the size of the S-Boxes. The Serpent's S-Boxes were 4 \(\times\) 4, indicating 4-bit inputs and 4-bit outputs. The experiment determined that it was straightforward to build _DLCT_ utilizing the 4 \(\times\) 4 Serpent S-Boxes (refer to Table 9 and Figure 7). The experiment used a C++ program to generate the _DLCT_ of 4 \(\times\) 4 and 4 \(\times\) 32 S-Box. The code validation was examined by using a 4 \(\times\) 4 Serpent S-Boxes and a newly generated 4 \(\times\) 32 S-Box of Mag_Serpent algorithm. The purpose of validating the code was to confirm the correctness of the written C++ experimental output _DLCT_ compared to the theoretical outputs. Note that the _DLCT_ of 4 \(\times\) 4 S-Box is a matrix of 2\({}^{4}\)\(\times\) 2\({}^{4}\) = 16 \(\times\) 16 matrix with 256 entities (refer to Table 9 and Figure 7). The experiment continued on a newly developed 4 \(\times\) 32 S-Box of Mag_Serpent algorithm. The program malfunctioned after five hours before the _DLCT_ was executed. No computer or machine could compute the _DLCT_ of 2\({}^{4}\)\(\times\) 2\({}^{32}\) = 16 \(\times\) 4,294,967,296 matrix, which is expected to contain 68,719,476,736 entities. Without the _DLCT_, conducting a DL attack on a newly developed 4 \(\times\) 32 S-Box of Mag_Serpent algorithm was impracticable (refer to Table 9 and Figure 7). _DLCT_ of 4 \(\times\) 4 S-Box had the first integer 16, which is (2\({}^{4}\)) considering the S-Box required four bits output as the most distinguished parameter. Sixteen is a byte that was donated as 00010000 in binary notation. If each 4 \(\times\) 4 S-Box _DLCT_ was treated as a byte, then the memory required to construct 4 \(\times\) 4 S-Box _DLCT_ is 8 bits \(\times\) 256 = 256 bytes. Note that 256 is the number of items displayed on a 4 \(\times\) 4 S-Box _DLCT_. A machine or computer can efficiently handle 4096 bytes (refer to Table 9 and Figure 7). From the above computations, the S-Box required thirty-two bits as the first parameter. The study presumed that the _DLCT_ of 4 \(\times\) 32 S-Box would have the first number item as 4,294,967,296, which is (2\({}^{32}\)). The 4,294,967,296 number is a triple-word comprising 5 bytes donated as 00000001  
prove and confirm that the study of building a _DLCT_ was conducted with all methods of a DL attack on a Serpent. The code was also implemented in both Serpent and Mag_Serpent in order to examine whether a DL attack was possible. All results were presented, and the results completely explain the development of the _DLCT_ that came before; after a novel approach of utilizing 32 bits, S-Boxes were implemented. The study employed a Blocker Function to create a new 32-bit S-Box suitable for the new Mag_Serpent algorithm and distracted the intruder. The random numbers and XOR operators also provide a problematic input range when attackers reverse a Blocker Function to determine accurate information used in that situation.