martes, 25 de enero de 2011

La contraseña mas fuerte de todas

Las preguntas rompe hielo siempre me han fascinado. La primera conversación con una persona puede decirnos mucho sobre su carácter. Sin embargo, cuando mis nuevos conocidos se enteran que estoy en el mundo de la seguridad informatica, cualquier cosa puede suceder. Mi pregunta favorita y que he aprendido a esperar casi obligatoriamente en algun momento es: ¿Cómo debo seleccionar mi password para hacerlo irrompible? Adicional a la pregunta recibo una receta complicadísima de mayusculas, minusculas, dígitos, signos de puntuacion, caracteres no imprimibles, etc. a la que debo dar una opinion sobre su fortaleza. A veces pienso que la receta está hecha más para impresionarme con la pregunta rompe hielo que para realmente usarlas; pues me es dificil imaginar un ser humano memorizando algunas de las contraseñas resultantes.

Mi respuesta es tan simple como inesperada. No es muy buen rompe hielo, pero es lo más cercana a lo que he podido entender en este tema: "el password más fuerte de todos es el que no se lo dices a nadie". La cara de confusión no se hace esperar. Luego trato de explicar que en lugar de aplicar la receta complicadisima, se aplique mi simple dogma de no revelar su contraseña a nadie y su password será lo mas fuerte que se puede ser. La confusión se transforma en desilusión y a veces hasta frustración. Este artículo intenta suavizar un poco esas malas impresiones creadas.

Para explicar este tema necesito un poco de matemática sencilla. La matemática debe ser aún peor rompe hielo por eso nunca he intentado hacer esta explicacion en vivo. La primera definición necesaria es cuantificar de alguna forma la fortaleza de un password. Supongamos una contraseña de 8 caracteres. Estos pueden ser letras mayusculas, minusculas, dígitos y signos de puntuación. Para usar una cifra redonda, imaginemos que en total tenemos 100 caracteres para seleccionar cada uno de los caracteres de nuestro password. Para saber cuantos passwords posibles puedo crear con esta estrategia simplemente multiplico las posibilidades de cada uno de los caracteres el número de veces que sea la longitud del password:

Receta #0: Password de 8 caracteres. Sin restricciones especiales.
Fortaleza #0: 100 x 100 x 100 x ... x 100 (ocho veces) = 10^16

El resultado de esta fórmula es el número de intentos que tendría que hacer un atancante para adivinar mi password. Mientras más grande es este número, mas difícil es para mi atacante adivinar mi contraseña. Por lo tanto, este número es una buena medida de la fortaleza de mi password. Nótese que aquí no he utilizado ninguna receta, solo un password de 8 caracteres. Ahora vamos a intentar "fortalecer" mi contraseña con alguna de esas recetas impresionantes. Veamos la fortaleza una receta sencilla:

Receta #1: Asegurar que el password tenga al menos una letra en mayuscula y un numero.
Como las letras mayusculas son sólo a lo sumo 30, y los dígitos son sólo 10, para estimar la fortaleza de esta estrategia, debo cambiar un 100 por 30 y otro 100 por 10 en el producto de la receta anterior (ver nota1). El resultado es:

Fortaleza #1: 30 x 10 x 100 x 100 x ... x 100 (6 veces 100) ~ 10^14

Lo cual es considerablemente mas débil que la estrategia "sin receta". Si este resultado parece increible, calculemos la fortaleza de una receta más complicada.

Receta #2: Asegurar que el password tenga al menos dos mayusculas, al menos dos dígitos y un símbolo especial (!"@#$%...).
Asumiendo que los símbolos especiales son a lo sumo 30 (siendo generosos), la fortaleza nos queda en  (ver nota1):

Fortaleza #2: 30 x 30 x 30 x 10 x 10 x 100 x 100 x 100 ~ 10 ^12

Lo cual de nuevo es menor que la estrategia anterior pero todavía muchísimo menor que la estrategia nula.

¿Que es lo que está pasando?

La explicación es sencilla si recordamos el dogma del principio. Si bien es cierto que al soltar una receta complicadísima no estamos "diciendole el password a nadie", sí se está dando cierta información. Específicamente, se está diciendo que uno de los caracteres de mi password no es cualquier cosa. Por el contrario, uno de ellos es necesariamente una mayuscula, y otro de ellos es necesariamente un dígito, por ejemplo. Mientras más restricciones públicas le ponemos a la contraseña, mas información le otorgamos a nuestro posible atacante. Esta debilidad es muy bien reflejada por la estimación que calculamos utilizando nuestra formula.

