Está en la página 1de 12

1

UN ENFOQUE PARALELO PARA MEJORAR


LA SEGURIDAD DE DATOS
Juan Emilio Saravia Tasayco
Estudiante de Ciencias de la Computaci on
ResumenHoy en da, la seguridad de la informaci on
tiene mucho inter es en el mundo acad emico, porque se
realizan diversas operaciones en la red como transacciones
de dinero, acceso a informaci on, pago de facturas, etc.
Esta informaci on requiere alg un tipo de mecanismos de
seguridad durante su transmisi on a trav es de la Internet.
Aqu es donde entra en juego el cifrado de criptografa
para transformar un mensaje de tal forma que sea
incomprensible o, al menos, difcil de comprender para
toda persona que no tenga la clave del algoritmo que se
usa para poder descifrarlo. El cifrado es una buena manera
de proteger los datos, pero si la cantidad de datos aumenta
por ejemplo a un 1GB, podra tomar m as de 10 minutos.
Seg un los est andares de hoy, es mucho tiempo y el tiempo
es un recurso importante. El uso de procesamiento en
paralelo mejora la velocidad y reduce el tiempo de cifrado
de datos. En este artculo, se desarrollar a la paralelizaci on
del algortimo AES que fue adoptado como un est andar de
cifrado por el gobierno de los Estados Unidos.
Palabra ClavesCriptografa, Cifrado, MPI, AES.
I. INTRODUCCI

