PDF de programación - Cifrado de datos con algoritmo AES usando programación multihilo en Java

Imágen de pdf Cifrado de datos con algoritmo AES usando programación multihilo en Java

Cifrado de datos con algoritmo AES usando programación multihilo en Javagráfica de visualizaciones

Publicado el 24 de Abril del 2019
933 visualizaciones desde el 24 de Abril del 2019
283,4 KB
8 paginas
Creado hace 12a (14/05/2011)
INSTITUTO TECNOLÓGICO DE CD. VICTORIA

Cifrado de datos con algoritmo AES usando

programación multihilo en Java

Juan A. Vargas, Lilia García, Sylvia Martínez, Laura Chávez y Diego Muñoz

Instituto Tecnológico de Cd. Victoria, Blvd. Emilio Portes Gil # 1301 Pte. C.P. 87010

Cd. Victoria, Tamaulipas

{Jvargd, lilia.garcia, sylvia.mtz, chavezlaurae}@itcv.edu.mx, [email protected]

Abstract. En este artículo se presenta una implementación en software de un
esquema de paralelismo a nivel de datos para el algoritmo de cifrado AES con
una llave de 128 bits, en particular para computadoras de escritorio y portátiles
con procesadores multi-núcleo. Se hizo una implementación de la versión
paralela del algoritmo AES, en lenguaje Java. Se probó el desempeño en una
computadora con un procesador Intel de 4 núcleos bajo un sistema operativo
Linux. Las pruebas realizadas mostraron que se obtiene una disminución en el
tiempo de cifrado de hasta 36 % a partir de 5 hilos de ejecución para tamaños
de archivo mayores a 5 MB.

Palabras clave: Cómputo paralelo, procesadores multi-núcleo, cifrado de
datos, AES.

1 Introducción

La tecnología de fabricación de procesadores de mínimas dimensiones está llegando a
sus límites. Entre más pequeños son estos componentes la generación de calor es cada
vez mayor debido al incremento de la resistencia eléctrica [1]. En la búsqueda de un
mayor rendimiento en los procesadores sin aumentar el consumo de energía, los
fabricantes vieron el cómputo paralelo como una manera de lograr mayor
procesamiento eficiente de aquellas tareas que pudieran ser ejecutadas de manera
simultánea [2]. Sin embargo la única forma en la que una aplicación se beneficiará de
estos nuevos procesadores es re-diseñándola incorporando algoritmos paralelos para
que funcione de manera eficiente en procesadores de más de un núcleo.



Los procesadores multi-núcleo también desempeñarán un papel central en el impulso
de los avances importantes en la seguridad de la PC y las tecnologías que se están
desarrollando para proporcionar una mayor protección y utilización de recursos para
la computación comercial.



En este sentido y debido a su uso tan extendido, el cifrado de datos es una aplicación
candidata a ser optimizada para que funcione de manera eficiente en procesadores
multi-núcleo.

2 Juan A. Vargas, Lilia García, Sylvia Martínez, Laura Chávez y Diego Muñoz



En este artículo se presenta una implementación en lenguaje Java de un esquema de
paralelismo a nivel de datos para el algoritmo de cifrado AES, en particular para
computadoras de escritorio y portátiles con procesadores multi-núcleo. Se pretende
que este esquema de paralelismo sea eficiente en procesadores de más de un núcleo y
que el tiempo de cifrado y descifrado se reduzca comparado con el tiempo que toma
en un microprocesador con un solo núcleo.

2 Antecedentes científicos

2.1 Los procesadores multi-núcleo

La tendencia predicha por Gordon Moore en 1965 en la famosa Ley de Moore [3], ha
continuado por medio siglo y no se espera que se detenga hasta el 2015 [4]. Sin
embargo la tecnología de fabricación de procesadores de mínimas dimensiones, está
llegando a sus límites. Entre más pequeños son estos componentes la generación de
calor es cada vez mayor debido al incremento de la resistencia eléctrica. Esto ha
traído como consecuencia que cada vez sea más difícil lograr incrementar la
frecuencia principal del procesador [1].



Esta problemática obligó a los fabricantes a replantearse el objetivo en la construcción
de procesadores: Ofrecer un mayor rendimiento (performance), y reducir el consumo
de energía [2]. Para lograr este objetivo fue necesario tomar un rumbo diferente,
tomando como base el procesamiento en paralelo se inicio la construcción de los
procesadores multi-núcleo. Un procesador multi-núcleo es aquel que contiene dentro
de su empaque a varios núcleos o cerebros, y puede dividir un trabajo en partes que
son procesadas cada una de ellas por diferente núcleo.

2.2 El cómputo paralelo

