URL
https://opencores.org/ocsvn/rijndael/rijndael/trunk
Subversion Repositories rijndael
[/] [rijndael/] [web_uploads/] [enkrip.htm] - Rev 6
Compare with Previous | Blame | View Log
<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40"> <head> <meta http-equiv=Content-Type content="text/html; charset=windows-1252"> <meta name=ProgId content=Word.Document> <meta name=Generator content="Microsoft Word 9"> <meta name=Originator content="Microsoft Word 9"> <link rel=File-List href="./enkrip_files/filelist.xml"> <link rel=Edit-Time-Data href="./enkrip_files/editdata.mso"> <link rel=OLE-Object-Data href="./enkrip_files/oledata.mso"> <!--[if !mso]> <style> v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style> <![endif]--> <title>Encryption Block</title> <!--[if gte mso 9]><xml> <o:DocumentProperties> <o:Author>john</o:Author> <o:Template>Normal</o:Template> <o:LastAuthor>john</o:LastAuthor> <o:Revision>67</o:Revision> <o:TotalTime>297</o:TotalTime> <o:Created>2002-06-21T05:35:00Z</o:Created> <o:LastSaved>2002-06-21T10:33:00Z</o:LastSaved> <o:Pages>4</o:Pages> <o:Words>559</o:Words> <o:Characters>3187</o:Characters> <o:Company>cryptography</o:Company> <o:Lines>26</o:Lines> <o:Paragraphs>6</o:Paragraphs> <o:CharactersWithSpaces>3913</o:CharactersWithSpaces> <o:Version>9.2720</o:Version> </o:DocumentProperties> </xml><![endif]--> <style> <!-- /* Font Definitions */ @font-face {font-family:Wingdings; panose-1:5 0 0 0 0 0 0 0 0 0; mso-font-charset:2; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:0 268435456 0 0 -2147483648 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} h1 {mso-style-next:Normal; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; page-break-after:avoid; mso-outline-level:1; font-size:22.0pt; mso-bidi-font-size:12.0pt; font-family:Arial; mso-font-kerning:0pt;} h2 {mso-style-next:Normal; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; page-break-after:avoid; mso-outline-level:2; font-size:12.0pt; font-family:"Times New Roman";} h3 {mso-style-next:Normal; margin:0in; margin-bottom:.0001pt; text-align:center; mso-pagination:widow-orphan; page-break-after:avoid; mso-outline-level:3; font-size:12.0pt; font-family:Arial;} h4 {mso-style-next:Normal; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; page-break-after:avoid; mso-outline-level:4; font-size:16.0pt; mso-bidi-font-size:12.0pt; font-family:Arial; font-weight:normal;} p.MsoBodyText, li.MsoBodyText, div.MsoBodyText {margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; mso-bidi-font-size:12.0pt; font-family:Arial; mso-fareast-font-family:"Times New Roman";} a:link, span.MsoHyperlink {color:blue; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {color:purple; text-decoration:underline; text-underline:single;} @page Section1 {size:8.5in 11.0in; margin:1.0in 1.25in 1.0in 1.25in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:1297683648; mso-list-type:hybrid; mso-list-template-ids:2117341178 -1605866978 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} @list l0:level1 {mso-level-start-at:0; mso-level-number-format:bullet; mso-level-text:-; mso-level-tab-stop:.5in; mso-level-number-position:left; text-indent:-.25in; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} ol {margin-bottom:0in;} ul {margin-bottom:0in;} --> </style> <!--[if gte mso 9]><xml> <o:shapedefaults v:ext="edit" spidmax="1032"/> </xml><![endif]--><!--[if gte mso 9]><xml> <o:shapelayout v:ext="edit"> <o:idmap v:ext="edit" data="1"/> </o:shapelayout></xml><![endif]--> </head> <body lang=EN-US link=blue vlink=purple style='tab-interval:.5in'> <div class=Section1> <h1>Encryption Block</h1> <h2><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Arial'>John Purba (</span><a href="mailto:john@students.ee.itb.ac.id">john@students.ee.itb.ac.id</a><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Arial'>)<o:p></o:p></span></h2> <p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p> <p class=MsoNormal><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt; font-family:Arial'>The encryption block comprises 6 blocks:<o:p></o:p></span></p> <p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1; tab-stops:list .5in'><![if !supportLists]><span style='font-size:10.0pt; mso-bidi-font-size:12.0pt'>-<span style='font:7.0pt "Times New Roman"'> </span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt; font-family:Arial'>Data & Key Input Register, interface of input data and key<o:p></o:p></span></p> <p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1; tab-stops:list .5in'><![if !supportLists]><span style='font-size:10.0pt; mso-bidi-font-size:12.0pt'>-<span style='font:7.0pt "Times New Roman"'> </span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt; font-family:Arial'>Key Expander, generator the round key<o:p></o:p></span></p> <p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1; tab-stops:list .5in'><![if !supportLists]><span style='font-size:10.0pt; mso-bidi-font-size:12.0pt'>-<span style='font:7.0pt "Times New Roman"'> </span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt; font-family:Arial'>Control, controls each block <o:p></o:p></span></p> <p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1; tab-stops:list .5in'><![if !supportLists]><span style='font-size:10.0pt; mso-bidi-font-size:12.0pt'>-<span style='font:7.0pt "Times New Roman"'> </span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt; font-family:Arial'>Rijndael Alg, implements Rijndael algorithm (round calculations)<o:p></o:p></span></p> <p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1; tab-stops:list .5in'><![if !supportLists]><span style='font-size:10.0pt; mso-bidi-font-size:12.0pt'>-<span style='font:7.0pt "Times New Roman"'> </span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt; font-family:Arial'>Data Output Register, interface of output data<o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt; font-family:Arial'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt; font-family:Arial'>The RTL VHDL code can be downloaded here <a href="enkrip_files\enkrip.zip"><span style='font-size:12.0pt;font-family:"Times New Roman"'>enkrip.zip</span></a><o:p></o:p></span></p> <p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Arial'>The encryption algorithm has been designed this way that the generation of round key and the round calculations can be parallely executed. </span><span style='font-size:10.0pt;font-family:Arial'>The advantage of this design is the fact that we do not need to store the round key since they are currently calculated. Interconnection of each block is depicted in figure 1.<o:p></o:p></span></p> <p class=MsoNormal><!--[if gte vml 1]><v:rect id="_x0000_s1026" href="#Data_Kunci_Reg" style='position:absolute;margin-left:172.5pt; margin-top:9pt;width:90pt;height:1in;z-index:1' o:button="t" filled="f" stroked="f"> <v:fill o:detectmouseclick="t"/> </v:rect><v:rect id="_x0000_s1029" href="#Control" style='position:absolute; margin-left:334.5pt;margin-top:9pt;width:90pt;height:1in;z-index:4; mso-position-horizontal:absolute;mso-position-vertical:absolute' o:button="t" filled="f" stroked="f"> <v:fill o:detectmouseclick="t"/> </v:rect><![endif]--><![if !vml]><span style='mso-ignore:vglayout'> <table cellpadding=0 cellspacing=0 align=left> <tr> <td width=230 height=12></td> <td width=120></td> <td width=96></td> <td width=120></td> </tr> <tr> <td height=96></td> <td align=left valign=top><a href="#Data_Kunci_Reg"><img border=0 width=120 height=96 src="./enkrip_files/image001.gif" v:shapes="_x0000_s1026"></a></td> <td></td> <td align=left valign=top><a href="#Control"><img border=0 width=120 height=96 src="./enkrip_files/image002.gif" v:shapes="_x0000_s1029"></a></td> </tr> </table> </span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt; font-family:Arial'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p> <br style='mso-ignore:vglayout' clear=ALL> <p class=MsoNormal align=center style='text-align:center'><!--[if gte vml 1]><v:rect id="_x0000_s1030" href="#Data_Reg" style='position:absolute;left:0; text-align:left;margin-left:460.5pt;margin-top:114.05pt;width:90pt;height:1in; z-index:5;mso-position-horizontal:absolute;mso-position-vertical:absolute' o:button="t" filled="f" stroked="f"> <v:fill o:detectmouseclick="t"/> </v:rect><![endif]--><![if !vml]><span style='mso-ignore:vglayout;position: absolute;z-index:4;left:0px;margin-left:614px;margin-top:152px;width:120px; height:96px'><a href="#Data_Reg"><img border=0 width=120 height=96 src="./enkrip_files/image003.gif" v:shapes="_x0000_s1030"></a></span><![endif]><!--[if gte vml 1]><v:rect id="_x0000_s1028" href="#Rijndael_alg" style='position:absolute;left:0; text-align:left;margin-left:334.5pt;margin-top:114pt;width:90pt;height:1in; z-index:3;mso-position-horizontal:absolute;mso-position-vertical:absolute' o:button="t" filled="f" stroked="f"> <v:fill o:detectmouseclick="t"/> </v:rect><![endif]--><![if !vml]><span style='mso-ignore:vglayout;position: absolute;z-index:2;left:0px;margin-left:446px;margin-top:152px;width:120px; height:96px'><a href="#Rijndael_alg"><img border=0 width=120 height=96 src="./enkrip_files/image004.gif" v:shapes="_x0000_s1028"></a></span><![endif]><!--[if gte vml 1]><v:rect id="_x0000_s1027" href="#Key_Expander" style='position:absolute;left:0; text-align:left;margin-left:163.5pt;margin-top:123.05pt;width:90pt;height:1in; z-index:2;mso-position-horizontal:absolute;mso-position-vertical:absolute' o:button="t" filled="f" stroked="f"> <v:fill o:detectmouseclick="t"/> </v:rect><![endif]--><![if !vml]><span style='mso-ignore:vglayout;position: absolute;z-index:1;left:0px;margin-left:218px;margin-top:164px;width:120px; height:96px'><a href="#Key_Expander"><img border=0 width=120 height=96 src="./enkrip_files/image005.gif" v:shapes="_x0000_s1027"></a></span><![endif]><!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <v:stroke joinstyle="miter"/> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0"/> <v:f eqn="sum @0 1 0"/> <v:f eqn="sum 0 0 @1"/> <v:f eqn="prod @2 1 2"/> <v:f eqn="prod @3 21600 pixelWidth"/> <v:f eqn="prod @3 21600 pixelHeight"/> <v:f eqn="sum @0 0 1"/> <v:f eqn="prod @6 1 2"/> <v:f eqn="prod @7 21600 pixelWidth"/> <v:f eqn="sum @8 21600 0"/> <v:f eqn="prod @7 21600 pixelHeight"/> <v:f eqn="sum @10 21600 0"/> </v:formulas> <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/> <o:lock v:ext="edit" aspectratio="t"/> </v:shapetype><v:shape id="_x0000_i1039" type="#_x0000_t75" style='width:539.25pt; height:204.75pt' o:ole=""> <v:imagedata src="./enkrip_files/image006.wmz" o:title=""/> </v:shape><![endif]--><![if !vml]><img border=0 width=719 height=273 src="./enkrip_files/image007.gif" v:shapes="_x0000_i1039"><![endif]><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="Visio.Drawing.5" ShapeID="_x0000_i1039" DrawAspect="Content" ObjectID="_1086186387"> </o:OLEObject> </xml><![endif]--></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:Arial'>Figure 1<o:p></o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><a name="Data_Kunci_Reg"><![if !supportEmptyParas]> <![endif]><o:p></o:p></a></p> <p class=MsoNormal><span style='mso-bookmark:Data_Kunci_Reg'><span style='font-size:16.0pt;mso-bidi-font-size:12.0pt;font-family:Arial'>1. Data & Key Input Register</span></span><span style='font-size:16.0pt;mso-bidi-font-size: 12.0pt;font-family:Arial'><o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt; font-family:Arial'><span style='mso-tab-count:1'> </span>This block is data or key input interface. The length of data or key supported is 128 bits, so we can use the same design for data input and key input. This block will take 32 bits data and shifts them to next register. Four clock cycle will be needed to take a complete 128 bit data. A simple controller is used here to identify that a complete of 128 bits data has been accepted. The State Diagram of FSMInput and Data or Key Input Register is depicted in figure 2.<o:p></o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><!--[if gte vml 1]><v:shape id="_x0000_i1095" type="#_x0000_t75" style='width:495pt;height:336.75pt' o:ole=""> <v:imagedata src="./enkrip_files/image008.wmz" o:title=""/> </v:shape><![endif]--><![if !vml]><img border=0 width=660 height=449 src="./enkrip_files/image009.gif" v:shapes="_x0000_i1095"><![endif]><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="Visio.Drawing.5" ShapeID="_x0000_i1095" DrawAspect="Content" ObjectID="_1086186388"> </o:OLEObject> </xml><![endif]--></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:Arial'>Figure 2</span><span style='font-size:10.0pt; mso-bidi-font-size:12.0pt;font-family:Arial'><o:p></o:p></span></p> <p class=MsoNormal><a name="Data_Reg"><span style='font-size:16.0pt;mso-bidi-font-size: 12.0pt;font-family:Arial'>2. Data Output Register</span></a><span style='font-size:16.0pt;mso-bidi-font-size:12.0pt;font-family:Arial'><o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt; font-family:Arial'><span style='mso-tab-count:1'> </span>This block takes 128 bit block data to output. First one block of 128 bits is divided to 4 blocks of 32 bits. One block of 32 bits data is take to output every one clock cycle. Data output register is depicted in figure 3.<o:p></o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><!--[if gte vml 1]><v:shape id="_x0000_i1065" type="#_x0000_t75" style='width:463.5pt;height:189pt' o:ole=""> <v:imagedata src="./enkrip_files/image010.wmz" o:title=""/> </v:shape><![endif]--><![if !vml]><img border=0 width=618 height=252 src="./enkrip_files/image011.gif" v:shapes="_x0000_i1065"><![endif]><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="Visio.Drawing.5" ShapeID="_x0000_i1065" DrawAspect="Content" ObjectID="_1086186389"> </o:OLEObject> </xml><![endif]--></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:Arial'>Figure 3</span><span style='font-size:10.0pt; mso-bidi-font-size:12.0pt;font-family:Arial'><o:p></o:p></span></p> <p class=MsoNormal><a name=Control><span style='font-size:16.0pt;mso-bidi-font-size: 12.0pt;font-family:Arial'>3. Control</span></a><span style='font-size:16.0pt; mso-bidi-font-size:12.0pt;font-family:Arial'><o:p></o:p></span></p> <p class=MsoBodyText><span style='mso-tab-count:1'> </span>The Control block controls the Key Expander and Rijndael Alg block. The state diagram of Control block is depicted in figure 4.</p> <p class=MsoNormal align=center style='text-align:center'><!--[if gte vml 1]><v:shape id="_x0000_i1136" type="#_x0000_t75" style='width:192pt;height:324pt' o:ole=""> <v:imagedata src="./enkrip_files/image012.wmz" o:title=""/> </v:shape><![endif]--><![if !vml]><img border=0 width=256 height=432 src="./enkrip_files/image013.gif" v:shapes="_x0000_i1136"><![endif]><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="Visio.Drawing.5" ShapeID="_x0000_i1136" DrawAspect="Content" ObjectID="_1086186390"> </o:OLEObject> </xml><![endif]--><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt; font-family:Arial'><o:p></o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:Arial'>Figure 4<o:p></o:p></span></p> <p class=MsoNormal><a name="Key_Expander"><span style='font-size:16.0pt; mso-bidi-font-size:12.0pt;font-family:Arial'>4. Key Expander<o:p></o:p></span></a></p> <p class=MsoBodyText><span style='mso-bookmark:Key_Expander'><span style='mso-tab-count:1'> </span>Key Expander responsible to generate round key for every round from the initial key. Based on the algorithm specification, if we use 128-bit key, 10 rounds will be needed. Hence the Key Expander will generate 10 round keys. The Key Expander is depicted in figure 5. </span></p> <span style='mso-bookmark:Key_Expander'></span> <p class=MsoNormal><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt; font-family:Arial'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><![if !supportEmptyParas]> <![endif]><o:p></o:p></p> <p class=MsoNormal align=center style='text-align:center'><!--[if gte vml 1]><v:shape id="_x0000_i1124" type="#_x0000_t75" style='width:307.5pt;height:252pt' o:ole=""> <v:imagedata src="./enkrip_files/image014.wmz" o:title=""/> </v:shape><![endif]--><![if !vml]><img border=0 width=410 height=336 src="./enkrip_files/image015.gif" v:shapes="_x0000_i1124"><![endif]><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="Visio.Drawing.5" ShapeID="_x0000_i1124" DrawAspect="Content" ObjectID="_1086186391"> </o:OLEObject> </xml><![endif]--></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:Arial'>Figure 5<o:p></o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:Arial'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt; font-family:Arial'>The Blok Alg implements the XOR operations and RotByte function. Kontroler Internal controls the Key Expander and its state diagram illustrated in figure 6. The ByteSub block is the same as ByteSub for Rijndael Alg Block.<o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt; font-family:Arial'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p> <h3>State Diagram of Kontroler Internal</h3> <p class=MsoNormal align=center style='text-align:center'><!--[if gte vml 1]><v:shape id="_x0000_i1113" type="#_x0000_t75" style='width:399pt;height:228pt' o:ole=""> <v:imagedata src="./enkrip_files/image016.wmz" o:title=""/> </v:shape><![endif]--><![if !vml]><img border=0 width=532 height=304 src="./enkrip_files/image017.gif" v:shapes="_x0000_i1113"><![endif]><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="Visio.Drawing.5" ShapeID="_x0000_i1113" DrawAspect="Content" ObjectID="_1086186392"> </o:OLEObject> </xml><![endif]--></p> <p class=MsoNormal align=center style='text-align:center'><![if !supportEmptyParas]> <![endif]><o:p></o:p></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:Arial'>Figure 6</span><span style='font-size:10.0pt; mso-bidi-font-size:12.0pt;font-family:Arial'><o:p></o:p></span></p> <p class=MsoNormal><a name="Rijndael_alg"><span style='font-size:16.0pt; mso-bidi-font-size:12.0pt;font-family:Arial'>5. Rijndael Alg</span></a><span style='font-size:16.0pt;mso-bidi-font-size:12.0pt;font-family:Arial'><o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt; font-family:Arial'><span style='mso-tab-count:1'> </span>The implementation of Rijndael Alg has been designed this way that it can work as the initial round, standard round, and final round. The Rijndael Alg module is depicted in figure 7. <o:p></o:p></span></p> <p class=MsoNormal align=center style='text-align:center'><!--[if gte vml 1]><v:shape id="_x0000_i1046" type="#_x0000_t75" style='width:508.5pt;height:176.25pt' o:ole=""> <v:imagedata src="./enkrip_files/image018.wmz" o:title=""/> </v:shape><![endif]--><![if !vml]><img border=0 width=678 height=235 src="./enkrip_files/image019.gif" v:shapes="_x0000_i1046"><![endif]><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="Visio.Drawing.5" ShapeID="_x0000_i1046" DrawAspect="Content" ObjectID="_1086186393"> </o:OLEObject> </xml><![endif]--></p> <p class=MsoNormal align=center style='text-align:center'><span style='font-family:Arial'>Figure 7<o:p></o:p></span></p> <p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1; tab-stops:list .5in'><![if !supportLists]><span style='font-size:10.0pt; mso-bidi-font-size:12.0pt;mso-bidi-font-weight:bold'>-<span style='font:7.0pt "Times New Roman"'> </span></span><![endif]><b><span style='font-size:10.0pt;mso-bidi-font-size: 12.0pt;font-family:Arial'>Mux21<o:p></o:p></span></b></p> <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt; mso-bidi-font-size:12.0pt;font-family:Arial'>Mux21 is a simple multiplexer 2 to 1. The format of data (din_i) is changed in this block, a block 128 bits sequence to matrix 4x4 called State, as it is easier to design another blocks (AddRoundKey, ByteSub, ShiftRow. MixColumn) <o:p></o:p></span></p> <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt; mso-bidi-font-size:12.0pt;font-family:Arial'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p> <p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1; tab-stops:list .5in'><![if !supportLists]><span style='font-size:10.0pt; mso-bidi-font-size:12.0pt;mso-bidi-font-weight:bold'>-<span style='font:7.0pt "Times New Roman"'> </span></span><![endif]><b><span style='font-size:10.0pt;mso-bidi-font-size: 12.0pt;font-family:Arial'>AddRoundKey<o:p></o:p></span></b></p> <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt; mso-bidi-font-size:12.0pt;font-family:Arial'>Implements AddRoundKey transformation, a simple XOR between State and round key. <o:p></o:p></span></p> <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt; mso-bidi-font-size:12.0pt;font-family:Arial'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p> <p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1; tab-stops:list .5in'><![if !supportLists]><span style='font-size:10.0pt; mso-bidi-font-size:12.0pt;mso-bidi-font-weight:bold'>-<span style='font:7.0pt "Times New Roman"'> </span></span><![endif]><b><span style='font-size:10.0pt;mso-bidi-font-size: 12.0pt;font-family:Arial'>ByteSub<o:p></o:p></span></b></p> <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt; mso-bidi-font-size:12.0pt;font-family:Arial'>Implements ByteSub transformation, contains 16 S-Box working in parallel. Dual Port Block RAM will be used to implements 2 S-Box, which emulate the ROM memory with configuration of 256x8 bits.<o:p></o:p></span></p> <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt; mso-bidi-font-size:12.0pt;font-family:Arial'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p> <p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1; tab-stops:list .5in'><![if !supportLists]><span style='font-size:10.0pt; mso-bidi-font-size:12.0pt;mso-bidi-font-weight:bold'>-<span style='font:7.0pt "Times New Roman"'> </span></span><![endif]><b><span style='font-size:10.0pt;mso-bidi-font-size: 12.0pt;font-family:Arial'>ShiftRow<o:p></o:p></span></b></p> <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt; mso-bidi-font-size:12.0pt;font-family:Arial'>Implements ShiftRow transformation. The position of bytes in State will shifted cyclical by offsets. The first row is shifted by zero, the second row is shifter by one, the third row is shifted by two, and the fourth row is shifted by three. The implementation is realized by hardwiring and do not need gate resource.<o:p></o:p></span></p> <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt; mso-bidi-font-size:12.0pt;font-family:Arial'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p> <p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1; tab-stops:list .5in'><![if !supportLists]><span style='font-size:10.0pt; mso-bidi-font-size:12.0pt;mso-bidi-font-weight:bold'>-<span style='font:7.0pt "Times New Roman"'> </span></span><![endif]><b><span style='font-size:10.0pt;mso-bidi-font-size: 12.0pt;font-family:Arial'>MixColumn<o:p></o:p></span></b></p> <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt; mso-bidi-font-size:12.0pt;font-family:Arial'>Implements MixColumn transformation. The columns of State are viewed as the coefficients of polynomial over GF (2<sup>8</sup>) of degree smaller than three. This polynomial is multiplied by four terms fixed polynomial a(x), {03)x<sup>3</sup> + {01}x<sup>2</sup> + {01}x + {02}, modulo the polynomial x<sup>4</sup> + 1.The multiplication with four terms fixed polynomial can be simplified by using the matrix form. The implementation of this transformation can be realized as shift and XOR operations.<o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt; font-family:Arial'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt; font-family:Arial'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p> <h4><b>Implementation Result<o:p></o:p></b></h4> <p class=MsoNormal><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt; font-family:Arial'><span style='mso-tab-count:1'> </span>The encryption algorithm has been implemented to FPGA Xilinx Virtex V300PQ240. It has 20 Dual Port Block RAM to implement to ByteSub transformation. The implementation parameters are:<o:p></o:p></span></p> <p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1; tab-stops:list .5in'><![if !supportLists]><span style='font-size:10.0pt; mso-bidi-font-size:12.0pt'>-<span style='font:7.0pt "Times New Roman"'> </span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt; font-family:Arial'>Speed<o:p></o:p></span></p> <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt; mso-bidi-font-size:12.0pt;font-family:Arial'>The maximum frequency is 51 MHz corresponds to throughput 298,899 Mbps.<o:p></o:p></span></p> <p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1; tab-stops:list .5in'><![if !supportLists]><span style='font-size:10.0pt; mso-bidi-font-size:12.0pt'>-<span style='font:7.0pt "Times New Roman"'> </span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt; font-family:Arial'>Area<o:p></o:p></span></p> <p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt; mso-bidi-font-size:12.0pt;font-family:Arial'>The design required 666 slices<o:p></o:p></span></p> </div> </body> </html>