Bloque iii
This presentation is the property of its rightful owner.
Sponsored Links
1 / 66

Bloque III PowerPoint PPT Presentation


  • 68 Views
  • Uploaded on
  • Presentation posted in: General

Bloque III. Estado del proyecto. David Miraut Marcos García Ricardo Suárez. Índice. Personal URJC Estado del proyecto Visión global Algoritmos implementados Extended MD5 UNRAR Attack Office Attack PDF Attack Estructura de la librería general Trabajo futuro Recursos utilizados.

Download Presentation

Bloque III

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Bloque iii

Bloque III

Estado del proyecto

David Miraut

Marcos García

Ricardo Suárez


Ndice

Índice

  • Personal URJC

  • Estado del proyecto

    • Visión global

    • Algoritmos implementados

      • Extended MD5

      • UNRAR Attack

      • Office Attack

      • PDF Attack

    • Estructura de la librería general

  • Trabajo futuro

  • Recursos utilizados


Ndice1

Índice

  • Personal URJC

  • Estado del proyecto

    • Visión global

    • Algoritmos implementados

      • Extended MD5

      • UNRAR Attack

      • Office Attack

      • PDF Attack

    • Estructura de la librería general

  • Trabajo futuro

  • Recursos utilizados


Personal urjc

Personal URJC

  • Director del proyecto:

    • Marcos García Lorenzo

      • Profesor Titular Universitario (Director del Máster IGJRV)

      • Titulación:

        • Doctor e Ingeniero en Informática por la UPM

      • Trabajos anteriores:

        • PDI en la URJC (Coordinador de Área)

        • ResearchFellow en TCD

        • Investigador de la UPM

        • Área de Informática en EADS (División espacio)


Personal urjc1

Personal URJC

  • Equipo desarrollo:

    • Ricardo Suarez Mesa

      • Becario de Investigación

      • Titulación:

        • Ingeniero Informático por la ULPGC

        • Máster en la URJC

      • Trabajos anteriores:

        • Becario de investigación en la URJC (Área de arquitectura)

        • Becario de investigación en el CSIC (Instituto de óptica)


Personal urjc nuevas incorporaciones

Personal URJC (Nuevas Incorporaciones)

  • Consultor Experto:

    • David Miraut

      • Profesor en la URJC

      • Titulación:

        • Ingeniero en Telecomunicaciones por la UPM

        • Estudiante de Doctorado en la URJC

      • Trabajos previos:

        • Investigador del ESRF

        • Investigador de la ESA (CNES)

        • Investigador de la UPM (Telecomunicaciones)


Personal urjc nuevas incorporaciones1

Personal URJC (Nuevas Incorporaciones)

  • Equipo desarrollo:

    • Elías Grande

      • Becario de Investigación a tiempo parcial

      • Titulación:

        • Ingeniero Técnico de Sistemas

        • En 5º de Ingeniería Superior en Informática


Ndice2

Índice

  • Personal URJC

  • Estado del proyecto

    • Visión global

    • Algoritmos implementados

      • Extended MD5

      • UNRAR Attack

      • Office Attack

      • PDF Attack

    • Estructura de la librería general

  • Trabajo futuro

  • Recursos utilizados


Visi n global

Visión global

  • Algoritmos implementados

    • Algoritmos generales

      • Tipos:

        • Algoritmos de Hashing

        • Algoritmos de encriptado

      • Sencillos, estándares y generales

      • Optimizados de forma general

      • Estructurados en forma de librería

    • Implementación de algoritmos de desencriptación específicos

      • Problemas específicos

      • Optimizados de forma específica

      • NO utilizan los algoritmos generales, sino adaptacionesde los mismos


Visi n global1

Visión global

  • Algoritmos implementados

    • Algoritmos generales

      • Algoritmos de hashing

        • MD5

        • SHA1

      • Algoritmos de encriptación

        • AES

        • RC4

    • Implementación de algoritmos de desencriptación específicos

      • Extended MD5

      • Office Attack

      • PDF Attack

      • UNRAR Attack


Visi n global2

Visión global

  • Objetivos y requisitos:

    • Implementación eficiente en arquitecturas gráficas de versiones estándar de los algoritmos antes mencionados

      • Los algoritmos no se modifican en su esencia en la adaptación

    • Desarrollado para Fermi

    • Implementación en C estándar

  • Paralelismo

    • Nivel de algoritmo

    • A nivel de datos

    • Proceso


