Anda di halaman 1dari 6

ResumenEn este artculo se describe una implementacin

desarrollada con JBits del algoritmo criptogrfico IDEA,


utilizando una FPGA de la familia Virtex. Se ha realizado
un diseo por constantes del multiplicador mdulo y del
sumador para reducir significativamente el rea.
Desplegando todas las etapas del algoritmo se ha
conseguido que uno de los operandos de cada multiplicador
coincida con una subclave, que se mantiene invariable
durante la sesin de cifrado. Un cambio de clave implica
slo la modificacin de la parte del diseo que codifica las
constantes y se realiza mediante reconfiguracin parcial.
Se ha utilizado JBits para la creacin y reconfiguracin
dinmica del diseo en funcin de la clave de cifrado. As
se evita la carga de la clave y la implementacin de la
generacin de subclaves en hardware, al quedar implcitas
en la configuracin del dispositivo. Partiendo de un diseo
combinacional se ha introducido segmentacin para
mejorar el rendimiento.
Palabras clave IDEA, Criptografa, JBits, Virtex, FPGA,
Sistema reconfigurable.

I. INTRODUCCIN
Desde su aparicin, los circuitos FPGAs (Field
Programable Gate Arrays) [1] son los dispositivos ms
utilizados para el prototipado rpido de diseos digitales
y son muy adecuados para la implementacin material
de algoritmos especficos de tratamiento de datos.
En 1998, Xilinx introdujo en el mercado la familia
Virtex [2] con una nueva arquitectura que admite tanto
la reconfiguracin parcial como la reconfiguracin
dinmica del dispositivo. Ahora bien, sacar partido de
estas nuevas posibilidades no siempre es tarea fcil
debido a que las herramientas de diseo del fabricante
no las soportan directamente. Actualmente existe un API
de Java denominado JBits [3][4] que permite explotar la
reconfiguracin dinmica y parcial de Virtex y abre el
camino a su utilizacin prctica. Con esta herramienta se
pueden desarrollar soluciones de manera ms especifica,
pensando el problema como una sucesin de casos
particulares, cada uno de ellos con validez durante un
intervalo o para unos determinados parmetros de
entrada. Cuando transcurre el tiempo y cambian las
condiciones o los parmetros de entrada, se utiliza la
reconfiguracin dinmica para una adaptacin del
diseo a las nuevas condiciones de funcionamiento.
Los algoritmos de criptografa [5] son adecuados para su
implementacin en circuitos FPGA. Por ejemplo, el
algoritmo criptogrfico IDEA ha sido utilizado como
banco de pruebas de plataformas reconfigurables [6][7].
En este trabajo se intenta aprovechar la reconfiguracin
parcial para conseguir una implementacin
combinacional del algoritmo IDEA en una FPGA
XCV1000 optimizando la cantidad de recursos
utilizados. En el caso del algoritmo que nos ocupa, la
reconfiguracin parcial permite utilizar multiplicadores
por constantes, cuyo valor se concreta especficamente
para cada sesin de cifrado. El parmetro que define las
constantes es la clave asociada. Un cambio de sesin
implica que se debe reconfigurar la parte del circuito
relacionada con los nuevos valores de la clave.
La estructura del articulo es la siguiente: en el apartado
II se introduce el API JBits. La descripcin del
algoritmo de cifrado IDEA se detalla en el apartado III.
A continuacin se discute la adaptacin del mismo a la
plataforma reconfigurable y las ventajas que conlleva la
utilizacin de la reconfiguracin. En el siguiente
apartado se presentan los resultados experimentales y
finalmente las conclusiones y el trabajo futuro.
II. JBITS
Descrito de una manera muy breve, JBits es una API
(Application Program Interface) que permite usar el
lenguaje Java para describir circuitos digitales. JBits
proporciona dos alternativas de diseo. La primera
permite disear a bajo nivel y para ello dispone de un
conjunto de clases y mtodos para manipular el
bitstream de configuracin de la FPGA. La otra
alternativa es realizar descripciones estructurales
utilizando la librera de cores parametrizables que ofrece
esta herramienta.
La potencia de JBits estriba en que fue diseado para
hacer posible el diseo en tiempo de ejecucin [8][9],
esto es, circuitos que se generan en tiempo real acorde
con las circunstancias del momento: dispositivo
disponible, espacio libre, velocidad requerida,... Un
diseo en JBits es un cdigo Java que al ejecutarse va
construyendo el hardware, y por lo tanto, las decisiones
que se vayan tomando en esta ejecucin se traducirn en
distintos circuitos posibles. A diferencia del diseo
convencional, la definicin del hardware se retrasa hasta
el ltimo momento, de tal manera que el circuito ser
Implementacin del Algoritmo Criptogrfico
IDEA en Virtex

usando JBits
I. Gonzlez
1
, F.J. Gmez
1
, S. Lpez-Buedo
1
, J.I. Martnez
2
, J-P. Deschamps
2
, E. Boemo
1
y J. Martnez
1
Departamento de Ingeniera Informtica
1
Universidad Autnoma de Madrid
2
Universidad Rey Juan Carlos I
Ivan.Gonzalez@ii.uam.es, Francisco.Gomez@ii.uam.es
construido a medida justo antes de descargarlo en la
FPGA
La base para lograr este objetivo es hacer un diseo
estructural, a base de los cores parametrizables antes
mencionados, que en la nomenclatura de Java se
denominan RTP (run-time parameterizable) [10]. Todos
estos cores son descripciones de mdulos hardware en
Java ms o menos regular (sumadores, contadores,
multiplexores) de manera que resulte factible
parametrizarlos en tiempo de ejecucin. La herramienta
permite al diseador escoger entre una amplia librera , o
bien crear uno propio, como el que se presenta en este
artculo.
JBits no dispone de toda las posibilidades de los
lenguajes de descripcin de hardware. El precio a pagar
por realizar diseos en tiempo de ejecucin es prescindir
de las descripciones de comportamiento, cuyo proceso
hasta llegar al hardware es demasiado elaborado para
poder ser realizado en tiempo real.
Como consecuencia de esta estrategia de diseo, JBits
ofrece un soporte completo a las posibilidades de
reconfiguracin parcial en tiempo de ejecucin de la
familia Virtex. Para ello utiliza un modelo muy sencillo,
pero efectivo, basado en que las sucesivas
reconfiguraciones del dispositivo se hacen slo sobre
aquellas secciones del bitstream correspondientes a las
partes del circuito que hayan sido modificadas.
Por ltimo, cabe destacar que JBits puede resultar una
herramienta apropiada para el codiseo HW/SW, pues
no slo permite unificar bajo un mismo lenguaje
descripciones de circuitos y de programas, sino que
permite hacerlo sin tener que recurrir a las herramientas
convencionales de diseo, tal como ocurre con otras
alternativas para la descripcin de hardware usando
lenguajes de alto nivel.
III. EL ALGORITMO IDEA
El algoritmo IDEA (International Data Encryption
Algorithm) [11] fue propuesto en 1991 como evolucin
de un algoritmo denominado PES [12] (Proposed
Encryption Standard) desarrollado por Xuejia Lai y
James Massey del Swiss Federal Institute of Technology
de Zurich.
IDEA es un algoritmo de cifrado simtrico que opera
con bloques de 64 bits y una clave de 128 bits. El bloque
de entrada pasa a travs de 8 etapas operacionalmente
idnticas ms una transformacin de salida para generar
finalmente el bloque de salida. La etapa n-sima recibe
64 bits de entrada en cuatro sub-bloques de 16 bits, X
1
n
a
X
4
n
, y produce cuatro sub-bloques, Y
1
n
a Y
4
n
como se
muestra en la figura 1. Por su estructura en array, el
proceso puede realizarse mediante sucesivas iteraciones
de las operaciones realizadas en una etapa.
La clave de 128 bits es dividida sucesivamente en
subclaves de 16 bits repetidamente hasta obtener 52
subclaves. Cada iteracin utiliza seis subclaves, Z
1
n
a Z
6
n
(iteracin n-sima) utilizando un total de 48 subclaves
para ejecutar las 8 iteraciones y cuatro subclaves
adicionales, Z
7
a Z
10
, para la transformacin final.
El proceso de cifrado y descifrado utiliza el mismo
esquema. A partir de la misma clave, se elige por el
modo de generacin de las subclaves. Las subclaves
para descifrado se obtienen a partir de las de cifrado,
calculando su inverso multiplicativo para las que se
aplican en multiplicadores o su inversos aditivos para las
que operan sobre los sumadores. Se pueden encontrar
ms detalles sobre la generacin de subclaves en [5].
El proceso de expansin de subclaves solo ocurre una
vez por sesin, cuando se elige la clave, y el resultado
puede guardarse para su utilizacin posterior. Por esta
razn, en las implementaciones Hardware-Software del
algoritmo este proceso es adecuado para ser ejecutado
por el software [7] ya que requiere una pequea fraccin
del tiempo de clculo.
Fig. 1. Algoritmo IDEA
El algoritmo utiliza tres operaciones simples: or-
exclusiva, suma mdulo 2
16
y multiplicacin entera
mdulo 2
16
+1, todas ellas utilizando 16 bits como
tamao de operando. La operacin ms costosa en
tiempo de ejecucin es la multiplicacin entera mdulo
2
16
+1, que adems debe satisfacer las siguientes
excepciones:
Un operando en el cual todos sus bits son cero
representa el valor 2
16
.
Un resultado con valor 2
16
viene representado
por un valor de 16 bits con todos los bits
iguales a cero.
De la descripcin anterior se deduce que para una clave
dada, un bloque de entrada siempre tendr la misma
representacin de salida. Esto supone una importante
debilidad del algoritmo. Para evitarla se han propuesto
diferentes modos de encadenamiento para crear
dependencia entre los bloques que se van tratando
sucesivamente. En esta etapa del proyecto la
implementacin propuesta se corresponde con el modo
de encadenamiento denominado ECB (Electronic
CodeBook), en el cual no se evita la debilidad frente
ataques y se utiliza un tratamiento idntico e
independiente para cada uno de los bloques.
IDEA es un algoritmo de criptografa muy popular, y
desde su aparicin se ha implementado en dispositivos
reconfigurables, en procesadores especializados de
tratamiento DSP e incluso en ASIC. La tabla 1 resume
los resultado de rendimiento de diferentes soluciones
encontradas en la bibliografa.
TABLA I
IDEA EN HARDWARE.
EL ASTERISCO INDICA LA UTILIZACION DE ARITMETICA SERIE
Ref Nombre del
circuito
Caractersticas Rendimiento
(Mbit/s)
[13] VINCI ASIC@25MHz
CBC
177.8
[14] IDEACrypt ASIC@25MHz 300.0
[15] TMX320C6x DSP@200MHz 53.1
[6] XC4005 FPGA@7.3MHz 0.447
[15] XC4000 4 FPGAs @33M 528.0
[16] PipeRench @100MHz 126.6
[17] HIPCrypto 8 dispostivos
@53MHz
3400.0
[18] *Leong et al XCV1000-6
@ 147.1
2350.0
[19] CryptoBoost XCV1000-4
CBC@ 13.1MHz
102.3
[20] CryptoBoost
II
XCV1000-4
@ 66.6MHz
4300
[20] *CryptoBoost
III
XCV1000-4
CBC @200MHz
200
En cuanto a los rendimientos obtenidos en procesadores
de propsito general comerciales destacan: 4.6 Mbit/s en
un Procesador Pentium@90MHz, 261.8 Mbit/s en un
PIII @450MHz que se mejora a 440 Mbit/s en un
PIII@800MHz. Estos resultados han sido obtenidos a
partir del paquete IDEA distribuido por ASCOM. El
programa ejecutable utilizado se obtiene a partir de la
compilacin del cdigo fuente en lenguaje C y ASM,
que describe a alto nivel el algoritmo. Los resultados
anteriores se lograron con adaptaciones del cdigo
fuente, para sacar el mximo partido de la arquitectura
del procesador. Recientemente, se han publicado
rendimientos [21] de hasta 550 Mbit/s para cdigo
optimizado para Itanium @733 MHz.
IV. IMPLEMENTACIN
Las implementaciones hardware de IDEA, descritas en
el apartado anterior, mejoran el rendimiento utilizando
operadores especializados [20], empleando aritmtica
en serie [19][20], o incrementando el nmero de
circuitos dedicados [17].
En nuestro caso, el objetivo es realizar un diseo del
algoritmo IDEA que explote las caractersticas de la
tecnologa de la familia Virtex utilizando para ello las
posibilidades del API JBits. Se pretende utilizar de
manera eficiente la reconfiguracin parcial para
optimizar el diseo.
En primer lugar, se desarroll un diseo del algoritmo
que permitiese desplegar las 8 etapas del algoritmo
IDEA y la transformacin final, con todas las
operaciones bsicas implementadas de manera
combinacional. En este caso la reconfiguracin parcial
permite reducir el numero recursos necesarios. Con ello,
se consigue que el diseo sea realizable en plataformas
reconfigurables ms pequeas. Partiendo del diseo
anterior se optimiza el rendimiento introduciendo
segmentacin a diferentes niveles. Las operaciones
bsicas del algoritmo se han elegido como las unidades
mnimas para aplicar diferentes etapas de segmentacin.
A. Especializacin de circuitos para su modificacin
dinmica usando JBits.
Un anlisis previo del diagrama de flujo del algoritmo
IDEA revela como elemento crtico la operacin de
multiplicacin modulo 2
16
+ 1. Si todas la etapas del
algoritmo se consiguen desplegar completamente, uno
de los operandos coincide con la subclave asociada al
multiplicador y no cambia durante una sesin de cifrado.
En estas condiciones la operacin se simplifica y se
optimiza el diseo con la utilizacin de un multiplicador
por constante KCM. Esta misma consideracin se
extiende a aquellos sumadores que emplean subclaves.
Contabilizando el nmero de elementos por etapa del
algoritmo que admiten esta optimizacin tenemos que,
se emplean 6 subclaves, cuatro de ellas permitirn
definir multiplicadores por constante y las otras dos
sumadores por constante.
La implementacin de un multiplicador por constante
KCM [22] es sencilla y en el caso de operandos de 16
bits se adapta particularmente bien a la arquitectura
Virtex aprovechando las LUTs de 4 entradas. De esta
manera se consigue un multiplicador eficiente que ocupa
poca rea y es modificable con solo cambiar el
contenido de las LUT. La figura 2 muestra una
representacin de este multiplicador que utiliza 42 CLBs
de una Virtex distribuidos en columnas para facilitar su
modificacin con reconfiguracin parcial.
Adicionalmente, es necesario aadir a la salida del
multiplicador, un elemento que calcule el mdulo 2
16
+1.
La implementacin del mdulo se ha desarrollado a
partir algoritmo Low-High [23] que corresponde a la
siguiente descripcin en un lenguaje de alto nivel:
uint16 mulmod2_16mas1 (uint16 a, uint16 b)
{
word32 p;
if (a != 0 )
{
if (b !=0 )
{
p = (word32) a*b;
b = low16(p);
a= p >>16;
return (b a + (b < a));
}
else
return (1-a);
}
else
return (1-b);
}
Como se deduce del algoritmo anterior, el diseo del
bloque que calcula la multiplicacin mdulo 2
16
+1
presenta casos particulares que lo simplifican. En el caso
que el operando constante k del multiplicador valga
cero, la operacin se reduce a una simple resta y se
puede simplificar durante la construccin del diseo. De
el mismo modo, si el otro operando es cero el resultado
es 1 k. Este funcionamiento se ha implementado
aadiendo un comparador que detecta cuando el
operando es cero y selecciona como salida del mdulo el
resultado 1-k valor que tambin se conoce durante las
realizacin del diseo. En el caso general en el que tanto
la constante como el operado son distintos de cero se
aade la lgica necesaria para realizar las operaciones
descritas en el algoritmo, lo que supone un incremento
de 22 CLBs para dar un total de 66 CLBs ocupados para
implementar la operacin completa, como se muestra en
la figura 2.
Fig. 2 Multiplicador KCM 16x16 ocupando 42 CLBs y multiplicador
KCM 16x16 mod. 2
16
+1 en 66 CLBs
B. Planificacin de la reconfiguracin con JBits.
En cuanto a como utilizar la reconfiguracin para
realizar los cambios en los multiplicadores descritos en
el apartado anterior y poder satisfacer la funcionalidad
de IDEA, hay que considerar lo siguiente: la
configuracin inicial de la FPGA con el diseo
completo, define directamente los multiplicadores por
constante con el valor deseado. Como los valores de las
constantes estn ligados a las subclaves, el circuito
construido solo podr ser utilizado durante una nica
sesin de cifrado. Un cambio de subclaves se contempla
variando el diseo del multiplicador y adaptndolo a una
nueva constante. Ante esta situacin caben dos
alternativas: reconfigurar de nuevo todo el circuito
FPGA o, si el multiplicador ha sido diseado
adecuadamente, modificar solo la parte del diseo
afectada por la utilizacin de una nueva constante. Es
decir, utilizar reconfiguracin parcial. En este punto,
JBits se muestra como la herramienta que permite
reconfigurar los circuitos cambiando solo aquella parte
que se necesita modificar.
Por otro lado, la utilizacin de JBits como herramienta
de diseo facilita que la generacin de subclaves pueda
realizarse por software sin necesidad de disear un
mdulo hardware dedicado. El programa Java,
dependiendo de la clave pasada como parmetro, calcula
subclaves y crea el diseo adaptado a las constantes de
los multiplicadores. El incremento en el tiempo de
proceso final no es significativo, ya que nicamente se
necesita expandir las subclaves cuando se cambia de
sesin de cifrado.
Comparando con una implementacin tradicional se
elimina los pines de entrada para la introduccin de la
clave o el mecanismo equivalente de paso de claves al
sistema de cifrado y tambin se elimina la lgica
involucrada en su expansin a subclaves.
C. Recursos necesarios y segmentacin de los
caminos crticos.
Una primera estimacin de los recursos necesarios
para la implementacin del algoritmo IDEA muestra que
cada etapa requiere :
66x4 CLBs para los 4 multiplicadores mdulo
2
16
+1
8x4 CLBs para los 4 sumadores mdulo 2
16
4x6 CLBs para las 6 XOR
Si se despliegan las 8 etapas del algoritmo el nmero de
CLBs ocupados asciende a 320 por etapa y se puede
elegir un emplazamiento que se extiende en una matriz
de 11x56 CLBs como se muestra en la figura 3.
Fig. 3. Recursos involucrados en el emplazamiento de una etapa de
IDEA. Se incluye tambin la colocacin de los registros que
segmentan el flujo de datos entre etapas y reducen los caminos
crticos.
Aadiendo la ltima etapa de transformacin que
necesita :
66x2 CLBs para los 2 multiplicadores mod
2
16
+1
8x2 CLBs para los 2 sumadores mod 2
16
se estima un total de 2708 CLBs para el emplazamiento
manual de los componentes. La FPGA elegida para
implementar el diseo es una XCV1000 con (64x96)
6144 CLBs. En estas condiciones se facilita el rutado
con JBits, ya que trabaja con una ocupacin por debajo
de la mitad de los recursos disponibles.
Por otro lado, para disminuir los retardos conviene
segmentar en diferentes partes el diseo. Como todas las
etapas del algoritmo IDEA son iguales, la opcin ms
evidente consiste en elegir una segmentacin a nivel de
etapa. Con esto, se particiona el diseo combinacional
en 8 segmentos y se consigue disminuir el retraso de los
caminos crticos. Otro nivel de segmentacin de grano
ms fino, se consigue introduciendo registros a la salida
de cada multiplicador respetando las dependencias de
datos dentro de cada etapa, como se muestra en la fig. 4.
Este nivel de segmentacin no particiona los
componentes bsicos y por tanto se puede estimar un
camino critico para todo el diseo que coincidir
bsicamente con el retardo asociado al multiplicador
mdulo 2
16
+1.
En una primera versin se han aadido explcitamente
los registros de segmentacin al diseo, y por tanto se
incrementa el rea con 10x4 CLBs para los registros
intermedios de cada etapa, y 4x4 CLBs para los registros
de salida. Con estos incrementos una etapa ocupa una
matriz de 11x56 CLBs (figura 3), resultando que las 8
iteraciones ms la transformacin final requieren una
matriz de 94x56 CLBs, emplazables sin dificultad en
una FPGA del tamao de una XCV1000 como puede
verse en la figura 5. En una versin mejorada, se pueden
implementar los registros de segmentacin asociados a
la salida de cada multiplicador aprovechando los
registros disponibles en los CLB que ya estn siendo
utilizados para realizar el mdulo, sin necesidad de
gastar recursos adicionales.
D. Validacin y Rendimiento
La verificacin funcional se llev a cabo inicialmente
empleando el simulador disponible junto con las
herramientas de JBits, denominado VirtexDS [24].
Dadas las limitaciones de este simulador, solo nos fue
posible comprobar el correcto funcionamiento de los
circuitos bsicos: multiplicadores, sumadores y XOR.
La validacin de diseos posteriores se realiz sobre la
plataforma RC1000PP de Celoxica [25].
La obtencin de los valores necesarios para estimar
rendimiento de los diseos se realiz mediante las
herramientas del fabricante utilizadas para estos fines.
JBits permite la generacin de un fichero XDL con la
informacin de diseo a bajo nivel, incluyendo
emplazamiento y rutado. Con la transformacin xdl2ncd
se obtiene un fichero NCD que contiene el mismo tipo
de informacin pero empleando primitivas nativas
genricas de Xilinx y a partir de este formato ya se
puede visualizar el diseo en el FPGA Editor y obtener
con el Timing Analyzer los valores de retardos del
circuito .
Fig. 4. Segmentacin dentro de una etapa a nivel de multiplicador para
reducir caminos crticos.
El primer diseo que se analiz fue el multiplicador por
ser el componente crtico del diseo. La frecuencia de
operacin obtenida segn el Timing Analyzer fue de
20MHz. El resto de circuitos no han podido analizarse
con esta herramienta debido a problemas de falta de
recursos en la plataforma de clculo. Sin embargo, a
partir del resultado obtenido para el multiplicador se
espera una frecuencia de operacin de 0.83 MHz para el
IDEA completamente combinacional. Esta estimacin se
ha realizado considerando que el proceso de un dato, en
el peor de los casos, lleva asociadas 25 multiplicaciones
mdulo 2
16
+1.
La frecuencia de operacin para las distintas
implementaciones con segmentacin planteadas tambin
pueden ser estimadas. El diseo con segmentacin a
nivel de etapa tiene un camino crtico que encadena tres
multiplicaciones mdulo 2
16
+1 y por tanto, idealmente,
su retraso se ve aumentado por un factor 3. Como
resultado, la frecuencia disminuir en ese mismos factor.
Con segmentacin a nivel de multiplicador, debera
conseguirse que el circuito funcionase a la misma
frecuencia que opera el multiplicador y por tanto
alcanzar hasta 20MHz.
La validacin de los diseos se realiz utilizando la
plataforma RC1000PP verificando para las diferentes
frecuencias estimadas el correcto funcionamiento del
diseo. Para la entrada y salida de datos se emplearon
las BRAM internas de la FPGA. En estas condiciones y
teniendo en cuenta que la plataforma esta conectada a un
PC es inmediato, con el mismo programa Java,
comparar los resultados de la ejecucin por hardware y
los obtenidos por un procesamiento software. Para un
subconjunto caracterstico de vectores de prueba, las
frecuencias de operacin alcanzadas en cada una de las
implementaciones anteriores han sido mas altas que las
estimadas. Se ha verificado que la implementacin de
IDEA con segmentacin a nivel de los multiplicadores
mdulo 2
16
+1 alcanza una frecuencia de operacin de
20 MHz y por tanto, en condiciones de carga total, el
rendimiento del sistema ser de 1280 Mbits/s.
Fig. 5. Diseo completo del algoritmo IDEA en la XCV1000 de la
plataforma RC1000PP. Representacin de la ocupacin de circuito
mediante el BoardScope[26] de JBits.
V. CONCLUSIONES
En este trabajo se presentan algunas ventajas obtenidas
al utilizar la reconfiguracin parcial de la arquitectura
Virtex en una aplicacin prctica. Mediante el API JBits
se ha conseguido una implementacin eficiente del
algoritmo IDEA.
JBits como herramienta de diseo permite unificar bajo
un mismo lenguaje la descripcin de circuitos y los
programas. De esta manera, en la aplicacin propuesta la
generacin de las subclaves se ha realizado por la parte
software. Al ser el mismo programa el encargado de
construir la parte que funciona en hardware, es
inmediato incluir directamente los valores de las
subclaves en el bitstream de configuracin del circuito.
Como resultado toda la entrada de claves y la lgica de
generacin de subclaves quedan eliminadas de la
descripcin hardware. Adems, JBits ha permitido la
especializacin dinmica del diseo reconfigurando
parcialmente los elementos de clculo en funcin de los
parmetros de entrada.
El rendimiento estimado del Algoritmo IDEA alcanza
1.28 Gbit/s. Este valor se compara satisfactoriamente
con los resultados publicados en la literatura.
Como trabajo futuro se pretende explotar la
reconfiguracin parcial en implementaciones del
algoritmo IDEA que utilizan aritmtica serie.
Agradecimientos
Este trabajo ha sido parcialmente financiado por el
proyecto TIC2001-2688-C03-03 del Ministerio de
Educacin, Cultura y Deporte.
VI. REFERENCIAS
[1] S. Trimberger. Field-Programmable Gate ArrayTechnology.
Kluwer Academic Publishers, 1994.
[2] Xilinx, Virtex 2.5V Field Programmable Gate Arrays Product
Specification. Xilinx, 2001. http:\\www.xilinx.com
[3] S. A. Guccione y D. Levi. JBits: A Java-based Interface to
FPGA Hardware. San Jose, CA: Xilinx Inc, 1998
[4] Steven A. Guccione, Delon Levi y Prasanna Sundararajan.
JBits: A Java-based Interface for Reconfigurable Computing. 2nd
Annual Military and Aerospace Applications of Programmable
Devices and Technologies Conference (MAPLD).
[5] Bruce Schneir. Applied Cryptography: Protocols, Algorithms
and Source Code in C. Ed. John Wiley&Sons, 1996.
[6] E. Caspi y N.Weaver. IDEA as a benchmark for
reconfigurable computing. Technical report, BRASS Research
Group. University of Berkeley, Dec 1996. Artculo disponible en
http:// www.cs.berkeley.edu/ projects/brass/projects.html
[7] I.Gonzalez, F.J. Gmez y J. Martinez, A HW/SW codesign
case study: Implementing a cryptographic algorithm in a
reconfigurable platform. Pp.504-509. Proceedings of DCIS2001,
Oporto 2001
[8] S. McMillian y S. A. Guccione. Partial Run-Time
Reconfiguration using JRTR. San Jose, CA: Xilinx Inc, 2000
[9] E. Keller. Jroute: A Run-Time Routing API for FPGA
Hardware. San Jose, CA: Xilinx Inc, 2000
[10] S. A. Guccione y D. Levi. Run-Time Parameterizable Cores.
San Jose, CA: Xilinx Inc, 1999
[11] X. Lai, J. L. Massey y S. Murphy. Markov Ciphers and
Differential Cryptanalysis. D. W. Davies, editor, Advances in
Cryptology. EUROCRYPT91, Volume 547 of Lecture Notes in
Computer Science,pp 17-38, Springer, Berlin .1991.
[12] X. Lai y J. Massey. A proposal for New Block Encryption
Standard. En Advances in Cryptology- EUROCRYPT90,
Volume 473 of Lecture Notes in Computer Science,pp389-404,
Springer, Berlin 1990.
[13] A. V. Curiger H.BonnenBerg, R. Zimmermann, N. Felber,
H. Kaeslin, W. Fichtner, VINCI: VLSI Implementation of the
New Block Cipher IDEA, Proceedings of the IEEE CICC93, pp.
15.5.1-15.5.4, San Diego, CA, 1993
[14] Ascom http://www.ascom.com
[15] O. Mencer, M. Morf, M.J. Flynn, Hardware Software Tri-
Design of Encryption for Mobile Communication Units,
Proceedings of the IEEE International Conference on Acoustics,
Speech, and Signal Processing, vol 5 pp3045-3048, 1998.
[16] R. R. Taylor, S. C Goldstein, A High-Performance Flexible
Architecture for Cryptography, C. K Koc., C. Paar, Eds.,
Proceedings of the First International Workshop on
Cryptographic Hardware and Embedded Systems, CHES99,
Lecture Notes in Computer Science, pp. 231245, Springer,
Berlin 1999.
[17] S.L.C. Salomao, V.C. Alves, E. M. C. Filho, HiPCrypto: A
HighPerformance VLSI Cryptographic Chip., Proceedings of
the Eleventh Annual IEEE ASIC Conference, , pp. 711,1998.
[18] M. P. Leong, O. Y. H Cheung, K. H. Tsoi, P. H.W. Leong, A
Bit-Serial Implementation of the International Data Encryption
Algorithm IDEA .., HUTCHINGS B., Ed., IEEE Symposium on
Field-Programmable Custom Computing Machines, IEEE
Computer Society, p. 122131, 2000.
[19] E.Mosanya, C. Teuscher, H.F.Restrepo, P.Galley y
E.Sanchez, CryptoBooster: A Reconfigurable and Modular
Cryptographic Coprocessor. In C.K. Koc and C. Para, editors,
Proc. of the First International Workshop on Cryptographic
Hardware and Embedded System, CHES99, n 1717 in Lecture
Notes Computer Science, pp 246-256. Springer, 1999.
[20] J.L.Beuchat, J.O Haenni, C.Teuscher, F.J.Gomez,
H.F.Restrepo y E.Sanchez, Approches matrielles et logicielles
de lalgorithme IDEA. Technique et Science Informatiques, vol
21, n2, pp 203-224, 2002
[21] J.O Haenni, Tesis 2540(2002) Architecture EPIC et jeux
dintructions multimdias pour application cryptographiques
pp77-130, Lausanne EPFL 2002
[22] Nota de aplicacin de Xilinx XAPP 054
(http://www.xilinx.com/xapp/xapp054.pdf)
[23] X. Lai, On the Design and Security of Block Ciphers, ETH
Series in Information Processing, HartungGorre Verlag
Konstanz, 1992.
[24] S.P. McMillian, B.J. Blodget y S.A. Guccione. VirtexDS: A
Device Simulator for Virtex. Xilinx Inc. San Jose, CA, 2000
[25] RC1000PP de Celoxica, http://www.celoxica.com/
[26] D. Levi y S. A. Guccione. BoardScope: A debug Tool for
Reconfigurable Systems. San Jose, CA: Xilinx Inc, 2000