Feeds:
Entradas
Comentarios

Posts Tagged ‘contraseñas’

La mejor contraseña es aquella más larga

Este mito, sorprendentemente extendido, no es completamente falso, sino que se trata de una verdad a medias. Por supuesto, conviene dejar claro desde un principio que “mejor“, para el contexto que nos ocupa, quiere decir “más segura“; pues podríamos definir otras métricas para establecer la calidad: más fácil de recordar, más graciosa

Por supuesto, es obvio que la mejor contraseña, desde el punto de vista de la seguridad, es aquella que resulta más complicada de romper, violar, obtener de forma fraudulenta, etc. Lo cual nos lleva a otra cuestión: ¿cómo se rompen las contraseñas?

Como caso general, podemos decir que mediante los denominados ataques de fuerza bruta. Cuando éstos se realizan sobre el conjunto de todas las posibles contraseñas, se denominan simplemente ataques de fuerza bruta. Cuando, por contra, se realizan sobre un conjunto definido de pruebas, se denominan ataques mediante diccionario. Así, podemos decir que un ataque mediante diccionario es un caso particular de un ataque de fuerza bruta. A su vez, existen casos particulares de ataques mediante diccionario, cuando la generación del diccionario de ataque se lleva a cabo mediante técnicas concretas, como los generadores de Markov, o la utilización de máscaras o expresiones regulares de generación.

También existen otros casos particulares de los ataques de fuerza bruta, pero diferentes de los ataques mediante diccionario. Un ejemplo sería la utilización de tablas hash precalculadas, como por ejemplo las famosas tablas Rainbow.

Sea como fuere, al final, el ataque suele consistir en probar todas las posibilidades de un conjunto dado, que normalmente es generado mediante algún algoritmo. Además, el ataque puede ir dirigido contra un servicio de autenticación (como comenté hace poco), o contra el almacén de contraseñas, entre otros. El ataque a servicios de red suele conllevar ciertas circunstancias no deseables: es más lento, es muy ruidoso (y, por tanto, fácilmente detectable), y deja muchas huellas. Por otra parte, atacar al almacén de contraseñas (en el caso de que éste sea ininteligible, que debería serlo) requiere el cálculo constante de valores hash para las pruebas.

En cualquier caso, podemos definir dos características que hacen a una contraseña fuerte.

En primer lugar, la contraseña debe ser “no obvia“; esto es, que no pueda encontrarse en un diccionario. Esto incluye diccionarios genéricos, así como diccionarios que pudieran generarse ad-hoc para un determinado caso (por ejemplo, palabras significativas para un determinado individuo, encontradas en los documentos de su disco duro, etc.). Siendo más formales, la contraseña debe contener la mínima información (máxima entropía) posible, o lo que es lo mismo, ser aleatoria (o al menos parecerlo). Esto dificulta también el uso de ataques con generadores de Markov, al no existir un modelo de Markov subyacente en la información aleatoria.

En segundo lugar, la contraseña debe ser “compleja“; esto es, que sea larga (aquí se encuentra la verdad parcial de nuestro mito) y que su alfabeto de generación sea lo más amplio posible. El número de posibles combinaciones de contraseñas, para una longitud y un alfabeto dados, se puede expresar como A^L, siendo A el número de elementos del alfabeto y L la longitud. Así, y para una misma longitud, tenemos que cuanto mayor sea el alfabeto, más combinaciones existirán, y por tanto más compleja será la contraseña.

Es más, se da la circunstancia de que, en ocasiones, un alfabeto más amplio y una longitud menor generan un mayor número de combinaciones. Por ejemplo, las posibles contraseñas en mayúsculas y minúsculas de 5 caracteres son 52^5; mientras que las posibles contraseñas numéricas de 8 caracteres son 10^8. Dado que 52^5 es aproximadamente 380 millones, mientras que 10^8 es exactamente 100 millones, vemos que una contraseña de 5 caracteres con mayúsculas y minúsculas es aproximadamente cuatro veces más compleja que una de 8 caracteres numéricos.

Resumiendo, la seguridad de una contraseña depende principalmente de tres factores:

  • La entropía de la misma, que debería ser máxima. Idealmente, generada de forma aleatoria.
  • La complejidad de la misma, que a su vez depende de…
    • La longitud de la misma, que debería ser lo mayor posible.
    • El alfabeto de generación de la misma, que debería ser lo más complejo posible.

Por supuesto, esto se refiere exclusivamente a las contraseñas en sí mismas. En la seguridad de cualquier sistema intervienen muchos otros elementos potencialmente atacables: claves de cifrado, vulnerabilidades, ingeniería social… así que tampoco conviene confiar ciegamente en una buena contraseña.

Como siempre, espero que os haya resultado interesante.

Read Full Post »