Ndice3

Índice

  • Personal URJC

  • Estado del proyecto

    • Visión global

    • Algoritmos implementados

      • Extended MD5

      • UNRAR Attack

      • Office Attack

      • PDF Attack

    • Estructura de la librería general

  • Trabajo futuro

  • Recursos utilizados


Md5 espec fico

MD5 específico

  • Descripción general: MD5 ofuscado con “salt” y 1000 iteraciones

  • Entrada:

    • Conjunto de claves que se desean probar

    • Salt (contenido en el fichero Shadow)

  • Precondición:

    • Las claves se agrupan en conjuntos de claves con la misma longitud

    • Longitudes admitidas:

      • [1..16]

  • Salida:

    • Confirmación de que se ha obtenido la clave buscada


Md5 espec fico1

MD5 específico

#include<alg1_one_simulation.h>

intnDevices = initCuda();

if(nDevices == -1) return-1;

interror =

MD5_cuda (entrada, nPwd, lPwd, digest, salt, pos, selectDevice, device);

freeCudaCtx();


Md5 espec fico2

MD5 específico

  • Parámetros:

    • entrada: passwords concatenados

    • nPwd: número de passwords

    • lPwd: longitud de la password

    • digest: digest con el que comparar

    • salt: salt ;-)

    • pos: devuelve la posición en la que haya sido encontrada una coincidencia, -1 si no

    • selectDevice: tarjeta gráfica

    • device: dispositivo a usar si parámetro anterior es true

  • Retorno:

    • 0: correcto

    • -1: no hay dispositivo CUDA compatible

    • -2: el password es menor que 1

    • -3: la longitud del password es mayor que 16


Md5 espec fico3

MD5 específico

//Creación de la cadena inicial

cadena = concatenar(password, salt, password)

hash = MD5(cadena)

cadena = concatenar(password, salt, "$1$", salt, hash, [0 ó password[0]])

hash = MD5(cadena)

for (int i=0;i<1000;i++)

{

//La creación de la cadena depende de la iteración

Si i es múltiplo de 2 => cadena = hash

e.o.c => cadena = password

Si i es múltiplo de 3 => cadena = concatenar(cadena, salt)

Si i es múltiplo de 7 => cadena = concatenar(cadena, password)

Si i es múltiplo de 2 => cadena = concatenar(cadena, password)

e.o.c => cadena = concatenar(cadena, hash)

hash = md5(cadena)

}

comparar(hash, entrada)


Md5 espec fico4

MD5 específico

  • Optimizaciones finales

    • 1 único kernel

      • Es peor el muro de memoria que la baja tasa de ocupación

      • El set-up pesa con 1000 iteraciones

      • La comparación en el mismo kernel

    • Uso de memoria compartida para:

      • Hash, password, temporales

    • Memoria de constantes (todos los hilos acceden a la vez – en caché)

      • Salt, hash de entrada

    • Accesos no bloqueantes a memoria compartida

    • Agrupación en palabras del mismo tamaño

      • Distinta configuración de bloques e hilos


Md5 espec fico5

MD5 específico

  • Optimizaciones finales

    • Caché de nivel 1 a 16K

      • La opción por defecto fue la óptima, sino no caben en memoria compartida todos los datos

      • No se usó la memoria de texturas porque en Fermi la L1 lo hace poco necesario

    • Desenrollado del bucle principal

      • Eliminar las condiciones if. 2 * 3 = 6 etapas -> 4 posibilidades (2^2)

      • Impacto mínimo, no se siguió desenrollando

    • Desenrollados implícitos y explícitos de bucles de pequeñas dimensiones

  • Resultado con claves de 8 bits

    • 830.000 claves/segundo


Md5 espec fico6

MD5 específico

  • Planificación

    • Multikernel

      • Baja sobrecarga en Fermi

      • Maximizar la ocupación

        • Limitar el número de registros

        • Optimizar el uso de la memoria compartida

      • Optimizaciones

        • Desenrollado

        • SM

        • Coalescencia

        • Caché

        • Texturas

        • Constantes

    • Único kernel

      • Demostró ser la mejor opción

        • Es peor el muro de memoria que la baja tasa de ocupación

        • El set-up pesa con 1000 iteraciones


Md5 espec fico7

