Contraseñas 101 – Encriptación

votarMarch 25, 2010 por Fedelosa · 13 Comentarios 

contraseña-encriptacion

Era un día normal en los pasillos de la Universidad de Twitter, escándalos, rumores y mucho ruido.. nada fuera de lo común.. Los pasillos a esta hora siempre se encontraban llenos y se escuchaban toda clase de comentarios, burlas y risas…

Hoy la gran noticia, era lo ocurrido la noche anterior, el Profesor Geelbe se había olvidado en la cafetería su base de datos con las contraseñas de todos los alumnos.. y a la mañana siguiente ya estaba la lista pegada en afiches por toda la universidad.

El profesor Geelbe era un hombre moderno, tenia un lindo auto deportivo, linda esposa y 2 hijos.. vivía la vida 2.0 soñada.. No preparaba mucho sus clases, le preocupaba mas que sus alumnos aprobaran que enseñar o que aprendieran algo. Desde siempre se le cuestionaba que respondía de forma un poco pedante, no era muy querido o popular en la Universidad.

El rector en cambio, era un chapado a la antigua.. un hombre entrado en años, con su barba blanca y cejas peludas que le fascinaba recorrer los pasillos tomando notas en su libretita de todos los comentarios interesantes o equivocados que llegaban a sus oídos.

El timbre sonó y por arte de magia los pasillos quedaron vacíos y en silencio.. se escuchaban solamente las corridas de los alumnos que llegaban tarde..

En el salón LadoGeek, el profesor Nelson, conocido por lo delirantes de sus clases y que sabia un poquito de muchas cosas estaba por empezar con la lección del día de hoy.. “Como sobrevivir a un troll de Twitter” materia de segundo año y muy popular en la universidad dado lo peligrosos de algunos pasillos..

[AlumnoX – el chistoso] Profesor, usted encripta sus contraseñas? (risas en el fondo..)

[Profesor Nelson] Arranquemos por la pregunta mas básica de todas, por que encriptamos la contraseña?

[AlumnoNerd – se comió la wikipedia] Para que si nuestro sistema falla o es comprometido, no quede publico algo tan sensible como es la contraseña de un usuario.

[AlumnoX – el chistoso] Para que no nos pase como a Geelbe :) (risas..)

[AlumnoPerdido – el pintado] No entiendo…

[Profesor Nelson] Alguien le puede explicar al AlumnoPerdido?

[AlumnoRandomX] Por que si no les jodes la vida..

[Profesor Nelson] La mayoría de los usuarios usa la misma clave o variaciones de la misma entonces si publicas su clave de un servicio, le comprometes la clave en varios mas.

[AlumnoProgramd0r] Pero Profesor… los usuarios deberían usar una contraseña única para cada servicio..

[Profesor Nelson] Quien de nosotros usa una clave diferente para cada servicio? Y nuestros padres y primos que no son “del ambiente”?

[AlumnoPintado] Entonces.. (con cara de estoy entendiendo algo..)

[Profesor Nelson] Les podes echar la culpa por naïve o … usar criptografía. Ahora retomemos con la lección del día de hoy, “como sobrevivir a un troll de Twitter”; quien leyó los apuntes y quiere pasar al frente?

(caras largas en la sala, la charla sobre contraseñas estaba mas interesante..)

[AlumnoListo – el campeón] Por eso tenes que usar md5 que es como 100 veces mas seguro..

(risas en la sala.. )

[Profesor Nelson] Md5, por que?

[AlumnoListo] ehh.. eh.. por que el algoritmo no es reversible y tiene soporte en la mayoría de los lenguajes?

[Profesor Nelson] Haber…Md5 NO es un algoritmo de encriptación.. es un algoritmo de hasheado.. alguien sabe cual es la diferencia?

[AlumnoNerd] Md5 es un algoritmo diseñado para calcular muy rápidamente la firma de un archivo, eso se usa por ejemplo para verificar la integridad de datos.

(risas de varios alumnos, un grito de “Bolazoo!” y algún comentario burlón..)

[Profesor Nelson - con cara de sorprendido] Exactamente..

(caras de sorprendidos y poco entender)

[Profesor Nelson] Esto significa que Md5 no fue diseñado para encriptar datos sino para calcular firmas de datos, Lo que normalmente hacemos cuando “encriptamos” en Md5 NO es encriptar, sino simplemente calcular la firma “irreversible” del dato..

(mas caras de sorprendidos y de entender un poco menos..)

[Profesor Nelson] Notese que dije “irreversible” pero tampoco es así.. ya que hoy en día existen varias formas de “crackear” o “revertir” el algoritmo para obtener el dato sin “encriptar”

