<?xml version="1.0" encoding="ISO-8859-1"?><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id>1692-1798</journal-id>
<journal-title><![CDATA[Iteckne]]></journal-title>
<abbrev-journal-title><![CDATA[Iteckne]]></abbrev-journal-title>
<issn>1692-1798</issn>
<publisher>
<publisher-name><![CDATA[Universidad Santo Tomás]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S1692-17982014000200005</article-id>
<title-group>
<article-title xml:lang="es"><![CDATA[Implementación del algoritmo Threefish-256 en hardware reconfigurable]]></article-title>
<article-title xml:lang="en"><![CDATA[Threefish-256 algorithm implementation on reconfigurable hardware]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Nieto-Ramírez]]></surname>
<given-names><![CDATA[Nathaly]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Nieto-Londoño]]></surname>
<given-names><![CDATA[Rubén Darío]]></given-names>
</name>
<xref ref-type="aff" rid="A02"/>
</contrib>
</contrib-group>
<aff id="A01">
<institution><![CDATA[,Universidad del Valle Grupo de Arquitecturas Digitales y Microelectrónica ]]></institution>
<addr-line><![CDATA[Cali ]]></addr-line>
<country>Colombia</country>
</aff>
<aff id="A02">
<institution><![CDATA[,Universidad del Valle Grupo de Arquitecturas Digitales y Microelectrónica ]]></institution>
<addr-line><![CDATA[Cali ]]></addr-line>
<country>Colombia</country>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>12</month>
<year>2014</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>12</month>
<year>2014</year>
</pub-date>
<volume>11</volume>
<numero>2</numero>
<fpage>149</fpage>
<lpage>156</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://www.scielo.org.co/scielo.php?script=sci_arttext&amp;pid=S1692-17982014000200005&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.org.co/scielo.php?script=sci_abstract&amp;pid=S1692-17982014000200005&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.org.co/scielo.php?script=sci_pdf&amp;pid=S1692-17982014000200005&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="es"><p><![CDATA[En este artículo se presenta la descripción y los resultados de la implementación en hardware del algoritmo criptográfico Threefish en su proceso de cifrado. La implementación se realizó usando la arquitectura de ronda iterativa sobre la Field Programmable Gate Array (FPGA) Virtex-5 presente en el sistema de desarrollo XUPV5-LX110T. Los resultados posteriores al place and route muestran que el diseño Threefish-256 de ronda iterativa tiene un throughput de 551Mbps.]]></p></abstract>
<abstract abstract-type="short" xml:lang="en"><p><![CDATA[This article presents both the description and results of the Threefish cryptographic algorithm hardware implementation for encryption process. The implementation of the algorithm was performed by using the iterative round architecture on the FPGA (Field Programmable Gate Array) Virtex-5 present in the development system XUPV5-LX110T. Place and route results show that the design Threefish-256 iterative round has a throughput of 551Mbps.]]></p></abstract>
<kwd-group>
<kwd lng="es"><![CDATA[Criptografía]]></kwd>
<kwd lng="es"><![CDATA[diseño síncrono]]></kwd>
<kwd lng="es"><![CDATA[FPGA]]></kwd>
<kwd lng="es"><![CDATA[Threefish]]></kwd>
<kwd lng="es"><![CDATA[VHDL]]></kwd>
<kwd lng="en"><![CDATA[Cryptographic]]></kwd>
<kwd lng="en"><![CDATA[FPGA]]></kwd>
<kwd lng="en"><![CDATA[synchronous design]]></kwd>
<kwd lng="en"><![CDATA[Threefish]]></kwd>
<kwd lng="en"><![CDATA[VHDL]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[  <font face="verdana" size="2">          <p align="center"><font size="4"><b>Implementaci&oacute;n del algoritmo Threefish-256 en hardware reconfigurable</b></font></p>          <p align="center"><font size="3"><b>Threefish-256 algorithm implementation on reconfigurable hardware</b></font></p>        <p>&nbsp;</p>          <p><b>Nathaly Nieto-Ram&iacute;rez<sup>1</sup>, Rub&eacute;n Dar&iacute;o Nieto-Londo&ntilde;o<sup>2</sup></b></p>          <p><i>1 Ing. Electr&oacute;nica, Investigador Grupo de Arquitecturas Digitales  y Microelectr&oacute;nica, Universidad del Valle, Cali, Colombia. <a href="mailto:nathaly.nieto@correounivalle.edu.co">nathaly.nieto@correounivalle.edu.co</a>.    <br> 2 Ph.D. Investigador Grupo  Arquitecturas Digitales y Microelectr&oacute;nica, Universidad del Valle. Cali,  Colombia. <a href="mailto:ruben.nieto@correounivalle.edu.co">ruben.nieto@correounivalle.edu.co</a>.</i></p> <hr size="1" />          <p>&nbsp;</p>          <p><b>RESUMEN</b></p>          <p>En este art&iacute;culo se presenta la descripci&oacute;n y los resultados de la implementaci&oacute;n en hardware del algoritmo criptogr&aacute;fico Threefish en su proceso de  cifrado. La implementaci&oacute;n se realiz&oacute; usando la arquitectura de ronda iterativa sobre la Field Programmable Gate Array (FPGA) Virtex-5 presente en el sistema de desarrollo XUPV5-LX110T. Los resultados posteriores al place and route muestran que el dise&ntilde;o Threefish-256 de ronda iterativa tiene un  throughput de 551Mbps.</p>     ]]></body>
<body><![CDATA[<p><i>PALABRAS CLAVE</i>: Criptograf&iacute;a, dise&ntilde;o s&iacute;ncrono, FPGA, Threefish, VHDL.</p>  <hr size="1" />          <p>&nbsp;</p>          <p><b>ABSTRACT</b></p>          <p>This article presents both the  description and results of the Threefish  cryptographic algorithm hardware implementation for  encryption process. The implementation of the algorithm  was performed by using the iterative round  architecture on the FPGA (Field Programmable Gate Array) Virtex-5  present in the development system XUPV5-LX110T. Place and  route results show that the design Threefish-256  iterative round has a throughput of 551Mbps.</p>          <p><i>KEYWORDS</i>: Cryptographic, FPGA, synchronous design, Threefish, VHDL.</p>  <hr size="1" />          <p>&nbsp;</p>          <p><b>1. INTRODUCCI&Oacute;N</b></p>          <p>Las funciones <i>hash </i>son primitivas criptogr&aacute;ficas que toman un mensaje y producen una representaci&oacute;n sintetizada o mensaje resumido &#91;<a href="#1">1</a>&#93;, &#91;<a href="#2">2</a>&#93;. Estas funciones fueron creadas inicialmente para generar firmas digitales de manera eficiente y segura, sin embargo, actualmente son utilizadas en muchas aplicaciones que, por ejemplo, buscan proteger la informaci&oacute;n al inicio de sesi&oacute;n con contrase&ntilde;a o para asegurar la conexi&oacute;n a p&aacute;ginas web y para administraci&oacute;n de claves de cifrado, entre otras.</p>     <p>En a&ntilde;os recientes, la seguridad de las funciones <i>hash </i>m&aacute;s  utilizadas, SHA-0, SHA-1, SHA-256 y SHA-512, han presentado deficiencias. Los ataques conocidos contra SHA-1 a&uacute;n no son pr&aacute;cticos, pero se ha demostrado que se puede romper la seguridad en al menos 269 operaciones, mientras que un ataque de fuerza bruta requiere unas 280 operaciones &#91;<a href="#3">3</a>&#93;. Para enfrentar una situaci&oacute;n indeseable, el National Institute of Standard an Statistics (NIST) de Estados Unidos convoc&oacute; un concurso de dise&ntilde;o en el a&ntilde;o 2008 para la siguiente generaci&oacute;n de funciones <i>hash</i>, SHA-3 &#91;<a href="#4">4</a>&#93;<i>,</i>&#91;<a href="#5">5</a>&#93; cuyos resultados fueron entregados en octubre del a&ntilde;o 2012, presentando a <i>Keccak</i> como el ganador.</p>     <p><i>Skein </i>fue  seleccionado como uno de los cinco finalistas de la competencia del <i>NIST</i>, su  dise&ntilde;o se basa en un cifrador de bloque conocido como <i>Threefish</i>, el  cual est&aacute; definido para tres diferentes tama&ntilde;os de bloque, 256, 512 o 1024 bits, y permite modos de operaci&oacute;n tanto secuencial como paralelo. Este trabajo se centra en el dise&ntilde;o y an&aacute;lisis del desempe&ntilde;o de la implementaci&oacute;n iterativa de una sola ronda de <i>Threefish</i>. En la secci&oacute;n dos se realiza una breve descripci&oacute;n del mismo cifrador de bloque. Posterior a esto, se describe la implementaci&oacute;n de <i>Threefish </i>en la FPGA <i>Virtex-5  XUPV5-LX110TFF136 </i>de Xilinx &#91;<a href="#6">6</a>&#93;, &#91;<a href="#7">7</a>&#93; para finalmente, presentar el an&aacute;lisis de los resultados en la secci&oacute;n cuatro.</p>     ]]></body>
<body><![CDATA[<p>&nbsp;</p>     <p><b>2. CIFRADOR DE BLOQUE THREEFISH</b></p>     <p><b><i>2.1. Especificaci&oacute;n del algoritmo</i></b></p>     <p><i>Threefish </i>es un  cifrador de bloque ajustable &#91;<a href="#8">8</a>&#93;   que act&uacute;a como n&uacute;cleo de la funci&oacute;n <i>hash Skein</i>. La funci&oacute;n <i>hash  Skein </i>&#91;<a href="#9">9</a>&#93; opera solamente con palabras sin signo de 64 bits y est&aacute; definido para ser implementado en tres diferentes tama&ntilde;os de bloque: 256 bits, 512 bits o 1024 bits. El algoritmo toma como argumentos la clave de cifrado, <i>K</i>, el Tweak, <i>T</i>, y el texto plano, <i>P</i>. La clave, es del mismo tama&ntilde;o que el texto plano, y el tama&ntilde;o de la entrada adicional (conocida como <i>tweak</i>) es  de 128 bits para todos los tama&ntilde;os de bloque. La funci&oacute;n de la entrada <i>tweak </i>es proporcionar variabilidad y permitir nuevos modos de funcionamiento &#91;<a href="#8">8</a>&#93;. El valor de <i>tweak </i>tiene algunas restricciones dependiendo del tipo de bloque que se est&eacute; procesando, ver Figura 9 y tabla 5 de &#91;<a href="#2">2</a>&#93;. Todas las entradas se convierten a palabras de 64 bits. El n&uacute;mero de palabras, N<sub>w</sub>, y el n&uacute;mero de rondas, N<sub>r</sub>, est&aacute;n definidas en funci&oacute;n del tama&ntilde;o de bloque tal como se relaciona en la <a href="#tab1">Tabla I</a>.</p>     <p align="center"><img src="img/revistas/itec/v11n2/v11n2a05tab1.gif"><a name="tab1"></a></p>     <p>El n&uacute;cleo de <i>Threefish </i>consta de una funci&oacute;n simple de mezcla no-lineal llamada <i>MIX</i>, que  opera con dos palabras de 64 bits. Cada funci&oacute;n <i>MIX</i> est&aacute; compuesta por una suma (<img src="img/revistas/itec/v11n2/v11n2a05for2.gif">), una operaci&oacute;n <i>or </i>exclusiva  (&oplus;) y  una rotaci&oacute;n (<img src="img/revistas/itec/v11n2/v11n2a05for3.gif">) que contiene como par&aacute;metro una constante (R<sub>r,i</sub>) especificada en la <a href="#tab2">Tabla II</a>. La <a href="#fig1">Fig. 1</a> ilustra la manera en que las funciones <i>MIX </i>permuten, y la suma de subclaves se utilizan para construir <i>Threefish</i>-256,  el cual se ejecuta en 72 rondas como se especifica en la <a href="#tab1">Tabla I</a>. Cada ronda consta de dos funciones <i>MIX</i> seguidas de una permutaci&oacute;n de cuatro palabras de 64 bits.</p>     <p align="center"><a href="img/revistas/itec/v11n2/v11n2a05tab2" target="_blank">Tabla II</a><a name="tab2"></a></p>     <p align="center"><img src="img/revistas/itec/v11n2/v11n2a05fig1.gif"><a name="fig1"></a></p>     <p><i>Threefish </i>maneja  una lista de subclaves que son adicionadas cada 4 rondas, como se especifica en &#91;<a href="#2">2</a>&#93;. Para crear esta lista se requieren dos palabras adicionales de 64 bits, las cuales garantizan que ninguna de las subclaves tenga todos sus bits en cero &#91;<a href="#2">2</a>&#93;. La palabra de clave adicional se obtiene despu&eacute;s aplicar la operaci&oacute;n <i>XOR </i>entre todas las palabras de clave, K = (k<sub>0</sub>, k<sub>1</sub>, ... k<sub><i>N</i>w-1</sub>) con la constante C<sub>240</sub>  y la palabra de <i>tweak </i>adicional se calcula mediante la operaci&oacute;n <i>XOR </i>entre las dos palabras de <i>tweak, </i>T = (t<sub>0</sub>, t<sub>1</sub>)  (<a href="#fig2">Fig. 2</a>, proceso 2). Cada subclave est&aacute; formada por una combinaci&oacute;n de una de las palabras de clave extendida, K<i><sub>ext</sub></i> = (k<sub>0</sub>, k<sub>1</sub>, ... k<sub><i>N</i>w</sub>), dos de las tres palabras de <i>tweak </i>extendidas, T<i><sub>ext</sub></i> = (t<sub>0</sub>, t<sub>1</sub>, t<sub>2</sub>) y el n&uacute;mero de subclave (<a href="#fig2">Fig. 2</a>, proceso 3, 4 y 5) seg&uacute;n las relaciones definidas en &#91;<a href="#2">2</a>&#93;.</p>     <p align="center"><img src="img/revistas/itec/v11n2/v11n2a05fig2.gif"><a name="fig2"></a></p>     ]]></body>
<body><![CDATA[<p><i><b>2.2. Proceso de cifrado</b></i></p>     <p>En la <a href="#fig3">Figura 3</a> se muestra el diagrama de flujo   del proceso de cifrado de un mensaje con el   algoritmo <i>Threefish. </i>La primera fase consiste en   aplicar la funci&oacute;n <i>BytesToWords </i>a cada una de las   entradas para convertir los bytes en palabras de   64 bits, despu&eacute;s se realizan una serie de rondas, N<sub>r</sub>, en las que se calcula la funci&oacute;n de mezcla no   lineal simple MIX<sub>d;j</sub>  (<a href="#fig3">Fig. 3</a>, proceso 6) y la permutaci&oacute;n de palabras (<a href="#tab3">Tabla III</a> y <a href="#fig3">Fig. 3</a>, proceso 7). Una subclave se agrega cada cuatro rondas (<a href="#fig3">Fig. 3</a>, proceso 5) y finalmente, se adiciona la &uacute;ltima subclave (<a href="#fig3">Fig. 3</a>, proceso 8) para producir las palabras de 64 bits del texto cifrado para luego, mediante la aplicaci&oacute;n de la funci&oacute;n <i>WordsToBytes,</i> obtener los bytes del mismo texto.</p>     <p align="center"><img src="img/revistas/itec/v11n2/v11n2a05fig3.gif"><a name="fig3"></a></p>     <p align="center"><a href="img/revistas/itec/v11n2/v11n2a05tab3" target="_blank">Tabla III</a><a name="tab3"></a></p>     <p>&nbsp;</p>     <p><b>3. DESCRIPCI&Oacute;N DEL M&Oacute;DULO HARDWARE</b></p>     <p>La arquitectura implementada en este trabajo   del cifrador de bloque <i>Threefish </i>se basa en la arquitectura   de ronda iterativa que se muestra en la   <a href="#fig4">Fig. 4</a>. En este dise&ntilde;o existe una relaci&oacute;n directa   entre el circuito de ronda en hardware y las operaciones   de ronda. La entrada se modifica mediante   la funci&oacute;n <i>BytesToWords </i>que a su vez alimenta el   multiplexor que selecciona la entrada del bloque   que implementa las operaciones de una ronda del <i>Threefish</i>. El  bloque de ronda almacena el resultado   en un registro. El registro realimenta el circuito   a trav&eacute;s del multiplexor, o una vez finalizadas las 72  rondas, este resultado ingresa a la funci&oacute;n <i>WordsToBytes </i>para  as&iacute; obtener el texto cifrado. Esta estructura utiliza un circuito de programaci&oacute;n de subclaves que calcula las mismas durante la sistematizaci&oacute;n  del texto cifrado para evitar claves precalculadas &#91;<a href="#11">11</a>&#93;.</p>     <p align="center"><img src="img/revistas/itec/v11n2/v11n2a05fig4.gif"><a name="fig4"></a></p>     <p>Con el fin de verificar que los modelos creados eran funcionalmente correctos y de acuerdo con la especificaci&oacute;n del algoritmo <i>Threefish</i>, la  unidad de control se configura para que los datos de entrada, texto plano, clave y <i>tweak</i>,  sean los valores de los vectores de prueba proporcionados en la presentaci&oacute;n de <i>Skein </i>ante el NIST en el archivo skein_golden_kat_internals.txt  &#91;<a href="#2">2</a>&#93;.</p>     <p><i>BytesToWords </i>(<a href="#fig4">Fig.  4</a>) es la primera funci&oacute;n que recibe los datos y efect&uacute;a la conversi&oacute;n de la cadena de 32 bytes de entrada en una cadena de cuatro palabras de 64 bits. Esta funci&oacute;n, al igual que <i>WordsToBytes, </i>tiene a cargo la adecuaci&oacute;n de los datos para ser manipulados a lo largo de proceso de cifrado.</p>     ]]></body>
<body><![CDATA[<p><i><b>3.1. Bloque de generaci&oacute;n de subclaves</b></i></p>     <p>Las entradas de este bloque son: el n&uacute;mero de   ronda, <i>d</i>, las palabras de 64 bits de la clave y el   <i>tweak</i>. La  salida del bloque la constituye la sub- clave que se genera cada cuatro rondas  y luego se   suma con la permutaci&oacute;n anterior.</p>     <p>En la <a href="#fig5">Fig. 5</a> se muestra la arquitectura de la funci&oacute;n <i>KeySchedule</i>. Inicialmente se realiza la operaci&oacute;n l&oacute;gica <i>XOR </i>con cada una de las palabras de la <i>clave </i>y con la variable inicializada C<sub>240</sub>, formando la "clave extendida". De la misma manera, para formar el <i>tweak </i>extendido<i>, </i>se  realiza la operaci&oacute;n l&oacute;gica <i>XOR </i>con cada una de las palabras del <i>tweak</i>. Seguido a esto, se seleccionan cuatro palabras de la <i>clave  extendida </i>y se suman con dos palabras del <i>tweak  extendido </i>y con la variable <i>s, </i>que  depende del n&uacute;mero de ronda (<i>s=d</i> <i>mod </i>4).  Las palabras de subclave se van almacenando en los registros nombrados k<sub>s,0</sub>, k<sub>s,1</sub>, k<sub>s,2</sub>,  k<sub>s,3</sub>.</p>     <p align="center"><img src="img/revistas/itec/v11n2/v11n2a05fig5.gif"><a name="fig5"></a></p>     <p><i><b>3.2. Bloque de cifrado</b></i></p>     <p>El dise&ntilde;o propuesto tiene un tama&ntilde;o de bloque   de 256 bits, el bloque de cifrado est&aacute; conformado   por cuatro sumadores de 64 bits, dos funciones   de trasformaci&oacute;n <i>MIX</i>, una permutaci&oacute;n y un contador   de ronda, <i>d</i>. El bloque <i>MIX </i>toma como entradas   dos palabras extra&iacute;das de la funci&oacute;n suma, e<sub>d,2j</sub>  y e<sub>d,2j+1</sub>, las cuales dependen del n&uacute;mero entero,   j, que var&iacute;a entre 0 y 1. Este n&uacute;mero entero,   junto con el contador de ronda, se encargan de   seleccionar el valor de la constante de rotaci&oacute;n   utilizada por la funci&oacute;n <i>ROL </i>para operar la entrada   e<sub>d,2j+1</sub>. Las salidas f<sub>d,2j</sub>  y f<sub>d,2j+1</sub>  se detallan en el   proceso de cifrado de la <a href="#fig3">Fig. 3</a>. La <a href="#fig6">Fig. 6</a> muestra   la arquitectura implementada de la  funci&oacute;n <i>MIX</i>.</p>       <p align="center"><img src="img/revistas/itec/v11n2/v11n2a05fig6.gif"><a name="fig6"></a></p>     <p>La funci&oacute;n de permutaci&oacute;n es la misma para cada ronda y cambia la posici&oacute;n de las palabras en todo el vector. Es necesario adicionar un MUX que tenga como entradas el texto plano y la permutaci&oacute;n de la ronda anterior, y la salida se conecta al sumador, como se muestra en la <a href="#fig7">Fig. 7</a>, esto se debe a que en la primera ronda no se realiza la operaci&oacute;n <i>Permute </i>sino que se suma la primera subclave generada con el texto plano  extendido.</p>     <p align="center"><a href="img/revistas/itec/v11n2/v11n2a05fig7" target="_blank">Figura 7</a><a name="fig7"></a></p>     <p><i><b>3.3. Bloque de salida</b></i></p>     ]]></body>
<body><![CDATA[<p>Est&aacute; compuesto por un registro encargado de   guardar el texto cifrado y por la funci&oacute;n <i>WordsToBytes</i> que se encarga de la visualizaci&oacute;n del resultado   final. El tama&ntilde;o del registro de salida puede   variar dependiendo del tama&ntilde;o del bloque.</p>     <p>En la <a href="#fig7">Fig. 7</a> se muestran los tres bloques principales de <i>Threefish</i>: el bloque de generaci&oacute;n de subclaves, el bloque de cifrado y el bloque de salida.</p>     <p><i><b>3.4. Unidad de control</b></i></p>     <p>La unidad de control dise&ntilde;ada se encarga de   activar las se&ntilde;ales que habilitan los registros de   entrada y tambi&eacute;n las que habilitan las se&ntilde;ales   para el contador. Adicionalmente, se encarga de   asignar los valores de los vectores de prueba propuestos   a las entradas del sistema completo para   garantizar as&iacute; el correcto funcionamiento de todo   el sistema.</p>     <p>&nbsp;</p>     <p><b>4. RESULTADOS Y AN&Aacute;LISIS</b></p>     <p><b><i>4.1. Plataforma de pruebas</i></b></p>     <p>Las funciones descritas en la secci&oacute;n 3.2 fueron   implementadas en la tarjeta de desarrollo <i>"Xilinx</i>   <i>XUPV5-LX110T  Development System", </i>la cual   cuenta con un FPGA de familia <i>Virtex 5 </i>(LX110T-   FF1136) y varios m&oacute;dulos de hardware interconectados   a la misma FPGA. La herramienta usada   para la s&iacute;ntesis, el mapeo y la implementaci&oacute;n en   la FPGA fue XST de Xilinx ISE Design Suite. Para la   verificaci&oacute;n del correcto funcionamiento de la  implementaci&oacute;n   se compararon los resultados con   los vectores de prueba oficiales dados en &#91;<a href="#9">9</a>&#93; y,   adicional a esto, se utiliz&oacute; la herramienta ChipScopePro   de Xilinx que permite verificar en tiempo   real los resultados de las implementaciones en la   FPGA, esto se logra insertando n&uacute;cleos para depurar   software en el dise&ntilde;o.</p>     <p>La <a href="#tab4">Tabla IV</a> muestra resultados de retardos de las funciones de transformaci&oacute;n de <i>Threefish </i>obtenidos con la herramienta de dise&ntilde;o Xilinx ISE. <i>Keyschedule</i> es la funci&oacute;n de transformaci&oacute;n que presenta el mayor valor latencia, esto debido a la cantidad de l&oacute;gica que utiliza para calcular cada subclave.</p>     <p align="center"><a href="img/revistas/itec/v11n2/v11n2a05tab4" target="_blank">Tabla IV</a><a name="tab4"></a></p>     ]]></body>
<body><![CDATA[<p>En la <a href="#tab5">Tabla V</a> se reportan los resultados de la implementaci&oacute;n del algoritmo Threefish completamente aut&oacute;nomo, usando la arquitectura de ronda iterativa y se comparan con los resultados de otros autores que usan la FPGA Virtex-5. El producto de otras implementaciones que usan dispositivos diferentes no se incluyeron.</p>     <p align="center"><a href="img/revistas/itec/v11n2/v11n2a05tab5" target="_blank">Tabla V</a><a name="tab5"></a></p>     <p>El rendimiento de los dise&ntilde;os realizados se puede calcular por:</p>     <p align="center"><img src="img/revistas/itec/v11n2/v11n2a05for1.gif"><a name="for1"></a></p>     <p>Los valores obtenidos en este trabajo permiten   concluir que para procesar un mensaje de 256   bits con <i>Threefish-256 </i>se obtiene una latencia   de 6,452ns x 72(rondas) = 464,544ns. Por lo tanto,   el rendimiento calculado con (<a href="#for1">1</a>) para <i>Threefish-</i><i>256 </i>es (256/464,544)  x 10<sup>9</sup> = 0,551Gbps.</p>     <p>Tanto los resultados de &#91;<a href="#14">14</a>&#93; y los de este trabajo incluyen el hardware de control para un funcionamiento totalmente aut&oacute;nomo, mientras que el trabajo de &#91;<a href="#11">11</a>&#93; presenta s&oacute;lo el n&uacute;cleo de la funci&oacute;n. Los resultados muestran que el dise&ntilde;o presentado en este trabajo tiene un &aacute;rea menor y presenta la mejor relaci&oacute;n entre el &aacute;rea y la velocidad (TPA). Esto se puede atribuir principalmente al dise&ntilde;o del generador de subclaves, <i>KeySchedule</i>, que usa un enfoque basado en contadores para determinar el n&uacute;mero de la subclave a calcular. Sin embargo, si este dise&ntilde;o desea escalarse para ser usado en una arquitectura <i>8-unrolled round</i>, el &aacute;rea aumenta considerablemente. Una soluci&oacute;n a esta situaci&oacute;n es implementar el generador de subclaves usando registros de desplazamiento como en el propuesto en &#91;<a href="#15">15</a>&#93; en el que no deben agregarse m&aacute;s <i>flip-flops</i>, solo se necesitan dos circuitos sumadores m&aacute;s.</p>     <p>&nbsp;</p>     <p><b>5. CONCLUSIONES</b></p>     <p>Este trabajo reporta resultados de la implementaci&oacute;n   del algoritmo <i>Threefish-256 </i>sobre la   tarjeta de desarrollo <i>Xilinx  XUPV5-LX110T. </i>Los resultados   se obtuvieron mediante la s&iacute;ntesis de la   descripci&oacute;n del circuito en lenguaje VHDL y fueron   verificados mediante <i>ChipScopePro</i>. El objetivo de   este trabajo era explicar el enfoque de ronda iterativa   para la construcci&oacute;n del <i>n&uacute;cleo  de </i>Skein. En   este caso, el algoritmo implementa una sola ronda   que se itera 72 veces para obtener finalmente   el texto cifrado. Lo anterior permite optimizar el   uso de los recursos de la FPGA pues no es necesario   implementar las 72 rondas por separado.</p>     <p>El enfoque de ronda iterativa es un m&eacute;todo com&uacute;n para implementar una funci&oacute;n criptogr&aacute;fica basada rondas, su prop&oacute;sito es equilibrar el &aacute;rea consumida con el rendimiento del circuito. Se obtuvo un rendimiento de 551,08 Mbps y una relacMi&oacute;bnp sr/eSnldicime,  iesnutpoe rcaonnd ore sap elacsto i malp l&aacute;ermeae ndtea c0io,6n7e6s de &#91;<a href="#11">11</a>&#93; y &#91;<a href="#14">14</a>&#93; en un 65.69% y 17.77% respectivamente.</p>     ]]></body>
<body><![CDATA[<p>&nbsp;</p>     <p><b>AGRADECIMIENTOS</b></p>     <p>El presente trabajo de investigaci&oacute;n fue realizado   gracias a COLCIENCIAS y a la Universidad   del Valle con la financiaci&oacute;n del proyecto "Dise&ntilde;o   s&iacute;ncrono y especificaci&oacute;n as&iacute;ncrona de la funci&oacute;n   Skein-256 para firmas digitales". C&oacute;digo: P-2011-0778, cuyo desarrollo ha posibilitado la apropiaci&oacute;n   del conocimiento en el tema af&iacute;n al &aacute;rea de   la criptograf&iacute;a y la implementaci&oacute;n a nivel de hardware   reconfigurable de algoritmos  criptogr&aacute;ficos.</p>     <p>&nbsp;</p>     <p><b>REFERENCIAS</b></p>     <!-- ref --><p>&#91;<a name="1">1</a>&#93; D. Stinson, <i>Cryptography:  Theory and Practice</i>, Third   Edit. CRC Press, Inc, 2005.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000078&pid=S1692-1798201400020000500001&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;<a name="2">2</a>&#93; B. Schneier, N.   Ferguson, and S. Lucks, "The skein hash function family," <i>Submission  to NIST (Round 3)</i>, 2010. &#91;Online&#93;. Available:  <a href="http://www.skein-hash.info/sites/default/files/skein1.3.pdf" target="_blank">http://www.skein-hash.info/sites/default/files/skein1.3.pdf</a>.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000080&pid=S1692-1798201400020000500002&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;<a name="3">3</a>&#93; NIST, "Cryptographic hash  algorithm competition," <i>National</i> <i>Institute</i><i> of Standards</i><i> and Technology, </i>2005. &#91;Online&#93;. Available:  <a href="http://csrc.nist.gov/groups/ST/hash/sha-3/index.html" target="_blank">http://csrc.nist.gov/groups/ST/hash/sha-3/index.html</a>.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000082&pid=S1692-1798201400020000500003&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;<a name="4">4</a>&#93; NIST, "Tentative Timeline of  the Development of New Hash Functions," <i>National  Institute of Standards and</i> <i>Technology, </i>12-Jul-2006.  &#91;Online&#93;. Available: <a href="http://csrc.nist.gov/groups/ST/hash/timeline.html" target="_blank">http://csrc.nist.gov/groups/ST/hash/timeline.html</a>.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000084&pid=S1692-1798201400020000500004&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;<a name="5">5</a>&#93; NIST, "Announcing request for  candidate algorithm nominations for a new  cryptographic hash algorithm (SHA-3) Family," <i>Federal  Register</i>,  29-Oct-2007. &#91;Online&#93;. Available:  <a href="https://federalregister.gov/a/E7-21581" target="_blank">https://federalregister.gov/a/E7-21581</a>.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000086&pid=S1692-1798201400020000500005&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;<a name="6">6</a>&#93; Xilinx, "Virtex-5 FPGA Data  Sheet," <i>Xilinx  Inc.</i>, 2009. &#91;Online&#93;. Available:  <a href="http://www.xilinx.com/support/documentation/data_sheets/ds202.pdf" target="_blank">http://www.xilinx.com/support/documentation/data_sheets/ds202.pdf</a>.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000088&pid=S1692-1798201400020000500006&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;<a name="7">7</a>&#93; Xilinx, "Xilinx UG190 Virtex-5  FPGA User Guide," <i>Xilinx</i> <i>Inc.</i>, 16-Mar-2012. &#91;Online&#93;.  Available: <a href="http://www.xilinx.com/support/documentation/user_guides/ug190.pdf" target="_blank">http://www.xilinx.com/support/documentation/user_guides/ug190.pdf</a>.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000090&pid=S1692-1798201400020000500007&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;<a name="8">8</a>&#93; M. Liskov, R. L. Rivest, and  D. Wagner, "Tweakable block ciphers," <i>J.  Cryptol.</i>, vol. 24,  no. 3, pp. 588-613, Sep. 2011.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000092&pid=S1692-1798201400020000500008&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;<a name="9">9</a>&#93; N. Ferguson, S. Lucks, B. Schneier, D. Whiting,  M. Bellare, T. Kohno, J. Callas, and  J. Walker, "The Skein Hash Function Family," <i>Schneier on Security</i>, 01-Nov-2008. &#91;Online&#93;. Available:  <a href="https://www.schneier.com/skein.html" target="_blank">https://www.schneier.com/skein.html</a>.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000094&pid=S1692-1798201400020000500009&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;<a name="10">10</a>&#93; N. At, J. L. Beuchat, and I.  San, "Compact implementation of threefish and Skein on FPGA,"  in <i>2012  5th International</i> <i>Conference  on New Technologies, Mobility</i> <i>and  Security - Proceedings of NTMS 2012 Conference</i> <i>and  Workshops</i>, 2012, pp. 1-5.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000096&pid=S1692-1798201400020000500010&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;<a name="11">11</a>&#93; M. Long, "Implementing skein hash  function on xilinx virtex-5 fpga platform,"  02-Feb-2009. &#91;Online&#93;. Available: <a href="http://www.skein-hash.info/sites/default/files/skein_fpga.pdf" target="_blank">http://www.skein-hash.info/sites/default/files/skein_fpga.pdf</a>.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000098&pid=S1692-1798201400020000500011&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;<a name="12">12</a>&#93; A. H. Namin and M. A. Hasan, "Hardware  Implementation of the Compression Function for  Selected SHA-3 Candidates," <i>CACR  2009-28</i>, 2009.  &#91;Online&#93;. Available: <a href="http://cacr.uwaterloo.ca/techreports/2009/cacr2009-28.pdf" target="_blank">http://cacr.uwaterloo.ca/techreports/2009/cacr2009-28.pdf</a>.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000100&pid=S1692-1798201400020000500012&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;<a name="13">13</a>&#93; J. Walker, F. Sheikh, S.  Mathew, and R. Krishnamurthy, "A Skein-512 Hardware  Implementation," Aug-2010. &#91;Online&#93;. Available:  <a href="http://csrc.nist.gov/groups/ST/hash/sha-3/Round2/Aug2010/documents/papers/WALKER_skein-intel-hwd.pdf" target="_blank">http://csrc.nist.gov/groups/ST/hash/sha-3/Round2/Aug2010/documents/papers/WALKER_skein-intel-hwd.pdf</a>.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000102&pid=S1692-1798201400020000500013&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;<a name="14">14</a>&#93; A. Schorr, "Performance  analysis of a scalable hardware fpga skein implementation," Kate Gleason   College of Engineering, Rochester  Institute of Technology, Rochester, NY, 2010.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000104&pid=S1692-1798201400020000500014&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;<a name="15">15</a>&#93; S. Tillich, "Hardware  Implementation of the SHA-3 Candidate Skein.," <i>IACR  Cryptology ePrint Archive</i>, Apr-2009. &#91;Online&#93;. Available:  <a href="http://eprint.iacr.org/2009/159.pdf?origin=publication_detail" target="_blank">http://eprint.iacr.org/2009/159.pdf?origin=publication_detail</a>.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000106&pid=S1692-1798201400020000500015&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>&#91;<a name="16">16</a>&#93; B. Jungk and J. Apfelbeck, "Area-Efficient  FPGA Implementations of the SHA-3 Finalists," in <i>2011  International</i> <i>Conference  on Reconfigurable Computing and</i> <i>FPGAs</i>, 2011, pp. 235-241.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000108&pid=S1692-1798201400020000500016&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p> </font>      ]]></body><back>
<ref-list>
<ref id="B1">
<label>1</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Stinson]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
</person-group>
<source><![CDATA[Cryptography: Theory and Practice]]></source>
<year>2005</year>
<edition>Third</edition>
<publisher-name><![CDATA[CRC Press, Inc]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B2">
<label>2</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Schneier]]></surname>
<given-names><![CDATA[B]]></given-names>
</name>
<name>
<surname><![CDATA[Ferguson]]></surname>
<given-names><![CDATA[N]]></given-names>
</name>
<name>
<surname><![CDATA[Lucks]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
</person-group>
<source><![CDATA[The skein hash function family]]></source>
<year>2010</year>
</nlm-citation>
</ref>
<ref id="B3">
<label>3</label><nlm-citation citation-type="book">
<collab>NIST</collab>
<source><![CDATA[Cryptographic hash algorithm competition]]></source>
<year>2005</year>
<publisher-name><![CDATA[National Institute of Standards and Technology]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B4">
<label>4</label><nlm-citation citation-type="book">
<collab>NIST</collab>
<source><![CDATA[Tentative Timeline of the Development of New Hash Functions]]></source>
<year>12-J</year>
<month>ul</month>
<day>-2</day>
<publisher-name><![CDATA[National Institute of Standards and Technology]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B5">
<label>5</label><nlm-citation citation-type="">
<collab>NIST</collab>
<source><![CDATA[Announcing request for candidate algorithm nominations for a new cryptographic hash algorithm (SHA-3) Family]]></source>
<year>29-O</year>
<month>ct</month>
<day>-2</day>
</nlm-citation>
</ref>
<ref id="B6">
<label>6</label><nlm-citation citation-type="book">
<collab>Xilinx</collab>
<source><![CDATA[Virtex-5 FPGA Data Sheet]]></source>
<year>2009</year>
<publisher-name><![CDATA[Xilinx Inc.]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B7">
<label>7</label><nlm-citation citation-type="book">
<collab>Xilinx</collab>
<source><![CDATA[Xilinx UG190 Virtex-5 FPGA User Guide]]></source>
<year>16-M</year>
<month>ar</month>
<day>-2</day>
<publisher-name><![CDATA[Xilinx Inc.]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B8">
<label>8</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Liskov]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[Rivest]]></surname>
<given-names><![CDATA[R. L]]></given-names>
</name>
<name>
<surname><![CDATA[Wagner]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Tweakable block ciphers]]></article-title>
<source><![CDATA[J. Cryptol.]]></source>
<year>Sep.</year>
<month> 2</month>
<day>01</day>
<volume>24</volume>
<numero>3</numero>
<issue>3</issue>
<page-range>588-613</page-range></nlm-citation>
</ref>
<ref id="B9">
<label>9</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Ferguson]]></surname>
<given-names><![CDATA[N]]></given-names>
</name>
<name>
<surname><![CDATA[Lucks]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
<name>
<surname><![CDATA[Schneier]]></surname>
<given-names><![CDATA[B]]></given-names>
</name>
<name>
<surname><![CDATA[Whiting]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
<name>
<surname><![CDATA[Bellare]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[Kohno]]></surname>
<given-names><![CDATA[T]]></given-names>
</name>
<name>
<surname><![CDATA[Callas]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[Walker]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
</person-group>
<source><![CDATA[The Skein Hash Function Family]]></source>
<year>01-N</year>
<month>ov</month>
<day>-2</day>
</nlm-citation>
</ref>
<ref id="B10">
<label>10</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[At]]></surname>
<given-names><![CDATA[N]]></given-names>
</name>
<name>
<surname><![CDATA[Beuchat]]></surname>
<given-names><![CDATA[J. L]]></given-names>
</name>
<name>
<surname><![CDATA[San]]></surname>
<given-names><![CDATA[I]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Compact implementation of threefish and Skein on FPGA]]></article-title>
<source><![CDATA[Proceedings of NTMS 2012 Conference and Workshops]]></source>
<year>2012</year>
<conf-name><![CDATA[5th International Conference on New Technologies, Mobility and Security]]></conf-name>
<conf-date>2012</conf-date>
<conf-loc> </conf-loc>
<page-range>1-5</page-range></nlm-citation>
</ref>
<ref id="B11">
<label>11</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Long]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
</person-group>
<source><![CDATA[Implementing skein hash function on xilinx virtex-5 fpga platform]]></source>
<year>02-F</year>
<month>eb</month>
<day>-2</day>
</nlm-citation>
</ref>
<ref id="B12">
<label>12</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Namin]]></surname>
<given-names><![CDATA[A. H]]></given-names>
</name>
<name>
<surname><![CDATA[Hasan]]></surname>
<given-names><![CDATA[M. A]]></given-names>
</name>
</person-group>
<source><![CDATA[Hardware Implementation of the Compression Function for Selected SHA-3 Candidates]]></source>
<year>2009</year>
</nlm-citation>
</ref>
<ref id="B13">
<label>13</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Walker]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[Sheikh]]></surname>
<given-names><![CDATA[F]]></given-names>
</name>
<name>
<surname><![CDATA[Mathew]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
<name>
<surname><![CDATA[Krishnamurthy]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
</person-group>
<source><![CDATA[A Skein-512 Hardware Implementation]]></source>
<year>Aug-</year>
<month>20</month>
<day>10</day>
</nlm-citation>
</ref>
<ref id="B14">
<label>14</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Schorr]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
</person-group>
<source><![CDATA[Performance analysis of a scalable hardware fpga skein implementation]]></source>
<year>2010</year>
<publisher-loc><![CDATA[Rochester^eNY NY]]></publisher-loc>
<publisher-name><![CDATA[Kate Gleason College of EngineeringRochester Institute of Technology]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B15">
<label>15</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Tillich]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
</person-group>
<source><![CDATA[Hardware Implementation of the SHA-3 Candidate Skein.]]></source>
<year>Apr-</year>
<month>20</month>
<day>09</day>
</nlm-citation>
</ref>
<ref id="B16">
<label>16</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Jungk]]></surname>
<given-names><![CDATA[B]]></given-names>
</name>
<name>
<surname><![CDATA[Apfelbeck]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Area-Efficient FPGA Implementations of the SHA-3 Finalists]]></article-title>
<source><![CDATA[]]></source>
<year>2011</year>
<conf-name><![CDATA[ International Conference on Reconfigurable Computing and FPGAs]]></conf-name>
<conf-date>2011</conf-date>
<conf-loc> </conf-loc>
<page-range>235-241</page-range></nlm-citation>
</ref>
</ref-list>
</back>
</article>