ON
E
L uso de la criptografa para con las
transacciones de datos a trav es de la red
es una t ecnica antigua pero muy potente para la
seguridad de los datos. Muchos algoritmos fueron
desarrollados y utilizados, pero las ventajas y
desventajas de cada uno de los algoritmo varan.
Esto hace que el sistema sea vulnerable con ataques
en un punto del tiempo. Este documento propone
una de tales t ecnicas que utiliza un unico algoritmo
para el cifrado de un archivo en el entorno paralelo.
Las t ecnicas de criptografa usan encriptaci on que
codica el texto plano utilizando algunos algoritmos
que produce un texto que no puede ser interpretada
por los intrusos. Este texto codicado es llamado
como texto cifrado. En el extremo de recepci on,
el texto cifrado se convierte de nuevo para el
texto plano usando el mismo algoritmo. El texto en
formato real se puede conseguir por aquellos que
poseen una clave para el descifrado. Otros, que no
tienen una clave s olo pueden obtener un mensaje
codicado diferente.
La criptografa es el arte o ciencia de cifrar
y descifrar datos utilizando t ecnicas matem aticas
que hagan posible el intercambio de mensajes
de manera que s olo puedan ser ledos por las
personas a quienes van dirigidos. Desde sus inicios
la criptografa lleg o a ser una herramienta muy
usada en el ambiente militar, por ejemplo en la
segunda guerra tuvo un papel determinante, una de
las m aquinas de cifrado que tuvo gran popularidad
se llam o ENIGMA.
La criptografa involucra dos procesos :
Cifrado(Encriptado): Transformar el texto
original en un texto cifrado, no legible.
Descifrado(Desencriptado): Transformar el
texto cifrado en el texto original.
Fig. 1. Proceso de cifrado y descifrado
De esta manera, por ejemplo, si dos personas
se ponen de acuerdo en el valor de una clave
secreta, y la mantiene privadamente s olo entre
ambos, pueden intercambiar informaci on cifrada.
Esto permite que si un agente externo intercepta
las comunicaciones, no podr a conocer el contenido
original de los mensajes, pues s olo observara datos
ininteligibles o cifrados. Para descifrar se necesita
conocer la clave.
Para encriptar se pueden usar 2 tipos de algortimos :
Algortimo Secreto: La informaci on es
encriptada por un algoritmo que no es
conocido por todos, y que tiene que ser
2
utilizado en el destinatario, para poder
descriptar la informaci on.
Algortimo P ublico: La informaci on es
encriptada por un algoritmo, el cual es
conocido. Pero la informaci on se protege a
trav es de una clave secreta, la cual tiene que
ser usada por el destinatario, para descriptar la
informaci on.
Los sistemas actuales utilizan algortimo p ublico
y claves secretas, debido a los siguientes motivos :
El nivel de seguridad es el mismo.
Los algortimos p ublicos se pueden fabricar
en cadena, tanto chips de hardware como
aplicaciones software. De est a manera
desarrollo es m as barato.
Es m as f acil y m as seguro transmitir una clave
que todo el funcionamientode un algoritmo.
Las t ecnicas de criptografa se pueden clasicar
seg un el tipo de clave :
La criptografa de clave privada o smetrica.
La criptografa de clave p ublica o asim etrica.
Hay que considerar que no existen los sistemas
completamente seguros, siempre se pueden violar
probando todas las claves posibles. Por lo tanto, en
criptografa se buscan sistemas que cumplan una de
las siguientes condiciones :
El precio para romperlo es m as caro que el
valor de la informaci on.
El tiempo necesario para romperlo es m as largo
que el tiempo de vida de la informaci on.
A. Criptografa Sim etrica
La criptografa sim etrica, usa una sola clave que
poseen tanto el emisor como el destinatario. Esta
clave(llamada tambi en clave secreta) es usada tanto
para encriptar como para desencriptar. Este m etodo
es eciente para encriptar grandes cantidades.
Como este m etodo usa la misma clave para encriptar
y desencriptar, la seguridad del proceso depende de
la facilidad de obtener la clave de una forma no
autorizada. Los algortimos criptogr acos sim etricos
emplean claves con un elevado n umero de bits, y
usualmente se mide su calidad por la cantidad de
esfuerzo que se necesita para romperlos.
El tipo de ataque m as simple es la fuerza bruta,
que simplemente trata de ir probando una a una
todas las claves. Basa su seguridad en la longitud
de la clase. Los algortimos de clave secreta, que
m as se utilizan son: DES, 3DES y AES. DES(Data
Encryption Standard), es el esquema de cifrado m as
com un. Se basa en un sistemas monoalfab etico, con
un algortimo de cifrado consistente en la aplicaci on
sucesiva de varias permutaciones y sustituciones.
En general, DES utiliza una clave sim etrica de
64 bits, de los cuales 56 son usados para la
encriptaci on, mientras que los 8 restantes son de
paridad, y se usan para la detecci on de errores en
el proceso. Por otra parte, algortimos de cifrado
de dise no m as reciente como 3DES(se lee triple
DES) usan todos claves de 128 bits, lo que signica
que existen 2 elevado a 128 claves posibles. Esto
representa una mayor cantidad de combinaciones.
Fig. 2. Comparaci on de algoritmos.
Ante los problemas de poder detectar una clave
de 56 bits a trav es de la fuerza bruta se dise no
el 3DES que agrando el largo de la clave sin
necesidad de cambiar de algortimo de cifrado,
dobla la longitud efectiva de la clave, pero en
cambio es preciso triplicar el n umero de operaciones
de cifrado, haciendo este m etodo de cifrado m as
seguro que el DES. Por el dise no DES y 3DES
son algoritmos lentos. AES(Advanced Encryption
Standard), puede llegar a ser hasta 6 veces m as
r apido.
B. Criptografa Asim etrica
Usa dos claves, una p ublica y una
privada(matem aticamente relacionada). La clave
p ublica puede ser ampliamente distribuida o
publicada en sitios p ublicos para la obtenci on(de
forma insegura), pero su correspondiente clave
privada debe permanecer segura. Los algoritmos
de criptografa son ecuaciones complejas
3
matem aticamente que usan n umeros muy grandes.
Su principal limitaci on es que proveen un
forma relativamente lenta de encriptar. Algunos
algortimos asim etricos conocidos son: RSA, DSA y
Dife-Hellman. El RSA(Rivest-Shamir-Adleman),
es algortimo asim etrico cifrador de bloques,
que utiliza clave p ublica, la cual se distribuye
y otra privada, la cual es guardada en secreto
por su propietario. El algoritmo RSA es unico
entre los algortimos de claves p ublicas utilizados
habitualmente ya que puede realizar operaciones
tanto rma digital como de intercambio de claves.
El DSA(Digital Signature Algorithm), es un
est andar del Gobierno Federal de los Estados
Unidos de Am erica o FIPS para rmas digitales.
Este algortimo sirve para rmar y para cifrar
informaci on. Una desventaja de este algoritmo
es que requiere mucho m as tiempo de c omputo
que RSA. El algoritmo Dife-Hellman, permite el
intercambio secreto de claves entre dos partes que
no han tenido contacto previo, utilizando un canal
inseguro, y de manera an onima(no autenticada).
II. IMPLEMENTACI

