32
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 su implementación en FPGA para multiplicación en campos finitos GF(2 k ) 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

Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad

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

Page 2: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad
Page 3: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad

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

Page 4: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad
Page 5: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad

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

Page 6: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad
Page 7: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad

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

Page 8: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad

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

Page 9: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad

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.

Page 10: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad

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,

Page 11: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad

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

Page 12: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad

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.

Page 13: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad

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

Page 14: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad

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

Page 15: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad

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

Page 16: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad

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).

Page 17: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad

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

Page 18: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad

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.

Page 19: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad

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

Page 20: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad

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

Page 21: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad

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

Page 22: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad

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

Page 23: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad

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

Page 24: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad

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,

Page 25: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad

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].

Page 26: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad

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

Page 27: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad

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,

Page 28: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad

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

Page 29: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad

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.

Page 30: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad
Page 31: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad

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

Page 32: Arquitecturas hardware compactas y su implementación en ...mmorales/documents/gf2mMultipliers.pdfDe acuerdo a [Guajardo Merchan, 2004] ambos, el algoritmo 1 y 2 tienen la misma complejidad

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.