Nuestro blog presenta numerosos artículos sobre cómo descifrar contraseñas y acceder a datos cifrados, desde sencillas guías prácticas hasta manuales completos. Sin embargo, muchas de las preguntas que nos hacen con frecuencia no se refieren a aspectos técnicos sino más bien a los conceptos básicos de la recuperación de contraseñas. ¿Puedes romper esa contraseña? ¿Es legal? ¿Cuánto tiempo crees que llevará romper este? Tenemos las respuestas, pero requieren profundizar en el extenso contenido de nuestro blog. Para abordar esto, hemos creado un artículo completo de la A a la Z que no solo responde a muchas preguntas comunes, sino que también incluye enlaces a nuestras publicaciones anteriores.
¿Por qué atacamos las contraseñas (y no el cifrado)?
Atacamos las contraseñas en lugar del cifrado porque los métodos de cifrado modernos son extremadamente seguros y prácticamente irrompibles debido a su complejidad y claves de gran longitud. El algoritmo AES-256 estándar de la industria utilizado en prácticamente todos los formatos cifrados emplea claves de 256 bits, creando una cantidad astronómica de combinaciones posibles que tomaría una cantidad de tiempo inviable para descifrarlas mediante fuerza bruta. Las contraseñas, por otro lado, son el punto de entrada a este cifrado y, a menudo, son mucho más débiles debido a las limitaciones humanas para recordar cadenas complejas. Por lo tanto, es más práctico y eficiente apuntar a la contraseña misma en lugar de intentar romper el algoritmo de cifrado.
¿Qué es el “cifrado fuerte”?
El cifrado fuerte es un tipo de cifrado que no se puede descifrar en un período de tiempo razonable atacando directamente la clave de cifrado. Un método de cifrado sólido no debería tener vulnerabilidades que permitan a un atacante reducir significativamente el tiempo necesario para descifrarlo. Para descifrar datos protegidos por un cifrado seguro, se debe conocer la contraseña o poseer la clave de cifrado original. El algoritmo de cifrado AES con claves de 256 bits se considera seguro ya que no se han descubierto vulnerabilidades durante los muchos años de uso. Por lo tanto, si se utiliza un cifrado seguro, atacar la contraseña es la única forma viable de acceder a los datos cifrados.
¿La computación cuántica cambiará eso?
La computación cuántica tiene el potencial de cambiar el panorama del descifrado de cifrado. Si bien los métodos de cifrado clásicos son increíblemente seguros contra ataques con métodos informáticos tradicionales, las computadoras cuánticas pueden procesar información de maneras fundamentalmente diferentes. El algoritmo de Grover, que podrían utilizar las computadoras cuánticas, reduciría la longitud efectiva de la clave de AES-256 a 128 bits, reduciendo enormemente el tiempo necesario para forzar la clave de cifrado, pero incluso las claves de 128 bits son prácticamente irrompibles. Sin embargo, AES-256 todavía se considera seguro frente a ataques cuánticos porque requeriría una computadora cuántica con capacidades mucho más allá de lo que es factible actualmente. Por lo tanto, si bien la computación cuántica plantea desafíos futuros (u oportunidades, según de qué lado se esté), todavía no cambia fundamentalmente el enfoque de atacar las contraseñas como punto de entrada al cifrado.
¿Es legal romper contraseñas?
La respuesta corta es «depende». Las jurisdicciones regulatorias tienen reglas diferentes; en algunos países, los sospechosos deben revelar sus contraseñas cuando las autoridades los interrogan (bienvenidos a Francia, el país de la Liberté). Obviamente, nadie puede impedirle descifrar su propia contraseña perdida u olvidada; sin embargo, si esta contraseña protege el acceso a sus datos almacenados en algún servicio en línea, en realidad no importa que la cuenta sea suya ya que no puede atacarla legalmente. En otras palabras, descifrar contraseñas es perfectamente legal si trabaja con datos locales y los datos son suyos, o si tiene el permiso del propietario legal, o si trabaja para autoridades legales y sigue las regulaciones locales. Descifrar los datos de otra persona puede ser un delito penal, pero existe una enorme zona gris.
¿Es mucho un millón de contraseñas por segundo?
Contamos con una herramienta que aprovecha el poder computacional de las GPU modernas junto con los procesadores multinúcleo modernos para maximizar la velocidad de los ataques a contraseñas. Los puntos de referencia demuestran la velocidad de recuperación en varias configuraciones de hardware para diferentes formatos de cifrado. Estas velocidades varían ampliamente; para algunos formatos, incluso el mejor hardware sólo puede probar unas pocas contraseñas por segundo, mientras que para otros, las velocidades pueden alcanzar millones de contraseñas por segundo.
Entonces, ¿un millón de contraseñas por segundo es mucho o poco?
La cuestión es que ésta no es la pregunta correcta. La pregunta correcta sería «¿Qué tipo de contraseñas se pueden descifrar en un período de tiempo determinado a una velocidad de un millón de contraseñas por segundo?» o «¿Cuánto tiempo llevará descifrar una determinada contraseña a un ritmo de un millón de contraseñas por segundo?» Para responderlas, publicamos algunas fórmulas que permitirán calcular la respuesta.
En el primer escenario, existe una situación típica en la que ni la longitud ni la complejidad de la contraseña se conocen de antemano, pero hay un cierto límite de tiempo sobre cuánto tiempo podemos dedicar al ataque. En el segundo escenario, el límite está en la longitud máxima y la complejidad de la contraseña (por ejemplo, solo probamos contraseñas que contienen dígitos y letras latinas en ambos casos más un pequeño conjunto de caracteres especiales), mientras calculamos el tiempo necesario para probar todas las posibles. combinaciones.
Por ejemplo, si una determinada contraseña puede ser atacada a la velocidad de 10 millones de contraseñas por segundo, no tomaría más de cinco minutos recuperar una contraseña que consta de sólo 5 letras latinas en ambos casos. Si la velocidad es de 100 contraseñas por segundo y la contraseña tiene al menos 7 caracteres y tiene símbolos del rango de caracteres extendido, el tiempo máximo de ataque aumenta a alrededor de 700 mil millones de segundos, o aproximadamente 22.000 años. Puedes encontrar fórmulas para calcular los tiempos de ataque y mucha más información útil en nuestra guía.
¿Cómo comparar las velocidades de recuperación de contraseñas?
La recuperación de contraseñas de evaluación comparativa es un poco más compleja de lo que los bonitos gráficos pueden sugerir. Siempre realizamos pruebas utilizando un método de ataque completo de fuerza bruta con una longitud de contraseña fija y una limitación específica del juego de caracteres. Además, las pruebas siempre se realizan ejecutando un ataque de fuerza bruta. El ataque de fuerza bruta nos permite medir la velocidad de ataque puro en un modelo de GPU o CPU en particular. Otros métodos de ataque, como ataques de máscara, ataques de diccionario o ataques híbridos más complejos, requieren cálculos adicionales que pueden limitar la utilización de la tarjeta gráfica. Finalmente, no comenzamos las mediciones inmediatamente. En cambio, esperamos varios minutos hasta que el ataque se «resuelva», dándole a la herramienta algo de tiempo para cargar y compilar el código requerido en la GPU.
¿Por qué necesitamos tarjetas de video? ¿Qué pasa con los ataques distribuidos?
La mayoría de los métodos de protección con contraseña se basan en múltiples rondas de iteraciones hash para frenar los ataques de fuerza bruta. Incluso los procesadores más rápidos se ahogan al intentar descifrar una contraseña razonablemente segura. Las tarjetas de video se pueden usar para acelerar la recuperación con aceleración de GPU, sin embargo, el mercado de GPU está actualmente sobrecalentado y la mayoría de las tarjetas de video de alta gama tienen un precio muy excesivo. Hoy probaremos un montón de tarjetas de video de gama baja y compararemos su relación precio/rendimiento.
El uso de núcleos de GPU en lugar de la CPU ayuda a descifrar contraseñas más rápido. Incluso la GPU integrada más lenta con un TDP de varios vatios puede demostrar un rendimiento comparable al de una CPU de 190 W sin esfuerzo. Las GPU de gama alta, como la NVIDIA RTX 4080, pueden descifrar contraseñas hasta 500 veces más rápido en comparación con una CPU Intel Core i7 común, mientras que las tarjetas de video de gama media ofrecen un aumento de hasta 250 veces.
La aceleración de GPU descarga cálculos computacionales intensivos desde la CPU de la computadora a las Compute Units (CU) de la tarjeta de video. Una tarjeta de video dedicada puede ofrecer una velocidad que supera con creces las métricas de una CPU de alta gama. Incluso una modesta GPU integrada (la que está integrada en una CPU) puede igualar o superar el rendimiento del procesador central mientras consume significativamente menos electricidad y disipa una fracción del calor producido por la CPU con una carga similar.
A menudo, incluso varias tarjetas gráficas de alto rendimiento pueden no ser suficientes para recuperar con éxito una contraseña en un período de tiempo razonable. En tales casos, la informática distribuida (consulte Elcomsoft Distributed Password Recovery) viene al rescate. La eficacia de la informática distribuida frente al uso de GPU depende en gran medida del formato de los datos y del algoritmo hash. Si los datos se pueden acelerar en una GPU, incluso las tarjetas gráficas básicas pueden superar a una gran red de computadoras no aceleradas. Sin embargo, varias computadoras, cada una equipada con varias GPU potentes, pueden proporcionar una ventaja significativa sobre una sola computadora. En particular, algunos algoritmos no se pueden acelerar en absoluto en las GPU, lo que hace que la computación distribuida sea la única opción para acelerar el ataque.
Por lo tanto, si bien una red distribuida es generalmente mejor, cada computadora de la red debe estar equipada con GPU potentes para un rendimiento óptimo.
¿Las tarjetas de video eventualmente reemplazarán a las CPU?
Esto es muy improbable. Las GPU no reemplazarán a las CPU debido a sus diferencias arquitectónicas fundamentales. Las GPU destacan por paralelizar una única operación en miles de subprocesos, lo que las hace muy eficientes para tareas como descifrar contraseñas. Sin embargo, para las tareas cotidianas, las CPU son más adecuadas porque sus núcleos pueden funcionar de forma totalmente independiente. Esta independencia permite a las CPU manejar una variedad de tareas simultáneamente, mientras que cada núcleo de GPU es más lento que un núcleo de CPU individual y solo puede realizar la misma operación al mismo tiempo. Por lo tanto, mientras que las GPU son más rápidas para tareas paralelizables específicas, las CPU son necesarias para las tareas diversas e independientes que se encuentran en la informática diaria.
¿Qué tarjeta de video es mejor para descifrar contraseñas?
Si está buscando un sistema nuevo, compre la placa NVIDIA más potente de la generación actual que se ajuste a su presupuesto. Si ya tiene GPU de generación anterior, puede continuar usándolas si son lo suficientemente potentes; si no, ver arriba. Tenga en cuenta que las GPU de la generación anterior generalmente no valen la pena si compra nuevas, incluso si el precio parece atractivo.
¿Qué pasa con FPGA/ASIC?
Son excelentes en teoría, no tanto en la vida real debido a su alto costo y soporte de software limitado. Por supuesto, se podría construir un ASIC rentable, pero su precio sólo baja lo suficiente con una economía de escala. Simplemente no hay suficiente demanda desde la perspectiva de descifrar contraseñas para construir un ASIC rentable, y no nos olvidemos del soporte de software aún limitado. Si busca hardware de aceleración eficiente, busque GPU de bajo consumo.
Cómo construir una computadora eficiente para descifrar contraseñas
El consumo de energía y la eficiencia energética son dos parámetros cruciales que a menudo se pasan por alto en favor de la pura velocidad. Al construir una estación de trabajo con una carga de trabajo 24 horas al día, 7 días a la semana, las cifras absolutas de rendimiento se vuelven posiblemente menos importantes en comparación con el rendimiento por vatio.
Construir un centro de datos: calcular el consumo de energía
Al construir un centro de datos con varias computadoras equipadas con GPU que consumen mucha energía, es fundamental calcular el consumo total de energía del sistema en su conjunto para garantizar una planificación precisa del suministro de energía y la disipación de calor.
Por ejemplo, considere una configuración con cien GPU, cada una con un consumo máximo de 300 W, instaladas en varias estaciones de trabajo. Además de estos, estaría el número necesario de UPS. En conjunto, esta configuración requeriría al menos 45 KW de potencia. No sólo necesitarás un suministro de energía adecuado, sino también suficiente aire acondicionado para enfriar la habitación.
¿Cómo funciona el cifrado? ¿Cuál es la diferencia entre contraseñas y claves de cifrado?
Las contraseñas se utilizan para proteger el acceso a documentos, bases de datos, archivos comprimidos, discos cifrados y muchas otras cosas que se puedan imaginar. Cuando se trata de cifrado, las contraseñas casi nunca se almacenan, estén cifradas o no. En cambio, las contraseñas se «hashean» o se transforman con una función unidireccional. El resultado de la transformación, si se realiza correctamente, no se puede revertir y la contraseña original no se puede «descifrar» a partir del resultado de una función hash.
Los hashes de contraseñas sin formato rara vez se utilizan directamente como claves de cifrado. Por ejemplo, muchas herramientas de cifrado de disco pueden utilizar contraseñas para cifrar un llamado «protector», que a su vez se utiliza para proteger la «clave de cifrado de clave», que a su vez se utiliza para proteger la «clave de cifrado de medios», que a su vez turn finalmente se utiliza para cifrar y descifrar datos. En particular, existen tipos de protectores que no utilizan contraseñas en absoluto (en cambio, pueden emplear TPM, claves de recuperación o unidades flash USB para desbloquear el disco). La contraseña es lo único que se puede romper probando varias combinaciones diferentes.
Por lo general, una contraseña se codifica mediante múltiples rondas de una función de transformación unidireccional y luego se almacena en el encabezado del archivo, lo que permite verificar la contraseña sin descifrar realmente el contenido cifrado. La clave de cifrado en sí es diferente del hash guardado, pero los ataques de contraseña se realizan contra este hash. Si se encuentra la contraseña correcta, la clave de cifrado se calcula por separado. A veces, el hash de la contraseña no se almacena en el encabezado del archivo, lo que requiere descifrar parte o la totalidad de los datos para verificar la contraseña, lo que ralentiza el ataque. La velocidad de dicho ataque depende del tamaño de los datos que necesitan descifrarse. Un formato común que utiliza este enfoque son los archivos RAR4. La versión posterior, RAR5, ya no utiliza este enfoque.
¿Qué tipos de ataques están disponibles?
Existen varios métodos para recuperar la contraseña original, desde fuerza bruta hasta ataques muy complejos basados en reglas.
En teoría, durante un ataque de fuerza bruta se probarían todas las combinaciones posibles de contraseñas hasta una determinada longitud, pero en la práctica, esto suele limitarse a un subconjunto de caracteres (como letras latinas mayúsculas y minúsculas, dígitos y algunos caracteres especiales). Dado que el conjunto Unicode completo tiene 149.186 caracteres, ejecutar un ataque de fuerza bruta en todo el conjunto de caracteres es simplemente inviable. Incluso una contraseña de tres caracteres compuesta por el conjunto completo de Unicode tomaría un tiempo imprácticamente largo para descifrarla. En realidad, las contraseñas rara vez incluyen símbolos de conjuntos de caracteres tan diversos y extendidos, por lo que los ataques de fuerza bruta suelen limitarse a determinados alfabetos.
Los ataques de fuerza bruta son los más rápidos, pero debido a la mayor cantidad de contraseñas que uno debe probar durante estos ataques, la fuerza bruta es el último recurso cuando se agotan todas las demás opciones. Dado que la fuerza bruta es extremadamente ineficiente para contraseñas más largas, se inventaron otros tipos de ataques para reducir la cantidad de contraseñas a probar. Los ataques de diccionario utilizan palabras del diccionario del idioma inglés (y/o del idioma nativo del usuario) como posibles contraseñas. También están disponibles otros ataques que utilizan máscaras, mutaciones y reglas personalizadas.
El orden importa
Con los muchos tipos de ataques de recuperación de contraseñas, ¿cuándo usarías cada uno de ellos y en qué orden? El siguiente artículo explica cómo solicitar trabajos de recuperación de contraseña según los tipos de datos y la información disponible sobre el propietario.
GPU and CPU utilization
When it comes to encryption, data formats differ in various ways. One of the major differences is the type of hardware that can be used for running and accelerating password recovery attacks. There are three main scenarios:
- Brute force supports GPU acceleration, with minimal CPU usage.
- Brute force only works on CPUs, making GPUs irrelevant. GPU acceleration not supported.
- Both GPUs and CPUs are utilized, with GPUs doing the bulk of the work and CPUs providing additional support (sometimes using multiple cores).
GPU-accelerated attacks
GPUs excel at performing multiple simple calculations in parallel across many cores. This makes them ideal for brute force attacks on formats that can be split into a large number of simple tasks. When a job can be split to run across thousands of GPU cores, the few cores of the computer’s CPU become insignificant, as they add minimal performance gains while increasing overhead.
Ataques solo a CPU (algoritmos resistentes a GPU)
Algunos algoritmos están diseñados para resistir ataques acelerados por GPU. Esto se puede lograr por varios medios. Por un lado, los núcleos de GPU manejan bien tareas simples, pero fallan con cálculos más complejos requeridos por algunas transformaciones de contraseña a clave binaria. Estos algoritmos deben ejecutarse en CPU, lo que ralentiza significativamente la velocidad de ataque.
Ataques asistidos por GPU con alta utilización de CPU
Algunos algoritmos utilizan núcleos de GPU y CPU. Normalmente, la GPU maneja la mayor parte de la carga de trabajo, mientras que la CPU realiza tareas de soporte esenciales. Por ejemplo, una potente CPU de 16 núcleos puede ayudar a la GPU, pero no igualará la velocidad de fuerza bruta que puede alcanzar la GPU por sí sola.
Los ataques que no son de fuerza bruta, que suelen ser más eficientes, aún cargan mucho la CPU. Estos ataques «inteligentes» son más lentos que la fuerza bruta porque dependen de lotes de contraseñas que deben generarse. En ciertos formatos, la CPU puede tener dificultades para generar lotes de contraseñas lo suficientemente rápido como para cargar completamente la GPU, lo que requiere que la generación se ejecute en la propia GPU, lo que sobrecarga aún más la GPU y ralentiza el ataque.
Algoritmos que requieren mucha memoria
Algunos algoritmos hash están diseñados para frustrar los ataques a la GPU al requerir un uso significativo de la memoria. Por ejemplo, el algoritmo Scrypt, utilizado en BestCrypt, garantiza que incluso las computadoras más débiles puedan verificar una sola contraseña sin problemas, pero intentar ejecutar muchas comprobaciones en paralelo en una GPU agotaría rápidamente su memoria. Esta elección deliberada de diseño hace que dichos algoritmos sean resistentes a la GPU.
Por Oleg Afonin para elcomsoft.com