ON AES
AES proporciona la exibilidad, la simplicidad
y la sostenibilidad de hardware y software. Este
algoritmo se puede utilizar en una variedad de
plataformas y aplicaciones. Esto tambi en puede
ser utilizado como un cifrado de ujo, c odigo de
autenticaci on de mensaje, la funci on de hash, el
n umero pseudoaleatorio del generador.
AES opera sobre bloques de datos de 128 bits,
n umero de rondas(Nr) y la clave que utiliza puede
ser de 128, 192 o 256 bits. Esto proporciona
una mayor seguridad en comparaci on con otros
algoritmos de mismo tama no de la clave(NK) y
la longitud del bloque(Nb). La mayora de los
c alculos del algoritmo AES se hacen en un campo
nito determinado. AES trabaja en una matriz de
4x4 bytes, llamada estado, 1 palabra corresponde
32 bits.
Key Sizes versus Rounds
Nk (palabras) Nb (palabras) Nr
AES-128 4 4 10
AES-192 6 4 12
AES-256 8 4 14
Conceptos matem aticos
El algortimo opera a nivel de bytes, interpretando
estos como elementos de un cuerpo de Galois
GF(2
8
), y a nivel de registros de 32 bits,
consider andolos como polinomios de grados menor
que 4 con coecientes que son a su vez polinomios
en GF(2
8
). En este apartado se van a denir las
operaciones matem aticas b asicas que necesita el
algortimo.
Cuerpos Finitos. GF(2
8
)
En este algortimo todos los bytes se interpretan
como elementos de un cuerpo nito. Concretamente
se representan mediantes Campos de Galois que se
representan como GF(k). Los campos de Galois son
muy interesantes en criptograa gracias a que existe
un inverso aditivo y multiplicativo que permite
cifrar y descifrar en el mismo cuerpo Z
k
, eliminado
asi los problemas de redondeo o truncamiento de
valores si tales operaciones de cifrado y descifrado
se hubiesen realizado en aritmetica real.
En nuestro caso, interesa utilizar una aritm etica
en m odulo p sobre polinomios de grado m, siendo
p un n umero primo. Este campo de Galois queda
representado como: GF(p
m
), en donde los elementos
de GF(p
m
) se representan como polinomios con
coecientes en Z
p
de grado menor que m, es decir:
GF(p
m
) = {
0
+
1
x
1
+
2
x
2
+ ...
m1
x
m1
}

