Paralelización en CUDA de varios modos de ataque a algoritmos de hashing

Use este enlace para citar
http://hdl.handle.net/2183/27336Coleccións
Metadatos
Mostrar o rexistro completo do ítemTítulo
Paralelización en CUDA de varios modos de ataque a algoritmos de hashingAutor(es)
Director(es)
Andrade Canosa, DiegoFraguela Rodríguez, Basilio
Data
2020-08Centro/Dpto/Entidade
Enxeñaría informática, Grao enDescrición
Traballo fin de grao (UDC.FIC). Enxeñaría informática. Curso 2019/2020Resumo
[Resumen]
Los algoritmos de hashing se utilizan habitualmente en el ámbito de la ciberseguridad
para encriptar información secreta, por ejemplo, se usan para la encriptación de todo tipo
de contraseñas. Por este motivo, los atacantes de sistemas informáticos suelen idear y poner
en práctica medios para desencriptar códigos hash. En todos ellos es necesario utilizar
recursos computacionales de altas prestaciones, pues una forma habitual de ataque consiste
en encriptar varias contraseñas candidatas obteniendo su código hash correspondiente, para
compararlo con el código hash objeto del ataque. Hashcat es una herramienta de código
abierto que implementa una gran variedad de estos ataques. Para hacer un uso eficiente de los
recursos computacionales disponibles en una plataforma dada, Hashcat utiliza principalmente
la plataforma de paralelización OpenCL. Esta plataforma es un estándar que permite explotar
las capacidades paralelas de todo tipo de procesadores multinúcleo y de tarjetas gráficas. Sin
embargo, el soporte de OpenCL por parte de muchos candidatos ha decaído en los últimos
años, siendo en algunos casos inexistente y en otros deficiente.
Esta falta de soporte de OpenCL es especialmente relevante en las tarjetas gráficas Nvidia,
donde el propio fabricante ofrece una alternativa propietaria llamada CUDA. En este trabajo
exploraremos las posibilidades de reemplazar el uso de OpenCL por el uso de CUDA en
hashcat. Estudiaremos hasta qué punto podemos mejorar el rendimiento de la herramienta
utilizando CUDA. Para ello deberemos realizar tres tareas fundamentales: (1) Una tarea de
ingeniería inversa para entender cómo funciona Hashcat internamente y el grado de soporte
que existe para la tecnología CUDA. Esta tarea es necesaria debido a la escasa documentación
que la aplicación aporta para sus desarrolladores. (2) Una tarea de análisis de rendimiento de
la herramienta Hashcat, y (3) efectuar una propuesta de mejora del soporte de CUDA dentro
de la aplicación, estudiando el efecto que esta mejora puede tener en el rendimiento. [Abstract]
Hashing algorithms are commonly used in the field of cybersecurity to encrypt secret
information, for example, they are used to encrypt all kinds of passwords. For this reason,
computer system attackers often devise and implement means to decrypt hash codes. In all of
them it is necessary to use high-performance computing resources, since a common form of
attack is to encrypt several candidate passwords obtaining their corresponding hash code, to
compare it with the hash code that is the object of the attack. Hashcat is an open source tool
that implements a wide variety of these attacks. To make efficient use of the computational
resources available on a given platform, Hashcat primarily uses the OpenCL parallelization
platform. This platform is a standard that allows you to exploit the parallel capabilities of all
types of multi-core processors and graphics cards. However, the support of OpenCL by many
candidates has declined in recent years, being in some cases non-existent and in others poor.
This lack of OpenCL support is especially relevant on Nvidia graphics cards, where the
manufacturer itself offers a proprietary alternative called CUDA. In this work we will explore
the possibilities of replacing the use of OpenCL with the use of CUDA in hashcat. We will
study how we can improve the performance of the tool using CUDA. For this we will have to
carry out three fundamental tasks: (1) A reverse engineering task to understand how Hashcat
works internally and the degree of support that exists for CUDA technology. This task is
necessary due to the scarce documentation that the application provides for its developers.
(2) A performance analysis task of the Hashcat tool, and (3) make a proposal to improve
CUDA support within the application, studying the effect that this improvement may have
on performance.
Palabras chave
CPU
GPU
Hash
CUDA
OpenCL
GPU
Hash
CUDA
OpenCL
Dereitos
Os titulares dos dereitos de propiedade intelectual autorizan a visualización do contido deste traballo a través de Internet, así como a súa reproducción, gravación en soporte informático ou impresión para o seu uso privado e/ou con fins de estudo e de investigación. En nengún caso se permite o uso lucrativo deste documento. Estos dereitos afectan tanto ao resumo do traballo como ao seu contido. Los titulares de los derechos de propiedad intelectual autorizan la visualización del contenido de este trabajo a través de Internet, así como su reproducción, grabación en soporte informático o impresión para su uso privado y/o con fines de estudio e investigación. En ningún caso se permite el uso lucrativo de este documento. Estos derechos afectan tanto al resumen del trabajo como a su contenido.