No sé tu password. Pero podría averiguarlo.

Lunes 18 de Agosto de 2008

No, no te ‘hackearon’ el password. Y, probablemente, tampoco te lo robaron. Casi seguro, vos se los diste.

Vos no te enteraste. Probablemente estás totalmente seguro de no habérselo dicho a nadie. Aún así, si vamos por lo más probable, es tu culpa.

Primero una corta explicación. Prometo que no va a doler.

Cuando vos entrás a tu mail, sea cual sea tu proveedor (aunque, si te ‘hackearon’, todavía estás usando Hotmail1), les mandás dos datos: tu nombre de usuario, y tu contraseña.

Obviamente, en algún lugar está guardado todo eso; ahí entran las bases de datos. Puede ser algo tan simple como un archivo de texto con un usuario y una contraseña en cada uno, o servidores dedicados para almacenar tus datos protegidos y copiados mil veces, y en varios lugares del mundo, para que si uno se rompa, tus datos sigan ahí.

Pero esos detalles no nos importan.

Lo único que importa es que la máquina sabe si la contraseña que le pasaste es la tuya.

Pero, claro, ahora tenemos que confiar en que nadie va a conseguir una copia de ese archivo, y robar tu preciada contraseña (claro que, si se llevan el archivo, tienen tres millones más, pero por algún motivo, sólo les importa la tuya).

La versión corta, es que aunque tengan el archivo, no les sirve. (Bueno, si entraron en un servidor, probablemente se bajaron todo tu correo, no sólo tu contraseña.)

La versión larga involucra encriptación. Encriptación indescifrable.

En un sentido muy estricto, no existe tal cosa. Todo código se puede romper. Lo importante es que sea muy, muy, muy difícil.

Tu contraseña no está guardada. Tampoco, si vamos al caso, una versión encriptada de tu contraseña. Lo único que Hotmail guarda es un hash. No, no la droga. Un hash es un valor derivado de tu contraseña. Con la característica particular que éste sí es irreversible. Esto tiene una parte buena, y una mala: la buena es que no pueden adivinar tu contraseña. La mala es que, matemáticamente hablando, hay infinitos valores que devuelven el mismo hash.

Por dar un ejemplo trivial, supongamos un hash que consiste en asignar un valor (de 1 a 26 —sin la ñ—) a cada letra del alfabeto, reemplazar cada letra en la palabra por el valor, y sumarlos. Para “Tordek”, sería (20, 15, 18, 4, 5, 11), que da 73.

Entonces, el hash de Tordek es 73, pero a partir de 73 es imposible deducir “Tordek”. La suma es conmutativa, así que el orden de las letras es irrelevante. También puedo cambiar letras en grupos, de manera que el cambio se equilibre (ejemplo: T+1 = U, O – 1 = N, +1 – 1 = 0), que me da “Unrdek”, cuyo hash da igual.

Claro que, un hash de verdad (SHA-1, MD5) es un poco más complicado que eso. Pero el principio es el mismo.

Pero… con infinitas contraseñas para el mismo valor, ¿no se vuelve trivial encontrar una contraseña con el mismo hash?

No.

Incluso MD5, que ya se considera obsoleto, devuelve valores de 128 bits, 3,4 x 10^38 valores diferentes. Infinito dividido por eso, sigue dando infinito—pero no podés crear las infinitas contraseñas posibles. Y aunque pudieras, tarda mucho (si creamos cien millones cada segundo, tardamos 3 x 10^30 segundos, casi 10^23 años, y el universo solo tiene 1.4 x 10^10). La probabilidad de encontrar una contraseña que devuelva el mismo hash que otra que conocemos es 2,9 x 10^-39. Muy, muy, muy difícil.

Si somos paranóicos, podemos guardar tanto el MD5 como el SHA1 de una contraseña, y esperar que ambas coincidan, y ahí tenemos 128 + 160 bits. Eso es mucho. En serio. Si además agregamos una sal —un valor aleatorio, con el proposito de hacer el password todavía más largo (aunque sólo dentro de la base de datos)— bueno, digamos que lo más fácil es creerme que no se puede.

Por eso están desapareciendo los sitios que te mandan tu password al mail. Si pueden hacer eso, es porque se puede desencriptar (o, peor, ni siquiera se encripta). Y en ese caso sí te pueden ‘hackear’. No confíes en esos sitios.

Entonces, si no te pueden hackear, ¿cómo consiguen tu contraseña?

Ya te dije: se la diste. Ingeniería social es el nombre técnico. Mentir es más fácil.

Varios sitios ofrecen “exploits”; uno clásico es el mensaje de «(alguien) te mandó una tarjeta. Ingresá tu contraseña para abrirla.». Es tu culpa si caíste.

La otra es que tenés una “pregunta de seguridad” muy fácil. O que tu contraseña lo sea.

Mi contraseña más común tiene 12 caracteres. Algunos números. La saben, al menos, 3 personas. Nunca me robaron nada.

Y como última opción, sí, te pueden “hackear” (a vos, no a Hotmail). Mediante dos ataques, principalmente: uno es instalarte un keylogger, un programa que guarda cada tecla que apretás; el otro se llama “man in the middle”, que consiste en ocupar alguna máquina ubicada ‘en el medio’, entre vos, y el servidor, como, por ejemplo, el servidor de un cyber.

Hay formas de protegerse de cada uno de estos ataques, y eso queda para la próxima.

  1. Y, no, no es culpa de Hotmail

Por favor, dejá un comentario, o un trackback desde tu sitio. Podés seguir la conversación con el Feed de comentarios de este post.

2 Comentarios a “No sé tu password. Pero podría averiguarlo.”

  1. Juan dijo:

    Martes 19 de Agosto de 2008, 08:20

    Nunca me robaron nada.

    O nunca te enteraste …

    Yo nunca doy mis passwords por una simple razón: si algo falla, prefiero no mirar a un conocido. Por ahí parece una muestra de confianza darle el password a alguien, pero a la larga o a la corta siempre te juega en contra.

    Imaginate, te doy mi password a vos y sos el único que lo sabe (además de mi). De repente me #$%@! la cuenta. Como vos también sabías mi password sos uno de los posibles sospechosos … cuando en realidad te lo dí porque hay confianza. Entonces una manera de no romper la confianza es no darte mi password (y que vos no me lo pidas).

    De un keylogger no zafás, pero con SSL (hpps) es un toque más complicado para lo de man-in-the-middle. De todas maneras, si estás detrás de una red que no armaste vos lo mejor sería que no utilices ninguno de los servicios online habituales.

    Ahora, con el quilombo que hay con el tema de la vulnerabilidad (todavía no resuelta) en DNS, poner un password en internet es lo mismo que sentarte en una licuadora destapada :| … lo que más me entristece es que haya sido todo este tiempo así.

  2. LinTux dijo:

    Viernes 19 de Septiembre de 2008, 11:07

    Perdon Tordek por desviarme un poco en el comentario pero me parece algo bastante importante. Como dijo Juan por el tema de las vulnerabilidades DNS, en este sitio se puede verificar si tu servidor DNS es vulnerable o no. http://www.doxpara.com/

Comentá:

Entrá con tu cuenta, registrate, o escribí tus datos:

XHTML permitido: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">