0
,
1
,
2
, ..
m1
Z
p
Cada elemento de GF(p
m
) es un resto m odulo
p(x), donde p(x) es un polinomio irreductible de
grado m, esto es, que no puede ser factorizado en
polinomios de grado menor que m. En el caso del
algortimo AES, ser a interesante que los campos del
tipo GF(2
m
) puesto que los coecientes en este caso
ser an los restos del mod ulo 2, es decir, 0 y 1, lo
que permite una representaci on binaria. Por lo tanto,
cada elemento del campo se representa com m bits
y el n umero de elementos ser a 2
m
. Por ejemplo,
para el campo GF(2
3
) sus elementos son : 0, 1, x,
x+1, x
2
+1, x
2
+x, x
2
+x +1 que son precisamente
todos los restos de un polinomio de grado m-1. En
el caso del algortimo AES, se dene operaciones a
nivel de byte, encontr andonos en el campo GF(2
8
).
Un byte B, se compone de los bits b
7
b
6
b
5
b
4
b
3
b
2
b
1
b
0
, si lo consideramos como un polinomio con
coecientes en 0,1 tenemos el polinomio :
b
7
x
7
+b
6
x
6
+b
5
x
5
+b
4
x
4
+b
3
x
3
+b
2
x
2
+b
1
x
1
+b
0
4
Por ejemplo, un byte con el valor hexadecimal 57,
en binario 0101 0111 corresponde al polinomio
x
6
+x
4
+x
2
+ x + 1
Suma en GF(2
8
)
En GF(p
m
) hay que considerar que las
operaciones matem aticas sobre los coecientes
se hacen en m odulo p con lo cual en GF(2
m
) se
reducen los resultados de la suma de los coecientes
m odulo 2. Este procedimiento tanto para la suma
como para la resta se realiza simplemente con una
operaci on Or-Exclusiva, ya que si los coecientes
son iguales dar an como suma o resta un 0 y
coecientes distintos dar an un 1. Por lo tanto,
para sumar dos polinomios, basta con aplicar la
operaci on Or-Exclusiva, a cada elemento de los
polinomios, dos a dos. La funci on Or-Exclusiva de
dos bits, produce los siguientes resultados:
1 1 = 0
0 1 = 1
1 0 = 1
0 0 = 0
Un ejemplo de suma de dos polinomios de tama no
byte expresados dentro de GF(2
8
) es:
A = 57
16
= 0101 0111
2
= x
6
+ x
4
+x
2
+x + 1
B = 83
16
= 1000 0011
2
= x
7
+x + 1
sumando :
A+B = (x
6
+x
4
+x
2
+x+1)+(x
7
+x+1) mod 2
= 1101 0100 = D4
16
Y lo mismo se obtiene utilizando la operaci on
Or-Exclusiva:
0101 0111 1000 0011 = 1101 0100 = D4
16
Desarrollo Secuencial
Como observamos en el gura 2 observamos que
el cifrado del AES es mucho m as seguro que los
dem as pero conforme incrementa el tama no tambi en
aumenta el tiempo. El cifrado hace que el texto real
pase por diferentes etapas, operaciones matem aticas.
Etapa inicial:
AddRoundKey
Rondas:
SubBytes: en este paso se realiza una
sustituci on no lineal donde cada byte es
reemplazado con otro de acuerdo a una
tabla de b usqueda.
ShiftRows: en este paso se realiza una
transposici on donde cada la del estado
es rotada de manera cclica un n umero
determinado de veces.
MixColumns: operaci on de mezclado
que opera en las columnas del estado,
combinando los cuatro bytes en cada
columna usando una transformaci on lineal.
AddRoundKey: cada byte del estado es
combinado con la clave round; cada clave
round se deriva de la clave de cifrado
usando una iteraci on de la clave.
Etapa nal:
SubBytes
ShiftRows
AddRoundKey
Algorithm 1 AES Secuencial
Require: array in de 4 Nb bytes
array out de 4 Nb bytes
array w de 4 Nb (Nr + 1) bytes
1: byte[][]state newbyte[4][Nb]
2: state in
3: AddRoundKey(state)
4: round 1
5: while round < Nr do
6: SubBytes(state)
7: ShiftRows(state)
8: MixColumns(state)
9: AddRoundKey(state)
10: end while
11: SubBytes(state)
12: ShiftRows(state)
13: AddRoundKey(state)
14: out state
5
Para el cifrado el proceso comienza con una
ronda agrega fase clave y seguido de 9,11 o
13 rondas, cada ronda se compone de cuatro
etapas mencionadas anteriormente. La ultima ronda
contiene s olo 3 etapas excluyendo la ronda agregada
en la fase clave.
Fig. 3. Proceso de cifrado
Etapa SubBytes- Substituci on de bits
La transformaci on SubBytes consiste en una
sustituci on no lineal que se aplica a cada byte de la
matriz de estado de forma independiente, generando
un nuevo byte. Esta transformaci on consiste en
la sustituci on de cada byte por el resultado de
aplicarle la tabla de sustituci on caja-S. Esta tabla
logicamente es invertible y se construye mediante
dos transformaciones :
Cada byte es considerado como un elemento en
GF(2
8
) que genera el polinomio irreductible
m(x) = x
8
+x
4
+ x
3
+x + 1
siendo sustituido por su inverso multiplicativa,
el valor cero queda inalterado ya que no tiene
inversa.
Al resultado de la primera transformaci on se le
aplica la siguiente la siguiente transformaci on
afn en GF(2), siendo x
0
, x
1
, x
2
, x
3
, x
4
, x
5
, x
6
y
x
8
los bits del byte de la primera tranformaci on
e y
0
, y
1
, y
2
, y
3
, y
4
, y
5
, y
6
y y
8
los bits del
resultado nal de la transformaci on SubBytes.
Por ejemplo, si el byte al cual se le aplica
la funci on SubByte es A=11001011, deberamos
calcular su inversa multiplicativa. Cada byte se
representa como un polinomio a(x), calcular
la inversa multiplicativa consiste en buscar un
polinomio b(x) (que es unico) que multiplicado por
a(x) modulo m(x) es igual a1, es decir :
a(x).b(x) mod x
8
+ x
4
+x
3
+x + 1 = 1
El polinomio buscado en este caso es b(x)=x
2
que
tiene una representaci on binaria de B=00000100.
Se dice entonces que B es la inversa en GF(2
8
)
de A. Una vez que tenemos el resultado de
la primera transformaci on, debemos aplicarle la
transformaci on, debemos aplicarle la transformaci on
afn denida:
Obtenemos el valor nal de Y=0011111. Luego el
byte A=11001011 se convierte en Y al aplicar la
funci on SubByte.
Utilizando estas dos transformaciones para todos los
valores posibles de entrada se calcula una tabla de
sustituci on denominada caja-S util para el proceso
de cifrado. Gracias a esta tabla aplicar la funci on
SubByte resulta trivial, consiste en dividir el byte
de la matriz de estado en dos partes de 4 bits
menos signicativos de columna. El valor para esa
la y columna en la tabla es resultado es resultado
de aplicar Caja-S a un byte. Siguiento con el
ejemplo anterior, si tenemos el byte A=11001011
y le aplicamos la funci on SubByte el resultado
6
sera (x=1100[la c ] y=1011[columna b]) Y=0x1F
que en binario equivale a Y=0001111, valor que es
id entico al calculado previamente.
La implemetaci on en c hacemos uso directo de la
Caja-S que tendra valores ya denidos.
Implementaci on SubBytes C
voi d SubByt es (BYTE s t a t e [ ] , BYTE sbox [ ] ) {
i nt i ;
f or ( i = 0; i < 16; i ++)
s t a t e [ i ] = sbox [ s t a t e [ i ] ] ;
}
La caja-S tambi en se elige para evitar puntos
estables, y tambi en cualesquiera puntos estables
opuestos.
Etapa ShiftRows-Desplazar las
Esta tranformaci on consiste en rotar a la izquierda
las las que conforman la matriz estado, es decir,
rotar los bytes de las las de la matriz de estado
resultante de la transformaci on anterior(SubBytes)
a la izquierda. Cada la f
i
se desplaza un n umero
de posiciones C
i
diferente. Existen 4C
i
, uno para
cada una de las 4 las que siempre tiene la matriz
de estado. C
0
(para la la 0), C
1
(para la la 1),
C
2
(la 2) y C
3
(la 3). La la 0 siempre permanece
inalterada (siempre C
0
). Los valores de C
1
,C
2
y
C
3
que indican el n umero de rotaciones de las las
f
0
,f
1
y f
2
dependen del tama no del bloque, y en
consecuencia de Nb(tama no bloque/32).
Tama no del bloque C1 C2 C3
128 bits(Nb=4) 1 2 3
192 bits(Nb=6) 1 2 3
256 bits(Nb=8) 1 3 4
Por ejemplo, si el tama no del bloque fuera de
128 bits(Nb=4) la la 0 no sera rotada, la la 1 se
rotara 1 byte(C
1
=1), la la sera rotada 2 bytes(C
2
)
y la la 3 sera rotada bytes(C
3
).
La funci on inversa de shiftrow que permite
invertir esta transformaci on consiste simplemente
en rotar a la derecha los bytes de las las de la
matriz de estado actual. Para ello se desplaza el
mismo n umero de posiciones C
i
que se desplazaron
para cifrar La estructura del algortimo fue dise nada
para permitir cualquier tama no de bloque que sea
m ultiplo de 4 bytes, con un n umero mnimo de
16 bytes. Las funciones AddRoundKey, SubBytes
y MixColumn son independientes del tama no de
bloque. Sin embargo la transformaci on ShiftRown
si depende de la longitud del bloque, siendo
necesarios denir valores C
1
,C
2
y C
3
diferentes
para distintos bloques. Los autores teniendo en
cuenta esto, han facilitado valores adicionales de
C
1
,C
2
y C
3
para otras longitudes comunes de
bloques :
Tama no del bloque C1 C2 C3
160 bits(Nb=5) 1 2 3
224 bits(Nb=7) 1 2 4
Para cualquiera otra longitud de bloque no
establecida en el est andar es conveniente contactar
con los dise nadores del algortimo.
7
Implementaci on ShiftRows C
voi d Shi f t Rows (BYTE s t a t e [ ] , BYTE s h i f t t a b [ ] ) {
BYTE h [ 1 6 ] ;
memcpy ( h , s t a t e , 16) ;
i nt i ;
f or ( i = 0; i < 16; i ++)
s t a t e [ i ] = h [ s h i f t t a b [ i ] ] ;
}
Etapa MixColumns- Mezclar columnas
La transformaci on MixColumn act ua sobre bytes
de una misma columna de la matriz de Estado que
tiene a la entrada, es decir, el Estado intermedio 3.
En esencia esta funci on permite una mezcla de los
bytes de las columnas.
Esta transformaci on considera las columnas
de bytes como polinomios cuyos coecientes
pertenecen a GF(2
8
), es decir, son tambi en
polinomios.
La funci on MixColumn consiste en multiplicar
las columnas de bytes m odulo x
4
+ 1 por el
polinomio c(x).
Matematicamente c(x) viene representado por:
c(x) =