MD5 específico

  • Resultados multikernel

    • 128 Hilos

      • MD5Todas_kernel → Occupancy = 0.5 ( 24 / 48 )

      • MD5Ofusc1_kernel → Occupancy = 0.666667 ( 32 / 48 )

      • MD5Ofusc2_kernel → Occupancy = 0.666667 ( 32 / 48 )

      • MD5Ofusck1_kernel → Occupancy = 0.666667 ( 32 / 48 )

      • MD5Ofusck2k3_kernel → Occupancy = 0.666667 ( 32 / 48 )

      • MD5Ofusck4_kernel → Occupancy = 0.666667 ( 32 / 48 )

      • MD5Ofusck5k6_kernel → Occupancy = 0.666667 ( 32 / 48 )

      • MD5Complete11_kernel → Occupancy = 0.666667 ( 32 / 48 )

      • MD5_Complete8_kernel → Occupancy = 0.666667 ( 32 / 48 )

  • Si se aumenta el tamaño de bloque hasta los 256 hilos, en los kernels que no usan memoria compartida


Md5 espec fico8

MD5 específico

  • Resultados multikernel (bucle principal desenrollado):

    • Config 1 → SharedMemory, 128

    • Config 2 → SharedMemory, 128, TEXTURES

    • Config 3 → SharedMemory, 128, L1 (16K)

    • Config 4 → SharedMemory, 128, TEXTURES, L1 (16K)

    • Config 5 → 128, TEXTURES

    • Config 6 → SharedMemory (128 hilos), 256, TEXTURES


Ndice4

Índice

  • Personal URJC

  • Estado del proyecto

    • Visión global

    • Algoritmos implementados

      • Extended MD5

      • UNRAR Attack

      • Office Attack

      • PDF Attack

    • Estructura de la librería general

  • Trabajo futuro

  • Recursos utilizados


Unrar attack

UNRAR Attack

  • Descripción general

    • Desencripta ficheros RAR

    • Basado en la codificación por bloques (EBC) de AES

    • Utiliza el mismo SALT en todos los bloques

    • Comprueba la cadena final (c4 3d 7b 00 40 07 00)

  • Precondición

    • Funciona con la 3.x encriptados con la opción “-hp” (datos y metadatos)

    • Todas las claves deberán tener el mismo tamaño

  • Entrada

    • Fichero RAR

    • Patrón de las claves

    • Conjunto de caracteres a probar

  • Salida

    • Imprime la clave encontrada por pantalla.


Unrar attack1

UNRAR Attack

  • Uso

    • Aún no está estructurado como una librería

    • Opción 1

      • Ejecutable que recibe los tres parámetros por la entrada

        • Juegos de caracteres:

          • [all; lower; upper; uppLow; numbers; numLow; numUpp; numLowUpp]

        • ./unrarhp encrypted_archive.rar 'foo???‘ all

    • Opción 2:

      • Función

      • voiddo_file(const char *file, const char *pattern, const char *charset)


Unrar attack2

UNRAR Attack

  • Algoritmo

    Salt = ExtraerSalt(Fichero)

    Cadena = ExtraerCadena(Fichero)

    RecursosCPU = 0.75 * CalcularRecursosCPU()

    RecursosGPU = 0.98 * CalcularResoruceGPU()

    Recursos = min(RecursosCPU, RecursosGPU)

    For (i = 0; i < numClaves(); i += Recursos)

    {

    claves = ExpandirClaves(Patron, i, i + Recursos)

    hashes = SHA1(Salt, Claves)

    TestPassword(Cadana, hashes)

    }


Unrar attack3

UNRAR Attack

  • Características:

    • Utiliza el SHA1 y el AES estándar

      • El AES es el cuello de botella

    • Cuando se usa 1 única GPU, no hace falta traerse los datos de memoria

    • Se implementó una versión multiGPU

      • Requiere cambiar el contexto

    • Requiere passwordsde la misma longitud

    • Se mejoró la funcionalidad de la expansión de claves

  • Resultados:

    • Los mismos que los obtenidos con el SHA1 y el AES estándar


Ndice5

Índice

  • Personal URJC

  • Estado del proyecto

    • Visión global

    • Algoritmos implementados

      • Extended MD5

      • UNRAR Attack

      • Office Attack

      • PDF Attack

    • Estructura de la librería general

  • Trabajo futuro

  • Recursos utilizados


Office attack

Office Attack

  • Descripción general:

    • Desencriptadode fichero Microsoft Office

    • 4 versiones de encriptación (convención nombres CNI)

      • 97 (40bits)

      • 2003 (RC4)

      • 2007 (Estándar)

      • 2010 (Agile)

    • Versión CPU adaptada para trabajar con múltiples passwords


