miércoles, 9 de marzo de 2016

Protección por Contraseña


La primera línea de defensa contra los intrusos es el sistema de contraseñas. Virtualmente un acceso a un sistema multiusuario requiere que el usuario proporcione no sólo un nombre o identificador (ID) sino también una contraseña.

La contraseña sirve para autentificar el identificador de aquel que se está conectando al sistema. El identificador proporciona seguridad de la siguiente manera:

  • El identificador determina si el usuario está autorizado a conseguir el acceso al sistema. En algunos sistemas, sólo a aquellos que tienen un identificador ya registrado el sistema les permite conseguir el acceso.
  • El identificador determina los privilegios asociados al usuario. Muy pocos usuarios pueden tener un estatus de supervisor o superusuario que les permite leer ficheros y realizar tareas que están especialmente protegidas por el sistema operativo. Algunos sistemas disponen de cuentas anónimas o de invitados, y los usuarios de dichas cuentas tienen unos privilegios más limitados que cualquiera de nosotros.
  • El identificador también se utiliza para un control de acceso discrecional. Por ejemplo indicando la lista de los identificadores de otros usuarios, un usuario puede otorgar permisos para que estos puedan leer ficheros que le pertenecen a él.

Estrategias de Selección de Contraseñas

Se utilizan cuatro técnicas básicas:
  • Educación de los usuarios.
  • Contraseñas generadas por el ordenador.
  • Verificación reactiva de las contraseñas.
  • Verificación proactiva de las contraseñas.

Educación de los Usuarios: A los usuarios se les puede decir la importancia de utilizar contraseñas difíciles de adivinar y se les pueden proporcionar referencias de cómo seleccionar contraseñas más fuertes. Esta estrategia de educación de los usuarios no tiene muchas posibilidades de éxito en la mayoría de instalaciones, particularmente donde hay una amplia población de usuarios o muchos cambios de los mismos. Muchos usuarios simplemente ignoran estas recomendaciones. Otros puede ser que no sean buenos jueces de la fortaleza de la contraseña. Por ejemplo, muchos usuarios (erróneamente) creen que dar la vuelta a una palabra o poner en mayúsculas la última letra hace la contraseña imposible de adivinar.

Contraseñas generadas por ordenador: también tienen sus problemas. Si la naturaleza de la contraseña es demasiado aleatoria, los usuarios no la recordarán. Incluso si la contraseña es pronunciable, los usuarios pueden tener problemas en recordarla y sentirse tentados a tenerla escrita. En general, los esquemas de contraseñas generadas por ordenador tienen un historial de escasa aceptación por parte de los usuarios. FIPS PUBS 181 define uno de los generadores de contraseñas automáticos mejor diseñados. Este estándar incluye no sólo la descripción de la estrategia así como un listado completo del código fuente en C del algoritmo. El algoritmo genera palabras a partir de sílabas pronunciables que se concatena para formar una palabra. Un generador aleatorio de números produce un flujo de caracteres aleatorios usado para construir las sílabas y las palabras.

La verificación reactiva de las contraseñas: es una estrategia mediante la cual el sistema de forma periódica ejecuta su propio programa de adivinación para encontrar posibles contraseñas adivinables. El sistema cancela cualquier contraseña que resulta adivinada y notifica al usuario. Esta táctica tiene varias desventajas. En primer lugar, requiere un uso intensivo de los recursos si se quiere realizar bien el trabajo. Debido a que un determinado oponente que es capaz de robar un fichero de contraseñas puede dedicar todo el tiempo de su CPU a la tarea durante horas o incluso días, una verificación reactiva de las contraseñas siempre tendrá esta desventaja. Además, todas las contraseñas que sean frágiles permanecerán vulnerables hasta el verificador de contraseñas las encuentre.

La verificación proactiva de las contraseñas: Es la alternativa más prometedora para mejorar el sistema de seguridad de contraseñas. En este esquema, a los usuarios se les permite seleccionar su propia contraseña. Sin embargo, en el momento de la selección, el sistema prueba a ver si la contraseña está permitida, y si no es así, la rechaza. Estas variaciones se basan en la filosofía de que, con suficiente supervisión por parte del sistema, un usuario puede seleccionar una contraseña que es posible memorizar de un espacio amplio de contraseñas que no son probablemente fáciles de adivinar en un ataque basado en el diccionario.

El truco para implantar un verificador de contraseñas proactivo es encontrar el equilibrio entre la aceptación por parte del usuario y la fuerza de la contraseña. Si el sistema rechaza demasiadas palabras, los usuarios se quejarán de que es muy difícil encontrar una contraseña. Si el sistema utiliza un algoritmo sencillo para definir qué es aceptable y qué no, esto podría proporcionar pistas para que los password crackers refinasen sus técnicas para adivinar las contraseñas.