¿Quiere decir que puedo poner como password a mi cuenta bancaria "beisbol1" en lugar de "1*e/hIOn"?

Definitivamente no. El problema es que "beisbol1" ya lo sabe nuestro atacante debido a que es una derivación sencilla de una palabra de diccionario, mientras que un password completamente aleatorio no. Por lo tanto, "beisbol1" no cumple nuestro dogma, mientras que "1*e/hIOn" antes de escribirlo por primera vez en este blog si lo cumplía.

Pero, ¿Cómo nos aseguramos que el password que seleccionamos no se lo ha dicho nadie a nuestro atacante? Este tema sí es un poco más complicado, pues tiene que ver con la psiquis humana. El mejor consejo que puedo dar a este respecto es tratar de pensar de la forma en que nadie mas lo ha hecho. Esta es la única manera de fabricar el password mas fuerte de todos. Para mantenerlo fuerte, no hay que ni decirlo a nadie ni tampoco cómo derivarlo.

A pesar que este último punto suene de nuevo demasiado simplista, nuestros atacantes están constantemente capturando passwords para saber cómo pensamos. Armados con este entendimiento de la psiquis humana colectiva, se perfeccionan estrategias para tratar de adivinarlos. Es por eso que la proxima vez que alguien nos llegue con la receta mágica para hacer el mejor password, ya sabremos que esa persona acaba de dañarla al no mantenerla secreta. En consecuencia, hay que mantenerse alejada de ella; no de la persona, de la estrategia.

Como nota anecdótica, algunas amigas celosas siempre tratan de persuadirme para que les diga mis contraseñas. De esta forma, esperan poder saber quien me escribe sms, email, IMs, etc. En una ocasión me dejé persuadir para revelar el pin de mi chip GSM - Sí, mis amigas pueden ser muy persuasivas - La cara de asombro de una de ellas al verme tipear "0000" en mi celular fue poética. La conversación concluyó mas o menos así:

- Pero que clave más mala. 
- Si, pero no puedo hacer nada, no puedo mas que poner 4 digitos.
- Si, pero es que es puros 0s.
- Ehm, si, como cualquier otro número de 4 digitos, es igual de malo.
- Ah, pero es que es muy facil de adivinar!! (frustración)
- Claro, pero sólo porque ya te la he dicho. Te apuesto que antes de decirtela jamas hubieras pensado en que esa era mi clave, mucho menos conociendome como el supuesto "experto en seguridad informatica".
 - (Cara de gracia pero insatisfacción).

Aunque en mi anécdota juega un poco el tema de "contra-inteligencia", pienso que encierra perfectamente la esencia de este artículo. Una vez revelado, el password o cualquier información sobre éste, es igual de malo que el anterior.

---------

Nota1: En realidad el cálculo preciso involucra factores adicionales que tienen que ver con las posiciones de los caracteres de la receta. Por ejemplo, para la primera receta, existen 8 posiciones para colocar la mayuscula y despues 7 posiciones para colocar el dígito. Esto se expresa en números combinatorios como "8 choose 1" y "7 choose 1". El resultado final debe multiplicarse por 56. En la segunda receta es necesario multiplicar por "8 choose 3" y "5 choose 2", y si mi cálculo mental no falla, esto es igual a 560.

5 comentarios:

  1. Luego de revelarle tu clave la cambiaste no?

    ResponderEliminar
  2. Muy buena pregunta. Para actuar acorde con la idea de este artículo, mi respuesta oficial a esa pregunta no puede ser otra mas que:
    "No puedo confirmar ni negar si he cambiado o no la contraseña de mi chip GSM, asi mismo como no puedo confirmar ni negar si he cambiado o no el propio chip, el celular o incluso de amiga. No sin al menos una fuerte dosis de persuasión en todo caso."

    ResponderEliminar
    Respuestas
    1. esta respuesta parece una de pinocho de shrek...

      Eliminar
    2. Pinocho y Shrek se quedan chiquiticos: https://freedom.press/blog/2014/02/best-governments-we-cannot-confirm-nor-deny-claims

      Eliminar
  3. Que buen articulo!entiendo que como decimos en mi pais, que en :
    'En boca cerrada no entra mosca'
    pero como hariamos para no decir a nadie nuestro pasword....si para formarlo siempre seguimos las instrucciones del banco ?,por ejemplo.? El banco mismo da las mismas instrucciones para todo el mundo. todos sabemos cuantas letras cuantos digitos etc etc.
    no se nada de seguridad informatica, pero creo que es importante saber como estar seguro con tus paswords....

    ResponderEliminar