¿Cómo se usan las GPU en los ataques de fuerza bruta?

51

He leído que las GPU pueden usarse en ataques de fuerza bruta? Pero, ¿cómo se puede hacer esto? ¿Es necesario que haya otros dispositivos de hardware (por ejemplo, discos duros)?

Nota: Estoy más interesado en la seguridad de las aplicaciones web, pero no quiero ponerme anteojeras. Lo siento si mi pregunta es ridícula para usted, pero mi fondo de hardware no es muy bueno. Solo sé cómo funcionan juntos los componentes básicos y cómo combinarlos.

    
pregunta Mahmud Muhammad Naguib 21.03.2016 - 20:50
fuente

7 respuestas

55

Estoy optando por suponer que estás preguntando por qué es un riesgo en lugar de cómo hackear.

Las GPU

son muy buenas para paralelizar operaciones matemáticas, que es la base de los gráficos de computadora y la criptografía. Normalmente, la GPU se programa usando CUDA o OpenCL . La razón por la que son buenos para los ataques de fuerza bruta es que son órdenes de magnitud más rápidas que una CPU para ciertas operaciones, no son intrínsecamente más inteligentes.

Las mismas operaciones se pueden hacer en una CPU, solo llevan más tiempo.

    
respondido por el Phil Lello 21.03.2016 - 21:04
fuente
51

Las personas han dado excelentes respuestas aquí que responden directamente a tu pregunta, pero me gustaría dar una respuesta complementaria para explicar en mayor detalle por qué las GPU son tan poderosas para esto y otras aplicaciones.

Como algunos han señalado, las GPU están especialmente diseñadas para ser rápidas con operaciones matemáticas, ya que dibujar cosas en su pantalla es todo matemático (trazar posiciones de vértice, manipulaciones de matrices, mezclar valores RBG, leer espacio de texturas, etc.). Sin embargo, esta no es realmente la principal fuerza impulsora detrás de la ganancia de rendimiento. La principal fuerza motriz es el paralelismo. Una CPU de gama alta puede tener 12 núcleos lógicos, donde un high end GPU estaría empaquetando algo así como 3072.

Para mantenerlo simple, el número de núcleos lógicos es igual al número total de operaciones simultáneas que pueden tener lugar en un conjunto de datos determinado. Digamos, por ejemplo, que quiero comparar u obtener la suma de los valores de dos matrices. Digamos que la longitud de la matriz es 3072. En la CPU, podría crear una nueva matriz vacía con la misma longitud, luego generar 12 hebras que iterarían entre las dos matrices de entrada en un paso igual al número de hebras (12) y al mismo tiempo, volcar la suma de los valores en la tercera matriz de salida. Esto llevaría 256 iteraciones en total.

Sin embargo, con la GPU, pude desde la CPU cargar esos mismos valores en la GPU y luego escribir un kernel que podría tener 3072 subprocesos generados contra ese kernel al mismo tiempo y completar toda la operación en una sola iteración.

Esto es útil para trabajar con cualquier información que pueda, por su naturaleza, admitir que se "trabaje" de forma paralela. Lo que estoy tratando de decir es que esto no se limita a las herramientas hacking / evil. Esta es la razón por la que GPGPU se está volviendo cada vez más popular, cosas como OpenCL, OpenMP y así han ocurrido porque la gente tiene nos dimos cuenta de que nosotros, los programadores, estamos atascados en nuestras pobres y pequeñas CPU con trabajo cuando hay una planta de energía masiva en la PC que apenas se usa por contraste. No es solo para el software de craqueo. Por ejemplo, una vez escribí un programa CUDA elaborado que tomó la historia de la lotería durante los últimos 30 años y calculé las probabilidades de ganar / ganar con boletos de varias combinaciones de todos los números posibles con un número variable de juegos por boleto, porque pensé que era una mejor opción. idea que usar estas grandes habilidades para conseguir un trabajo (esto es para las risas, pero lamentablemente también es cierto).

Aunque no necesariamente apoyo a las personas que realizan la presentación, esta presentación ofrece una presentación muy simple pero bastante una ilustración precisa de por qué la GPU es tan buena para cualquier cosa que pueda ser paralelizada, especialmente sin ningún tipo de bloqueo (que sostiene otros hilos, disminuyendo en gran medida los efectos positivos del paralelismo).

    
respondido por el user7933 21.03.2016 - 22:19
fuente
13

No necesita ningún otro dispositivo, solo una GPU adecuada y un software. Por ejemplo, cRARk puede usar su GPU para forzar contraseñas raras. Y oclhashcat puede usar tu GPU para forzar muchas cosas.

¿Por qué las GPU son mucho más rápidas que las CPU en el cracking? Debido a que el cracking es algo que puede ejecutar en paralelo (puede usar cada núcleo para probar diferentes contraseñas al mismo tiempo) y las GPU tienen muchos núcleos que se pueden usar en paralelo.

Por ejemplo: GeForce GTX980 Ti, que es una GPU de gama alta, tiene 2816 núcleos . Si bien ninguna CPU de PC tiene más de 16 cores (el más alto que conozco es 72-cores pero con propósitos de supercomputación y servidor).

¿Pero por qué las CPU tienen una pequeña cantidad de núcleos en comparación con las GPU? ¿No pueden hacer CPUs con muchos núcleos? Por supuesto que sí, pero no es beneficioso. Porque en general no es posible procesar en paralelo como gráficos. Muchos programas tienen que procesarse secuencialmente, e incluso si pueden procesarse en paralelo, no es común escribir un software para procesamiento paralelo, porque es más difícil para los desarrolladores.

Vea el gráfico a continuación:

Suponiendo que un promedio de% del procesamiento puede ser paralelizado, la aceleración es solo 2x con 16 núcleos. Por lo tanto, el aumento de los números de núcleo tiene rendimientos muy reducidos para las CPU.

    
respondido por el ferit 21.03.2016 - 20:58
fuente
3

En el trabajo tenemos servidores especiales que resuelven "problemas de enrutamiento computacionalmente difíciles". Cada host está bastante bien especificado con cuatro sockets y xeons de cuatro núcleos, por lo que 16 núcleos físicos y HT además de eso. Llámalo 32 núcleos.

Cada caja tiene un chasis expansor PCIe, y en él hay varias GPU NVidia de gama alta y las grandes unidades de alimentación para alimentarlas. Dado que cada tarjeta gráfica tiene aproximadamente 2000 núcleos CUDA, funciona con alrededor de 30,000 núcleos CUDA por host.

Por lo tanto, si movemos la mano y llamamos a un núcleo de CUDA el equivalente a un núcleo de CPU, este servidor es el mismo que mil servidores que se ejecutan en las CPU normales. Hay muchos problemas porque los núcleos CUDA no son buenos para algunas tareas, pero son muy buenos para otras.

Imagine resolver el problema del vendedor ambulante al enumerar todas las rutas posibles y elegir la mejor. O enumere todos los movimientos de ajedrez posibles del tablero actual y elija el único movimiento que le dé las mayores posibilidades de éxito para su próximo movimiento.

¡No necesita ninguna heurística apestosa cuando se han calculado todas las respuestas posibles! Y esa es la definición de un ataque de fuerza bruta.

    
respondido por el Criggie 23.03.2016 - 02:04
fuente
2

Un GPU brute forcer es simplemente una PC con una o más GPU de gama alta. Ejecuta algún tipo de software de descifrado de contraseñas, que está optimizado para usar la potencia de procesamiento de GPU especializada para operaciones matemáticas de alto rendimiento en grandes cantidades.

Por lo general, necesita una PSU de potencia relativamente alta, ya que las tarjetas gráficas consumen bastante energía, y un disco duro grande puede ayudarlo con algunas tareas, como sostener diccionarios grandes para que usen los ataques.

Todo lo que hace es hacer hash cosas muy rápidamente, ya sea desde diccionarios o desde generadores que generan secuencias de caracteres para cubrir todo el espacio clave. Luego compara los resultados del hash con un hash de destino, que generalmente se ha recuperado de un sistema bajo ataque.

    
respondido por el Matthew 21.03.2016 - 21:06
fuente
2

Es posible que desee ver este enlace enlace . La ventaja de una GPU es paralelizar los cálculos logarítmicos discretos masivos necesarios para descifrar un sistema criptográfico.

  

Resumen. El análisis de criptoanálisis de cifrados simétricos y asimétricos es computacionalmente extremadamente exigente.   Dado que los parámetros de seguridad (en particular la longitud de la clave) de casi todos los criptográficos prácticos   los algoritmos se eligen de modo que los ataques con computadoras convencionales sean computacionalmente inviables,   la única forma prometedora de abordar los cifrados existentes (suponiendo que no haya avances matemáticos) es   construir hardware de propósito especial. Dedicar esas máquinas a la tarea de criptoanálisis lleva a cabo la   promesa de una relación costo-rendimiento dramáticamente mejorada para que la ruptura de cifrados comerciales   viene a su alcance.   Esta contribución presenta el diseño y la realización de la COPACOBANA (coste paralelo paralelo).   Code Breaker), que está optimizada para ejecutar algoritmos criptoanalíticos y puede   Realizarse por menos de US $ 10,000. Se mostrará que, dependiendo del algoritmo real,   La arquitectura puede superar a las computadoras convencionales en varios órdenes de magnitud. COPACOBANA   alberga 120 FPGA de bajo costo y puede, por ejemplo, realizar una búsqueda exhaustiva de claves del   Estándar de cifrado de datos (DES) en menos de nueve días en promedio. Como una aplicación del mundo real,   Nuestra arquitectura se puede utilizar para atacar documentos de viaje legibles por máquina (ePass). COPACOBANA   está destinado, pero no necesariamente restringido a resolver problemas relacionados con el criptoanálisis.   La arquitectura de hardware es adecuada para problemas computacionales que son paralelizables y   Tienen bajos requerimientos de comunicación. El hardware se puede utilizar, por ejemplo, para atacar la curva elíptica   Criptosistemas y números de factor. Aunque se rompa el RSA de tamaño completo (1024 bits o más) o   Las curvas elípticas (ECC con 160 bit o más) están fuera de alcance con COPACOBANA, se puede usar   para analizar sistemas criptográficos con una longitud de bit pequeña (elegida deliberadamente) para proporcionar seguridad confiable   estimaciones de RSA y ECC por extrapolación3   .

    
respondido por el Dendi Suhubdy 23.03.2016 - 23:39
fuente
2

Todas las respuestas muy técnicas, pero para ponerlo en un contexto más real.

Cuando tiene un trabajo simple que hacer, por ejemplo, hacer sonar sus artículos en el supermercado hasta que pagar por ellos, ¿es mejor tener un pago o 1024? Seguro que una verificación funcionará, y puedes hacerlo realmente sofisticado con muchos trucos para acelerar las cosas para que funcione mejor que uno normal. Pero al final del día, las personas solo pueden trabajar tan rápido y los compradores a menudo ralentizan las cosas. Por lo tanto un montón de tills es mejor.

A la inversa, cuando tienes un trabajo muy difícil de hacer, como la cirugía. ¿Es mejor tener un cirujano realmente experto respaldado por un equipo pequeño pero bueno o un ejército de carniceros que sean buenos en lo que hacen, pero que básicamente solo pueden cortar cosas?

    
respondido por el chris scott 24.03.2016 - 16:16
fuente

Lea otras preguntas en las etiquetas