El cómputo paralelo es el procesamiento de información que enfatiza la manipulación
concurrente de elementos de datos pertenecientes a uno o más procesos resolviendo
un problema común. Se basa en el principio de que los problemas grandes se pueden
dividir en partes más pequeñas que pueden resolverse de forma concurrente ("en
paralelo"). La meta es reducir al mínimo el tiempo total de cómputo distribuyendo la
carga de trabajo entre los procesadores disponibles. Una de las razones principales
para utilizar el paralelismo en el diseño de hardware o software, es obtener un alto
rendimiento o mayor velocidad al ejecutar un programa [5]. La mejora de
rendimiento que se puede esperar de una aplicación al incrementar los elementos de
procesamiento, está limitada al tiempo que tarda en ejecutarse la parte secuencial de
la misma, como lo establece la ley de Amdahl [6].

Cifrado de datos con algoritmo AES usando programación multihilo en Java 3

2.3 El algoritmo de cifrado AES

El algoritmo AES [7], es un cifrador de bloque, lo cual significa que trabaja en grupos
de bits de longitud fija, los cuales son llamados bloques. El algoritmo toma un bloque
de datos de un cierto tamaño, normalmente de 128 bits, y produce un correspondiente
bloque de salida del mismo tamaño [8]. La transformación requiere una segunda
entrada, la cual es la llave secreta. AES soporta tamaños de bloque de 128 bits y
tamaños de llave de 128, 192 y 256 bits [10]. Cada tamaño de llave de cifrado hace
que el algoritmo se comporte ligeramente diferente, por lo que el aumento de tamaño
de llave no solo ofrece un mayor número de bits con los que se pueden cifrar los
datos, sino que también aumenta la complejidad del algoritmo de cifrado. AES es un
algoritmo de cifrado de llave simétrica lo que significa que el cifrado y descifrado se
realiza usando la misma llave.


3 Trabajos relacionados

Se han realizado varios trabajos de paralelización del algoritmo AES, sin embargo
estos han sido hechos a nivel bit para ser
implementados en hardware,
específicamente en FPGAs.



En [10] Qin H, et al proponen la paralelización del algoritmo AES utilizando una
arquitectura llamada enrollamiento parcial segmentado (PPR por sus siglas en inglés)
la cual es adecuada para su implementación en FPGA. La arquitectura propuesta fue
implementada en un FPGA EP1S20F780C5 Stratix de Altera, obteniéndose un
desempeño de hasta 20.48 Gbps.

En [11] Caltagirone y Anantha proponen una implementación paralela de alto
desempeño del algoritmo AES para aplicaciones en hardware de recursos limitados.
El núcleo puede ser utilizado en diversas aplicaciones de cifrado y descifrado con
AES con llave de 128-bits, con un enfoque en las redes con modo de transferencia
asíncrono (ATM).

4 Trabajo realizado

La mayoría de las aplicaciones para computadoras de escritorio que existen
actualmente fueron diseñadas para trabajar con procesadores de un solo núcleo. Con
la aparición de los procesadores multi-núcleo las aplicaciones que realmente van a
obtener provecho son aquellas que puedan dividir la tarea en partes que puedan ser
ejecutadas concurrentemente.

Programar para procesadores multi-núcleo es una tarea que las compañías de
desarrollo de software se verán obligadas a realizar. Tendrán que invertir tiempo para
que los desarrolladores modifiquen las aplicaciones permitiéndoles aprovechar al

4 Juan A. Vargas, Lilia García, Sylvia Martínez, Laura Chávez y Diego Muñoz

máximo las virtudes de estos procesadores. Es un proceso difícil y costoso pero al
mismo tiempo obligado para aquellas empresas que quieran competir en el mercado
[12].

En este trabajo presentamos una implementación en software de un esquema de
paralelismo a nivel de datos para el algoritmo de cifrado AES, en particular para
computadoras de escritorio y portátiles con procesadores multi-núcleo.

El proceso paralelo del cifrado de datos se muestra en la Figura 1. El archivo de datos
se divide en un número de partes igual al número de núcleos del procesador o a un
número de hilos deseado. El tamaño de cada parte del archivo se escoge de tal manera
que sea múltiplo de 16 debido a que el algoritmo AES cifra en bloques de 128 bits o
16 bytes. En caso de que el tamaño de la última parte no sea múltiplo de 16 se
completa con caracteres de relleno en un proceso llamado padding. Cada parte del
archivo es asignada a un hilo de ejecución el cual ejecuta el proceso de cifrado. El
archivo se ensambla con las partes cifradas por cada hilo de ejecución, de acuerdo al
orden en el que esa parte aparece en el archivo original. El proceso de descifrado es
exactamente igual, la única diferencia consiste en que el hilo de ejecución descifra en
lugar de cifrar.


Fig. 1. Proceso paralelo de cifrado de datos



La aplicación fue programada en lenguaje Java bajo un sistema operativo Linux, se
distribuyó el funcionamiento esencial del programa en cuatro clases:

Main.java: Clase principal, crea un objeto para cifrar o descifrar en paralelo

de acuerdo a los parámetros que le fueron pasados en línea de comandos.

Control.java: Esta clase efectúa el cifrado y descifrado en paralelo. Esta clase
determina el número de núcleos del procesador, crea los hilos de ejecución,
les
  • Links de descarga
http://lwp-l.com/pdf15781

Comentarios de: Cifrado de datos con algoritmo AES usando programación multihilo en Java (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad