OpenCores
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]>&nbsp;<![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"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt;
font-family:Arial'>Data &amp; 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"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</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"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</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"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</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"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</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]>&nbsp;<![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]>&nbsp;<![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]>&nbsp;<![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
&amp; 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]>&nbsp;<![endif]><o:p></o:p></span></p>
 
<p class=MsoNormal align=center style='text-align:center'><![if !supportEmptyParas]>&nbsp;<![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]>&nbsp;<![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]>&nbsp;<![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]>&nbsp;<![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"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</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]>&nbsp;<![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"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</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]>&nbsp;<![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"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</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]>&nbsp;<![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"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</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]>&nbsp;<![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"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</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]>&nbsp;<![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]>&nbsp;<![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"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</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"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</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>
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.