Office attack1

Office Attack

  • Precondición

    • Todos los passwordsdeben tener el mismo tamaño

  • Entrada

    • Salt (hard-coded)

    • Cadena de comparación (hard-coded)

  • Salida

    • Clave encontrada por pantalla


  • Office attack2

    Office Attack

    • Uso

      • Programa en el que se incluyen como variables hard-codedel salt y la cadena de comparación de:

        • Un fichero de la versión del 97

        • Un fichero de la versión del 2003

        • Un fichero de la versión del 2007

        • Un fichero de la versión del 2010

      • No tiene estructura de librería


    Office attack3

    Office Attack

    • Características

      • Cada algoritmo define un algoritmo de hash y uno de encriptación

        • V97

          • RC4 y MD5

        • V2003

          • RC4 y SHA1

        • V2007

          • AES (ECB) y SHA1 (50.000 iteraciones)

        • V2010

          • AES (CBC) y SHA1 (50.000 iteraciones)

      • Es posible volver a la versión en CPU descimentando el código oportuno


    Office attack4

    Office Attack

    • Descripción de las funciones utilizadas

      • V97

        • Algoritmo: test_office_40bits (attack_office.c)

        • Hash: H_MD5 (funciones_cripto.h)

        • Encriptación: RC4_k_de (funciones_cripto.h)

      • V2003

        • Algoritmo: test_office_rc4 (attack_office.c)

        • Hash: H_SHA1 (funciones_cripto.h)

        • Encriptación: RC4_k_de (funciones_cripto.h)


    Office attack5

    Office Attack

    • Descripción de las funciones utilizadas

      • V2007

        • Algoritmo: test_office_standard (attack_office.c)

        • Hash: H_SHA1_LOOP y H_SHA1(funciones_cripto.h)

        • Encriptación: AES_ECB_k_de (funciones_cripto.h)

      • V2010

        • Algoritmo: test_office_agile (attack_office.c)

        • Hash: H_SHA1_LOOP y H_SHA1(funciones_cripto.h)

        • Encriptación: AES_CBC_k_de (funciones_cripto.h)


    Office attack6

    Office Attack

    • Optimizaciones

      • RC4:

        • Puesto que la entrada es fija se elimina el operador módulo

      • MD5:

        • Se elimina el bucle que prepara los datos si la entrada tiene una longitud menor que 16 (la mayoría de los casos)

      • SHA1:

        • Como se conoce el tamaño de la entrada y es múltiplo de 4 en lugar de leer char, se leen enteros (x4)

        • Si la entrada es de 16 bits se elimina un bucle (la mayoría de los casos)

        • Como el valor de las posiciones de memoria compartida son conocidas en la etapa de transformaciones, se omiten las primeras 20 operaciones de las 80

        • En la versión estándar y en la agile, el bucle del SHA1 se fusiona en un único kernel

          • Implementada en multikernel

      • AES

        • Se utiliza el estándar multitarjeta


    Office attack7

    Office Attack

    • Optimizaciones

      • Comparación de la clave fuera de la GPU

        • No es demasiada sobrecarga puesto que el resto de etapas son mucho más complejas

        • Podría funcionar en las versiones del 97 y del 2000

      • Las partes que se ejecutan en la CPU están paralelizadas con OpenMP

      • El tamaño de los bloques se determinó experimentalmente

      • Desenrollado de bucles no mejoraba la implementación


    Office attack8

    Office Attack

    • Resultados (tamaño de clave 8bytes – poco relevante)

      • 40 bits: 2,5M p/s

      • RC4: 7,9M p/s

      • Estándar: 10,9m p/s – 21,1m p/s (1 tarjeta - 2 tarjetas)

      • Agile: 5,4m p/s – 10,7m p/s (1 tarjeta – 2 tarjetas)


    Ndice6

    Índice

    • Personal URJC

    • Estado del proyecto

      • Visión global

      • Algoritmos implementados

        • Extended MD5

        • UNRAR Attack

        • Office Attack

        • PDF Attack

      • Estructura de la librería general

    • Trabajo futuro

    • Recursos utilizados


    Pdf attack

    PDF Attack

    • Descripción general

      • Desencriptado de ficheros PDF

      • Dos versiones:

        • R2

        • R34


    Pdf attack1

    PDF Attack

    • Precondición

      • Todos los passwordsdeben tener el mismo tamaño

    • Entrada

      • Datos de verificación

        • Metadatos (forma la clave del RC4 con el password –R34)

        • Texto plano (sólo se usa en R34, en R2 se usa una cadena estándar)

        • Cadena de comparación

    • Salida

      • Se indica por pantalla la clave encontrada


    Pdf attack2

    PDF Attack

    • Uso

      • Programa en el que se incluyen como variables hard-codedlos metadatos, el texto plano y la cadena de comparación de un fichero:

        • PDF R2

        • PDF R34

      • No tiene estructura de librería

    • Características

      • Los dos algoritmos utilizan un algoritmo de hashing(MD5) y otro de encriptación (RC4)


    Pdf attack3

    PDF Attack

    • Descripción de las funciones utilizadas

      • R2

        • Algoritmo: test_pdf_r2 (attack_pdf.c):

          • Parámetros de entrada

            • Estructura

            • Lista de passwords

        • Hash: H_MD5 (funciones_cripto.h)

        • Encriptación: RC4_deCmp (funciones_cripto.h)


    Pdf attack4

    PDF Attack

    • Descripción de las funciones utilizadas

      • R34

        • Algoritmo: test_pdf_r34 (attack_pdf.c)

          • Parámetros de entrada

            • Estructura

            • Lista de passwords

        • Hash: H_MD5 (funciones_cripto.h)

          • Versión normal y de 50 iteraciones (con entradas del mismo tamaño)

        • Encriptación: RC4_k_de y RC4_deCmp (funciones_cripto.h)


    Pdf attack5

    PDF Attack

    • Optimizaciones

      • RC4:

        • Comparación de claves en GPU para el último RC4

        • En el PDF V34:

          • Tamaño de entrada fijo. No es necesaria una operación módulo

          • RC4 normal

          • Fusión de RC4 encadenados


    Pdf attack6

    PDF Attack

    • Optimizaciones

      • MD5:

        • Tamaño de entrada fijo. Se leen enteros en lugar de char

        • En el PDF V34:

          • El bucle de MD5 encadenados se fusiona en un kernel

      • Las partes que se ejecutan en la CPU están paralelizadas con OpenMP

      • El tamaño de los bloques se determinó experimentalmente

    • Resultados (tamaño de clave 8 bytes – poco relevante)

      • R2: 10,7M p/s

      • R34: 1,7M p/s


    Ndice7

    Índice

    • Personal URJC

    • Estado del proyecto

      • Visión global

      • Algoritmos implementados

        • Extended MD5

        • UNRAR Attack

        • Office Attack

        • PDF Attack

      • Estructura de la librería general

    • Trabajo futuro

    • Recursos utilizados


    Estructura de la librer a general

    Estructura de la librería general

    • Descripción

      • Implementa de forma general los siguientes algoritmos

        • Hashing:

          • MD5

          • SHA1

        • Decodificación:

          • AES

          • RC5


    Estructura de la librer a general1

    Estructura de la librería general

    • MD5

      • Precondición

        • Todas las claves deben de tener la misma longitud

      • Entrada

        • Lista de claves, salt, hash con el que comparar el resultado

        • Dispositivo en el que se ejecuta el kernel

      • Salida

        • Posición de la clave correcta

        • -1 si dicha clave no se encuentra


    Estructura de la librer a general2

    Estructura de la librería general

    • SHA1

      • Precondición

        • Todas las claves deben de tener la misma longitud

        • No se puede dejar la salida en la memoria de la tarjeta gráfica si se usa multiGPU

      • Entrada

        • Lista de claves

        • Dispositivo en el que se ejecuta el kernel o multiGPU

        • Posibilidad de dejar el resultado en la memoria de la tarjeta gráfica

        • Iteraciones

      • Salida

        • Puntero con el HASH de la entrada

          • Puntero a MP o a la memoria de la GPU


    Estructura de la librer a general3

    Estructura de la librería general

    • AES

      • Precondición

        • Todas las claves deben tener la misma longitud

        • El bloque a desencriptar tiene un tamaño de 16 bits

      • Entrada

        • Lista de claves, vectores de inicialización, bloque a desencriptar

        • Dispositivo en el que se ejecuta el kernel o multiGPU

        • Posibilidad de dejar el resultado en la memoria de la tarjeta gráfica

        • Los datos de entrada pueden cogerse de la GPU o de MP

      • Salida

        • Bloque desencriptado


    Estructura de la librer a general4

    Estructura de la librería general

    • RC4

      • Precondición

        • Todas las claves deben tener la misma longitud

      • Entrada

        • Texto a descifrar, claves

      • Salida

        • Texto cifrado


    Estructura de la librer a general5

    Estructura de la librería general

    MD5

    #include<MD5_1-8.h>

    intnDevices= initCuda1_8();

    if(nDevices == -1) return-1;

    interror =

    MD5_cuda(entrada, nPwd, lPwd, digest, offset, pos, selectDevice, device);

    freeCudaCtx1_8();


    Estructura de la librer a general6

    Estructura de la librería general

    • Parámetros:

      • Pwd: passwordsvectorizados

      • nPwd: número de passwords

      • pwdL: longitud de los passwords

      • offset: espacio sin usar en la lista de passwords

      • pos: posición donde se ha encontrado un digest coincidente, -1 si no se encuentra

      • selectDevice: se fija si se pasa el dispositivo a usar en el siguiente parámetro

    • Retorno:

      • 0: correcto

      • -1: no hay dispositivo CUDA compatible

      • -2: el password es menor que 1

      • -3: la longitud del password es mayor que 16


    Estructura de la librer a general7

    Estructura de la librería general

    SHA1

    #include<SHA1.h>

    intnDevices= initCuda();

    if(nDevices == -1) return-1;

    intmem = avaMemCuda(device);

    interror =

    SHA1_call_kernel(digest, entrada, lEnt, nPsswd, offset, iteration, mulGPU, setDevice, deviceSelect, copyToCPU, d_digest);

    freeCudaSHA1(d_digest);

    freeCudaCtx();


    Estructura de la librer a general8

    Estructura de la librería general

    • Parámetros entrada:

      • entrada: cadenas de entrada

      • lEnta: longitud cadenas de entrada

      • nPsswd: número de cadenas

      • offset: espacio sin usar en las cadenas de entrada

      • mulGPU: utilizar multiGPU

      • setDevice: en el caso de singleGPU se puede fijar que tarjeta usar con el siguiente parámetro

      • deviceSelect: se selecciona que tarjeta usar

      • copyToCPU: se copian los datos obtenidos de CPU a GPU


    Estructura de la librer a general9

    Estructura de la librería general

    • Parámetros salida:

      • digest: vector de resultados en CPU

      • d_digest: vector resultado en GPU

    • Retorno:

      • 0: correcto

      • -1: no hay dispositivo CUDA compatible


    Estructura de la librer a general10

    Estructura de la librería general

    AES

    #include<rijndae.ch>

    interror =

    initRijndael(key, lKey, nKey, initVector, lIv, mulGPU, enGPU, dAesKey, dAesIv, selectDevice, device);

    if(error == -1) return-1;

    interror = blockDecryptRijndael(input, lInput, d_salida);

    //Libera los recursos tanto en la CPU como la GPU

    destroyRijndael();


    Estructura de la librer a general11

    Estructura de la librería general

    • Parámetros de inicialización:

      • key: vector claves

      • lKey: longitud claves

      • nKey: número de claves

      • initVector: vectores de inicialización

      • lIv: longitud vector inicialización

      • mulGPU: ejecución en múltiples GPUs

      • enGpu: los datos se encuentran en la GPU

      • dAesKey: puntero a las claves en la GPU

      • dAesIv: puntero a los vectores de inicialización en GPU

      • selectDevice: indica si se va a seleccionar algún dispositivo en concreto

      • device: dispositivo a usar


    Estructura de la librer a general12

    Estructura de la librería general

    • Parámetros de ejecución

      • input: bloque a desencriptar

      • lInput: tamaño del bloque

      • salida: bloque desencriptado

    • Retorno:

      • 0: correcto

      • -1: no hay dispositivo CUDA compatible


    Estructura de la librer a general13

    Estructura de la librería general

    RC4

    #include<rc4.h>

    intnDevices= initCuda();

    if(nDevices == -1) return-1;

    interror =

    rc4_call_kernel(key, lKey, text, lText, nKey, cypherT, selectDevice, device);

    freeCudaCtx();


    Estructura de la librer a general14

    Estructura de la librería general

    • Parámetros de inicialización:

      • key: vector claves

      • lKey: longitud claves

      • nKey: número de claves

      • text: texto a descifrar

      • lText: longitud de la cadena a descifrar

      • selectDevice: indica si se va a seleccionar algún dispositivo en concreto

      • device: dispositivo a usar

    • Retorno:

      • 0: correcto

      • -1: no hay dispositivo CUDA compatible


    Estructura de la librer a general15

    Estructura de la librería general

    • Optimizaciones

      • En todas las implementaciones se ha cuidado que no existan bloqueos en memoria compartida

      • Se ha intentado maximizar el uso memoria compartida

      • Se ha intentado maximizar la tasa de ocupación

      • Desenrollado de bucles automático y manual (ya está implementado)

      • Caché L1 automática

      • AES:

        • Sólo se almacenan 4 de las 8 tablas en MC. El resto se calculan dinámicamente

        • Se ha metido en memoria de constantes 1 tabla para la expansión de claves (RCOM) y el vector de inicialización

        • Se intentó, sin éxito, evitar la expansión de clave completa


    Ndice8

    Índice

    • Personal URJC

    • Estado del proyecto

      • Visión global

      • Algoritmos implementados

        • Extended MD5

        • UNRAR Attack

        • Office Attack

        • PDF Attack

      • Estructura de la librería general

    • Trabajo futuro

    • Recursos utilizados


    L neas de trabajo futuro

    Líneas de trabajo futuro

    • Generador de claves coalescente

      • Trabajar de forma coalescente desde el principio

      • Problema: desperdicio de espacio por alineamientos de 32 bits

    • Tratar de evitar los writebacks de memoria gráfica a memoria principal (en Office y PdfAttack principalmente)

    • Fusión de Kernels (en Office y PdfAttack principalmente)

      • Fusionar operaciones de distinto tipo

      • Pensar el uso de la memoria compartida

    • Mejorar la estructura de la librería

    • AMD

    • Nuevos algoritmos


    Ndice9

    Índice

    • Personal URJC

    • Estado del proyecto

      • Visión global

      • Algoritmos implementados

        • Extended MD5

        • UNRAR Attack

        • Office Attack

        • PDF Attack

      • Estructura de la librería general

    • Trabajo futuro

    • Recursos utilizados


    Recursos utilizados

    Recursos utilizados

    • Librerías

      • OpenSSL (http://www.openssl.org/)

      • CudaMultiforcer (http://www.cryptohaze.com/multiforcer.php)

      • Unrarhp (http://blog.zorinaq.com/?e=15)

    • Libros

      • CUDA

        • CUDA by Example: An Introduction to General-Purpose GPU Programming. Jason Sanders, Edward Kandrot

        • Programming Massively Parallel Processors: A Hands-on Approach (Applications of GPU Computing Series). David B. Kirk, Wen-mei W. Hwu

      • Criptografía:

        • The Design of Rijndael: AES - The Advanced Encryption Standard (Information Security and Cryptography). Joan Daemen,  Vincent Rijmen

        • Handbook of Applied Cryptography (Discrete Mathematics and Its Applications) . Alfred Menezes, Paul van Oorschot , Scott Vanstone


    Recursos utilizados1

    Recursos utilizados

    • Páginas Web

      • The MD5 Message-DigestAlgorithm(http://www.ietf.org/rfc/rfc1321.txt)

      • Secure Hash Standard (http://www.itl.nist.gov/fipspubs/fip180-1.htm)

      • The AES encryptionalgorithm (http://www.samiam.org/rijndael.html)

      • Hashkill (http://hashkill.sourceforge.net/)

      • John Savard's Home Page (http://www.quadibloc.com/crypto/co040401.htmUS)

      • Secure Hash Algorithm 1 (SHA1) RFC 3174 (http://rsync.tools.ietf.org/html/rfc3174)

      • Jeff Moser, Moserware (http://www.moserware.com/2009/09/stick-figure-guide-to-advanced.html)

      • OpenSSlproject (http://www.openssl.org/Wikipedia)

      • Wikipedia

        • Block cipher (http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation)

        • Padding (http://en.wikipedia.org/wiki/Padding_%28cryptography%29)

        • Initialization vector (http://en.wikipedia.org/wiki/Initialization_vector)

        • Criptografía simétrica (http://es.wikipedia.org/wiki/Criptograf%C3%ADa_sim%C3%A9trica)

        • Criptografía asimétrica (http://es.wikipedia.org/wiki/Criptograf%C3%ADa_asim%C3%A9trica)


  • Login