Complexify, valora la calidad de las contraseñas de usuarios de páginas web
Complexify es un plugin de jQuery que informa a los usuarios de cuan fuerte es su contraseña, y los libera de los requisitos de contraseñas arbitrarias. Por el contrario impone un requisito de mínima complejidad para la seguridad, lo cual hace mucho más sentido y es más fácil de usar.
Los sitios web tienen la responsabilidad de decirles con precisión a los usuarios lo buena que es una contraseña, y esto no es un trabajo fácil.
• Si la contraseña es de 8 caracteres de longitud y sólo se forma de caracteres en minúsculas, es necesario que sea mejor, tal vez mediante la adición de un número o más caracteres.
• Si la contraseña es 25 caracteres de longitud, pero sucede que no contiene ningún número, debe ser forzada por una política de seguridad de la contraseña para añadir uno, que claramente hará la contraseña muy segura.
Complexify tiene como objetivo proporcionar una buena medida de complejidad de las contraseñas que utilizan los usuarios de los sitios web tanto para aconsejarlos en forma de barras de fuerza, y para imponer una complejidad mínima por razones de seguridad.
Valoración de Complexity
La configuración predeterminada de Complexity impone un nivel mínimo de complejidad que significa que forzar la contraseña debería tomar alrededor de 600 años en una máquina de productos básicos de escritorio. La contraseña 'perfecta' que se utiliza para ampliar el porcentaje de la complejidad tomaría 3x10^33 años. Esto es equivalente a una contraseña de 12 caracteres con mayúsculas, minúsculas y números incluidos, y una contraseña de 25 caracteres con mayúsculas, minúsculas, números y una amplia gama de puntuación.
Unicode
Complexity es compatible con Unicode y se añade la complejidad adecuada para el tamaño del conjunto de caracteres incluido en una contraseña.
Por ejemplo, ya que hay 96 caracteres Hiragana definidos en la especificación Unicode, incluyendo uno de ellas aumentará la complejidad de fuerza bruta por 96.
La razón detrás de esto es que en un atacante pueda querer incluir las contraseñas de japoneses en su ataque, él/ella puede optar por incluir el Hiragana para establecer su ataque, pero no el conjunto Katakana. Complexity divide el Unicode en 94 conjuntos debidamente agrupados.
¿Cómo se utiliza?
Complexity es un plugin de jQuery, por lo que ya tendrás que haber incluído jQuery en tu página. Aparte de esto, basta con incluir el archivo en tu de esta manera:
<script type="text/javascript" src="/js/jquery.complexify.js"></script>
... Y luego aplicarlo en un campo de contraseña de esta manera:
$("#password").complexify(options, callback(valid, complexity){...});
El argumento válido que se pasa a la función de devolución de llamada es un booleano que indica si la contraseña reunió el número mínimo de caracteres de la contraseña y el nivel mínimo de complejidad. El argumento de complejidad es un porcentaje donde el 100% representa una contraseña "perfecta" de 25 caracteres que contengan un elemento de cada conjunto de caracteres disponibles.
En la página de Dan Palmer Complexity puedes conseguir opciones personalizadas y ver una demostración y descargarlos desde la página de Github jquery.complexify.js.
Lo que Complexity no hace:
1. No tiene en cuenta la posibilidad de atacar diccionario de contraseñas. Sin embargo la mayoría de las contraseñas vulnerables a este método son relativamente cortas y contienen sólo letras, por lo que valora muy débilmente en esta prueba de todos modos.
2. Todavía es sólo validación del lado cliente. Si alguien quiere pasar por alto esta que pueden, les recomiendo la aplicación de un cheque por la longitud mínima en el servidor, pero Dan Palmer está considerando hacer una biblioteca complementaria del lado del servidor que permitirá a los desarrolladores tener una política coherente establecida a través de su servicio.
Yo he intentado hacer una prueba en un formulario pero no me ha salido, lo seguiré intentando...
Para Joomla existe este plugin jQuery Includer for Joomla 1.5 - 2.5 que instala jquery y evita conflictos con la librería mootools (como yo no lo tenía pues lo he instalado).
Para otros sistemas se puede incluir la siguiente línea:
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>