03

x
3
+

01

x
2
+

01x

02

Este polinomio c(x) es coprimo con x


4
+ 1 que
permite que sea invertible. En forma algebraica esta
funci on se puede representar como :
s

(x) = c(x) s(x)


Donde s(x) represnta la matriz de Estado
resultante de esta transformaci on(Estado intemedio
4) y s(x) la matriz de Estado entrante(Estado
intermedio 3).
Esta f ormula queda mejor expresada de forma
matricial, donde c represnta el ndice de la
columna que se procesa :
Desarrollando la matriz, observamos claramente
como cada byte nuevo de la matriz de Estado es una
combinacion de varios bytes de las distintas las que
forman una columna especica :
Por ejemplo dado el siguiente Estado
intermedio3:
D4 E0 B8 1e
Bf B4 41 27
5d 52 11 98
30 Ae F1 E5
Para calcular el byte de la la0 y columna0
de la matriz de Estado resultante se calculara de
la siguiente forma:
s

0,0
= ({02}.s
0,0
) ({03}.s
1,0
) s
2,0
s
3,0
Se cogen los bytes de la matriz que hacen falta:
s

0,0
= ({02}.d4) ({03}.Bf) 5d 30
Y se calcula el resultado:
{02}.{d4} = {b8}
x.(x
7
+x
6
+ x
4
+x
2
) mod x
4
+ 1
x
8
+x
7
+ x
5
+x
3
mod x
4
+ 1
x
7
+x
5
+ x
4
+x
3
= 10111000 = {b8}
{03}.{Bf} = {d1}
(x+1).(x
7
+x
5
+x
4
+x
3
+x
2
+x+1) mod x
4
+1
x
8
+x
7
+x
6
+ 1 = 11010001 = {d1}
s