[AlumnoListo] Pero profesor, “revertir” por fuerza bruta lleva años…

[AlumnoNerd - insoportable] (casi sin poder contenerse..) Técnicamente, un servidor moderno puede calcular el hash de unos 300~500mb por segundo…

[Profesor Nelson] Al día de hoy.. si la contraseña es por ejemplo toda en minúscula y alfanumérica llevaría menos de un minuto calcular todos los hashes posibles para compararla.

[AlumnoProgramd0r] La mayoría de los usuarios usa claves de esas :P muaahah, como es que hago para generar todas las combinaciones posibles entonces??

[AlumnoListo] ta.. pero para eso es que se concatena un valor único, así se agrega complejidad y ahí si es imposible..

[Profesor Nelson] Imposible? Por que? Recordemos que Md5 es un algoritmo diseñado para calcular rápidamente la firma de un dato, por lo tanto solo demoraría mas tiempo..

[AlumnoRandom] Ah.. pero si demora 2 años en encontrarlo ya no sirve…

[Profesor Nelson] Md5 no solo se puede resolver por fuerza bruta.. también se puede resolver comparando el hash de la firma contra tablas de datos o rainbow tables.. son grandes tablas y cuando digo grandes me refiero a un par de tera bits en los cuales se puede comprar hashes y encontrar el hash de datos realmente largos..

[AlumnoProgramd0r] por eso hay que usar 1337 5p33k para las contraseñas!

[Profesor Nelson] Reitero mi respuesta anterior, ademas de que utilizar 1337 5p33k tiene otros mas problemas muy distintos, pero lo discutimos la próxima clase, háganme acordar..

[AlumnoNerd] (sorprendido) Entonces profesor, que recomienda usted usar?

[Profesor Nelson] Sentido común…

(risas y festejos x compromiso.. nadie entendió..)

[Profesor Nelson] Dijimos que Md5 era un algoritmo de hasheo y por eso es que era tan vulnerable y poco seguro.. entonces.. siguiendo el sentido común. lo que habría que usar que es?

(unos segundos de silencio..)

[AlumnoListo] un algoritmo diseñado para encriptación!

[Profesor Nelson] Exactamente!! como recomendación pueden probar con Blowfish que tiene varias librerías disponibles y es super completo.

[AlumnoPerdido] (con cara de creo que entendí) Entonces Md5 no sirve para encriptar y hay que usar un algoritmo de encriptación y no uno de hasheo?

[Profesor Nelson] No es que no sirva.. no fue diseñado para eso.. por dar un ejemplo.. una contraseña de 6 dígitos encriptada con blowfish y un factor de 12 se precisarían 12 años para poder generar todos los hashes posibles.

(silencio en la sala por un instante.. Nelson ojea el reloj)

[Profesor Nelson] Que tarde se hizo.. salgan al recreo y nos vemos la próxima clase..

[AlumnoNerd] Profesor tiene algún link que nos pueda pasar de una librería que implemente blowfish?

[Profesor Nelson] (anota en el pizarrón) http://codahale.com/how-to-safely-store-a-password/

El artículo es una colaboración de @Tombar

Acerca de Fedelosa
Geek uruguayo de 31 32 años, adicto a Internet, las comunicaciones y las nuevas tecnologías. Recientemente adicto a Twitter. (hace rato) ¡Me encanta crear blogs!

Comentarios

13 Respuestas to “Contraseñas 101 – Encriptación”
  1. nacho says:

    Una cosa es codificar el password en BASE64, como hicieron los de geelbe, otra cosa es usar MD5 u otro algoritmo de hasheo. Lo primero sí está horrible, porque prácticamente es como almancenarlos en texto plano. Lo segundo ya requiere un poco de tiempo descifrar, y ahí depende de qué algoritmo uses. No hay necesidad de ir tan lejos como un Blowfish.

    Lo mejor en cuanto a seguridad y performance es utilizar hash con un salt. Obviamente si descubren cuál es tu salt la seguridad es igual al ejemplo anterior.

    Drupal, WordPress y otros usan simplemente MD5 sin salt, curiosamente. Django y (creo)RoR utilizarn SHA1+salt.

  2. erufenix says:

    orale buena forma de explicar la diferencia entre hasheo y emcriptación con un toque de humor

Trackbacks

Fíjate lo que dicen los demas de esta entrada...
  1. Información Bitacoras.com…

    Valora en Bitacoras.com: No hay resumen disponible para esta anotación…



Deja tu comentario

Di lo que estas pensando...
Si quieres que se muestre una imagen con tu comentario, ve por un gravatar!