# Securing IoT Devices against Differential-Linear (DL) Attack Used on Serpent Algorithm
###### Abstract
While the improvements of security on IoT devices are increasingly developing using vigorous cryptographic algorithms, more attackers develop various methods of attacking the notably strong algorithms [9]. The Serpent algorithm is one of the most popular algorithms and is usually installed on IoT devices. However there are concerns regarding the robustness of the Serpent algorithm in terms of security. One of the main concerns is the vulnerability of Serpent algorithms towards _DLCT_. _DLCT_ was used to attack Serpent algorithms so as to discover secret encryption keys [6; 7]. Once an invader cracks and discovers the Serpent's key, all data encrypted with Serpent in IoT devices can be easily obtained by the attackers. This attack can result in the exploitation of entire IoT devices and their users. Essentially, it is easy for an attacker to attack a cryptographic algorithm such as Serpent because it has a low number of output bits (4-bits) found on the S-Boxes [8]. The Differential-Linear attack can harm the entire security system of IoT devices if it is not appropriately protected against. A few studies have been conducted to secure the Serpent algorithm against DL attacks. This study focuses on strengthening Serpent from DL attacks by constructing a new additional function called Blocker. This is performed by using three magic numbers and developing the new 32-bit output S-Boxes so that _DLCT_ becomes cumbersome when building _DLCT_ using the S-Boxes of the Serpent algorithm. It has been analyzed that DL attacks start with _DLCT_. Therefore, by blocking the construction of _DLCT_, it is believed that a DL attack will be impossible. The _DLCT_ can be prevented by using a blocker with three magic numbers. The first magic number is \(Q\) = 4,302,746,963, the second is \(P\) = 4,559,351,687, and the third is M = 4,294,967,296 mapped on Blocker, which will be inserted on Serpent's architecture. New 32-bit output S-Boxes were generated to replace the original 4-bits output S-Boxes. In this study, newly generated 32-bits output, S-Boxes, and Blocker Function successfully managed to secure the Serpent algorithm by blocking the construction of a probability table called _DLCT_ used during the process of DL attack. Additionally, a newly generated function called Blocker is introduced in this study. A Blocker Function uses a 32-bit output value from S-Box as \(state32 hold\) and delivers a new value \(statehold\) value as an output. A Blocker Function also transforms a \(P\) value, \(M\) value, and \(Q\) value into unfactorizable polynomials. Random numbers and XOR operators are utilized for complexity and confusion in order to prevent reverse engineering for attackers. The XOR operator and \(rand()\) change the values of the variables inside a Blocker Function. The random numbers and XOR operators also provide a problematic input range when invaders reverse back a Blocker Function to calculate the exact information utilized. The value of \(M\), \(P\), and \(Q\) are also continually maintained as unfactorizable polynomial variables, which are non-linear and hard to reverse, in order to construct \(DLCT\) using any machine or computer. The random numbers and XOR operators include inventing hidden, unseen, and unchangeable variables for intruders. A Blocker Function produces a unique 32-bit S-Box suitable for the new Magic Serpent Algorithm. A Blocker Function distracts the attacker since it has many mathematical random numbers and XOR operators. Additionally, most mathematical XOR operators and random numbers are irreversible. For more mathematical characteristics of a Blocker Function and C++ explanations, refer to Section 4 and Figure 1.  
Figure 1: New generated function called Blocker.