10 de noviembre de 2010

¿Claves de acceso fáciles de recordar y muy fuertes? ¿Cómo lograrlo?

El problema que normalmente tienen todos los usuarios es que a medida que van haciendo caso a los consejos de seguridad acerca de como crear claves "seguras" sus claves de acceso se empiezan cada vez más a parecer a unos garabatos extraños que se usaban en los "comics" para simular que un personaje decía malas palabras.

Sin embargo hay detalles que casi nunca se le les explican por posible desconocimiento de los programadores que realizan la interfaz de acceso, y estos son los siguientes:

  • Una clave de acceso no necesariamente debe estar formada por una sola palabra.
  • El espacio en blanco es tan válido como cualquier otro caracter.
  • Los campos usados para el ingreso y creación de claves no debieran tener límites de caracteres.
  • Una frase es mucho más fácil de recordar y más difícil de reproducir.

Basados en lo anterior una clave como: "Mi 1ª clave es 99% más segura!" cumple con reglas muy importantes para la construcción de claves de acceso fuertes como las siguientes:

  • Su longitud es mayor que los eternos 8 caracteres mínimos.
  • Utiliza letras en mayúsculas y minúsculas combinadas.
  • Tiene caracteres especiales.
  • Utiliza caracteres numéricos.
  • Contiene espacios en blanco. 
Hay que aclarar que la frase que hemos propuesto es muy superior a las convencionales claves que cumplen con los anteriores requisitos en una sola palabra y un promedio de 8 a doce caracteres, ya que solo para empezar tiene 30 caracteres. Sin embargo a pesar de su longitud es mucho más fácil de recordar.

El problema de enseñar al usuario a construir claves como esta se basa en que las interfaces de creación de claves no soportan cantidades razonables de caracteres como para construir este tipo de clave. Esto viene por herencia de cuando las claves se almacenaban.

Sin embargo ya todos sabemos que almacenar claves de acceso es un riesgo muy alto que no debemos correr y que lo que en realidad se debe almacenar es un hash de dicha clave (MD5, SHA1, SHA256, Whirpool, etc.), y que dicho hash tiene una cantidad máxima de caracteres según el tipo. Unos de los más largos como el SHA256 por ejemplo, siempre tendrá 64 caracteres así la clave tiene el largo de todo un libro.

Quizás otra de las razones para limitar la cantidad de caracteres en los campos de ingreso y creación de claves ha sido que estos son los primeros en ser utilizados por los hackers para intentar ubicar vulnerabilidades de XSS, SQL injection y muchas más, pero hay que recordar a los programadores que el que coloquen un simple atributo "maxlength" a los campos de ingreso de un formulario no evita que los hachers forjen formularios independientes. Por otra parte una buena política de desinfección de parámetros de entrada no puede basarse en controlar el flujo de ingreso de esa simple forma.

Por tanto, se deduce de lo anterior que si en realidad se desea que los usuarios puedan utilizar claves de acceso fuertes, se deberá permitir lo siguiente:
  • Campos de ingreso de clave con capacidad muy superior de caracteres (60 es un buen número).
  • Capacidad de insertar cualquier tipo de caracter UTF-8.
Sin embargo por mucho que aumentemos la capacidad, es importante recordar que el usuario podría seguir introduciendo claves débiles si no las validamos, por lo que un componente de validación de la fuerza de la clave del lado cliente es imprescindible para garantizar que los usuarios aprendan a mejorar la calidad de sus claves de acceso.

Hasta la próxima.

No hay comentarios.:

Entradas populares