Crackear contraseñas es una necesidad inherente al ser humano. Bueno, a algunos seres humanos…

Hoy en día, con procesadores de varios núcleos hasta en los teléfonos móviles, y con tarjetas gráficas más potentes que los procesadores principales, el crackeo de contraseñas tradicional con un único hilo no tiene demasiado sentido. Necesitamos aplicaciones que aprovechen el paralelismo de las arquitecturas existentes. Y de hecho, ya existen algunas maravillas como pyrit.

Hoy os presento una aplicación de esas características. Hashkill es un crackeador de contraseñas multihilo para Linux, que permite utilizar tanto la CPU como la GPU, para lanzar ataques de fuerza bruta, de diccionario, híbridos o de markov.

La lista de plugins disponibles -es decir, algoritmos que puede crackear- es muy interesante:

Plugins de hashkill

Plugins de hashkill

La instalación es tan simple como ejecutar la siguiente orden, sobre el contenido del paquete descomprimido:

ramiro@cormanthor:~$ sudo ./install.sh

Después, para utilizar la CPU en el ataque lanzaremos “hashkill-cpu”, y para utilizar la GPU lanzaremos “hashkill-gpu”. Los distintos parámetros permiten elegir el plugin a utilizar (algoritmo a atacar), el tipo de ataque, las reglas de generación de las contraseñas (longitud, alfabeto, prefijos, permutaciones…), etc.

Opciones de hashkill

Opciones de hashkill

Aquí tenéis un ejemplo de ataque markov contra un hash MD5, usando las reglas de generación por defecto (longitud de 1 a 8, generación lalphanum), contra una contraseña de 6 caracteres.

Cracking de contraseñas con hashkill

Cracking de contraseñas con hashkill

En mi caso particular, lanzar el ataque con mi CPU (AMD Phenom II 965 X4 Black Edition) supone el cálculo de unos 123 millones de hashes por segundo, con los cuatro núcleos a tope. Lanzar el ataque con mi GPU (NVIDIA GeForce 8300 integrada en la placa) supone el cálculo de unos 28 millones de hashes por segundo, y una ralentización brutal de mi escritorio. :-)

Un software muy interesante, relativamente reciente (junio de 2010) y con mucho futuro por delante (la versión actual es la 0.2.4). Os recomiendo que le echéis un ojo.

Read Full Post »

Llega el frío (hoy, hasta ha nevado por la Universidad), llega el mes de diciembre (y desde hace una semana, ya nos taladran con luces navideñas y villancicos) y llega otro número de la revista @rroba, el número 159.

Mi primer artículo de este mes es la entrega de rigor del Curso de Java Útil, trigésima del curso, y decimoséptima (spoiler alert, última) dedicada a jWadalPasswd. Este mes nos dedicamos casi por completo a la poco gratificante -pero muy necesaria- tarea de limpiar la casa, puliendo detalles y solucionando bugs que, a propósito o no, había en el código. Como única funcionalidad extra, aprendemos a manejar el portapapeles del sistema desde Java, permitiendo copiar las contraseñas generadas de forma segura, para así poder pegarlas directamente en nuestra aplicación favorita.

El segundo artículo se dedica al mundo de la Geolocalización, y más concretamente a su análisis desde el punto de vista de la seguridad. Hablaremos de los orígenes de esta tecnología, definiremos su terminología y ámbito de aplicación, sus bases técnicas y cómo funciona, qué tipo de aplicaciones existen, y qué riesgos de seguridad implican. Dada la extensión actual de estos sistemas, principalmente en el mundo de los terminales tipo smartphone, es interesante conocer de qué van, y cuáles son sus usos y abusos.

Read Full Post »

Como cada mes, el nuevo número de la revista @rroba llega a los kioscos.

En este número 157, y debido a ciertas vicisitudes, sólo encontraréis un artículo con mi firma. Se trata de la entrega de rigor del Curso de Java Útil. En esta vigésimo octava entrega, dotaremos a nuestro programa jWadalPasswd de una funcionalidad bastante extendida en todo software de almacenamiento seguro de contraseñas: la posibilidad de generar contraseñas pseudoaleatorias seguras. Hablaremos un poco de combinatoria y las bases tras la generación de contraseñas seguras, veremos cómo generar información aleatoria en Java, introduciremos el concepto de longitud de clave y alfabeto de generación, e incluiremos dichos parámetros en el fichero de configuración de nuestro programa.

Read Full Post »

Esta extensión, pese a ser terriblemente simple en su planteamiento es, en mi opinión, una de las más importantes en Firefox. De entrada, almacenar contraseñas en el navegador es algo muy, muy poco recomendable. Pero si lo hacéis, es absolutamente imprescindible que configuréis una contraseña maestra, para evitar que vuestras claves estén por ahí como su PRNG las trajo al mundo.

