sábado, 18 de julio de 2015

¿Por qué que “b@(Xm02S” es un excelente password pero “SoylaMesa” no lo es?


La mejor respuesta a la pregunta del título sería: ¡macanas!, que, en argentino, significa: tamaño de disparate, gran mentira, estupidez. Y es que cualquier regla para construir un password no hace más que debilitar el password, facilitar que alguien alguna vez logre crackearlo.

Hace poco, en pleno diálogo para iniciar mi banca en línea, me encontré con el siguiente instructivo que habría que cumplir al pie de la letra para poder proseguir:

1. One lowercase character
2. One uppercase character
3. One number
4. One special character
5. Eight characters minimum
6. 50 characters máximum

Lo único razonable allí son los 50 caracteres máximo; todo lo demás sólo sirve para debilitar los password, es decir para facilitar el cracking. Me he encontrado muchas veces con reglas similares. En el Banco de Venezuela por ejemplo está prohibido utilizar números consecutivos, y mucho menos repetidos. Mi asombró sin embargo no terminó en ese banco, más recientemente, en el Banco Nacional de Panamá, me dieron una serie de reglas para crear un buen password. Me reí de ellas; mas no tuve otro remedio que acatarlas: preparé cuidadosamente mi “strong password”, pulsé un atractivo “ENVIAR” y recibí de vuelta la invitación a teclear mi clave por primera vez: me presentaron un teclado virtual aún más hermoso que el botón anterior; allí uno debía lucirse estrenando la poderosa y virginal password… ¡Sólo que era imposible introducirla!: el teclado virtual era diferente al real (por donde me habían permitido crear el password) y –créalo o no- ciertos caracteres, como el popular guión bajo, no estaban allí. Simplemente era imposible teclear mi password… Pensándolo bien, esos password del Banco Nacional de Panamá son los más seguros del mundo: no se puede acceder ni siquiera teniéndolos a la mano, ni siendo el legítimo creador y dueño del “strong password”.

Estoy seguro que hay casos aún más increíbles (quizá Ud. pueda reportarlo como comentario), pero demos por terminada esta introducción.

¿Por qué poner reglas debilita los passwords?


Vamos a explicarlo con un ejemplo, o podríamos decir un modelo a escala. Considere que el universo de posibles caracteres disponibles son cuatro letras: “a”, “b”, “c” y “d”. Los password se formarán tomando dos cualquiera de ellos. Los posibles passwords serán entonces:

aa ab ac ad
ba bb bc bd
ca cb cc cd
da db dc dd

Son 16 posibles diferentes passwords. Matemáticamente son las Variaciones con Repetición de 4 elementos (m=4) tomados de dos en dos (n=2). La fórmula para calcular las posibles variaciones es VRmn = mn. Aclaremos antes de continuar que en la vida real el universo de posibles caracteres no es tan pequeño, si ese fuere el caso todos seríamos crackers. En la vida real solemos usar m=128 caracteres (“n” podría ser 15 o 20 o 50, en fin no es tan importante como “m”). Hemos escogido un universo pequeño con propósito ilustrativo. De haber usado m=128, en lugar de las cuatro líneas anteriores, necesitaríamos centenares de miles de páginas para enumerar las variaciones.

Vamos al ejercicio con nuestro modelo. Supongamos que nos imponen la regla “no puede haber caracteres repetidos”. El universo de las 16 posibles claves se reduce a 12 (queda proscrita toda la diagonal principal del cuadro que tenemos arriba. Pero para fortalecer aún más los password nos imponen una segunda regla: “no puede usar caracteres consecutivos”. Aplicando ambas reglas el cuadro se reduce en 62.5%, quedando así:

aa ab ac ad
ba bb bc bd
ca cb cc cd
da db dc dd

Si extrapolamos esto al universo grande, con m=128, comprenderemos cómo cada regla que se inventa inutiliza de un plumazo una enorme región del espacio de posibles passwords; se pierde billones o trillones de combinaciones con cada regla. Y mientras más reducido ese espacio más adivinables se vuelven los celados passwords. Con la reducción del espacio aumenta rápidamente la probabilidad de éxito hasta para un método de adivinación de fuerza bruta (que consiste en probar uno por uno). Alguien con inclinación matemática quizá quiera calcular la gigantesca reducción que se produciría en VR12850 si aplicamos las seis reglas mencionadas al comienzo de este escrito.

La próxima vez que vea las reglas, sobre todo sabiendo que no sólo son inútiles sino que son contraproducentes, protestará con razón que no le permitan usar claves mnemotécnicas y que le digan que “1@%aXV_-TEC” es mejor password que “pi=3.141596”, o que “sOY1[aü0S” es más potente que “AmoreMío”. En la medida en que se aprueban leyes y se reduce el espacio, candidatos a “potentes” passwords como supuestamente lo es “sOY1[aü0S”, pierden fuerza automáticamente. Es decir si “AmoreMío” fuera aceptable, entonces “sOY1[aü0S” fuera aún más potente. Parece paradójico, pero es matemáticamente cierto.


Conclusión


Una cosa es que cada usuario conozca la conveniencia de no usar combinaciones “adivinables” y otra muy distinta es obligar al usuario a cumplir reglas que alguna subjetividad considera que evita que los passwords sean adivinables. Es cierto que la fecha de nacimiento es altamente “adivinable” y lo ideal es que la gente no la use, es decir que la gente decida libremente no usarla; pero si sabemos de antemano -porque se ha hecho del conocimiento público- que la fecha de nacimiento no puede usarse, automáticamente se pierde –para cada usuario en particular- un elemento del espacio de posibilidades y por ende se reduce (ligeramente) la dificultad de descubrir los passwords.

¿Por qué impedir el uso de passwords nemotécnicos en aras de un falso fortalecimiento de las contraseñas?. La libertad de escoger “buenas” combinaciones sólo puede manifestarse si es posible también escoger las “malas” (aunque uno, voluntariamente, no las escoja)… Esa paradoja de la libertad se extiende mucho más allá de los passwords.