1 / 66

Bloque III

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Bloque III Estado del proyecto David Miraut Marcos García Ricardo Suárez

  2. Í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

  3. Í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

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

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

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

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

  8. Í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

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

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

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

  12. Í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

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

  14. 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();

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

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

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

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

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

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

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

  22. Í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

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

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

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

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

  27. Í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

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

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

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

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

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

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

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

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

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

  37. Í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

  38. PDF Attack • Descripción general • Desencriptado de ficheros PDF • Dos versiones: • R2 • R34

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

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

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

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

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

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

  45. Í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

  46. Estructura de la librería general • Descripción • Implementa de forma general los siguientes algoritmos • Hashing: • MD5 • SHA1 • Decodificación: • AES • RC5

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

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

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

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

More Related