0,0
= b8 d1 5d 30 = 04
Luego el byte D4 de la la y columna0 de la
matriz de Estado Intermedia 3 se sustituira por el
byte 04 en la matriz de Estado Intermedia 4. Para
el resto de bytes se seguira un desarrollo como el
planteado.
Para descifrar o invertir esta transformaci on, se
debera realizar el mismo procedimiento descrito
pero con el polinomio d(x), que es el inverso de c(x).
8
voi d AES MixColumns (BYTE s t a t e [ ] ) {
i nt i ;
f or ( i = 0; i < 16; i + = 4) {
BYTE s0 = s t a t e [ i + 0] , s1 = s t a t e [ i + 1 ] ;
BYTE s2 = s t a t e [ i + 2] , s3 = s t a t e [ i + 3 ] ;
BYTE h = s0 s1 s2 s3 ;
s t a t e [ i + 0] = h AES xtime [ s0 s1 ] ;
s t a t e [ i + 1] = h AES xtime [ s1 s2 ] ;
s t a t e [ i + 2] = h AES xtime [ s2 s3 ] ;
s t a t e [ i + 3] = h AES xtime [ s3 s0 ] ;
}
}
Etapa AddRoundKey- C alculo de las subclaves
Esta transformaci on consiste en aplicar una
operaci on OR-Exclusiva entre la matriz de Estado
que proviene de la transformaci on anterior(Funci on
Mixcolumn) y una subclave que se genera a partir
de la clave del sistema para esa vuelta(ronda).
El bloque resultante de esta transformaci on, s era
la nueva matriz de Estado para la siguiente ronda.
Siendo el bloque de salida, si la vuelta es la ultima.
Para aplicar esta transformaci on se debera coger
una subclave para la vuelta actual, y forma
una matriz con el mismo n umero de las y
columnas que la matriz de Estado con la que
se esta operando(implcitamente se puede observar
como las subclaves dependen del tama no del
bloque empleado) para poder aplicar la operaci on
or-exclusiva.
La esencia de esta funci on recae en las subclaves.
El algortimo AES bas andose en el principio de la
criptografa moderna, mediante el cual se establece
que la seguridad de un algortimo s olo debe depender
de la clave utilizada, utiliza diferentes subclaves K
i
tanto en el cifrado como en el descifrado para que
el resultado del algorimo dependa completamente
de una informaci on externa al sistema: la clave de
usuario.
El n umero total de bits necesarios para generar
todas las subclaves, dependen del n umero de rondas
que se aplique al algortimo y del tama no del bloque
empleado. El n umero total de bits de subclaves
necesarios se puede calcular como:
# total bits Subclaves = 32 N
b
(N
r
+ 1)
Por lo tanto, se puede observar que el n umero
total de bits de subclaves es igual al tama no del
bloque empleado por el n umero de vueltas del
algortimo(N
r
vueltas m as la ronda inicial).
Se ha observado que el funcionamiento de
esta transformaci on es sencillo, lo verdamente
interesante es conocer el procedimento para generar
los bytes que forman las subclaves para cada
vuelta(RoundKeys), bytes que se derivan de la
clave principal K. Para ello el sistema utiliza dos
funciones auxiliares: una funci on de selecci on y una
funci on de expansi on.
voi d AES AddRoundKey (BYTE s t a t e [ ] , BYTE r key [ ] )
{
i nt i ;
f or ( i = 0; i < 16; i ++)
s t a t e [ i ] = r key [ i ] ;
}
En sistemas de 32 bits o de mayor tama no
de palabra, es posible acelerar la ejecuci on
de este algoritmo mediante la conversi on de
las transformaciones SubBytes, ShiftRows y
MixColumn en tablas. Se tienen cuatro tablas de
256 entradas de 32 bits que utilizan un total de 4
kilobytes (4096 bytes) de memoria, un Kb cada
9
tabla. De esta manera, una ronda del algoritmo
consiste en 16 b usquedas en una tabla seguida
de 16 operaciones XOR de 32 bits en el paso
AddRoundKey. Si el tama no de 4 kilobytes de la
tabla es demasiado grande para una plataforma
determinada, la operaci on de b usqueda en la tabla
se puede realizar mediante una sola tabla de 256
entradas de 32 bits mediante el uso de rotaciones
circulares.
Desarrollo Paralelo
La necesidad de un procesamiento paralelo est a
aumentando con la necesidad de un procesamiento
de alta velocidad. Message Passing Interface (MPI)
es la especicaci on estandar para el paso de
mensajes de la biblioteca.
Los programas desarrollados usando MPI pueden
ser reutilizados en los equipos m as nuevos, m as
r apidos paralelos. Utilizando el procesamiento en
paralelo reduce la complejidad de tiempo y el coste
que las computadoras paralelas se pueden construir
a partir de componentes baratos. Muchos de los
problemas grandes que son factibles de resolver
utilizando un equipo con procesador solo se pueden
resolver mediante el procesamiento en paralelo.
Uso de las computadoras paralelas recursos no
locales, es decir, los recursos de una red de area
amplia o incluso de Internet cuando el recurso local
es escasa. Nuestro objetivo es disear un sistema
que incorpora las ventajas de procesamiento en
paralelo en los algoritmos criptogr acos. Aparte
de esto, tambi en se abre una nueva puerta en la
forma en que un archivo est a cifrado. Dado que el
proceso de cifrado se realiza en paralelo, es posible
utilizar claves diferentes para diferentes partes que
mejorara a un m as la seguridad de los datos.
Hay dos componentes principales del dise no de
algoritmos paralelos. El primero es la identicaci on
y especicaci on del problema general como un
conjunto de tareas que se pueden realizar al mismo
tiempo. El segundo es la asignaci on de estas tareas
en diferentes procesadores, de forma que se reduzca
al mnimo la sobrecarga de comunicaci on general.
El primer componente especica concurrencia, y
la segunda especica una localidad de datos. El
rendimiento de un algoritmo en una arquitectura
en paralelo depende de ambos. La concurrencia
es necesario mantener los procesadores ocupados.
Localidad es importante debido a que minimiza
sobrecarga de comunicaci on. Idealmente, un
algoritmo paralelo debe tener la m axima
concurrencia y localidad.
Sin embargo, para la mayora de los algoritmos,
hay un equilibrio. Un algoritmo que tiene m as
concurrencia a menudo tiene menos localidad.
Para implementar el algoritmo AES de forma
paralela, los bloques de datos y una clave se
distribuyen entre los procesadores disponibles .
Cada procesador cifrar a diferentes bloques de datos
utilizando la misma clave. Por ejemplo, con el n
de cifrar un n umero n de bloques de datos con
procesadores p, bloques de datos de N/P se cifrar an
por cada procesador. Como cada procesador
tiene sus propios bloques de datos y una clave
(incrementos datos localidad), todas las rondas (10
o 12 o 14 consta de cuatro transformaciones) ser an
ejecutadas por cada procesador para cifrar cada
bloque de datos.
Tras el cifrado de todos los bloques de datos de
cada procesador, los datos cifrados se fusionar an
en la estructura de arbol y volver de nuevo al
procesador principal. Por ejemplo, si hay cuatro
procesadores trabajando en paralelo, el procesador
P1 enviar a sus datos cifrados a P0 y P0 fusionar a
sus datos cifrados con P1, P3 procesador enviar a
sus datos cifrados a P2 y P2 fusionar a sus datos
cifrados con P3.
Por ultimo procesador P2 enviar a sus (P2 y P3)
datos cifrados a P0 y P0 se fusionar a sus (P0 y
P1) datos cifrados con P2. Esta t ecnica de la fusi on
y la devoluci on de datos al procesador principal
aumentar a la concurrencia y reducir el tiempo de
inactividad de cada procesador.
10
El archivo de texto y una clave se proporcionan
como entradas al sistema.
El archivo de texto plano se divide en
segmentos de acuerdo al n umero de
procesadores, en funci on del tama no del
archivo para activar el procesamiento paralelo.
Una nueva clave se genera utilizando la llave
suministrada como entrada.
Cada parte del archivo se encripta por separado
para nalmente juntarse en un archivo solo.
Fig. 4. Desarrollo para 2 procesadores
voi d Ci pher ( byt e [ ] i n , byt e [ ] out , byt e [ ] w) {
n Pr o c e s s o r s = 4;
i nt nBl ckPer Pcr = t Number Of Bl cks / nPcr ;
i nt r ank ;
i f ( r ank == p r o c e s s o r 0) {
my poi nt er [ 0 ] = nBl ckPer Pcr da t a bl oc ks
send nBl ckPer Pcr da t a t o r e s t of t he p r o c e s s o r s
send t he same key t o o t h e r p r o c e s s o r s }
e l s e {
r e c e i v e t he nBl ckPer Pcr bl oc ks from p r o c e s s o r 0
my poi nt er [ 0 ] = nBl ckPer Pcr da t a bl oc ks
r e c e i v e t he key from t he p r o c e s s o r 0 }
Enc r ypt i on ( my poi nt er [ 0 ] ) ;
III. RESULTADOS
Para los tiempos de ejecuci on solo se tuvo en
cuenta el tiempo de cifrado dado que el tiempo de
descifrado presenta resultados similares.
Diferentes tama no de archivos se utilizan para
el cifrado tanto en el ambiente secuencial y en
paralelo y el tiempo necesario para su ejecuci on
se calculan y las observaciones se muestran en la
Tabla1 utilizando un AES-128 para 4 procesadores.
11
Los resultados de la simulaci on muestran que el
archivo contiene texto cifrado del texto plano, pero
cifrado con dos claves diferentes. Esto hace que
sea imposible para los criptoanalistas de adivinar
las claves, incluso un conjunto de texto cifrado
y combinaciones de texto plano con el algoritmo
implementado se conoce como el mecanismo clave
de generaci on s olo es conocido por el remitente y
el receptor. El duplicado de la llave no se puede
adivinar, aunque la llave proporciona es atrapado.
Se present o el algortimo de cifrado sim etrico
AES, se realiz o una implementaci on secuencial
en lenguaje C, con clave de 128 bits, adaptando
luego esta implementaci on a herramientas de
programaci on paralela en MPI. Se realiz o un
an alisis de los tiempos de ejecuci on resultantes
de las distintas implementaciones para distintos
tama no de datos, observando la eciencia de la
implementaci on del algoritmo en MPI. En todos
los casos se logra un aceleraci on del tiempo de
c omputo importante con respecto al secuencial.
Hoy en da existen limitaciones en la velocidad
de los procesadores debido a problemas t ermicos
y de consumo, pero este trabajo mostro que
utilizando herramientas de programaci on paralela
se puede aprovechar el paralelismo que proveen las
arquitecturas multicores actuales, y de esta forma,
poder acelerar el computo de los algortimos, en
particular AES, un algoritmo de cifrado est andar
muy utilizado.
IV. CONCLUSIONES Y DISCUCIONES
Se comprob o que se logra una buena aceleraci on
con las implementaciones paralelas al cifrar
distintos tama nos de datos, en particular del
algortimo implementado con MPI, de esta forma
es posible reducir el costo de cifrado de datos ya
sea para almacenarlos o para hacer transferencias
importante de datos sensibles sobre una red p ublica.
V. TRABAJO A FUTURO
Nuestra aplicaci on alcanza hasta 7 veces m as
veloz sobre la implementacion secuencial. Nuestra
implementaci on se puede aplicar para los an alisis
inform atico que requiere alta velocidad de cifrado
de datos. En el futuro, vamos a centrarnos en las
implementaciones ecientes de otros algoritmos de
cifrado comunes de clave sim etrica, como Blowsh,
Serpent y Twosh. Adem as, el trabajo futuro
incluir a tambi en implementaciones MPI de hash
y algoritmos de clave p ublica(por ejemplo, MD5,
SHA-1 y RSA).
12
REFERENCES
[1] G.Manikandan, N.Sairam, M.Kamarasan, A Hybrid Approach
For Security Enhancement by Compressed Crypto-Stegno
Scheme in Research Journal of Applied Sciences, Engineering
and Technology,Vol 4(6) ,2012, 608-614.
[2] Implementing Cryptographic Techniques in Message Passing
Interface Systems. A.Brillia, D. Jagadiswary, R. Muthu Venkata
Krishnan,2010
[3] Parallelism of AES Algorithm via MPI. Ozgur Pekcagliyan,
Computer Engineer, Nurdan Saran, Department of Computer
Engineering, Cankaya University, Ankara,2013.
[4] J. John Raybin Jose and E. George Dharma Prakash Raj,
A Survey on the Performance of Parallelized Symmetric
Cryptographic Algorithms,in International Journal of Research
and Reviews in Computer Science (IJRRCS) , June 2012.
[5] Osvaldo Gervasi, Diego Russo, Flavio Vella, The AES
Implementation based on OpenCL for Multi/Many Core.
architecture, in International Conference on Computational
Science and Its Applications, 2010.
[6] Kahraman Akedmir et al, Breakthorugh AES performance with
Intel AES new instructions, Intel, 2010.
[7] Helger Lipmaa, Phillip Rogaway, David Wagner Comments
to NIST concerning AES Modes of Operations: CTRMode
Encryption.
[8] Michael Kipper, Joshua Slavkin, Dmitry Denisenko
Implementing AES on GPU Final Report University of
Toronto, April 20, 2009.
[9] National Institute of Standards and Technology Federal
Information - Processing Standards Publication 197 November
26, 2001.
[10] P. Hagerty and T. Draper, Entropy Bounds and Statistical Tests,
Random Bit Generator Workshop, (2012) December.
[11] J. Daemen, V. Rijmen. The Design of Rijndael: AES The
Advanced Encryption Standard. New York, USA: Springer
Verlag, 2002.
[12] P. Pal Chaudhuri, D. Roy Chowdhury, S. Nandi and
S. Chattopadhyay, Additive Cellular Automata Theory and
Applications, Vol-1, IEEE Computer Society Press, USA, 1997.
[13] F. Standaert , G.Rouvroy , J. Quisquater, and J. Legat, A
methodology to implement block ciphers in recongurable
hardware and its application to rst and compact AES
rijndael,FPGA-2003,pp-281-291, califonia, 2003.
[14] M. Szaban, F. Seredynski, and Pascal Bouvry, Evolving
Collective Behaviour of Cellular Automata for Cryptography,
IEEE MELECON 2006.
[15] W. Gropp, E. Lusk, N. Doss, and A. Skjellum, A High
Performance, Portable Implementation of the Mpi Message
Passing Interface Standard, Parallel Computing, vol. 22, no.
6, pp. 789-828, 1996. Parallel Computing, vol. 22, no. 6, pp.
789-828, 1996.
[16] Darrel Hankerson, Julio Lopez Hernandez, Alfred Menezes,
Software Implementation of Elliptic Curve Cryptography over
Binary Fields, 2000.
[17] Certicom, Standards for Efcient Cryptography, SEC 2:
Recommended Elliptic Curve Domain Parameters, Version 1.0,
September 2000.

También podría gustarte