GoConqr has a new look! Let us know what you think.

Mind map

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

Sergio de Jesus Hernández Sanchez Informática Spanish

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

Map content

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

  1. Antecedentes científicos

    • Los procesadores multi-núcleo
      • 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
    • 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. La meta es reducir al mínimo el tiempo total de cómputo distribuyendo la carga de trabajo entre los procesadores disponibles.
    • El algoritmo de cifrado AES
      • 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. 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.
  2. 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.
  3. Trabajo realizado

    • 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 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.
    • 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.
        • 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 informa el tamaño de bloque que van a procesar y escribe al archivo de salida cuando un hilo notifica que ha terminado su proceso.
          • Procesadores.java: Esta es una clase de apoyo para la clase Control, su función es la de cifrar o descifrar una parte del archivo de entrada.
          • Hash.java: Calcula la función picadillo MD5 a partir de la llave secreta proporcionada por el usuario.
    • El programa recibe el archivo de entrada, y los demás parámetros, con esta información se calculan la longitud de cada segmento y la cantidad de memoria a utilizar, con la longitud de segmento se calcula y escribe o interpreta el padding del archivo.
  4. Pruebas realizadas y resultados obtenidos

    • Las pruebas de desempeño de la aplicación se realizaron en una computadora HP que cuenta con un procesador Intel Core 2 Quad a 2.4 GHz con 6 GB de memoria RAM con sistema operativo Mandriva Linux 2010. Las pruebas consistieron en cifrar archivos de datos de 1 MB, 5 MB, 10 MB, 50 MB, y 100 MB, con diferente número de hilos de ejecución que iban desde 2 hasta 20. Se observa también en esta prueba que con más de 5 hilos de ejecución el desempeño ya no mejora.
    • La segunda prueba consistió en cifrar cada tamaño de archivo utilizando el número óptimo de hilos que proporciona en promedio la máxima aceleración, que en este caso fue de 5, para comparar los tiempos promedio obtenidos contra el tiempo del proceso secuencial.
    • Se observa que para archivos menores de 5 MB el desempeño no mejora, incluso empeora esto se muestra en la tabla con un porcentaje de aceleración negativo. A partir de tamaños de archivo de 5MB el tiempo de cifrado se reduce obteniéndose hasta un 36 % de aceleración para archivos de 50 MB.

Images and files in the map

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

Information

Description
Informática Mind Map on Cifrado de datos con algoritmo AES usando programación multihilo en Java, created by Sergio de Jesus Hernández Sanchez on 06/04/2020.
Views
0
Rating

Feedback

What is it about?

What do you think of the new look?

How do you like it?