<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.1 20151215//EN" "http://jats.nlm.nih.gov/publishing/1.1/JATS-journalpublishing1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" article-type="research-article" dtd-version="1.1">
<front>
<journal-meta>
<journal-id journal-id-type="pmc">CMC</journal-id>
<journal-id journal-id-type="nlm-ta">CMC</journal-id>
<journal-id journal-id-type="publisher-id">CMC</journal-id>
<journal-title-group>
<journal-title>Computers, Materials &#x0026; Continua</journal-title>
</journal-title-group>
<issn pub-type="epub">1546-2226</issn>
<issn pub-type="ppub">1546-2218</issn>
<publisher>
<publisher-name>Tech Science Press</publisher-name>
<publisher-loc>USA</publisher-loc>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">20716</article-id>
<article-id pub-id-type="doi">10.32604/cmc.2022.020716</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Article</subject>
</subj-group>
</article-categories>
<title-group>
<article-title>An Efficient AES 32-Bit Architecture Resistant to Fault Attacks</article-title>
<alt-title alt-title-type="left-running-head">An Efficient AES 32-bit Architecture Resistant to Fault Attacks</alt-title>
<alt-title alt-title-type="right-running-head">An Efficient AES 32-bit Architecture Resistant to Fault Attacks</alt-title>
</title-group>
<contrib-group content-type="authors">
<contrib id="author-1" contrib-type="author" corresp="yes">
<name name-style="western">
<surname>Mestiri</surname>
<given-names>Hassen</given-names>
</name>
<xref ref-type="aff" rid="aff-1">1</xref>
<xref ref-type="aff" rid="aff-2">2</xref>
<xref ref-type="aff" rid="aff-3">3</xref><email>h.mestiri@psau.edu.sa</email>
</contrib>
<contrib id="author-2" contrib-type="author">
<name name-style="western">
<surname>Barraj</surname>
<given-names>Imen</given-names>
</name>
<xref ref-type="aff" rid="aff-4">4</xref>
<xref ref-type="aff" rid="aff-5">5</xref>
</contrib>
<contrib id="author-3" contrib-type="author">
<name name-style="western">
<surname>Mohamed</surname>
<given-names>Abdullah Alsir</given-names>
</name>
<xref ref-type="aff" rid="aff-1">1</xref>
</contrib>
<contrib id="author-4" contrib-type="author">
<name name-style="western">
<surname>Machhout</surname>
<given-names>Mohsen</given-names>
</name>
<xref ref-type="aff" rid="aff-3">3</xref>
</contrib>
<aff id="aff-1"><label>1</label><institution>Department of Computer Engineering, College of Computer Engineering and Sciences, Prince Sattam bin Abdulaziz University</institution>, <addr-line>Al-Kharj, 11942</addr-line>, <country>Saudi Arabia</country></aff>
<aff id="aff-2"><label>2</label><institution>Higher Institute of Applied Sciences and Technology of Sousse, University of Sousse</institution>, <country>Tunisia</country></aff>
<aff id="aff-3"><label>3</label><institution>Electronics and Micro-Electronics Laboratory, Faculty of Sciences of Monastir, University of Monastir</institution>, <country>Tunisia</country></aff>
<aff id="aff-4"><label>4</label><institution>METS Research Group, Electrical Engineering Department, National Engineers School of Sfax, University of Sfax</institution>, <country>Tunisia</country></aff>
<aff id="aff-5"><label>5</label><institution>Higher Institute of Computer Science and Multimedia of Gabes, University of Gabes</institution>, <country>Tunisia</country></aff>
</contrib-group>
<author-notes>
<corresp id="cor1"><label>&#x002A;</label>Corresponding Author: Hassen Mestiri. Email: <email>h.mestiri@psau.edu.sa</email></corresp>
</author-notes>
<pub-date pub-type="epub" date-type="pub" iso-8601-date="2021-09-13"><day>13</day><month>9</month><year>2021</year></pub-date>
<volume>70</volume>
<issue>2</issue>
<fpage>3667</fpage>
<lpage>3683</lpage>
<history>
<date date-type="received"><day>04</day><month>6</month><year>2021</year>
</date>
<date date-type="accepted"><day>07</day><month>7</month><year>2021</year>
</date>
</history>
<permissions>
<copyright-statement>&#x00A9; 2022 Mestiri et al.</copyright-statement>
<copyright-year>2022</copyright-year>
<copyright-holder>Mestiri et al.</copyright-holder>
<license xlink:href="https://creativecommons.org/licenses/by/4.0/">
<license-p>This work is licensed under a <ext-link ext-link-type="uri" xlink:type="simple" xlink:href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</ext-link>, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</license-p>
</license>
</permissions>
<self-uri content-type="pdf" xlink:href="TSP_CMC_20716.pdf"></self-uri>
<abstract>
<p>The Advanced Encryption Standard cryptographic algorithm, named AES, is implemented in cryptographic circuits to ensure high security level to any system which required confidentiality and secure information exchange. One of the most effective physical attacks against the hardware implementation of AES is fault attacks which can extract secret data. Until now, a several AES fault detection schemes against fault injection attacks have been proposed. In this paper, so as to ensure a high level of security against fault injection attacks, a new efficient fault detection scheme based on the AES architecture modification has been proposed. For this reason, the AES 32-bit round is divided into two half rounds and input and pipeline registers are implemented between them. The proposed scheme is independent of the procedure the AES is implemented. Thus, it can be implemented to secure the pipeline and iterative architectures. To evaluate the robustness of the proposed fault detection scheme against fault injection attacks, we conduct a transient and permanent fault attacks and then we determine the fault detection capability; it is about 99.88585% and 99.9069% for transient and permanent faults respectively. We have modeled the AES fault detection scheme using VHDL hardware language and through hardware FPGA implementation. The FPGA results demonstrate that our scheme can efficiently protect the AES hardware implementation against fault attacks. It can be simply implemented with low complexity. In addition, the FPGA implementation performances prove the low area overhead and the high efficiency and working frequency for the proposed AES detection scheme.</p>
</abstract>
<kwd-group kwd-group-type="author">
<kwd>Security</kwd>
<kwd>cryptographic circuits</kwd>
<kwd>AES</kwd>
<kwd>hardware implementation</kwd>
<kwd>fault detection</kwd>
<kwd>fault attacks</kwd>
</kwd-group>
</article-meta>
</front>
<body>
<sec id="s1">
<label>1</label>
<title>Introduction</title>
<p>In October 2000, the National Institute of Standards and Technology (NIST) finalizes the Advanced Encryption Standard, when the Rijndael algorithm was adopted as encryption standard [<xref ref-type="bibr" rid="ref-1">1</xref>]. The AES algorithm is used in everyday system to ensure the data confidentiality and the secure of information exchange. Improving the performance of AES circuit is a critical difficulty if the circuit is implemented in the embedded systems. Currently, the AES algorithm is applied in large variety of applications as smart card and mobile communication which require high security level. Therefore, the necessity to increase the AES robustness algorithm against several physical attacks as fault attacks [<xref ref-type="bibr" rid="ref-2">2</xref>&#x2013;<xref ref-type="bibr" rid="ref-4">4</xref>].</p>
<p>Fault attacks are based on injecting faults into the AES architecture to extract private information [<xref ref-type="bibr" rid="ref-5">5</xref>&#x2013;<xref ref-type="bibr" rid="ref-8">8</xref>]. The malicious and the natural injected faults decrease the AES robustness in may cause secure data leakage in non-secure implementation. The malicious injected faults are occurred by electromagnetic radiation, voltage/clock glitching and ambient environment. The AES hardware implementation is vulnerable to these errors. It should be noted that the injected errors cause erroneous AES results which make the encrypted message output unreliable. To improve the robustness of the AES implementation, until to date, a few fault detection schemes have been proposed [<xref ref-type="bibr" rid="ref-9">9</xref>&#x2013;<xref ref-type="bibr" rid="ref-17">17</xref>].</p>
<p>Guo et al. [<xref ref-type="bibr" rid="ref-9">9</xref>] proposed in a new concurrent fault detection approach named re-computing with permuted operands. In this scheme, the AES encryption process is performed on the input message. Then, the input message is permuted and the encryption process is executed again. After re-encryption, the round output is re-permuted and then compared with the original AES round to detected all fault occurred during the encryption process. This proposed scheme in [<xref ref-type="bibr" rid="ref-9">9</xref>] can detect all transient and permanent faults in all AES functions. Yet, it causes more than 58% throughput degradation.</p>
<p>Sheikhpour et al. [<xref ref-type="bibr" rid="ref-10">10</xref>] proposed in an efficient fault-resilient scheme to protect all AES operations. This scheme consists in modifying the basic temporal redundancy where the AES architecture consists of four parts and each part is split into two pipeline stages. This design is independent of the implementation of S-Box function. The authors have shown that their fault-resilient implementation achieves high fault detection rate against the fault attack with low hardware FPGA and ASIC implementation cost.</p>
<p>Sheikhpour et al. [<xref ref-type="bibr" rid="ref-11">11</xref>] proposed a three fault-tolerant architectures which provide different security levels of fault tolerance for AES 128-bit. Those architectures can tolerate all permanent and transient faults. The authors show that their fault detection capability result is close to conventional N-modular hardware and N-tuple temporal redundancy with a low hardware implementation cost.</p>
<p>Mestiri et al. [<xref ref-type="bibr" rid="ref-12">12</xref>] proposed a new AES 128-bit fault detection architecture based on modified time redundancy. In this architecture, the AES round is spilt into two blocks. The first block includes the SubBytes and ShiftRows and the second block consists of MixColumns and AddRoundKey where each block is calculated twice and the round outputs are checked for fault detection. This architecture causes high maximum frequency and can detect 98.45% of transient faults, but it is not capable to detect the permanent faults.</p>
<p>Kamali et al. [<xref ref-type="bibr" rid="ref-13">13</xref>] proposed in an AES pipelining architecture by replicating non pipelined AES blocks. This approach implement a different mechanism compared to loop unrolling and a compact S-Box to reduce memory-based substitution. To protect their new architecture against fault attacks, the authors implement a low cost concurrent fault detection method based on the parity checking where the input parity is compared with the modified AES parity. The fault coverage of this approach achieves 98.7% for the single fault and 53% for the random fault injections.</p>
<p>Benhadjyoussef et al. [<xref ref-type="bibr" rid="ref-14">14</xref>] proposed in a 32-bit AES implementation protected using a hybrid fault countermeasure. This countermeasure presents an efficient method for concurrent checking based on parity testing and time redundancy. The authors illustrate that their proposed scheme can be applicable for the encryption and decryption designs. In addition, the experimental results demonstrate that the proposed countermeasure has high fault coverage.</p>
<p>In this paper, we present a new AES fault detection scheme against fault attacks. We summarize our contributions as:
<list list-type="bullet">
<list-item>
<p>The idea is to modify the AES 32-bit architecture. Each AES 32-bit round is split into two half rounds. So the first part of the round is cheeked against error, at the same clock cycle as, the second part of the round is executed and vice versa.</p></list-item>
<list-item>
<p>We have proposed a modified AES 32-bit architecture resulting in new fault detection scheme for securing the nonlinear AES transformations, <italic>i.e.</italic>, SubBytes (Inv_SubBytes), and the linear AES transformations, <italic>i.e.</italic>, ShiftRows (Inv_ShiftRows), MixColumns (Inv_MixColumns) and AddRoundKey in the encryption and the decryption process. The proposed approach is independent of the Inv_S-box and the S-Box are implemented, <italic>i.e.</italic>, composite fields or Look-Up Table implementations. It is important to note that the clock frequency of our scheme is higher, the cost area hardware and the throughput degradation are lower than its counterparts which based on temporal redundancy.</p></list-item>
<list-item>
<p>We prove that the proposed fault detection scheme for the AES 32-bit detects all natural and malicious injected faults. For this purpose, we perform a fault injection attacks against our proposed architecture in all possible AES 32-bit location, <italic>i.e.</italic>, the error comparator detection and the encryption and decryption structure. Through our simulation attacks, after injecting 4.000.000 single, multiple burst, multiple random, stuck-at 0 and stuck-at 1~bit faults, we show that the proposed scheme achieves 89.894%, 99.88585% and 99.9069% fault coverage for transient single-fault, transient multiple-fault and the permanent faults, respectively.</p></list-item>
<list-item>
<p>Finally, we implement the unprotected AES 32-bit and the proposed secured AES architecture on the Xilinx Virtex FPGA platform, and their frequency and area overheads, and throughput and efficiency degradation have been extracted and compared. The FPGA hardware implementation results show that our architecture has lower area overhead, throughput degradation and efficiency degradation, and higher frequency compared with the most recent AES error detection schemes.</p></list-item>
</list></p>
<p>The rest of this paper is organized as follows: Section 2 present the background knowledge. In Section 3, we present the hardware implementation results of AES 32-bit. Section 4 presents detailed architecture of the proposed fault detection scheme for the AES. In Section 5, the fault coverages of the proposed detection scheme are compared and discussed. Section 6 presents the hardware implementation results and comparisons. Section 7 concludes the paper.</p>
</sec>
<sec id="s2">
<label>2</label>
<title>Backgrounds</title>
<sec id="s2_1">
<label>2.1</label>
<title>Advanced Encryption Standard</title>
<p>The Advanced Encryption Standard is a round-based block cipher which process a data blocks of 128 bits&#x2019; lengths 4 &#x00D7; 4 array of bytes called the state, and supports three different cipher keys with lengths of 128, 192 and 256 bits [<xref ref-type="bibr" rid="ref-1">1</xref>]. The AES round number is 10, 12, or 14, when the AES round key length is 128, 192 or 256 bits, respectively. AES expands the initial key into subkeys using the expansion unit. In the AES encryption algorithm, except the initial round and the final round (round 10), the rounds 1&#x2013;9 consist of 4 transformations, i.e., AddRoundKey, MixColumns, ShiftRows and SubBytes. All the AES transformations are executed on the State matrix (S).</p>
<p><disp-formula id="eqn-1">
<label>(1)</label>
<mml:math id="mml-eqn-1" display="block"><mml:mi>S</mml:mi><mml:mo>=</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mspace width="thinmathspace" /><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>]</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mtable columnalign="left left left left" rowspacing="1em 1em 1em 0.4em" columnspacing="1em"><mml:mtr><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable><mml:mo>)</mml:mo></mml:mrow></mml:math>
</disp-formula></p>
<p>where 0 &#x2264; i, j &#x2264; 3, s<sub>i, j</sub> &#x2208; GF (2<sup>8</sup>).</p>
<p>Block diagram of the AES encryption/decryption is shown in <?A3B2 "fig1",5,"anchor"?><xref ref-type="fig" rid="fig-1">Fig. 1</xref>.</p>
<fig id="fig-1">
<label>Figure 1</label>
<caption>
<title>The AES encryption/decryption structure</title>
</caption>
<graphic mimetype="image" mime-subtype="png" xlink:href="CMC_20716-fig-1.png"/>
</fig>
<p>SubBytes (SB): the SubBytes transformation is a non-linear substitution process where each input state byte is substituted by another byte using the S-Box function. This S-Box is computed by the composition of the Affine Transformation (AT) and the Multiplicative Inverse (MI) in the finite field GF(2<sup>8</sup>) as follows:</p>
<p><disp-formula id="eqn-2">
<label>(2)</label>
<mml:math id="mml-eqn-2" display="block"><mml:msub><mml:mi>S</mml:mi><mml:mrow><mml:mi>S</mml:mi><mml:mi>B</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi>S</mml:mi><mml:mi>B</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>S</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mi>A</mml:mi><mml:mi>T</mml:mi><mml:mo>&#x22C5;</mml:mo><mml:mi>M</mml:mi><mml:mi>I</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>S</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>+</mml:mo><mml:msub><mml:mn>63</mml:mn><mml:mrow><mml:mi>h</mml:mi></mml:mrow></mml:msub></mml:math>
</disp-formula></p>
<p>where the AT is an 8&#x2009;&#x00D7;&#x2009;8 matrix:</p>
<p><disp-formula id="eqn-3">
<label>(3)</label>
<mml:math id="mml-eqn-3" display="block"><mml:mi>A</mml:mi><mml:mi>T</mml:mi><mml:mo>=</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mtable columnalign="left left left left left left left left" rowspacing="0.8em 0.8em 0.8em 0.8em 0.8em 0.8em 0.8em 0.4em" columnspacing="1em"><mml:mtr><mml:mtd><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd></mml:mtr></mml:mtable><mml:mo>)</mml:mo></mml:mrow></mml:math>
</disp-formula></p>
<p>ShiftRows (SR): In the ShiftRows transformation, each state row is shifting cyclically a certain number of positions where the 2<sup>nd</sup>, 3<sup>th</sup> and 4<sup>th</sup> rows of S<sub>SB</sub> cyclically shifted by 1, 2 and 3 positions to the left, respectively.</p>
<p><disp-formula id="eqn-4">
<label>(4)</label>
<mml:math id="mml-eqn-4" display="block"><mml:msub><mml:mi>S</mml:mi><mml:mrow><mml:mi>S</mml:mi><mml:mi>R</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi>S</mml:mi><mml:mi>R</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>S</mml:mi><mml:mrow><mml:mi>S</mml:mi><mml:mi>B</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mi>S</mml:mi><mml:mi>R</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mtable columnalign="left left left left" rowspacing="1em 1em 1em 0.4em" columnspacing="1em"><mml:mtr><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mtable columnalign="left left left left" rowspacing="1em 1em 1em 0.4em" columnspacing="1em"><mml:mtr><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable><mml:mo>)</mml:mo></mml:mrow></mml:math>
</disp-formula></p>
<p>MixColumns (MC): In the MixColumns transformation, each state column of SSR is treating as a 4 terms polynomial in the finite field GF(2<sup>8</sup>) and multiplied x<sup>4</sup> &#x002B; 1 with a fixed polynomial a(x) given by:</p>
<p><disp-formula id="eqn-9">
<label>(5)</label>
<mml:math id="mml-eqn-9" display="block"><mml:mi>a</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>x</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mo fence="false" stretchy="false">{</mml:mo><mml:mn>03</mml:mn><mml:mo fence="false" stretchy="false">}</mml:mo><mml:msup><mml:mi>x</mml:mi><mml:mn>3</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:mo fence="false" stretchy="false">{</mml:mo><mml:mn>01</mml:mn><mml:mo fence="false" stretchy="false">}</mml:mo><mml:msup><mml:mi>x</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:mo fence="false" stretchy="false">{</mml:mo><mml:mn>01</mml:mn><mml:mo fence="false" stretchy="false">}</mml:mo><mml:mi>x</mml:mi><mml:mo>+</mml:mo><mml:mo fence="false" stretchy="false">{</mml:mo><mml:mn>02</mml:mn><mml:mo fence="false" stretchy="false">}</mml:mo></mml:math>
</disp-formula></p>
<p>The MixColumns transformation can be presented in matrix form as:</p>
<p><disp-formula id="eqn-5">
<label>(6)</label>
<mml:math id="mml-eqn-5" display="block"><mml:msub><mml:mi>S</mml:mi><mml:mrow><mml:mi>M</mml:mi><mml:mi>C</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi>M</mml:mi><mml:mi>C</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>S</mml:mi><mml:mrow><mml:mi>S</mml:mi><mml:mi>R</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mtable columnalign="left left left left" rowspacing="1em 1em 1em 0.4em" columnspacing="1em"><mml:mtr><mml:mtd><mml:mn>02</mml:mn></mml:mtd><mml:mtd><mml:mn>03</mml:mn></mml:mtd><mml:mtd><mml:mn>01</mml:mn></mml:mtd><mml:mtd><mml:mn>01</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>01</mml:mn></mml:mtd><mml:mtd><mml:mn>02</mml:mn></mml:mtd><mml:mtd><mml:mn>03</mml:mn></mml:mtd><mml:mtd><mml:mn>01</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>01</mml:mn></mml:mtd><mml:mtd><mml:mn>01</mml:mn></mml:mtd><mml:mtd><mml:mn>02</mml:mn></mml:mtd><mml:mtd><mml:mn>03</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>03</mml:mn></mml:mtd><mml:mtd><mml:mn>01</mml:mn></mml:mtd><mml:mtd><mml:mn>01</mml:mn></mml:mtd><mml:mtd><mml:mn>02</mml:mn></mml:mtd></mml:mtr></mml:mtable><mml:mo>)</mml:mo></mml:mrow><mml:mo>&#x00D7;</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mtable columnalign="left left left left" rowspacing="1em 1em 1em 0.4em" columnspacing="1em"><mml:mtr><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable><mml:mo>)</mml:mo></mml:mrow></mml:math>
</disp-formula></p>
<p>AddRoundKey (ARK): The AddRoundKey output state S<sub>ARK</sub> is calculated by Xoring (addition modulo 2) the state input with round keys generated using the key expansion.</p>
<p><disp-formula id="eqn-6">
<label>(7)</label>
<mml:math id="mml-eqn-6" display="block"><mml:msub><mml:mi>S</mml:mi><mml:mrow><mml:mi>A</mml:mi><mml:mi>R</mml:mi><mml:mi>K</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi>A</mml:mi><mml:mi>R</mml:mi><mml:mi>K</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>S</mml:mi><mml:mrow><mml:mi>M</mml:mi><mml:mi>C</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mtable columnalign="left left left left" rowspacing="1em 1em 1em 0.4em" columnspacing="1em"><mml:mtr><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable><mml:mo>)</mml:mo></mml:mrow><mml:mo>&#x2295;</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mtable columnalign="left left left left" rowspacing="1em 1em 1em 0.4em" columnspacing="1em"><mml:mtr><mml:mtd><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable><mml:mo>)</mml:mo></mml:mrow></mml:math>
</disp-formula></p>
<p>In the decryption process, the AES performs the inverse of the corresponding four transformations in the encryption process, <italic>i.e.</italic>, Inv_SubBytes, Inv_ShiftRows, Inv_MixColumns and AddRoundKey.</p>
</sec>
<sec id="s2_2">
<label>2.2</label>
<title>Fault Attacks</title>
<p>Fault attacks are an efficient technique to break the unprotected AES hardware implementation. The main idea of this attack is to inject one or several bit faults or byte faults through the AES encryption or decryption execution and then to use the faulty encryption/decryption output to extract the encryption key stored in the cryptographic component. As presented in our previous work [<xref ref-type="bibr" rid="ref-15">15</xref>], we perform a sequences of fault injection at-tacks simulation against the unprotected AES hardware implementation to evaluate its robustness. The experimental results show that those attacks can extract the encryption AES key after injecting certain number of faults which means that fault attacks are powerful against the unprotected AES implementations and it is required to secure the AES hardware implementation against those attacks.</p>
</sec>
</sec>
<sec id="s3">
<label>3</label>
<title>AES 32-bit FPGA Implementation</title>
<p><?A3B2 "fig2",5,"anchor"?><xref ref-type="fig" rid="fig-2">Fig. 2</xref> presents the proposed AES 32-bit architecture to execute the encryption/decryption process. It takes 4 &#x00D7; 32-bit for the plaintext and 4 &#x00D7; 32-bit for the initial key. The AES 32-bit executes the encryption/decryption of the 4 &#x00D7; 32-bit plaintext/ciphertext and the output data is 4~&#x00D7;~32-bit.</p>
<fig id="fig-2">
<label>Figure 2</label>
<caption>
<title>AES 32-bit architecture</title>
</caption>
<graphic mimetype="image" mime-subtype="png" xlink:href="CMC_20716-fig-2.png"/>
</fig>
<p>The proposed AES 32-bit architecture consist of 6 modules:
<list list-type="bullet">
<list-item>
<p>Input interface is used to hold 128-bit input plaintext and key encryption as 32-bit words awaiting encryption/decryption process. This interface is controlled using three signals, <italic>i.e.</italic>, plaintext_load, ciphertext_ready and round.</p></list-item>
<list-item>
<p>AES Round encryption/decryption is implemented to execute the encryption/decryption process of plaintext/ciphertext.</p></list-item>
<list-item>
<p>Controller module used to generate the controller signals which ensure AES modules synchronization.</p></list-item>
<list-item>
<p>Key Expander used to generate the AES round keys based on 4 &#x00D7; 32-bit input key.</p></list-item>
<list-item>
<p>Output interface takes 4 &#x00D7; 32-bit plaintext/ciphertext and stores them until executes the total 128-data block.</p></list-item>
<list-item>
<p>AES Library defines all the AES transformations, <italic>i.e.</italic>, AddRoundKey, MixColumns (Inv_MixColumns), ShiftRows (Inv_ShiftRows), SubBytes (Inv_SubBytes).</p></list-item>
</list></p>
<p><?A3B2 "fig3",5,"anchor"?><xref ref-type="fig" rid="fig-3">Fig. 3</xref> presents the details implementation of AES round.</p>
<fig id="fig-3">
<label>Figure 3</label>
<caption>
<title>AES round implementation</title>
</caption>
<graphic mimetype="image" mime-subtype="png" xlink:href="CMC_20716-fig-3.png"/>
</fig>
<p>As seen in <xref ref-type="fig" rid="fig-3">Fig. 3</xref>, the AES processes each 32-bit data which represents one column of state, <italic>via</italic> 4 parallel columns.</p>
<p>The proposed 32-bit AES encryption/decryption design has been simulated by ModelSim based on VHDL language and synthesized using Xilinx ISE tools. The target hardware platform selected is the Virtex 5 XC5VFX70T FPGA from Xilinx. The hardware implementation results of the AES 32-bit encryption and decryption are presented in <?A3B2 "tbl1",5,"anchor"?><xref ref-type="table" rid="table-1">Tab. 1</xref>.</p>
<p>As seen in <xref ref-type="table" rid="table-1">Tab. 1</xref>, the occupied area (in slice), the clock frequency (in megaHertz), the throughput (in megabits per second), the efficiency (in megabits per second per slice) for the AES 32-bit encryption and decryption are presented.</p>
<p>The AES 32-bit implementation in encryption process takes 396 slices for 279.38 MHz clock frequency and 2980 Mbps throughput. The AES 32-bit decryption occupies 480 slices for 259.52 MHz clock frequency and 2768.25 Mbps throughput. The hardware performances of AES decryption are less than those of the encryption. This is mainly because of the Inv_MixColumns operation which is more complex than its corresponding in the AES encryption process.</p>
<table-wrap id="table-1">
<label>Table 1</label>
<caption>
<title>FPGA implementation of AES 32-bit</title>
</caption>
<table>
<colgroup>
<col/>
<col/>
<col/>
<col/>
<col/>
<col/>
<col/>
<col/>
</colgroup>
<thead>
<tr>
<th colspan="8">AES 32-bit implementation</th>
</tr>
<tr>
<th colspan="4">Encryption</th>
<th colspan="4">Decryption</th>
</tr>
<tr>
<th>Area<break/>(Slice)</th>
<th>Freq.<break/>(MHz)</th>
<th>Throu.<break/>(Mbps)</th>
<th>Efficiency<break/>(Mbps/slice)</th>
<th>Area<break/>(Slice)</th>
<th>Freq.<break/>(MHz)</th>
<th>Throu.<break/>(Mbps)</th>
<th>Efficiency<break/>(Mbps/slice)</th>
</tr>
</thead>
<tbody>
<tr>
<td>396</td>
<td>279.38</td>
<td>2980</td>
<td>7.53</td>
<td>480</td>
<td>259.52</td>
<td>2768.25</td>
<td>5.77</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec id="s4">
<label>4</label>
<title>Fault Detection Scheme</title>
<p>In this section, we first describe the motivations for this work, and then we propose a robust fault detection scheme based on modified temporal redundancy, for the crypto-graphic AES algorithm. We note that although we have considered the AES 32-bit, the fault detection scheme presented in this paper can be applied to other AES sizes (AES-192 and AES-256).</p>
<sec id="s4_1">
<label>4.1</label>
<title>Motivations</title>
<p>The AES is the main cryptographic algorithm which used for confidentiality information security. This algorithm can be implemented to ensure the information confidentiality as protection against fault attacks. Two reasons can be mentioned for having fault detection scheme for such an important cryptographic algorithm.
<list list-type="bullet">
<list-item>
<p>Cryptographic hardware implementations are sensitive to malicious attacks and natural faults such as those based on fault injections; this is the case for the AES algorithm.</p></list-item>
<list-item>
<p>The AES implementation based basic temporal redundancy approach performs the normal encryption and re-encryption using the same round input, where each round necessary 2 clock cycles. The 1<sup>st</sup> cycle is to make the standard encryption whereas the 2<sup>nd</sup> is to perform the re-encryption of the same input and to compare the round outputs. The inconvenience of this method is that it increases 100%-time execution and detects only the transient faults.</p></list-item>
</list></p>
</sec>
<sec id="s4_2">
<label>4.2</label>
<title>Proposed Fault Detection Scheme for the AES</title>
<p>We propose a modified technique of temporal redundancy for the cryptographic AES round to detect all permanent and transient faults, which occur during the process of the encryption algorithm. For this reason, we divided the AES 32-bit column round into two half blocks and a pipeline register has been implemented between them where each half block is performed two times and the encryption outputs are generated in order to detect any injected faults. Given that the pipeline register is implemented in each AES 32-bit column round, the AES critical path is divided into two parts and the maximal frequency is increased. The data processing and the fault detection are simultaneously realized which increases the processing speed of data. Contrary to the basic time redundancy which is to use AES round twice for each input message, the proposed approach is to divide each AES 32-bit column into two half blocks. Then, the first AES 32-bit column part is proved against errors at the same time as the second AES 32-bit column part is processed and vice versa. The proposed fault detection scheme is applied to the AES implementation as shown in <?A3B2 "fig4",5,"anchor"?><xref ref-type="fig" rid="fig-4">Fig. 4</xref>.</p>
<fig id="fig-4">
<label>Figure 4</label>
<caption>
<title>AES 32-bit with fault detection scheme</title>
</caption>
<graphic mimetype="image" mime-subtype="png" xlink:href="CMC_20716-fig-4.png"/>
</fig>
<p>The AES round is executed 11 times to process the round input. The AES 32-bit column round critical path is split into two parts and pipeline register (<italic>PR</italic><sub><italic>i</italic></sub>) is implemented between them. In <xref ref-type="fig" rid="fig-4">Fig. 4</xref>, 8 registers are presented. The input registers (<italic>IR</italic><sub><italic>i</italic></sub>) and the pipeline registers (<italic>PR</italic><sub><italic>i</italic></sub>) hold the input and the intermediate values of the 32-bit column computation, while the comparators and the error detection flags <inline-formula id="ieqn-1"><mml:math id="mml-ieqn-1"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> and <inline-formula id="ieqn-2"><mml:math id="mml-ieqn-2"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> are used for error checking against fault attacks.</p>
<p>The first half of the AES 32-bit column round <inline-formula id="ieqn-3"><mml:math id="mml-ieqn-3"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mspace width="thinmathspace" /><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> calculates the intermediate AES data from the input message and then stores it into <italic>PR</italic><sub><italic>i</italic></sub>. The second half of the AES 32-bit column round <inline-formula id="ieqn-4"><mml:math id="mml-ieqn-4"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mspace width="thinmathspace" /><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> calculates the 32-bit outputs from intermediate data. The <inline-formula id="ieqn-5"><mml:math id="mml-ieqn-5"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mspace width="thinmathspace" /><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> and the <inline-formula id="ieqn-6"><mml:math id="mml-ieqn-6"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mspace width="thinmathspace" /><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> must have equal critical path delay. The fault detection process as depicted in <?A3B2 "tbl2",5,"anchor"?><xref ref-type="table" rid="table-2">Tab. 2</xref>.</p>
<table-wrap id="table-2">
<label>Table 2</label>
<caption>
<title>Proposed architecture execution process</title>
</caption>
<table>
<colgroup>
<col/>
<col/>
<col/>
<col/>
<col/>
<col/>
</colgroup>
<thead>
<tr>
<th rowspan="2">Clock cycle (k)</th>
<th colspan="2">Encryption mode</th>
<th colspan="2">Re-encryption mode</th>
<th rowspan="2">Error detection flags</th>
</tr>
<tr>
<th>Operations</th>
<th>32-bit column block process</th>
<th>Operations</th>
<th>32-bit column block process</th>
</tr>
</thead>
<tbody>
<tr>
<td>k &#x003D; 1</td>
<td>ARK, SR</td>
<td>&#x2013;</td>
<td>&#x2013;</td>
<td>&#x2013;</td>
<td></td>
</tr>
<tr>
<td>k &#x003D; 2</td>
<td>SB</td>
<td><inline-formula id="ieqn-7"><mml:math id="mml-ieqn-7"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mspace width="thinmathspace" /><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
<td>ARK, SR</td>
<td>&#x2013;</td>
<td><inline-formula id="ieqn-8"><mml:math id="mml-ieqn-8"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
</tr>
<tr>
<td>k &#x003D; 3, 5, 7,&#x2026;</td>
<td>MC, ARK, SR</td>
<td><inline-formula id="ieqn-9"><mml:math id="mml-ieqn-9"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mspace width="thinmathspace" /><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
<td>SB</td>
<td><inline-formula id="ieqn-10"><mml:math id="mml-ieqn-10"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mspace width="thinmathspace" /><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-11"><mml:math id="mml-ieqn-11"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
</tr>
<tr>
<td>k &#x003D; 4, 6, 8,&#x2026;</td>
<td>SB</td>
<td><inline-formula id="ieqn-12"><mml:math id="mml-ieqn-12"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mspace width="thinmathspace" /><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
<td>MC, ARK, SR</td>
<td><inline-formula id="ieqn-13"><mml:math id="mml-ieqn-13"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mspace width="thinmathspace" /><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-14"><mml:math id="mml-ieqn-14"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
</tr>
</tbody>
</table>
</table-wrap>
<p>In the 1<sup>st</sup> clock cycle (k &#x003D; 1), the initial round is executed where the initial key is XORed with the plaintext and the first ShiftRows transformation is performed. The state message goes through the first half of the first AES 32-bit column round <inline-formula id="ieqn-15"><mml:math id="mml-ieqn-15"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> in the second clock cycle (k~&#x003D;~2) while~the AddRoundKey and the ShiftRows are re-encrypted using the same input, i.e., the plaintext and the initial key. In the third clock cycle (k &#x003D; 3), while the second half of the first AES 32-bit column round is processing <inline-formula id="ieqn-16"><mml:math id="mml-ieqn-16"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula>, the first half of the first AES 32-bit column round performs the re-encryption of <inline-formula id="ieqn-17"><mml:math id="mml-ieqn-17"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> using the same input. The <inline-formula id="ieqn-18"><mml:math id="mml-ieqn-18"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> process starts at the fourth clock cycle (k &#x003D; 4) when the <inline-formula id="ieqn-19"><mml:math id="mml-ieqn-19"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> block is re-encrypted.</p>
<p>The <italic>IR</italic><sub><italic>i</italic></sub> and <italic>PR</italic><sub><italic>i</italic></sub> are utilized to stock up the encryption data to be compared with the re-encryption data using the error detection flags. <xref ref-type="table" rid="table-2">Tab. 2</xref> explicates this procedure:
<list list-type="bullet">
<list-item>
<p>The <inline-formula id="ieqn-20"><mml:math id="mml-ieqn-20"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mspace width="thinmathspace" /><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> and <inline-formula id="ieqn-21"><mml:math id="mml-ieqn-21"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mspace width="thinmathspace" /><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> perform the encryption process in even and odd clock cycles respectively,</p></list-item>
<list-item>
<p>The <inline-formula id="ieqn-22"><mml:math id="mml-ieqn-22"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mspace width="thinmathspace" /><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> and <inline-formula id="ieqn-23"><mml:math id="mml-ieqn-23"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mspace width="thinmathspace" /><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> perform the re-encryption process in odd and even clock cycles respectively,</p></list-item>
<list-item>
<p>The <italic>IR</italic><sub><italic>i</italic></sub> and <italic>PR</italic><sub><italic>i</italic></sub> are loaded in all clock cycles,</p></list-item>
<list-item>
<p>The stored encryption data in <italic>IR</italic><sub><italic>i</italic></sub> and <italic>PR</italic><sub><italic>i</italic></sub> are used in even and odd clock cycles, respectively for errors checking,</p></list-item>
<list-item>
<p>The faults checking of <inline-formula id="ieqn-24"><mml:math id="mml-ieqn-24"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mspace width="thinmathspace" /><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> and <inline-formula id="ieqn-25"><mml:math id="mml-ieqn-25"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mspace width="thinmathspace" /><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> are realized in odd and even clock cycles respectively.</p></list-item>
</list></p>
<p>As seen in <xref ref-type="table" rid="table-2">Tab. 2</xref> and <xref ref-type="fig" rid="fig-4">Fig. 4</xref>, the AES 32-bit round operations should switch exchange between the standard encryption process and re-encryption process at each clock cycle. The initial error checking will be performed in the second cycle when the outputs of the first AddRoundKey and ShiftRows 32-bit in the standard encryption process, is compared to their corresponding in the re-encryption execution. The proposed architecture process takes 22 clock cycles to execute the 11 rounds of AES 32-bit.</p>
<p>It should be pointed out although the encryption method is executed at k &#x003D; 1, the encryption message is not utilized until the k &#x003D; 2 when the output of <inline-formula id="ieqn-26"><mml:math id="mml-ieqn-26"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> is ready for faults checking.</p>
<p>As presented in <xref ref-type="fig" rid="fig-4">Fig. 4</xref>, the proposed design consists of 8 error detection flags where each error flag ensures the fault detection into two half AES 32-bit columns. Since the proposed architecture consists of four <inline-formula id="ieqn-27"><mml:math id="mml-ieqn-27"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mspace width="thinmathspace" /><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> and four <inline-formula id="ieqn-28"><mml:math id="mml-ieqn-28"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mspace width="thinmathspace" /><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula>, we have implemented the fault detection scheme in such a way that three fault detection scenarios can be executed to protect the AES 32-bit against the transient and permanent fault attacks. The different fault detection scenarios and their corresponding error detection flags are depicted in <?A3B2 "tbl3",5,"anchor"?><xref ref-type="table" rid="table-3">Tab. 3</xref>.</p>
<table-wrap id="table-3">
<label>Table 3</label>
<caption>
<title>Fault detection scenarios</title>
</caption>
<table>
<colgroup>
<col/>
<col/>
<col/>
</colgroup>
<thead>
<tr>
<th>Fault detection scenarios</th>
<th>Compared AES 32-bit columns</th>
<th>Corresponding error detection flags</th>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="4">Scenarios 1</td>
<td><inline-formula id="ieqn-29"><mml:math id="mml-ieqn-29"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-30"><mml:math id="mml-ieqn-30"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-31"><mml:math id="mml-ieqn-31"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-32"><mml:math id="mml-ieqn-32"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
</tr>
<tr>
<td><inline-formula id="ieqn-33"><mml:math id="mml-ieqn-33"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-34"><mml:math id="mml-ieqn-34"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-35"><mml:math id="mml-ieqn-35"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-36"><mml:math id="mml-ieqn-36"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
</tr>
<tr>
<td><inline-formula id="ieqn-37"><mml:math id="mml-ieqn-37"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-38"><mml:math id="mml-ieqn-38"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-39"><mml:math id="mml-ieqn-39"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-40"><mml:math id="mml-ieqn-40"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
</tr>
<tr>
<td><inline-formula id="ieqn-41"><mml:math id="mml-ieqn-41"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-42"><mml:math id="mml-ieqn-42"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-43"><mml:math id="mml-ieqn-43"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-44"><mml:math id="mml-ieqn-44"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
</tr>
<tr>
<td rowspan="4">Scenarios 2</td>
<td><inline-formula id="ieqn-45"><mml:math id="mml-ieqn-45"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-46"><mml:math id="mml-ieqn-46"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-47"><mml:math id="mml-ieqn-47"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-48"><mml:math id="mml-ieqn-48"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
</tr>
<tr>
<td><inline-formula id="ieqn-49"><mml:math id="mml-ieqn-49"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-50"><mml:math id="mml-ieqn-50"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-51"><mml:math id="mml-ieqn-51"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-52"><mml:math id="mml-ieqn-52"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
</tr>
<tr>
<td><inline-formula id="ieqn-53"><mml:math id="mml-ieqn-53"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-54"><mml:math id="mml-ieqn-54"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-55"><mml:math id="mml-ieqn-55"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-56"><mml:math id="mml-ieqn-56"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
</tr>
<tr>
<td><inline-formula id="ieqn-57"><mml:math id="mml-ieqn-57"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-58"><mml:math id="mml-ieqn-58"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-59"><mml:math id="mml-ieqn-59"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-60"><mml:math id="mml-ieqn-60"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
</tr>
<tr>
<td rowspan="4">Scenarios 3</td>
<td><inline-formula id="ieqn-61"><mml:math id="mml-ieqn-61"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-62"><mml:math id="mml-ieqn-62"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-63"><mml:math id="mml-ieqn-63"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-64"><mml:math id="mml-ieqn-64"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
</tr>
<tr>
<td><inline-formula id="ieqn-65"><mml:math id="mml-ieqn-65"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-66"><mml:math id="mml-ieqn-66"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-67"><mml:math id="mml-ieqn-67"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-68"><mml:math id="mml-ieqn-68"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
</tr>
<tr>
<td><inline-formula id="ieqn-69"><mml:math id="mml-ieqn-69"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-70"><mml:math id="mml-ieqn-70"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-71"><mml:math id="mml-ieqn-71"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-72"><mml:math id="mml-ieqn-72"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
</tr>
<tr>
<td><inline-formula id="ieqn-73"><mml:math id="mml-ieqn-73"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-74"><mml:math id="mml-ieqn-74"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
<td><inline-formula id="ieqn-75"><mml:math id="mml-ieqn-75"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-76"><mml:math id="mml-ieqn-76"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
</tr>
</tbody>
</table>
</table-wrap><p>The proposed design can be also implemented to the AES-256 and AES-192 architectures where the register size is 32-bit ones instead of 256-bit size register and 192-bit size register respectively.</p>
</sec>
</sec>
<sec id="s5">
<label>5</label>
<title>Proposed Fault Detection Scheme: Fault Detection Evaluation</title>
<p>To verify the proposed architecture robustness against the fault injection attacks, Simulation series are executed for our AES fault detection scheme using the VHDL language. Three tests of injection fault are considered:
<list list-type="bullet">
<list-item>
<p>Single-bit transient faults: this case is occurred when one bit of the encryption/decryption state is modified,</p></list-item>
<list-item>
<p>Multiple-bit transient faults: this case is occurred when at least two bits of the encryption/decryption state are changed,</p></list-item>
<list-item>
<p>Permanent fault: affect the AES hardware architecture and can only be removed through repairing.</p></list-item>
</list></p>
<p>Errors are injected in diverse target locations. In detail:
<list list-type="bullet">
<list-item>
<p>Error injection into the initial encryption key and plaintext,</p></list-item>
<list-item>
<p>Error injection into all half AES 32-bit columns <inline-formula id="ieqn-77"><mml:math id="mml-ieqn-77"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mspace width="thinmathspace" /><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> and <inline-formula id="ieqn-78"><mml:math id="mml-ieqn-78"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mspace width="thinmathspace" /><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula>,</p></list-item>
<list-item>
<p>Error injection into the fault detection data path, <italic>i.e.</italic>, the error detection flags and comparators,</p></list-item>
<list-item>
<p>Error injection into all multiplexer, input registers and pipeline registers.</p></list-item>
</list></p>
<p>It is noted that the we can inject the same error in the same position two times during one AES round. Also, we have considered all transient and permanent faults for our scheme. In the error checking, the proposed detection scheme utilizes the error detection flags (<inline-formula id="ieqn-79"><mml:math id="mml-ieqn-79"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-80"><mml:math id="mml-ieqn-80"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-81"><mml:math id="mml-ieqn-81"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-82"><mml:math id="mml-ieqn-82"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-83"><mml:math id="mml-ieqn-83"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-84"><mml:math id="mml-ieqn-84"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-85"><mml:math id="mml-ieqn-85"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula> and <inline-formula id="ieqn-86"><mml:math id="mml-ieqn-86"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>) at the first half AES 32-bit column outputs (cover <inline-formula id="ieqn-87"><mml:math id="mml-ieqn-87"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mspace width="thinmathspace" /><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-88"><mml:math id="mml-ieqn-88"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mspace width="thinmathspace" /><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-89"><mml:math id="mml-ieqn-89"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mspace width="thinmathspace" /><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-90"><mml:math id="mml-ieqn-90"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mspace width="thinmathspace" /><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, Input registers (<italic>IR</italic>), multiplexers and comparators) and the second half AES 32-bit column outputs (cover <inline-formula id="ieqn-91"><mml:math id="mml-ieqn-91"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mspace width="thinmathspace" /><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-92"><mml:math id="mml-ieqn-92"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mspace width="thinmathspace" /><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-93"><mml:math id="mml-ieqn-93"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mspace width="thinmathspace" /><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula id="ieqn-94"><mml:math id="mml-ieqn-94"><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mspace width="thinmathspace" /><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, Pipeline registers (<italic>PR</italic>), multiplexers and comparators) for the AES process.</p>
<p>We are able to partition the output of the proposed design into four classes:
<list list-type="bullet">
<list-item>
<p><italic>Silent fault:</italic> the round output is the predicted encryption/decryption data and no error is detected in the encryption/decryption process, which means that the injected faults have no influence on our architecture.</p></list-item>
<list-item>
<p><italic>Undetected error:</italic> no injected error is detected even that the round output is erroneous which means that the detection scheme was not capable to detect the occurred or injected faults.</p></list-item>
<list-item>
<p><italic>Detected error:</italic> an error is detected and the round output is not the predicted encryption/decryption data which means that the occurred or injected errors were detected using the fault detection scheme.</p></list-item>
<list-item>
<p><italic>False positive:</italic> an injected error is detected, however, the round output is the predicted encryption/decryption data.</p></list-item>
</list></p>
<p>An efficient AES fault detection scheme should reduce the undetected errors apparition. In addition, it must not authorize the existence the false positives if the round output is the predicted value. The silence false depends mainly on the properties of the design.</p>
<p><bold>Transient single faults:</bold> we first analyzed the robustness of the proposed fault detection scheme against single fault attacks. we assume for this fault model a single-bit transient fault is injected into a one of the mentioned location faults. The simulation security is executed using 4,000,000 single-bit faults. <?A3B2 "tbl4",5,"anchor"?><xref ref-type="table" rid="table-4">Tab. 4</xref> shows our simulation security results for the proposed AES architecture. The percentage of the detected faults is computed as the ratio of the detected faults number to the total of single-bit faults injected into the AES architecture. It can be seen from <xref ref-type="table" rid="table-4">Tab. 4</xref>, the majority part of single-bit transient errors was detected error or classified as false positive. Just a small error percentage was silence fault: about 2.544%. The undetected error percentage achieves 0% against the single-bit transient faults. Therefore, our scheme ensures high AES security level against single fault injection attacks.</p>
<table-wrap id="table-4">
<label>Table 4</label>
<caption>
<title>Proposed AES architecture: fault coverage</title>
</caption>
<table>
<colgroup>
<col/>
</colgroup>
<tbody>
<tr>
<td><inline-graphic xlink:href="CMC_20716-inline-1.png"/></td>
</tr>
</tbody>
</table>
</table-wrap>
<p><bold>Transient multiple faults:</bold> The fault detection capability of the multiple-bit transient faults is very significant, since this type is the main error model for the fault injection attacks. In this simulation, we consider the two cases of the multiple-bit transient faults, i.e., burst faults and random faults.
<list list-type="bullet">
<list-item>
<p><italic>Burst faults:</italic> In this experiment, we analyzed our AES fault detection scheme with respect to faults affecting at last two bits. We inject multiple-bit transient faults affecting any AES state with the number of the erroneous bits ranging from 2 to 7. The errors are injected into the previously mentioned locations. Therefore, using eight error detection flags (<inline-formula id="ieqn-95"><mml:math id="mml-ieqn-95"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> and <inline-formula id="ieqn-96"><mml:math id="mml-ieqn-96"><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:msubsup><mml:mi>f</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula>) as presented in <xref ref-type="fig" rid="fig-4">Fig. 4</xref>, the fault coverage is obtained. The proposed AES fault detection scheme has been evaluated using 4,000,000 multiple-bit. As shown in <xref ref-type="table" rid="table-4">Tab. 4</xref>, when a fault is injected in the possible location, the fault is either false positive; (the AES process was executed and the comparators were attacked), or a silent fault (the AES execution, round 1 to round 10, was activate and the initial round was affected). Just a very little percentage of injected errors were not detected: it is about 0.0003% with multiplicity equal to 7. The undetected faults percentage equal to 0.029% when the multiplicity is 2. This means that the detection capability increases in proportion to the fault multiplicity.</p></list-item>
<list-item>
<p><italic>Random faults:</italic> in this experiment, we inject 4,000,000 faults with random faulty bit number in the previously mentioned locations. As seen in <xref ref-type="table" rid="table-4">Tab. 4</xref>, while the proposed AES fault detection scheme is simulated with random-bit transient faults, the percentage of the undetected error is equal to 0.00015% while 99.88585% can be detected. The undetected fault case will be occurred if an attacker injects the same fault in two AES 32-bit columns with respect the same constraints, <italic>i.e.</italic>, the faults are injected in similar locations at the same clock cycle.</p></list-item>
</list></p>
<p><bold>Permanent faults:</bold> in this experiment, we consider the stuck-at-0 and stuck-at-1 faults where the injected faults remain more than one clock cycle. we inject 4,000,000 faults in all possible location. As mentioned in <xref ref-type="table" rid="table-4">Tab. 4</xref>, the undetected error percentage achieves 0% against the single-bit permanent faults. The majority part of random permanent faults was classified as detected error. Just a very small error percentage was not detected or silence fault or: about 0.0001% and 0.018% respectively. Our attack results show that our architecture ensures high security level against permanent fault attacks.</p>
</sec>
<sec id="s6">
<label>6</label>
<title>FPGA Implementation</title>
<p>In order to evaluate the proposed design in terms of hardware implementation costs, we report the encryption/decryption implementation processes for AES 32-bit on FPGA XC5VFX70T from Xilinx Virtex-5 family. Yet, two architectures have been implemented: the unprotected and the protected AES implementations. Those architectures have been modeled using VHDL description language, simulated by ModelSim 10.1 and synthesized with Xilinx ISE 14.1.</p>
<p>The following synthesis results of the proposed unprotected and protected architectures for FPGA implementation are reported in <?A3B2 "tbl5",5,"anchor"?><xref ref-type="table" rid="table-5">Tabs. 5</xref> and <?A3B2 "tbl6",5,"anchor"?><xref ref-type="table" rid="table-6">6</xref>:
<list list-type="bullet">
<list-item>
<p>Area</p></list-item>
<list-item>
<p>Area overhead</p></list-item>
<list-item>
<p>Working frequency</p></list-item>
<list-item>
<p>Frequency overhead</p></list-item>
</list></p>
<p><disp-formula id="eqn-7">
<label>(8)</label>
<mml:math id="mml-eqn-7" display="block"><mml:mrow><mml:mi mathvariant="italic">T</mml:mi><mml:mi mathvariant="italic">h</mml:mi><mml:mi mathvariant="italic">r</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">g</mml:mi><mml:mi mathvariant="italic">h</mml:mi><mml:mi mathvariant="italic">p</mml:mi><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">t</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi mathvariant="normal">&#x0023;</mml:mi><mml:mi>b</mml:mi><mml:mi>i</mml:mi><mml:mi>t</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mrow><mml:mi mathvariant="italic">f</mml:mi><mml:mi mathvariant="italic">r</mml:mi><mml:mi mathvariant="italic">e</mml:mi><mml:mi mathvariant="italic">q</mml:mi><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">e</mml:mi><mml:mi mathvariant="italic">n</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">y</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi mathvariant="normal">&#x0023;</mml:mi><mml:mi>c</mml:mi><mml:mi>l</mml:mi><mml:mi>o</mml:mi><mml:mi>c</mml:mi><mml:mi>k</mml:mi><mml:mrow><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">y</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">l</mml:mi><mml:mi mathvariant="italic">e</mml:mi><mml:mi mathvariant="italic">s</mml:mi></mml:mrow></mml:mrow></mml:mfrac></mml:math>
</disp-formula></p>
<p><list list-type="bullet">
<list-item>
<p>Throughput overhead</p></list-item>
</list></p>
<p><disp-formula id="eqn-8">
<label>(9)</label>
<mml:math id="mml-eqn-8" display="block"><mml:mrow><mml:mi mathvariant="italic">E</mml:mi><mml:mi mathvariant="italic">f</mml:mi><mml:mi mathvariant="italic">f</mml:mi><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">i</mml:mi><mml:mi mathvariant="italic">e</mml:mi><mml:mi mathvariant="italic">n</mml:mi><mml:mi mathvariant="italic">c</mml:mi><mml:mi mathvariant="italic">y</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi mathvariant="italic">T</mml:mi><mml:mi mathvariant="italic">h</mml:mi><mml:mi mathvariant="italic">r</mml:mi><mml:mi mathvariant="italic">o</mml:mi><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">g</mml:mi><mml:mi mathvariant="italic">h</mml:mi><mml:mi mathvariant="italic">p</mml:mi><mml:mi mathvariant="italic">u</mml:mi><mml:mi mathvariant="italic">t</mml:mi></mml:mrow><mml:mrow><mml:mi>A</mml:mi><mml:mi>r</mml:mi><mml:mi>e</mml:mi><mml:mi>a</mml:mi></mml:mrow></mml:mfrac></mml:math>
</disp-formula></p>
<p><list list-type="bullet">
<list-item>
<p>Efficiency overhead</p></list-item>
</list></p>
<p>For all FPGA implementation results, we compute the cost overhead using <xref ref-type="disp-formula" rid="eqn-10">Eq. (10)</xref>:</p>
<p><disp-formula id="eqn-10">
<label>(10)</label>
<mml:math id="mml-eqn-10" display="block"><mml:mi>O</mml:mi><mml:mi>v</mml:mi><mml:mi>e</mml:mi><mml:mi>r</mml:mi><mml:mi>h</mml:mi><mml:mi>e</mml:mi><mml:mi>a</mml:mi><mml:mi>d</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>&#x0025;</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi>C</mml:mi><mml:mi>o</mml:mi><mml:mi>s</mml:mi><mml:msub><mml:mi>t</mml:mi><mml:mrow><mml:mi>Pr</mml:mi></mml:mrow></mml:msub><mml:mo>&#x00D7;</mml:mo><mml:mn>100</mml:mn></mml:mrow><mml:mrow><mml:mi>C</mml:mi><mml:mi>o</mml:mi><mml:mi>s</mml:mi><mml:msub><mml:mi>t</mml:mi><mml:mrow><mml:mi>U</mml:mi><mml:mi>n</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>&#x2212;</mml:mo><mml:mn>100</mml:mn></mml:math>
</disp-formula></p>
<p>where the cost<sub>Un</sub> and cost<sub>Pr</sub> are the hardware implementation costs of unprotected and protected architectures, respectively.</p>
<table-wrap id="table-5">
<label>Table 5</label>
<caption>
<title>AES unprotected and protected FPGA implementation: results and comparison</title>
</caption>
<table>
<colgroup>
<col/>
<col/>
<col/>
<col/>
<col/>
</colgroup>
<thead>
<tr>
<th rowspan="2">AES performances</th>
<th colspan="2">Encryption</th>
<th colspan="2">Decryption</th>
</tr>
<tr>
<th>AES </th>
<th>AES </th>
<th>AES </th>
<th>AES </th>
</tr>
<tr>
<th></th>
<th>unprotected</th>
<th>protected</th>
<th>unprotected</th>
<th>protected</th>
</tr>
</thead>
<tbody>
<tr>
<td>Area (Slice)<break/><italic>(overhead)</italic></td>
<td>396</td>
<td>492<break/><italic>(24.24%)</italic></td>
<td>480</td>
<td>606<break/><italic>(26.25%)</italic></td>
</tr>
<tr>
<td>Frequency (Mhz)<break/><italic>(overhead)</italic></td>
<td>279.38</td>
<td>403.28<break/><italic>(44.25%)</italic></td>
<td>259.52</td>
<td>361.55<break/><italic>(39.31%)</italic></td>
</tr>
<tr>
<td>Throughout (Mbps)<break/><italic>(degradation)</italic></td>
<td>2980</td>
<td>2346.36<break/><italic>(21.26%)</italic></td>
<td>2768.25</td>
<td>2103.56<break/><italic>(24.01%)</italic></td>
</tr>
<tr>
<td>Efficiency (Mbps/slice)<break/><italic>(degradation)</italic></td>
<td>7.53</td>
<td>4.77<break/><italic>(36.63%)</italic></td>
<td>5.77</td>
<td>3.47<break/><italic>(39.81%)</italic></td>
</tr>
</tbody>
</table>
</table-wrap>
<p>As seen in <xref ref-type="table" rid="table-5">Tab. 5</xref>, the unprotected AES encryption (decryption) takes 396 (480) slices for 279.38 (259.52) MHz frequency. The protected AES encryption (decryption) occupies 24.24% (26.25%) more slices and the frequency increase by 44.25% (39.31%) than the unprotected AES. Since the critical path of the proposed AES architecture is split into two parts, the working frequency is increased. As it can be seen in the <xref ref-type="table" rid="table-5">Tab. 5</xref>, the frequency speed-up to 44.25% in encryption process compared to the unprotected AES. It is important to note that since the proposed AES architecture critical path is not divided into two identical parts in practice and multiplexers are added to the AES data path, the protected AES is less than twice frequency overhead as the unprotected architecture.</p>
<p><xref ref-type="table" rid="table-5">Tab. 5</xref> shows that the protected AES encryption (decryption) causes approximately 21.26% (24.01%) throughput degradation and 36.63% (39.81%) efficiency degradation compared to the unprotected AES. The mainly causes of throughput degradation is the increase in number of cycles. The unprotected AES clock cycles number is 12 while it requires 22 clock cycles to perform the data encryption in the protected AES.</p>
<p><xref ref-type="table" rid="table-6">Tab. 6</xref> compares the proposed architecture with 5 similar reported works [<xref ref-type="bibr" rid="ref-9">9</xref>&#x2013;<xref ref-type="bibr" rid="ref-13">13</xref>] in terms of fault coverage (FC), area, frequency, throughput and efficiency overheads. It should be noted that since most similar works classify the faulty outputs as undetected error and detected error, we considered the silent fault and false positive as detected error.</p>
<table-wrap id="table-6">
<label>Table 6</label>
<caption>
<title>FPGA implementation of unprotected and protected AES: comparison (decrease is denoted by using &#x2018;&#x2212;&#x2019; sign)</title>
</caption>
<table>
<colgroup>
<col/>
<col/>
<col/>
<col/>
<col/>
<col/>
<col/>
<col/>
<col/>
<col/>
<col/>
</colgroup>
<thead>
<tr>
<th rowspan="3"></th>
<th colspan="2">FC (%)</th>
<th colspan="8">Overhead (%)</th>
</tr>
<tr>
<th rowspan="2">Single-bit</th>
<th rowspan="2">Random-bit</th>
<th colspan="4">Encryption</th>
<th colspan="4">Decryption</th>
</tr>
<tr>
<th>Area</th>
<th>Freq.</th>
<th>Throu.</th>
<th>Eff.</th>
<th>Area</th>
<th>Freq.</th>
<th>Throu.</th>
<th>Eff.</th>
</tr>
</thead>
<tbody>
<tr>
<td>[<xref ref-type="bibr" rid="ref-9">9</xref>]<sup>a</sup></td>
<td>100</td>
<td>99.99999997</td>
<td>25.9</td>
<td>&#x2212;3.22</td>
<td>&#x2212;30.87</td>
<td>&#x2212;45.08</td>
<td>15.6</td>
<td>&#x2212;4.64</td>
<td>&#x2212;31.88</td>
<td>&#x2212;41.07</td>
</tr>
<tr>
<td>[<xref ref-type="bibr" rid="ref-9">9</xref>]<sup>b</sup></td>
<td>100</td>
<td>99.99999997</td>
<td>26.2</td>
<td>&#x2212;3.22</td>
<td>&#x2212;46.23</td>
<td>&#x2212;57.38</td>
<td>15.8</td>
<td>&#x2212;4.64</td>
<td>&#x2212;47.02</td>
<td>&#x2212;54.25</td>
</tr>
<tr>
<td>[<xref ref-type="bibr" rid="ref-9">9</xref>]<sup>c</sup></td>
<td>100</td>
<td>99.99999997</td>
<td>27.3</td>
<td>&#x2212;3.22</td>
<td>&#x2212;35.48</td>
<td>&#x2212;49.33</td>
<td>16.7</td>
<td>&#x2212;4.64</td>
<td>&#x2212;36.42</td>
<td>&#x2212;45.51</td>
</tr>
<tr>
<td>[<xref ref-type="bibr" rid="ref-9">9</xref>]<sup>d</sup></td>
<td>100</td>
<td>99.99999997</td>
<td>25.6</td>
<td>&#x2212;3.22</td>
<td>&#x2212;51.61</td>
<td>&#x2212;61.47</td>
<td>15.4</td>
<td>&#x2212;4.64</td>
<td>&#x2212;52.32</td>
<td>&#x2212;58.67</td>
</tr>
<tr>
<td>[<xref ref-type="bibr" rid="ref-10">10</xref>]<sup>a</sup></td>
<td>100</td>
<td>99.99277</td>
<td>36.7</td>
<td>&#x2212;18.68</td>
<td>-69.5%</td>
<td>&#x2212;77.07</td>
<td>36.3</td>
<td>&#x2212;12.95</td>
<td>&#x2212;67.35</td>
<td>&#x2212;76.05</td>
</tr>
<tr>
<td>[<xref ref-type="bibr" rid="ref-10">10</xref>]<sup>b</sup></td>
<td>100</td>
<td>99.99508</td>
<td>34.8</td>
<td>&#x2212;15.75</td>
<td>&#x2212;54.04</td>
<td>&#x2212;65.93</td>
<td>35.2</td>
<td>&#x2212;9.82</td>
<td>&#x2212;50.81</td>
<td>&#x2212;63.63</td>
</tr>
<tr>
<td>[<xref ref-type="bibr" rid="ref-10">10</xref>]<sup>c</sup></td>
<td>100</td>
<td>99.99980</td>
<td>51</td>
<td>&#x2212;21.24</td>
<td>&#x2212;70.4</td>
<td>&#x2212;80.45</td>
<td>35.7</td>
<td>&#x2212;17.41</td>
<td>&#x2212;69.03</td>
<td>&#x2212;79.85</td>
</tr>
<tr>
<td>[<xref ref-type="bibr" rid="ref-11">11</xref>]</td>
<td>100</td>
<td>99.9939</td>
<td>18.91</td>
<td>50.18</td>
<td>&#x2212;18.08</td>
<td>&#x2212;31.16</td>
<td>22.26</td>
<td>38.39</td>
<td>&#x2212;24.51</td>
<td>&#x2212;41.64</td>
</tr>
<tr>
<td>[<xref ref-type="bibr" rid="ref-12">12</xref>]</td>
<td>85.958</td>
<td>98.54</td>
<td>14.45</td>
<td>49.02</td>
<td>&#x2212;18.71</td>
<td>&#x2212;28.98</td>
<td>34.40</td>
<td>43.51</td>
<td>&#x2212;21.72</td>
<td>&#x2212;41.75</td>
</tr>
<tr>
<td>[<xref ref-type="bibr" rid="ref-13">13</xref>]</td>
<td>98.7</td>
<td>53</td>
<td>&#x2013;</td>
<td>&#x2013;</td>
<td>&#x2013;</td>
<td>&#x2013;</td>
<td>&#x2013;</td>
<td>&#x2013;</td>
<td>&#x2013;</td>
<td>&#x2013;</td>
</tr>
<tr>
<td>Proposed</td>
<td>100&#x002A;</td>
<td>99.99985&#x002A;</td>
<td>24.24</td>
<td>44.35</td>
<td>&#x2212;21.26</td>
<td>&#x2212;36.63</td>
<td>26.25</td>
<td>39.31</td>
<td>&#x2212;24.01</td>
<td>&#x2212;39.81</td>
</tr>
</tbody>
</table>
<table-wrap-foot>
<fn id="table-6fn1" fn-type="other">
<p><sup>&#x2217;</sup>Equal to: detected error &#x002B; silent fault &#x002B; false positive</p>
</fn>
</table-wrap-foot>
</table-wrap>
<p>Guo et al. [<xref ref-type="bibr" rid="ref-9">9</xref>] proposed in a new concurrent fault detection approach named re-computing with permuted operands. <xref ref-type="table" rid="table-6">Tab. 6</xref> compares our architecture with all versions proposed in [<xref ref-type="bibr" rid="ref-9">9</xref>]. Obviously, our architecture is higher to all the different versions in the hardware implementation metrics in encryption/decryption process. The detection schemes in [<xref ref-type="bibr" rid="ref-9">9</xref>] allow a throughput degradation ranges from 30.87% to 51.61% which means those schemes allow a throughput degradation up to two and a half times than our architecture. Although the scheme in [<xref ref-type="bibr" rid="ref-9">9</xref>]<sup>d</sup> marginally affects the working frequency of the unprotected implementations, it allows approximately 25.6%, 51.61% and 61.47% area overhead, throughput and efficiency degradation respectively. In other words, the throughput and efficiency degradation of [<xref ref-type="bibr" rid="ref-9">9</xref>]<sup>d</sup> are, respectively, 2.43 (2.18) and 1.68 (1.47) times as the proposed protected AES encryption (decryption) design. From a security viewpoint, the FC of the proposed architecture is similar to [<xref ref-type="bibr" rid="ref-9">9</xref>]<sup>d</sup> in the single and random faults. Yet, as previously discussed, our architecture outperforms [<xref ref-type="bibr" rid="ref-9">9</xref>]<sup>d</sup> in terms of hardware implementation costs.</p>
<p>Also, <xref ref-type="table" rid="table-6">Tab. 6</xref> compares the proposed architecture with the proposed fault-resilient implementation versions by Sheikhpour et al. [<xref ref-type="bibr" rid="ref-10">10</xref>]. It is clear that our AES protected encryption (decryption) process takes 24.24% (26.25%) area overhead for 44.35% (39.31%) working frequency overhead, while the encryption (decryption) implementation in [<xref ref-type="bibr" rid="ref-10">10</xref>]<sup>c</sup> takes 51% (35.7%) area overhead for 21.24% (17.41%) frequency degradation compared to the original AES encryption (decryption) process. This means that our architecture has less than half area overhead and one and a half times working frequency overhead as the proposed design in [<xref ref-type="bibr" rid="ref-10">10</xref>]<sup>c</sup>. <xref ref-type="table" rid="table-6">Tab. 6</xref> shows also that our protected AES has similar FC(%) as the fault-resilient implementation in [<xref ref-type="bibr" rid="ref-10">10</xref>]<sup>c</sup> at lower cost, which means the latter allows a throughput degradation three times more and efficiency degradation two times more than the propose scheme. Another comparison with Sheikhpour et al. [<xref ref-type="bibr" rid="ref-11">11</xref>] is presented in <xref ref-type="table" rid="table-6">Tab. 6</xref>. The detection scheme in [<xref ref-type="bibr" rid="ref-11">11</xref>] has a little better working frequency overhead as compared to our AES, but it takes more area overhead in the decryption process than our design. From a security viewpoint, the comparison with [<xref ref-type="bibr" rid="ref-11">11</xref>] shows that better FC has been reached by our proposed AES, mainly in random faults (99.99985% <italic>vs</italic>. 99.9939%).</p>
<p><xref ref-type="table" rid="table-6">Tab. 6</xref> reveals that cost overheads of our architecture is very close to those of [<xref ref-type="bibr" rid="ref-12">12</xref>] in the decryption process. In other words, Our AES decryption implementation archives about 26.25% area overhead and 39.81% efficiency degradation, however the approach in [<xref ref-type="bibr" rid="ref-12">12</xref>] causes 34.40% area overhead and 41.75% efficiency degradation compared to the unprotected AES, but it provides lower FC. Moreover, the comparison with [<xref ref-type="bibr" rid="ref-13">13</xref>] shows that better FC has been reached by our architecture, principally in single fault (100% <italic>vs</italic>. 98.7%) and random faults (99.99985% <italic>vs</italic>. 53%).</p>
</sec>
<sec id="s7">
<label>7</label>
<title>Conclusion</title>
<p>In this paper, we have presented an efficient fault detection scheme based on the architecture modification for the standardized encryption cryptographic algorithm AES, for the encryption and decryption process. Our fault simulation attacks demonstrate that our detection scheme detects 99.88585% and 99.9069% of transient and permanent faults. Moreover, the proposed fault detection scheme and the counterparts have been implemented Xilinx Virtex FPGAs. Their frequency overhead, area overhead, throughput degradation and efficiency degradation for the AES have been compared. The FPGA implementation results demonstrate that the proposed scheme can efficiently secure the AES implementation against transient and permanent faults attacks and it can be simply implemented with low complexity. In addition, the implementation results show that the frequency overhead is around 44.35% which is higher compared to recent works which have the same fault coverage. Based on our experimental results, with acceptable fault coverage, our proposed scheme has the highest efficiency, showing reasonable throughput degradation and area and frequency overheads. It is shown that the proposed scheme is better than other last recent works in terms of fault detection and implementation costs.</p>
</sec>
</body>
<back>
<fn-group>
<fn fn-type="other">
<p><bold>Funding Statement:</bold> The authors received no specific funding for this study.</p>
</fn>
<fn fn-type="conflict">
<p><bold>Conflicts of Interest:</bold> The authors declare that they have no conflicts of interest to report regarding the present study.</p>
</fn>
</fn-group>
<ref-list content-type="authoryear">
<title>References</title>
<ref id="ref-1"><label>[1]</label><mixed-citation publication-type="other"><person-group person-group-type="author"><collab>National Institute of Standards and Technology</collab></person-group>, &#x201C;<article-title>Advanced encryption standard (AES), FIPS Publication 197</article-title>,&#x201D; <year>2001</year>. [Online]. Available: <uri>https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.197.pdf</uri>.</mixed-citation></ref>
<ref id="ref-2"><label>[2]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>O. C.</given-names> <surname>Abikoye</surname></string-name>, <string-name><given-names>A. D.</given-names> <surname>Haruna</surname></string-name>, <string-name><given-names>A.</given-names> <surname>Abubakar</surname></string-name>, <string-name><given-names>N. O.</given-names> <surname>Akande</surname></string-name> and <string-name><given-names>E. O.</given-names> <surname>Asani</surname></string-name></person-group>, &#x201C;<article-title>Modified advanced encryption standard algorithm for information security</article-title>,&#x201D; <source>Symmetry</source>, vol. <volume>11</volume>, no. <issue>12</issue>, pp. <fpage>1</fpage>&#x2013;<lpage>16</lpage>, <year>2019</year>.</mixed-citation></ref>
<ref id="ref-3"><label>[3]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>&#x00DC;.</given-names> <surname>&#x00C7;avu&#x015F;o&#x011F;lu</surname></string-name>, <string-name><given-names>S.</given-names> <surname>Ka&#x00E7;ar</surname></string-name>, <string-name><given-names>A.</given-names> <surname>Zengin</surname></string-name> and <string-name><given-names>I.</given-names> <surname>Pehlivan</surname></string-name></person-group>, &#x201C;<article-title>A novel hybrid encryption algorithm based on chaos and S-AES algorithm</article-title>,&#x201D; <source>Nonlinear Dynamics</source>, vol. <volume>92</volume>, no. <issue>4</issue>, pp. <fpage>1745</fpage>&#x2013;<lpage>1759</lpage>, <year>2018</year>.</mixed-citation></ref>
<ref id="ref-4"><label>[4]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>S. S.</given-names> <surname>Rekha</surname></string-name> and <string-name><given-names>P.</given-names> <surname>Saravanan</surname></string-name></person-group>, &#x201C;<article-title>Low-cost AES-128 implementation for edge devices in IoT applications</article-title>,&#x201D; <source>Journal of Circuits, Systems and Computers</source>, vol. <volume>28</volume>, no. <issue>4</issue>, pp. <fpage>1</fpage>&#x2013;<lpage>24</lpage>, <year>2019</year>.</mixed-citation></ref>
<ref id="ref-5"><label>[5]</label><mixed-citation publication-type="book"><person-group person-group-type="author"><string-name><given-names>C.</given-names> <surname>Dobraunig</surname></string-name>, <string-name><given-names>M.</given-names> <surname>Eichlseder</surname></string-name>, <string-name><given-names>H.</given-names> <surname>Gross</surname></string-name>, <string-name><given-names>S.</given-names> <surname>Mangard</surname></string-name>, <string-name><given-names>F.</given-names> <surname>Mendel</surname></string-name> <etal>et al.</etal></person-group><italic>,</italic> <chapter-title>Statistical ineffective fault attacks on masked AES with fault countermeasures</chapter-title>. in <source>Advances in Cryptology, LNCS</source>. vol. <volume>11273</volume>. <publisher-loc>Berlin, Germany</publisher-loc>: <publisher-name>Springer</publisher-name>, pp. <fpage>315</fpage>&#x2013;<lpage>342</lpage>, <year>2018</year>.</mixed-citation></ref>
<ref id="ref-6"><label>[6]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>J.</given-names> <surname>Krautter</surname></string-name>, <string-name><given-names>D. R. E.</given-names> <surname>Gnad</surname></string-name> and <string-name><given-names>M. B.</given-names> <surname>Tahoori</surname></string-name></person-group>, &#x201C;<article-title>FPGAhammer: Remote voltage fault attacks on shared FPGAs suitable for DFA on AES</article-title>,&#x201D; <source>IACR Transactions on Cryptographic Hardware and Embedded Systems</source>, vol. <volume>2018</volume>, no. <issue>3</issue>, pp. <fpage>44</fpage>&#x2013;<lpage>68</lpage>, <year>2018</year>.</mixed-citation></ref>
<ref id="ref-7"><label>[7]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>J.</given-names> <surname>Zhang</surname></string-name>, <string-name><given-names>N.</given-names> <surname>Wu</surname></string-name>, <string-name><given-names>J.</given-names> <surname>Li</surname></string-name> and <string-name><given-names>F.</given-names> <surname>Zhou</surname></string-name></person-group>, &#x201C;<article-title>A novel differential fault analysis using two-byte fault model on AES Key schedule</article-title>,&#x201D; <source>IET Circuits, Devices &#x0026; Systems</source>, vol. <volume>13</volume>, no. <issue>5</issue>, pp. <fpage>661</fpage>&#x2013;<lpage>666</lpage>, <year>2019</year>.</mixed-citation></ref>
<ref id="ref-8"><label>[8]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>K. J.</given-names> <surname>Hwan</surname></string-name>, <string-name><given-names>L. J.</given-names> <surname>Hyeok</surname></string-name> and <string-name><given-names>H. D.</given-names> <surname>Guk</surname></string-name></person-group>, &#x201C;<article-title>Novel differential fault attack using function-skipping on AES</article-title>,&#x201D; <source>Journal of the Korea Institute of Information Security &#x0026; Cryptology</source>, vol. <volume>30</volume>, no. <issue>6</issue>, pp. <fpage>1263</fpage>&#x2013;<lpage>1270</lpage>, <year>2020</year>.</mixed-citation></ref>
<ref id="ref-9"><label>[9]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>X.</given-names> <surname>Guo</surname></string-name> and <string-name><given-names>R.</given-names> <surname>Karri</surname></string-name></person-group>, &#x201C;<article-title>Recomputing with permuted operands: A concurrent error detection approach</article-title>,&#x201D; <source>IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems</source>, vol. <volume>32</volume>, no. <issue>10</issue>, pp. <fpage>1595</fpage>&#x2013;<lpage>1608</lpage>, <year>2013</year>.</mixed-citation></ref>
<ref id="ref-10"><label>[10]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>S.</given-names> <surname>Sheikhpour</surname></string-name>, <string-name><given-names>A.</given-names> <surname>Mahani</surname></string-name> and <string-name><given-names>N.</given-names> <surname>Bagheri</surname></string-name></person-group>, &#x201C;<article-title>Practical fault resilient hardware implementations of AES</article-title>,&#x201D; <source>IET Circuits, Devices &#x0026; Systems</source>, vol. <volume>13</volume>, no. <issue>5</issue>, pp. <fpage>596</fpage>&#x2013;<lpage>606</lpage>, <year>2019</year>.</mixed-citation></ref>
<ref id="ref-11"><label>[11]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>S.</given-names> <surname>Sheikhpour</surname></string-name>, <string-name><given-names>A.</given-names> <surname>Mahani</surname></string-name> and <string-name><given-names>N.</given-names> <surname>Bagheri</surname></string-name></person-group>, &#x201C;<article-title>High throughput fault-resilient AES architecture</article-title>,&#x201D; <source>IET Computers &#x0026; Digital Techniques</source>, vol. <volume>13</volume>, no. <issue>4</issue>, pp. <fpage>312</fpage>&#x2013;<lpage>323</lpage>, <year>2019</year>.</mixed-citation></ref>
<ref id="ref-12"><label>[12]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>H.</given-names> <surname>Mestiri</surname></string-name>, <string-name><given-names>F.</given-names> <surname>Kahri</surname></string-name>, <string-name><given-names>B.</given-names> <surname>Bouallegue</surname></string-name> and <string-name><given-names>M.</given-names> <surname>Machhout</surname></string-name></person-group>, &#x201C;<article-title>A high-speed AES design resistant to fault injection attacks</article-title>,&#x201D; <source>Microprocessors and Microsystems</source>, vol. <volume>41</volume>, no. <issue>2</issue>, pp. <fpage>47</fpage>&#x2013;<lpage>55</lpage>, <year>2016</year>.</mixed-citation></ref>
<ref id="ref-13"><label>[13]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>H. M.</given-names> <surname>Kamali</surname></string-name> and <string-name><given-names>S.</given-names> <surname>Hessabi</surname></string-name></person-group>, &#x201C;<article-title>A fault tolerant parallelism approach for implementing high-throughput pipelined advanced encryption standard</article-title>,&#x201D; <source>Journal of Circuits, Systems, and Computers</source>, vol. <volume>25</volume>, no. <issue>9</issue>, pp. <fpage>1</fpage>&#x2013;<lpage>14</lpage>, <year>2016</year>.</mixed-citation></ref>
<ref id="ref-14"><label>[14]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>N.</given-names> <surname>Benhadjyoussef</surname></string-name>, <string-name><given-names>M.</given-names> <surname>Karmani</surname></string-name>, <string-name><given-names>M.</given-names> <surname>Machhout</surname></string-name> and <string-name><given-names>B.</given-names> <surname>Hamdi</surname></string-name></person-group>, &#x201C;<article-title>A hybrid-countermeasure based fault-resistant AES implementation</article-title>,&#x201D; <source>Journal of Circuits, Systems and Computers</source>, vol. <volume>29</volume>, no. <issue>3</issue>, pp. <fpage>1</fpage>&#x2013;<lpage>17</lpage>, <year>2020</year>.</mixed-citation></ref>
<ref id="ref-15"><label>[15]</label><mixed-citation publication-type="conf-proc"><person-group person-group-type="author"><string-name><given-names>H.</given-names> <surname>Mestiri</surname></string-name>, <string-name><given-names>N.</given-names> <surname>Benhadjyoussef</surname></string-name> and <string-name><given-names>M.</given-names> <surname>Machhout</surname></string-name></person-group>, &#x201C;<article-title>Fault attacks resistant AES hardware implementation</article-title>,&#x201D; in <conf-name>Proc. IEEE Int. Conf. on Design &#x0026; Test of Integrated Micro &#x0026; Nano-Systems</conf-name>, <publisher-loc>Gammarth, Tunisia</publisher-loc>, pp. <fpage>1</fpage>&#x2013;<lpage>6</lpage>, <year>2019</year>. </mixed-citation></ref>
<ref id="ref-16"><label>[16]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>J.</given-names> <surname>Zhang</surname></string-name>, <string-name><given-names>N.</given-names> <surname>Wu</surname></string-name>, <string-name><given-names>F.</given-names> <surname>Zhou</surname></string-name>, <string-name><given-names>F.</given-names> <surname>Ge</surname></string-name> and <string-name><given-names>X.</given-names> <surname>Zhang</surname></string-name></person-group>, &#x201C;<article-title>Securing the AES cryptographic circuit against both power and fault attacks</article-title>,&#x201D; <source>Journal of Electrical Engineering &#x0026; Technology</source>, vol. <volume>14</volume>, no. <issue>5</issue>, pp. <fpage>2171</fpage>&#x2013;<lpage>2180</lpage>, <year>2019</year>.</mixed-citation></ref>
<ref id="ref-17"><label>[17]</label><mixed-citation publication-type="conf-proc"><person-group person-group-type="author"><string-name><given-names>I.</given-names> <surname>Polian</surname></string-name></person-group>, &#x201C;<article-title>Fault attacks on cryptographic circuits</article-title>,&#x201D; in <conf-name>Proc. IEEE Int. New Circuits and Systems Conf.</conf-name>, <publisher-loc>Munich, Germany</publisher-loc>, pp. <fpage>1</fpage>&#x2013;<lpage>4</lpage>, <year>2019</year>. </mixed-citation></ref>
</ref-list>
</back>
</article>