Pues bien, una cosa que desde el principio de los tiempos me pareció un error garrafal de Firefox, es el hecho de que esta contraseña nunca caducara. Y ahí es donde entra en juego Master Password Timeout, pues su única función es exactamente ésa: hacer que la contraseña maestra caduque tras un período de tiempo, cuyo valor en segundos es el único parámetro de configuración de esta extensión.

Read Full Post »

Llega el mes de Junio, y con él llega el calor, el asco y odio, la proximidad de las vacaciones y, en general, todo lo que suele asociarse a dicho mes. Y es que, ¿quiénes somos nosotros para violar la causalidad? Pues eso.

Y hablando de causalidad, ya sabéis que a principios de mes siempre toca la entrada del nuevo número de la revista @rroba, ¿verdad? Al menos, no os quejaréis de las introducciones, que cada mes se me ocurre una gilipollez nueva… :-P

Bueno, centrándonos en el tema (que he venido a hablar de mi libro, cual Umbral), este mes encontraréis -como de costumbre- los dos artículos de rigor con mi firmilla.

El primero artículo lleva por título “MediaWiki“, aunque en la portada aparezca el subtítulo del mismo (“Crea tu propia Wikipedia“). Como os podréis imaginar, el artículo trata sobre la instalación y el despliegue de un sistema MediaWiki, utilizando exclusivamente software libre para ello. Sirviéndonos de Linux, Apache, MySQL, PHP y el propio MediaWiki, veremos cómo desplegar nuestro propio Wiki con unos pocos y sencillos pasos. Y, de paso, por el camino aprenderemos algo sobre los orígenes de Wikipedia y el software que la sustenta.

En segundo lugar, encontraréis la habitual entrega del Curso de Java Útil (duodécima entrega, y quinta dedicada a jWadalSubs). En esta entrega, y tras haber terminado de codificar los algoritmos necesarios para el correcto funcionamiento del programa, vamos a ponernos -como diría un colega mío- el gorro de malvados: intentaremos provocar situaciones “incómodas” para el programa, y veremos cómo reacciona. En base a ello, nos centraremos en realizar un correcto tratamiento de excepciones, intentando contemplar todas las posibles situaciones que podrían generarlas.

Por otro lado, NeTTinG, desde el punto de acceso en el que debe de habitar, vuelve a la carga con la acostumbrada entrega del curso de Hack WiFi, donde continúa el estudio de la inyección de tráfico para el craqueo del protocolo WEP. Nada más y nada menos que la entrega número 35 de su curso. Si hay algo sobre WiFi que este hombre no sepa, es porque no existe.

Además, este mes el bueno de Net publica otro artículo, titulado “Passwords para Vista“, en el cual realiza un análisis del sistema de gestión de contraseñas de esa puta mierda llamada Windows Vista.

@rroba 141

@rroba 141

Read Full Post »

Como es costumbre, ya está disponible en los kioscos el número de este mes de la revista @rroba, el 128. Este mes me he “retrasado” un poco con la noticia, porque la semana pasada prácticamente se me juntó el viaje a Toulouse con el puente, y no he tenido tiempo de pasarme por el kiosco. De hecho, hoy la han comprado por mí…

Bueno, yendo al meollo del asunto, este mes hay también dos artículos con mi firma en la revista. El primero, por supuesto, es la entrega mensual del curso de arquitectura de computadores, el tercer capítulo del bloque temático dedicado a la memoria. Si el mes pasado lo dedicamos en exclusiva al estudio de una memoria ROM, este lo dedicaremos al estudio y simulación de una memoria RAM.

El segundo texto, titulado Seguridad y contraseñas, es exactamente lo que su nombre indica: un estudio exhaustivo sobre las contraseñas. Aunque pueda parecer trivial, hay cuestiones que no son tan sencillas como la gente cree. ¿Cómo es una contraseña buena? ¿Qué hace a una contraseña buena o mala? Mucha gente cree que una contraseña es buena o mala dependiendo exclusivamente de su longitud y, aunque indudablemente es un factor determinante, no es el único que influye; y, a veces, esta errónea creencia puede llevar a errores como utilizar largas contraseñas… numéricas. Hablaremos de alfabetos, de combinatoria, de funciones hash y de ataques por fuerza bruta.

Por otro lado, mi querido amigo NeTTinG también participa en este número con dos textos. El primero, la obligada entrega del curso de Hack WiFi, en la cual continúa hablando sobre inyección de tráfico en el protocolo de cifrado WEP. El segundo texto, y tema principal en portada, es un estudio sobre un caso real de Phising. Desde aquí, aprovecho para darle la enhorabuena por esa portada. ;-)

@rroba 128

Read Full Post »

Older Posts »

A %d blogueros les gusta esto: