Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe...
Transcript of Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe...
Centro de Investigación y de Estudios Avanzados
Del Instituto Politécnico Nacional
Laboratorio de Tecnologías de la Información
Reporte Técnico:
Arquitecturas hardware compactas y suimplementación en FPGA para multiplicación en
campos finitos GF(2k)
Miguel Morales Sandoval, Arturo Díaz Pérez
CINVESTAV TAMAULIPAS. LABORATORIO DE TECNOLOGÍAS DE LA INFORMACIÓN.
Parque Científico y Tecnológico TECNOTAM – Km. 5.5 carretera Cd. Victoria-Soto La Marina.
C.P. 87130 Cd. Victoria, Tamps.
Cd. Victoria, Tamaulipas, México. Agosto, 2014
Resumen:
En este documento se describen arquitecturas hardware y su implementación en FPGAs para
calcular la operación de multiplicación en campos finitos GF(2k). En la literatura existen 3
enfoques en la implementación de multiplicadores en GF(2k): multiplicadores seriales, multiplicadores
paralelos, y multiplicadores por dígitos. En este trabajo exploramos el diseño de multiplicadores
compactos en GF(2k) usando representación en base polinomial bajo un cuarto enfoque al que
llamamos multiplicador dígito-dígito, donde se procesa iterativamente grupos de coeficientes tanto
del multiplicando como del multiplicador. Después de derivar el algoritmo iterativo, se propone
una arquitectura hardware que implementa dicho algoritmo en hardware reconfigurable (FPGA).
El multiplicador se describe en VHDL y se sintetiza para FPGAs comerciales de la empresa Xilinx
usando las herramientas ISE 14.2. Se desarrolló un generador de código VHDL para implementar el
multiplicador considerando diferentes valores de k, tomando como referencia valores recomendados en
la literatura para aplicaciones prácticas en criptografía asimétrica. Los resultados obtenidos muestran
que una implementación de la operación de multiplicación en campos binarios es posible para ser
integrada en sistemas embebidos y de cómputo móvil, dado el bajo consumo de slices en el FPGA
(área) y el alto desempeño obtenido (throughput), el cual puede ser tolerable bajo estos ambientes
de cómputo.
Este trabajo es apoyado por el Consejo Nacional de Ciencia y Tecnológia de México (CONACyT),
a través del proyecto FORDECYT 2011-01-174509.
PALABRAS CLAVE: Campos finitos, Criptografía, base polinomial, campo binario, trinomios, pentanomios,
FPGAs
Autor correspondiente: Miguel Morales-Sandoval <[email protected]>
c© Derechos de autor de CINVESTAV-Tamaulipas. Todos los derechos reservados
Fecha de envío: 15 de Agosto, 2014
Este documento debería ser citado como: M. Morales-Sandoval, Arturo Díaz Pérez. Arquitecturas
hardware compactas y su implementación en FPGA para multiplicación en campos finitos GF(2k).
Reporte Técnico Número 2, 32 págs. CINVESTAV-Tamaulipas, 2014.
Lugar y fecha de publicación: Ciudad Victoria, Tamaulipas, MÉXICO. Agosto 15, 2014
Contenido
Índice General I
1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2. Algoritmos para multiplicación en GF(pk) . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3. Multiplicación en el campo GF(2k) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4. Enfoque dígito-dígito para multiplicación en GF(2k) . . . . . . . . . . . . . . . . . . . . . . 7
5. Resultados de implementación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.1. Experimento 1: Análisis de compromisos área-desempeño del multiplicador GF(2k) propuesto 11
5.1.1. Comparación con multiplicadores GF(2k) previamente reportados . . . . . 13
5.2. Experimento 2: Multiplicadores GF(2k) compactos . . . . . . . . . . . . . . . . . . 14
5.2.1. Comparación conlos multiplicadores GF(2k) más compactos previamente reportados 17
6. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Bibliografía 25
1 Introducción
Un campo finito se denota como GF(pk), donde p es un número primo y k es algún número entero
positivo. Es bien sabido que un campo finito existe para cualquier primo p y entero positivo k seleccionado,
siendo pk el número de elementos en el campo finito y p la característica del campo finito. Al campo GF(pk)
también se le conoce como campo de extensión del campo GF(p), y en general si GF(pk) es un campo
finito, entonces GF((pk)m) = GF(pkm) es un campo de extensión de grado m de campo finito GF(pk).
Los campos finitos han sido usados en diversa aplicaciones, sobresaliendo aquellas para códigos de
corrección de errores y en criptografía [Menezes et al., 1996], particularmente en Criptografía de Curvas
Elípticas [Johnson et al., 2001] y en Criptografía basada en emparejamientos bilineales. En esquemas de
cifrado de llave pública, los campos finitos son una parte fundamental, ya que sobre ellos se definen los
problemas sobre los que los esquemas de cifrado fundamentan su seguridad. Para aplicaciones en criptografía,
los campos finitos generalmente ya están prefijados, y los valores de p y k son recomendados por diversos
estándares tales como NIST [NIST, 1999], IEEE, ISO y SECG. Los campos GF(p), GF(2k) y GF(3k) son
casos particulares de campos finitos que se usan en los actuales esquemas de cifrado, no solo de llave
pública, sino también en esquemas de llave privada, como el caso de AES (Advanced Encryption Standard).
Por ejemplo, algunos criptosistemas que usan el campo primo GF(p) son RSA, Protocolo de intercambio
de llaves Diffie-Hellman y Criptografía de Curvas Elípticas. El campo GF(2k) se ha usado mayormente en
Criptografía de Curvas Elípticas y en el estándar AES. El campo GF(3k) ha sido considerado mayormente para
implementar esquemas de Criptografía basada en emparejamientos bilineales. Sin embargo, campos finitos
más generales GF(pk) con k > 2 han recibido poca atención, a pesar de que la definición de esquemas de
cifrado sobre estos campos, por ejemplo en Criptografía de Curvas Elípticas, proporcionan el mismo nivel de
seguridad [Bajard et al., 2003].
En la siguiente sección se presenta el background necesario para comprender los algoritmos que existen
para realizar multiplicación en GF(pk), mismo que serán usados para derivar las arquitectura hardware
compactas.
1
2 2. Algoritmos para multiplicación en GF(pk)
2 Algoritmos para multiplicación en GF(pk)
Un campo finito GF(pk) es isomórfo a GF(p)[x]/F (x), donde F (x) = xk +
k−1∑
i=0
fixi, fi ∈ GF(p), es un
polinomio irreducible mónico de grado k sobre GF(p). El polinomio F (x) se llama mónico cuando fk = 1,
es irreducible si los únicos divisores mónicos de F (x) son 1 y F (x) mismo. En el caso de un campo finito
de extensión GF(pkm) de grado m, el polinomio F (x) puede definirse de dos formas:
1. Como un polinomio de grado km con coeficientes en GF(p)
2. Como un polinomio de grado m con coeficientes en GF(pk)
En ambos casos, los campos finitos resultantes son isomórfos.
Suponiendo que α es una raíz de F (x), entonces cada elemento de GF(pk) es visto como un polinomio
A(α) que se expresa en base polinomial o canónica como:
A(α) = ak−1αk−1 + ak−2α
k−2 + · · ·+ a1α+ a0 =k−1∑
i=0
aiαi (1)
donde ai ∈ GF(p). Bajo la suposición de que F (α) = 0, se obtiene que:
αk = −
k−1∑
i=0
fiαi =
k−1∑
i=0
(−fi)αi (2)
En [Bertoni et al., 2003], se introduce la notación A mod F (α) para indicar explicitamente que una
reducción módulo P (α) se realiza usando la ecuación 2, para todo αt, t > k − 1 en A.
Sean A(α), B(α) ∈ GF(pk). Las operaciones [A(α) +B(α)] y [A(α)×B(α)] se definen como:
A(α) +B(α) =k−1∑
i=0
([ai + bi] mod p)αi (3)
A(α)×B(α) =
(
2k−2∑
i=0
c′iαi
)
mod F (α) (4)
Una multiplicación en GF(pk) resulta en un número intermedio C ′(x) de grado a lo más 2k − 2 donde
c′i ∈ GF(p). Este polinomio no pertenece a GF(pk). Se necesita realizar una operación módulo F (α), de
Multiplicación en campos binarios GF(2k) 3
tal forma que C(α) = C ′(α) mod F (α) resulte en un polinomio de grado a lo más k − 1 perteneciente a
GF(pk). Realizando la multiplicación con se realiza con polinomios (multiplicando los coeficientes), C ′(α)
se calcula con k2 multiplicaciones y (k − 1)2 sumas en GF(p).
En [Beuchat et al., 2007] se presenta un survey de arquitecturas propuestas de multiplicadores en GF(pk).
Se distinguen 3 enfoques:
Multiplicadores seriales: Iterativamente, se procesa cada coeficiente del multiplicador A(α), requiriendo
k iteraciones para procesar todos los coeficientes de A(x).
Multiplicadores paralelos: En una sola iteración, todos los coeficientes del multiplicador se consideran
para calcular C ′(α) y a continuación se realiza una reducción módulo F (α).
Multiplicadores por dígitos: Iterativamente, se procesan D coeficientes a la vez del multiplicador A(α).
D es el tamaño del dígito, D > 1.
En implementaciones hardware, los multiplicadores serial-paralelo permiten obtener multiplicadores con
los menores requerimientos de área, aunque a costa una latencia mayor. Los multiplicadores paralelos por el
contrario, son los que más cantidad de recursos de área requieren, pero el desempeño es mucho mayor que los
multiplicadores serial-paralelo. Los multiplicadores por dígitos permiten explorar diseños que comprometan
tanto tiempo de procesamiento como recursos de área requeridos. En este trabajo se explora el diseño de un
multiplicador basado en dígitos ya que éste permite obtener implementaciones más compactas.
En el resto de este documento se asume que A,B,C ∈ GF(pk), con A =k−1∑
i=0
aiαi, B =
k−1∑
i=0
biαi,
C =
k−1∑
i=0
ciαi, y ai, bi, ci ∈ GF(p). A demás, se considera a A como el multiplicando y a B como el
multiplicador. Un multiplicador serial puede procesar cada coeficiente del multiplicador de derecha a izquierda
(MSE, Most Significant Element) o de izquierda a derecha (LSE, Least Significant Element). En la tabla 1
se muestran los algoritmos seriales para multiplicación en GF(pk) bajo ambos enfoques.
De acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad espacial,
pero el algoritmo 2 presenta un camino critico más corto, el equivalente a una suma en GF(pk). Sin embargo,
desde un punto de vista de implementación, en los experimentos reportados en [Beuchat et al., 2007] se
encontró que la versión MSE para multiplicación en GF(2k) usa menos slices cuando el multiplicador se
implementa en un FPGA Spartan 3E, a demás de obtener una mejor eficiencia comparado con el enfoque LSE.
4 3. Multiplicación en el campo GF(2k)
Tabla 1: Multiplicación serial en GF(pk). A la izquierda el Algoritmo 1 ejecutando la versión MSE,a la derecha el Algoritmo 2 ejecutando la versión LSE.
Algoritmo 1. MSE Algoritmo 2. LSEEntrada: A,B ∈ GF(pk), F (α) un
polinomio mónico de grado k
Salida: C = A× B mod F (α)1: C ← 02: for i← 0 to k − 1 do3: C ←
Cα mod F (α) + bm−1−iA
4: end for5: return C
Entrada: A,B ∈ GF(pk), F (α) unpolinomio mónico de grado k
Salida: C = A×B mod F (α)1: C ← 02: for i← 0 to k − 1 do3: C ← biA+ C
4: A← Aα mod F (α)5: end for6: return C
Tomando como referencia este resultado, en este trabajo nos enfocamos a analizar como el algoritmo 1 puede
ser implementado usando menores requerimientos de área que los que se obtienen en [Beuchat et al., 2007].
El algoritmo 1 mostrado en la tabla 1 se puede modificar, procesando iterativamente no solo los
coeficientes del multiplicador sino también los coeficientes del multiplicando. Aunque esto incrementa la
latencia, la complejidad de las operaciones en la instrucción 3 se reduce, ya que la multiplicación se realiza
solo entre los coeficientes ai, bi. A demás, la suma de los polinomios en la instrucción 3 puede realizarse
tambien iterativamente, considerando cada coeficiente del polinomio Cα mod P (α). En la siguiente sección
se propone un cuarto enfoque para implementar multiplicadores en GF(pk), llamado multiplicador digito-
digito.
3 Multiplicación en el campo GF(2k)
El campo finito GF(2k) es isomorfo al campo GF(2)[x]/F (x), donde F (x) = xk +k−1∑
i=0
fixi, es un
polinomio irreducible mónico sobre GF(2) de grado k. Sea α una raíz de F (x). Cada elemento GF(2k)
puede ser visto como un polinomio A(α) expresado en base polinomial como A(α) =k−1∑
i=0
aiαi, ai ∈ GF(2).
Dado que F (α) = 0, se obtiene la ecuación 2. En [Bertoni et al., 2003], Bertoni et al. introdujeron la
notación A mod F (α) para indicar que una reducción módulo F (α) se realiza de acuerdo con la ecuación
2, para todo αt, t > k − 1. A partir de aquí, se dará por sentado que A,B,C ∈GF(2k), con A =k−1∑
i=0
aiαi,
Multiplicación en campos binarios GF(2k) 5
B =
k−1∑
i=0
biαi , C =
k−1∑
i=0
ciαi, con ai, bi, ci ∈ GF(2), y C = a × B mod F (α). Se sigue la convención de
que A es el multiplicando y B multiplicador.
Cada elemento en GF(2k) también se puede expresar como una suma de w = ⌈k/D⌉ polinomios, cada
uno con D coeficientes en GF(2) representando un polinomio de grado (D−1). Siendo B(x) ∈ GF(2k), este
se puede expresar como B =
k−1∑
i=0
biαi =
w−1∑
i=0
biαiD, bi =
D−1∑
j=0
biD+jαj . Utilizando esta notación podemos
expresar A×B mod F (α) como en la ecuación 5.
A×B mod F (α) =A×
w−1∑
i=0
BiαiD
=AB0 mod f(α)
+ αDAB1 mod f(α)
+ α2DAB2 mod f(α)
+ · · ·
+ α(w−1)DABw−1 mod f(α)
(5)
Cada término (producto parcial) de la forma Pi(x) = ABi es un polinomio de grado (D + k − 2) que
necesariamente debe reducirse modulo F (α). Si A× B mod F (α) se expresa como una suma acumulativa
procesando los polinomios bi de B(x) de izquierda a derecha (MSE), el cómputo parcial de A×B mod F (α)
en la iteración i ( 0 ≤ i ≤ (w − 1)) queda determinado por la recurrencia en la ecuación 6.
C0 =0
Ci+1 =αD(Ci mod F (α)) + Pw−1−i(x)(6)
El polinomio αD(Ci mod F (α)) es a lo sumo de grado (D+k−1), mientras que Pi es de grado (D+k−2).
Por lo tanto, después de w iteraciones, el valor final Cw es un polinomio de grado a lo más (D + k − 1)
que necesita reducción modular. Esto se puede lograr realizando una iteración adicional insertando el dígito
B−1 = 0. Al hacer esto, el polinomio P−1 es 0 dando como resultado Cw = αD(Cw−1 mod F (α)) como
resultado. El resultado final es de Cw/αD, que pueden ser fácilmente calculado descartando los primeros D
coeficientes de Cw.
Teniendo en cuenta que el grado de polinomio Ci en la ecuación 6 es a lo más (D+K−1), la operación
6 3. Multiplicación en el campo GF(2k)
(Ci mod F (α) se puede realizar de la siguiente manera. Cuando F (x) es un trinomio o pentanomial,
αk =k−1∑
i=0
fiαi = g(α), siendo g(α) un polinomio de grado g con g < k. Entonces, cada término en
Ci multiplicado por αk+t, t ≤ k − 1 − g, se puede reducir en un solo paso utilizando la equivalencia
αk+t mod F (α) = g(α)αt, lo que representa una simple operación de corrimiento a la izquierda. Por lo
tanto, la operación Ci mod F (α) en la ecuación 6 se puede definir como en la ecuación 7.
+Ru-1(u-1)d+D
+R1d+D
D k=u*d
a)
dD
...
pLpH
rLrH
C{i+1j}
P00
+R0D
...
+P1d
+Pu-1(u-1)d
D d
pLpHP00
+R0D
rH
pLpH+P00
+R0D
rLrH
rL
+Ru-1(u-1)d+D
+Pu-1(u-1)d pLpH
rLrH
......
C{i+1,j}
b)
D k=u*d
rLrH
rLrH
rLrH
rLrH
Figura 1: Disposición de los productos parciales en el cómputo por dígitos de una multiplicación enel campo binario GF(2k). a) Caso D ≤ d . b) Caso D > d.
Multiplicación en campos binarios GF(2k) 7
Ci mod f(α) =
k−1∑
i=0
ciαi +
(
k+D−1∑
i=k
ciαi
)
mod F (α)
=k−1∑
i=0
ciαi +
(
D−1∑
i=0
ck+iαig(x)
)
mod F (α)
=Ck(x) + CD(x)× g(x)
(7)
En la última expresión de la ecuación 7, Ci se divide en dos polinomios: Ck(x) de grado k − 1 que
comprende los k coeficientes menos significativos de Ci y CD(x), un polinomio de grado D−1 que comprende
los restantes D coeficientes más significativos. Debe tenerse en cuenta que CD(x) × g(x) no requerirá
reducción modular si D + g < k. Sustituyendo la ecuación 7 en la ecuación 6 se obtiene la ecuación 8.
Ci+1 =αD(Ck(x) + CD(x)× g(x)) + Pi(x) (8)
En la siguiente sección se describe cómo la ecuación 8 se puede calcular de forma iterativa, llevando a
la definición del algoritmo de multiplicación en GF(2k) mediante el enfoque dígito-dígito propuesto en este
trabajo.
4 Enfoque dígito-dígito para multiplicación en GF(2k)
Nuestro objetivo ahora es calcular la ecuación 8 de forma iterativa, procesando dígitos de tamaño
D de Ck(x), CD(x) × g(x)) y de Pi(x). Teniendo en cuenta que tanto CD(x) como bi(x) son valores
fijos de D bits durante el cálculo de Ci+1, los polinomios Ck(x), g(x)) y A(x) se dividen en u = ⌈k/d⌉
dígitos. Como consecuencia de ello,αD(Ck(x) + CD(x)× g(x)) =u−1∑
j=0
Ci,jαjd+D+ CD(x)×
u−1∑
j=0
Gjαjd+D
=u−1∑
j=0
(Ci,j + CD ×Gj)αjd+D =
u−1∑
j=0
Rjαjd+D.
En la última expresión, Ci,j y Gj (0 ≤ j < u ) denota cada dígito de tamaño d de Ck(x) y g(x)
respectivamente. De la misma manera, mediante la partición de A(x) en U dígitos, tenemos Pi(x) =
A(x)×Bi(x) =u−1∑
j=0
Ajαjd×Bi(x) =
u−1∑
j=0
(Aj ×Bi)αjd =
u−1∑
j=0
Pjαjd. De este modo, llegamos finalmente a
la expresión que permite calcular la ecuación 8 en U iteraciones como Ci+1 =u−1∑
j=0
[Rjαjd+D + Pjα
jd]. Rj y
8 4. Enfoque dígito-dígito para multiplicación en GF(2k)
Pj son polinomios de grado a lo sumo D+d−2. En cada iteración j, el dígito Ci,j se usa para computar Rj
. Además, al final de cada iteración j un nuevo dígito para el resultado Ci+1 se calcula , a esto lo llamamos
valor Ci+1,j . La figura 1 muestra la disposición de los productos parciales Rj y Pj en el cálculo de Ci+1 .
Los productos parciales se representan como Rj ≡ (rH << d+rL) y Pj ≡ (pH << d+pL) , donde rH , pH
son valores de D mientras que rL, pL son los valores de d bits. El operador << indica un corrimiento a la
izquierda. La figura 1a) muestra cómo se suman los productos parciales cuando D ≤ d mientras que la figura
figura 1b) muestra el caso cuando D > d. En cada iteración j, Ci+1,j = sL, donde S = Pj + rL << D y
S = sH << d+ sL. rH << D + sH se utiliza como valor de acarreo y se suma a Rj+1αD + Pj+1 en la
siguiente iteración j + 1.
En la iteración j = u− 1, los últimos dígitos de A(x), Ck(x) y g(x) son procesados y el dígito Ci+1,u−1
es el último que se calcula obteniendo Ci+1 con un tamaño de k-bits, es decir Ci+1 se convierte en Ck(x)
y se usa en la siguiente iteración i+ 2, y CD(x) es el valor actual en el registro sH (véase figura 1).
Tomando todas estas consideraciones, se propone una arquitectura hardware para un multiplicador en
campos binarios GF(2k) mediante un enfoque de procesamiento por dígitos, el cual se muestra en la figura
2.
Se requieren dos multiplicadores de (D × d)-bits para calcular los productos parciales CD(x) × Gj y
bi × Aj . Cada producto parcial se calcula utilizando el método tradicional (escolar) Corrimiento y suma
. Recordemos que el valor rH << D + sH se utiliza como el acarreo para realizar adecuadamente las
sumas acumulativas de los productos parciales (véase la figura 1). En la figura 2, rH y sH se suman
acumulativamente al calcular Rj y Pj respectivamente. El módulo llamado D-shift en la figura 2 representa
una multiplicación del valor de entrada por αD, ya que se requiere en la ecuación 8 y se muestra en la
figura 1. Esta operación es sólo una operación de desplazamiento que no tiene un costo significativo de
recursos hardware. El registro de corrimiento C en la figura 2 se utiliza para almacenar tanto Ci = Ck(x)
como Ci+1. En cada iteración, el dígito Ci,j se obtiene de los d bits menos significativos de C y se utiliza
para calcular Rj . En la próxima subida del reloj, el dígito Ci+1,j ya está calculado y se utiliza como valor de
relleno del registro de corrimiento C. En la iteración j = u− 1, C recibe el último dígito de Ck(x). En esta
iteración el valor de CD(x) también se calcula y se almacena en el registro S. Dado que k puede no ser un
múltiplo de u, un circuito de corrección se usa para entregar el valor correcto de CD(x), tomando algunos
bits más significativos de sL y algunos bits menos significativos de sH. CD(x) se almacena en el registro
Multiplicación en campos binarios GF(2k) 9
Bi Ajd
CD Gj
C >> d
K
A*B mod F
r0
d
D
XOR1
d
MUL
D x d
D
D+d
D
MUL
D x d
D+d
sH
D
XOR2
D-shifD+d
rH
D+d
D(MSB)d(LSB)
D+d
d d
C{i,j}C{i+1,j}
A kF
B << D
B k
A >> dF >> d
D
k
Figura 2: Hardware architecture for the proposed digit-digit GF(2k) multiplier.
llamado n0 y se utiliza para calcular los productos parciales Rj en la siguiente iteración i+ 2. Como se indicó
con anterioridad, una iteración adicional B−1 = 0 se requiere con el fin de calcular αD(C(x) mod F (α))+0.
En nuestro enfoque iterativo, esto podría implementarse fácilmente ya que simplemente se necesita evitar
la multiplicación por αD para cada producto parcial Rj en la iteración i = w. Esto se puede implementar
utilizando un multiplexor: durante las iteraciones i = 0, 1...w − 1, rL << D se utiliza como entrada al
módulo XOR2 en la figura 2; para la última iteración i = w, el valor seleccionado en el multiplexor es rL. La
latencia del multiplicador propuesto para GF(2k) que se muestra en la figura 2 es (⌈k/D⌉+ 1)× (⌈k/d⌉).
5 Resultados de implementación
La arquitectura de hardware se muestra en la figura 2 se modeló en VHDL e implementó en un FPGA
Spartan3 utilizando las herramientas de Xilinx ISE versión 14.2. Se desarrolló un generador de código
10 5. Resultados de implementación
0
100
200
300
400
500
600
700
800
2 4 8 16 32
d=8
d=16
d=32
d=64
0
1
2
3
4
5
6
2 4 8 16 32
d=8
d=16
d=32
d=64
1
1,5
2
2,5
3
3,5
4
2 4 8 16 32
d=8
d=16
d=32
d=64
digit D
(a)
Are
a(S
lice
s)
digit D
Tim
e(u
secs
)E
ffic
ien
cy(M
bp
s/S
lice
)
digit D
(c)
(b)
Figura 3: Resultados de implementación del multiplicador propuesto en FPGA para el campo finitoGF(2163). a) Slices usados. b) Tiempo de ejecución. c) Eficiencia.
VHDL para producir diferentes configuraciones de multiplicadores para los campos finitos GF(2163) =
GF(2)[x]/(x163 + x7 + x6 + x3 + 1) y GF(2233) = GF(2)[x]/(x233 + x74 + 1).
Multiplicación en campos binarios GF(2k) 11
Se realizaron dos experimentos. En el primero, se estudia el compromiso área-desempeño del multiplicador
considerando distintas combinaciones de los dígitos {D, d}. En el segundo experimento, se consideran
valores para {D, d} que permitan obtener implementaciones compactas, con menores recursos de área en
comparación con un multiplicador serial.
5.1 Experimento 1: Análisis de compromisos área-desempeño del
multiplicador GF(2k) propuesto
Para ele experimento 1, consideramos los dígitos D = [2,4,8,16,32,64], que se utilizan normalmente en
los multiplicadores dígito-serial. Para d consideramos dos conjuntos: [8,16,32,64] para evaluar el multiplicador
dígito-dígito en el campo GF(2163) y [59,78,117] para GF(2233). Mientras que el primer conjunto de
valores para d permite evaluar compromisos del multiplicador en términos de área/desempeño, el segundo
conjunto demuestra la ventaja del enfoque dígito-dígito usando dígitos específicos y a la medida, dividiendo el
multiplicando A ∈GF(2233) en dos, tres y cuatro dígitos. Para los campos finitos seleccionados , la condición
D + g < k mantiene de manera que se cumplan las suposiciones para reducción modular establecidos en la
sección 3. La figura 3 muestra los resultados de implementación para el campo GF(2163). Aprovechando
los bloques de memoria que vienen integrados en el FPGA XC3S1500, los requerimientos de memoria para
A, B, F y C en la figura 2 se mapean a bloques BRam lo que permite reducir el uso de lógica estándar en
el dispositivo.
En la figura 3a) muestran los slices del FPGA consumidos por nuestro multiplicador propuesto para el
campo finito GF(2163) utilizando diferentes combinaciones de los dígitos d y D . El incremento en área se
debe principalmente a la creciente complejidad en los dos multiplicadores (D × d)-bits, que determinan la
complejidad en área del multiplicador de campo completo. En la medida que los dígitos se hacen más grandes,
la latencia se reduce y el tiempo mejora como se muestra en la figura 3b). A partir de estos resultados se
puede ver que, por ejemplo, una configuración del multiplicador usando los dígitos d = 64 y D = 2 permite
calcular una multiplicación campo casi en el mismo tiempo que un multiplicador con una configuración
d = 32 y D = 4 . Sin embargo, estas dos configuraciones exhibe diferente uso de área, siendo la última
configuración más compacta. Esta linealidad en el tiempo para el ejemplo anterior no se mantiene para todos
los casos, por ejemplo, un mejor tiempo de ejecución se puede lograr con el uso de un multiplicador d = 16
y D = 8, pero que requiere más uso de área. Un indicador que permite evaluar un diseño de hardware
12 5. Resultados de implementación
0
200
400
600
800
1000
1200
1400
1600
1800
2000
2200
2400
2600
2800
3000
4 8 16 32 64
d=59
d=78
d=117
1
1,2
1,4
1,6
1,8
2
2,2
2,4
2,6
2,8
3
2 4 8 16 32 64
d=117
d=78
d=59
digit D
digit D
Eff
icie
ncy
(Mb
ps/
Sli
ce)
Are
a(S
lice
s)
(a)
(b)
Figura 4: Resultados de implementación del multiplicador dígito-dígito para el campo GF(2233). a)Slices ocupados. b) Eficiencia.
teniendo en cuenta tanto el consumo de recursos como el desempeño es la eficiencia, que se calcula como
el desempeño alcanzado por el circuito (en mega bits por segundo, Mbps) multiplicado por el área utilizada
por le mismo (en este caso, expresado como slices del FPGA). La figura 3c) muestra la eficiencia para el
multiplicador GF(2163). Para este campo finito, las arquitecturas más eficientes se obtienen cuando d = 32
o d = 64, utilizando D = 8 o D = 16, obteniendo alrededor de 4Mbps por slice.
Los resultados presentados en la figura 4 son para el multiplicador en el campo GF(2233). Los diseño más
pequeños se consiguen utilizando pequeños dígitos D = {2, 4, 8} como se puede observar en la figura 4a). Sin
embargo, de acuerdo con la figura 4b), los diseños más eficientes se consiguen usando D = 8, alcanzando
alrededor de 2,6 Mbps por slice.
Multiplicación en campos binarios GF(2k) 13
Tabla 2: Trabajos relacionados sobre multiplicadores en GF(2k).
Ref. k Plataforma Recursos Mbps Efi-FPGA ciencia
[Beuchat et al., 2007] 233 FPGA 3458 4017.2 1.2D = 64 xc3s1500 slicesd = 233
[Kumar, 2006] 163 FPGA 99 212.85 2.15D = 1 xc3s1500 slicesd = 163
[Morales-Sandoval et al., 2009] 233 FPGA 766 828.80 1.08D = 2 xc2v6000 slicesd = 233
[López and Dahab, 2000] 163 UltraSparc - 64.68 -450 MHz
[López and Dahab, 2000] 163 Pentium II - 54.88 -400 MHz
[López and Dahab, 2000] 163 Pentium - 15.98 -233 MHz
This 163 FPGA 64 227.7 3.55D = 8 xc3s1500 slicesd = 16 4 BRams
This 233 FPGA 3033 5273.74 1.73D = 64 xc3s1500 slicesd = 117 4 BRams
This 233 FPGA 406 1059.47 2.60D = 64 xc3s1500 slicesd = 8 4 BRams
5.1.1. Comparación con multiplicadores GF(2k) previamente reportados
Aunque en la literatura se han propuesto varios multiplicadores en el campo GF(2k) basados en FPGAs,
el enfoque dígito-dígito no se había estudiado previamente. A demás, una comparación con estos trabajos
relacionados sería injusto, debido a las diferentes tecnologías, plataformas y herramientas de software
utilizadas. En la tabla 2 se presenta una comparación sólo como referencia con el fin de resaltar las ventajas de
nuestra propuesta de diseño. En esta tabla, consideramos trabajos representativos, por ejemplo, los resultados
reportados en [Beuchat et al., 2007] superan a otras obras en la literatura como [Kumar et al., 2006]. Usando
el mismo dígito D = 64 para el multiplicador como [Beuchat et al., 2007] pero teniendo en cuenta una
partición de A en dígitos de tamaño d = 117, nuestro diseño obtiene alrededor del 30 % mejor rendimiento
que el multiplicador reportado en [Beuchat et al., 2007] con 12 % de lógica estándar menor. En la misma
14 5. Resultados de implementación
tabla se muestra que nuestro multiplicador puede ahorrar considerables recursos FPGA manteniendo aún un
alto rendimiento, por ejemplo, usando una configuración D = 64 y d = 8. En [Kumar, 2006] se proponen
implementaciones a la medida de multiplicadores seriales en el campo GF(2163) definido por trinomios.
Las mismas arquitecturas propuestas en [Kumar, 2006] se sintetizaron para el FPGA XC3S1500 utilizado
en nuestro trabajo. Este multiplicador serial en realidad se puede denotar como D = 1, d = 163. Una
configuración D = 8, d = 16 permite alcanzar y mejorar el rendimiento de los multiplicadores reportados
en [Kumar, 2006] pero utilizando sólo 64 slices, es decir, 35 % menos recursos de área y obteniendo una
mejor eficiencia.
El multiplicador GF(2k) dígito-serial reportado en [Morales-Sandoval et al., 2009], el cual fue
implementado en un FPGA XC2V6000 utiliza casi la misma área que nuestro multiplicador con la
configuración D = 8, d = 117. Sin embargo, el rendimiento de nuestro multiplicador es 1.27 veces mejor.
Dado que nuestro multiplicador propuesto calcula una multiplicación de campo de una manera similar que
en un enfoque de software, en la tabla 2 se muestra una comparación contra la implementación software
reportada en [López and Dahab, 2000], donde la multiplicación en GF(2163) se evaluó a partir de software
optimizado implementado en procesadores de propósito general, con características muy similares a los
procesadores que se utilizan en aplicaciones embebidas y móviles. Para todas las plataformas utilizadas
en [López and Dahab, 2000], nuestro multiplicador puede lograr un mejor rendimiento, por ejemplo, con
un multiplicador usando d = 16, D = 8 logramos tres veces mejor rendimiento que el multiplicador
en [López and Dahab, 2000] usando solamente 64 slices.
Es importante destacar que la complejidad en área del multiplicador propuesto en este trabajo se basa
principalmente en los tamaños de dígitos utilizados, por lo que la utilización de área prácticamente se mantiene
igual independientemente del orden del campo finito usado. Esta característica en la arquitectura propuesta es
atractiva para la implementación de aplicaciones criptográficas con mayor seguridad por ejemplo, utilizando
los campos finitos recomendados por NIST GF(2409) or GF(2571).
5.2 Experimento 2: Multiplicadores GF(2k) compactos
Para el segundo experimento cambiamos los conjuntos de valores para los dígitos del multiplicador
propuesto. Probamos nuestro multiplicador para los dígitos {d,D} ∈ [2,4,6,8,10,12,14,16] (64
configuraciones diferentes para cada campo finito). De igual forma que en el experimento 1, tomando
Multiplicación en campos binarios GF(2k) 15
ventaja de los bloques de memoria integrados en el FPGA seleccionado, mapeando los requerimientos de
memoria de las variables A, B, F y C en la figura 2 a bloques BRam, reduciendo el uso de lógica estándar.
Todos los diseños se llevaron a cabo en el dispositivo FPGA utilizando el criterio de optimización por área.
Debido a que el datapath mostrado en la figura 2 depende principalmente en los tamaños de dígitos
utilizados, los resultados de implementación para ambos campos GF(2163) and GF(2233) son muy parecidas,
con un mínimo variación de uno a tres LUTs en la lógica de la unidad de control y el circuito de corrección
(módulo de CC en la figura 2). Con el fin de evitar la redundancia de resultados, sólo mostramos los
resultados de área para GF(2163) en la figura 5, expresada en términos de LUTs y flip- flops.
0
10
20
30
40
50
60
70
2 4 6 8 10 12 14 16
d=2
d=4
d=6
d=8
d=10
d=12
d=14
d=16
0102030405060708090100110120130140150160170180190200210220230240250
2 4 6 8 10 12 14 16
d=2
d=4
d=6
d=8
d=10
d=12
d=14
d=16
Area(FlipFlops)
digit D
(a)
digit D
(b)
Area(LUTs)
Figura 5: Resultados de implementación del multiplicador dígito-dígito compacto en el campo binarioGF(2163). a) Flip-flops utilizados. b) LUTs utilizadas.
Los recursos de memoria usados es bajos, por debajo de 60 flip-flops, debido al uso de BRams para
almacenar los operandos A,B, F . Los recursos de memoria que se utilizan en el datapath se incrementan
linealmente conforme al tamaño del dígito D y mantienen muy similares para D ≥ 12 independientemente
16 5. Resultados de implementación
del valor usado para d. Para el caso de las LUTs utilizadas, el crecimiento es lineal respecto al incremento
tanto de D y d, estando en el rango de 10 a 230 LUTs. Fijando un número específico de LUT, por ejemplo
100, se observa en la figura 5 b) que varias combinaciones de dígitos {D, d} permiten cumplir con este
requerimiento de área. Por ejemplo, usando las combinaciones de {8, 14} o {12, 8} llevan a un datapath que
ocupa 100 LUTs.
Aunque un multiplicador dígito-dígito GF(2163) tiene casi la misma área que un multiplicador GF(2233),
la latencia es difierente y por tanto también lo es el rendimiento (expresado en mega bits por segundo, Mbps)
y la eficiencia (Mbps/LUT).
La figura 6 muestra los resultados de desempeño y eficiencia de los multiplicadores propuestos para los
campos GF(2163) y GF(2233).
0
100
200
300
400
500
600
2 4 6 8 10 12 14 16
d=2
d=4
d=6
d=8
d=10
d=12
d=14
d=16
0
1
2
3
4
5
6
2 4 6 8 10 12 14 16
d=2
d=4
d=6
d=8
d=10
d=12
d=14
d=160
100
200
300
400
500
600
700
2 4 6 8 10 12 14 16
d=2
d=4
d=6
d=8
d=10
d=12
d=14
d=16
Throughput(M
pps)
digit D
Efficiency(M
bps/LU
Ts)
digit D(a) (b)
0
0,5
1
1,5
2
2,5
3
3,5
4
2 4 6 8 10 12 14 16
d=2
d=4
d=6
d=8
d=10
d=12
d=14
d=16
Throughput(M
pps)
digit D
Efficiency(M
pps/LU
Ts)
digit D
(c) (d)
Figura 6: Rendimiento y la eficiencia del multiplicador compacto dígito-dígito en GF(2k). a)Rendimiento y b) eficiencia del multiplicador GF(2163). c) Rendimiento y d) eficiencia delmultiplicador GF(2233).
El rendimiento del multiplicador GF(2163) mostrado en la figura 6 a) indica que es posible obtener
alrededor de 600Mbps utilizando el tamaño máximo de dígito. Sin embargo, este rendimiento se reduce para
el multiplicador en el campo GF(2233) como se muestra en la figura 6 c), siendo más el decremento en
la medida que el dígito D se hace más grande. Para ambos campos finitos el comportamiento es similar,
un mayor rendimiento se alcanza en la medida que los dígitos d,D se hacen más grandes. Sin embargo, la
Multiplicación en campos binarios GF(2k) 17
eficiencia no sigue la misma tendencia. A excepción de los casos d = 2, se consigue una mejor eficiencia
para pequeños valores de D pero para valores de d más grandes. La mayoría de las curvas en las figuras 6
b) y d) muestran que la eficiencia se mantiene parecida cuando D ≥ 8. Así, a pesar de que un valor grande
de dígito D podría conducir a un mejor rendimiento, el costo correspondiente en el consumo de área podría
no estar justificada, ya que los Mbps alcanzados por slice sería casi el mismo.
Los resultados en las figuras 5 y 6 permiten establecer compromisos de área/rendimiento, mediante la
selección de las configuraciones que permiten una implementación compacta y al mismo tiempo muestran
un rendimiento y eficiencia aceptable. Por ejemplo, a pesar de que las configuraciones {8, 14} y {12, 8}
producen un multiplicador GF(2163) con la misma cantidad de área (100 LUT), la configuración {8, 14}
permite alcanzar un rendimiento de 343Mbps en contra de los 291Mpps alcanzados por la configuración
{12, 8}. Como consecuencia, la eficiencia del multiplicador GF(2163) usando la configuración {8, 14} es
15 % mejor.
5.2.1. Comparación conlos multiplicadores GF(2k) más compactos previamente reportados
Como nuestro objetivo es encontrar las mejores configuraciones {D, d} del multiplicador GF(2k)
que permiten obtener las implementaciones más compactas comparados a una implementación de un
multiplicador serial, se implementaron tres versiones diferentes de un multiplicador serial. El primero es
una versión optimizada reportada en [Kumar, 2006], la cual es para campos finitos GF(2k) definidos por
trinomios y pentanomials. El segundo es un multiplicador MSB (bit más significativo primero) reportado
en [Kitsos et al., 2003]. También usamos el multiplicador LSB en campos binarios definidos por polinomios
irreducibles generales reportada en [Beuchat et al., 2007]. Estos tres tipos de multiplicadores seriales son
trabajos representativos en el estado del arte. Dado que nuestro multiplicador propuesto también está
pensado para los polinomios irreducibles generales, nuestro trabajo se compara directamente con los diseños
en [Kitsos et al., 2003] y [Beuchat et al., 2007]. Sin embargo, una comparación contra estos trabajos no es
justa ya que la tecnología utilizada es muy diferente. Por ejemplo, el FPGA utilizado en [Kitsos et al., 2003]
fue un Virtex XCV1000E-FG1156-8, y la utilizada en [Beuchat et al., 2007] fue un Spartan-3 XC3S1500. El
multiplicador reportado en [Kumar, 2006] era en la tecnología CMOS.
Con el fin de proporcionar una comparación lo más justa y con resultados actualizados con FPGAs del
estado del arte, hemos implementado los tres multiplicadores seriales utilizando las mismas condiciones
18 5. Resultados de implementación
Tabla 3: Una comparación de referencia del multiplicador dígito-dígito GF(2k) compacto versusmultiplicadores seriales GF(2k) implementados en el FPGA xc6vlx240t-2-ff1156
.
Ref. k Flip-Flops LUTs Throuhput Eficiencia
[Kitsos et al., 2003] 163 172 173 668 Mbps 3.86
[Kumar, 2006] 163 172 94 698 Mbps 7,43
[Beuchat et al., 2007] 163 336 258 665 Mbps 2.58
This 163 13 55 224.6 Mbps 4.08D = 4d = 14
This 163 25 88 292.5 Mbps 3.36D = 8d = 12
[Kitsos et al., 2003] 233 242 243 668 Mbps 2.75
[Kumar, 2006] 233 242 128 692 Mbps 5.41
[Beuchat et al., 2007] 233 476 363 665 Mbps 1.83
This 233 42 70 158.5 Mbps 2.13D = 10d = 6
This 233 19 85 234.6 Mbps 2.7D = 6d = 14
que se utilizan para implementar el multiplicador dígito-dígito en GF(2k) propuesto en este trabajo.
Las arquitecturas hardware de los multiplicadores seriales reportados en [Kitsos et al., 2003, Kumar, 2006,
Beuchat et al., 2007] se muestra en la figura 7, y se modelaron en VHDL e implementaron en el FPGA
xc6vlx240t2-ff1156 Virtex6 utilizando la versión 14.2 de las herramientas de síntesis de Xilinx. Todos los
diseños se implementaron utilizando el criterio de optimización área. Aunque el multiplicador serial propuesto
en [Kumar, 2006] es para GF(2163), el diseño puede ser fácilmente extendido a otros campos finitos, ya
que el único cambio es en el número y posición de los XORs utilizados para la reducción modular, que
depende de los coeficientes distintos de cero del polinomio irreducible que define el campo finito (un XOR
de un trinomio y tres XORs para un pentanomio). En nuestro caso, extendemos ese diseño para el campo
GF(2233). Los resultados de la implementación de los tres multiplicadores y las comparaciones contra las
mejores combinaciones de nuestro multiplicador dígito-dígito se muestran en la tabla 3.
De acuerdo a la tabla 3, los recursos de memoria y LUTs en los tres multiplicadores seriales tienden a
aumentar linealmente a medida que el orden del campo finito crece. En comparación con el multiplicador LSB
reportado en [Beuchat et al., 2007], nuestro multiplicador logra una mejor eficiencia de 5 a 3 Mbps/LUT,
Multiplicación en campos binarios GF(2k) 19
A
C =A.B mod F(x)
c0c1c2c3c6c7c161c162
bi
163
163
a162 a161 a7 a3a6 a2 a1 a0
c162 c161 c7 c3c6 c2 c1 c0
p(x)
Mod f(x)
x PPG
a i
q(x)
0 1
t(x)
p(x)
b(x)
Figura 7: Multiplicadores seriales en el campo GF(2k) más representativos. En la parte superior, elmultiplicador MSB para campos binarios definidos por polinomios irreducibles generales reportadoen [Kitsos et al., 2003]. Al centro, el multiplicador optimizado para campos binarios definidos portrinomios reportado en [Kumar, 2006]. En la parte baja, el multiplicador LSB para campos binariosdefinidos por polinomios irreducibles generales reportado en [Beuchat et al., 2007].
20 5. Resultados de implementación
usando los dígitos d = 12 o d = 14 . Usando los dígitos D = 12 o D = 14, el ahorro en LUT es de alrededor
de 35 a 50 %, con una penalización en el rendimiento, descendiendo a 291 - 336Mbps, esto es 43-53 % menos.
Sin embargo , este rendimiento puede ser tolerado en aplicaciones en las que el consumo de área es más
importante que el rendimiento. En el caso del multiplicador GF(2233), un alto rendimiento de 100 - 500Mbps
se puede lograr utilizando los dígitos D ∈ {8, 10, 12, 14, 16}, con una eficiencia de 2-2.5Mbps/LUT.
0
20
40
60
80
100
120
140
1 2 4 6 8 10 12 14 16
d=2
d=4
d=6
d=8
d=10
d=12
d=14
d=16
0
0,5
1
1,5
2
2,5
3
3,5
4
2 4 6 8 10 12 14 16
d=2
d=4
d=6
d=8
d=10
d=12
d=14
d=16
0
50
100
150
200
250
300
350
2 4 6 8 10 12 14 16
d=2
d=4
d=6
d=8
d=10
d=12
d=14
d=16
Area(Slices)
digit D
(a)
digit D
(b) (c)
digit D
Throughput(M
bps)
Efficiency(M
bps/Slice)
Bit serial
Bit serial Bit serial
Figura 8: Comparación del multiplicador dígito-dígito GF(2163) propuesto contra el multiplicadorserial reportado en [Kumar, 2006].
En la figura 8 se muestra que el multiplicador serial reportado en [Kumar, 2006] ocupa 99 slices. Se
puede observar en dicha figura las diferentes configuraciones para los dígitos D, d que permiten lograr
implementaciones más compactas que el multiplicador serial. Las siguientes configuraciones para los dígitos
del multiplicador propuesto podrían conducir a igual o similar de uso de área que el multiplicador serial, por
ejemplo, las configuraciones (D = 4, d = 16), (D = 10, d = 6) y (D = 16, d = 4) producen multiplicadores
que requieren alrededor de 40 slices, menos de la mitad de la implementación del multiplicador serial. La
selección de la mejor par dígitos depende de la eficiencia y el rendimiento que se puede lograr utilizando esa
configuración. A medida que los dígitos aumentan, mejor rendimiento se consigue, así como se requiere más
Multiplicación en campos binarios GF(2k) 21
0
20
40
60
80
100
120
140
1 2 4 6 8 10 12 14 16
d=2
d=4
d=6
d=8
d=10
d=12
d=14
d=16
0
0,5
1
1,5
2
2,5
2 4 6 8 10 12 14 16
d=2
d=4
d=6
d=8
d=10
d=12
d=14
d=16
0
50
100
150
200
250
2 4 6 8 10 12 14 16
d=2
d=4
d=6
d=8
d=10
d=12
d=14
d=16
Area(Slices)
digit D
(a)
digit D
(b) (c)
digit D
Throughput(M
bps)
Efficiency(M
bps/Slice)
Bit serial
Bit serial Bit serial
Figura 9: Comparación del multiplicador dígito-dígito GF(2233) propuesto contra el multiplicadorserial reportado en [Kumar, 2006].
área. De la figura 8 b), se puede observar que un rendimiento similar puede obtenerse utilizando diferentes
configuraciones, por ejemplo las configuraciones (D = 4, d = 16), (D = 8, d = 10) y (D = 12, d = 6) logran
un rendimiento alrededor de los 100Mbps. El rendimiento del multiplicador serial es de 213.66Mbps, que
está claramente superado por el multiplicador dígitos-dígito usando (D = 8, d = 16), cuyo rendimiento es
227.74Mbps. Como se muestra en la figura 8 c), la configuración (D = 8, d = 16) produce el multiplicador
más eficiente, logrando alrededor de 3.5 Mbps por slice. Este diseño utiliza sólo 64 slices, es decir 35 %
menos lógica estándar en comparación con el multiplicador serial.
Para el caso de GF(2233), la reducción de área en comparación con el multiplicador serial es notorio, que
para el caso de los diseños más compactos se obtiene una reducción de 7:1. Puesto que el uso de un campo
con orden mayor implica una mayor latencia, se requieren dígitos más grandes para lograr un rendimiento
comparable al multiplicador serial. Por ejemplo, la configuración (D = 16, D = 16) supera ligeramente el
rendimiento de 213 Mbps del multiplicador serial, 14 % menos lógica estándar del FPGA. En la figura 9
c), el multiplicador con la mejor eficiencia se consigue usando la configuración (D = 6, d = 12), logrando
alrededor de 2Mbps por slice, la cual es mejor que el multiplicador serial pero usando solamente 40 slices,
22 5. Resultados de implementación
Tabla 4: Una comparación de referencia del multiplicador propuesto en GF(2k) versusimplementaciones en software.
Ref. k Plataforma Tiempo Throuhput
[López and Dahab, 2000] 163 UltraSparc 2.52 msecs. 0.064 Mbps450 MHz
[López and Dahab, 2000] 163 Pentium II 2.97 msecs. 0.054 Mbps400 MHz
[López and Dahab, 2000] 163 Pentium 10.20 msecs. 0.016 Mbps233 MHz
This 233 ARM 0.59 msecs. 0.39Mbps600 MHz
This 163 FPGA 0.715 µsecs. 227.7 MbpsD = 8 xc3s1500d = 16
This 233 FPGA 2.86 µsecs. 81.4 MbpsD = 6 xc3s1500d = 12
es decir el 70 % menos lógica estándar.
Dado que nuestro multiplicador realiza la multiplicación de campo de una manera similar que en un
enfoque de software, presentamos una comparación de referencia de nuestros resultados de la ejecución
FPGA para los diseños más eficaces contra trabajos relacionados implementados en software. Dado que
nuestra propuesta de multiplicador por dígitos está pensado para la criptografía de peso ligero en los
dispositivos de computación con capacidades de cómputo limitadas (sistemas embebidos), consideramos
plataformas de cómputo utilizadas normalmente en los sistemas móviles y embebidos. En la tabla 4,
nuestro diseño más eficiente para GF(2163) se compara con [López and Dahab, 2000], donde se evalúa el
tiempo de ejecución de un multiplicador usando software optimizado ejecutándose en los microprocesadores
UltraSparc 450MHz, Pentium II 400MHz y Pentium 233MHz. En comparación con los resultados presentados
en [López and Dahab, 2000], nuestro multiplicador basado en FPGA es más rápido entre uno y dos órdenes
de magnitud. También se midió el tiempo de ejecución de una multiplicación en el campo GF(2233) sobre
un dispositivo móvil reciente, sobre un microprocesador ARM a 600MHz en un teléfono inteligente LG. La
implementación de las rutinas para la multiplicación en campo binario se tomó de FlexiProvider1, el cual
es software desarrollado por el Grupo de Investigación en Ciencias de la Computación en la Universidad de
1http://www.flexiprovider.de
Multiplicación en campos binarios GF(2k) 23
Darmstadt en Alemania. En este caso, nuestro multiplicador basado en FPGA para el campo GF(2233) es
825 veces más rápido.
6 Conclusiones
Este trabajo analiza el diseño y los resultados de implementación de un multiplicador en campos binarios
GF(2k) en FPGA. Este es el primer trabajo que estudia los compromisos área/desempeño de este tipo de
multiplicador para campos binarios, descomponiendo el multiplicador, multiplicando y módulo en dígitos y
procesandolos de forma iterativa como en una aplicación de software, pero explotando el paralelismo en
las operaciones y usando dígitos de tamaño personalizado, diferente a los tamaños de palabra usados en
procesadores de propósito general. El multiplicador y el módulo se dividen en dígitos de tamaño d y se
procesan bajo un enfoque LSB. El multiplicando se divide en dígitos de tamaño D y se procesa bajo un
enfoque MSB. La partición de los operandos en dígitos de distinto tamaño permitió el uso de sólo dos
multiplicadores de (D × d)-bits, que dominan la complejidad en área del diseño propuesto. Los resultados
obtenidos muestran que se pueden implementar multiplicadores GF(2k) más compactos que el multiplicador
serial, manteniendo la superioridad de desempeño que las implementaciones en software. A demás, se pueden
reducir los requerimientos de área en comparación a una implementación de un multiplicador dígito-serial.
El diseño con HDL y FPGAs permitió evaluar diferentes configuraciones usando distintos valores de dígitos
y campos finitos, obteniendo multiplicadores muy compacto o con desempeños mejorados. Como trabajo
futuro, se planea utilizar el multiplicador propuesto para implementar esquemas criptográficos de curva
elíptica, para aplicaciones de criptografía ligera en sistemas embebidos.
Bibliografía
[Bajard et al., 2003] Bajard, J. C., Imbert, L., Nègre, C., and Plantard, T. (2003). Efficient multiplication
in GF(pk) for elliptic curve cryptography. In Proceedings of the 16th IEEE Symposium on Computer
Arithmetic (ARITH-16’03), pages 181–, Washington, DC, USA. IEEE Computer Society.
[Bertoni et al., 2003] Bertoni, G., Guajardo, J., Kumar, S., Orlando, G., Paar, C., and Wollinger, T. (2003).
Efficient GF(pm) arithmetic architectures for cryptographic applications. In Proceedings of the 2003 RSA
conference on The cryptographers’ track, CT-RSA’03, pages 158–175, Berlin, Heidelberg. Springer-Verlag.
[Beuchat et al., 2007] Beuchat, J.-L., Miyoshi, T., Oyama, Y., and Okamoto, E. (2007). Multiplication over
Fpm on FPGA: a survey. In Proceedings of the 3rd international conference on Reconfigurable computing:
architectures, tools and applications, ARC’07, pages 214–225, Berlin, Heidelberg. Springer-Verlag.
[Guajardo Merchan, 2004] Guajardo Merchan, J. (2004). Arithmetic Architectures for Finite Fields GF(pm)
with Cryptographic Applications. PhD thesis, Fakultat fur Elektrotechnik und Informationstechnik, Ruhr-
Universitat Bochum.
[Johnson et al., 2001] Johnson, D., Menezes, A., and Vanstone, S. (2001). The elliptic curve digital signature
algorithm (ECDSA). International Journal of Information Security, 1(1):36–63.
[Kitsos et al., 2003] Kitsos, P., Theodoridis, G., and Koufopavlou, O. G. (2003). An efficient reconfigurable
multiplier architecture for galois field gf(2m). Microelectronics Journal, 34(10):975–980.
[Kumar et al., 2006] Kumar, S., Wollinger, T., and Paar, C. (2006). Optimum digit serial GF(2m) multipliers
for curve-based cryptography. IEEE Trans. Comput., 55(10):1306–1311.
[Kumar, 2006] Kumar, S. S. (2006). Elliptic Curve Cryptography for Constrained Devices. PhD thesis,
Ruhr-University Bochum.
[López and Dahab, 2000] López, J. and Dahab, R. (2000). High-speed software multiplication in F2m . In
Roy, B. and Okamoto, E., editors, Progress in Cryptology – INDOCRYPT 2000, volume 1977 of Lecture
Notes in Computer Science, pages 203–212. Springer Berlin Heidelberg.
25
26 BIBLIOGRAFÍA
[Menezes et al., 1996] Menezes, A. J., Vanstone, S. A., and Oorschot, P. C. V. (1996). Handbook of Applied
Cryptography. CRC Press, Inc., Boca Raton, FL, USA, 1st edition.
[Morales-Sandoval et al., 2009] Morales-Sandoval, M., Feregrino-Uribe, C., Cumplido, R., and Algredo-
Badillo, I. (2009). An area/performance trade-off analysis of a GF(2m) multiplier architecture for elliptic
curve cryptography. Computers & Electrical Engineering, 35(1):54–58.
[NIST, 1999] NIST (1999). Recommended elliptic curves for federal government use.
http://csrc.nist.gov/csrc/fedstandards.html.