Hola muy buenas a todos los amantes de la seguridad informática. En esta ocasión voy a hablar de uno de los motivos por el cual nos silban los oídos a todos los informáticos que intentamos proteger una empresa. Ese motivo no es otro que esas contraseñas imposibles de recordar que exigimos implantar.
¿Realmente una contraseña tiene que ser tan rebuscada?
Seguro que a muchos esta viñeta os ha recordado todas esas ocasiones en las que los requisitos de una contraseña nos han sacado de quicio y os habéis preguntado: ¿es realmente necesario que una contraseña sea tan rebuscada?
La respuesta es un rotundo si, ya continuación voy a intentar explicaros porque las contraseñas deben de ser tan rebuscadas.
¿Qué es lo que determina la resistencia de una contraseña contra un ataque?
Para determinar la resistencia de una contraseña debemos de ponernos en la piel de un hacker que intenta averiguar una contraseña y para eso existen dos tipos principales de ataques: ataque por fuerza bruta, ataque por diccionario.
Simplemente es solo una cuestión de tiempo y precisamente eso es a lo que debemos prestar atención.
Entonces podemos decir que: la integridad de una contraseña se puede medir por el tiempo y los recursos (número de ordenadores y potencia de estos) que llevaría adivinar la contraseña probando una a una todas las posibles contraseñas.
¿Cómo podemos prolongar el tiempo que llevaría adivinar nuestra contraseña?
Primero vamos a ver cuáles son los dos elementos que conforman una contraseña:
Para que lo veáis con vuestros propios ojos a continuación vamos a comparar 3 combinaciones diferentes de caracteres y longitud para sacar conclusiones.
Para los siguientes ejemplos he utilizado la herramienta Crunch que es un generador de diccionarios que viene de forma nativa en kali Linux, su versión actual es la 3.5 y se distribuye bajo una licencia GPLv2.
Primer ejemplo: contraseña formada por números, algunos caracteres especiales y todas las letras en minúsculas y mayúsculas con una longitud de 4 caracteres.
Lo cual nos genera 20151121 posibles contraseñas, parece mucho pero un ordenador normal puede comprobar unas 600 contraseñas por segundo y si suponemos que la contraseña está en el punto intermedio de todas las posibles contraseñas nos sale poco más de 4,5 horas.
Segundo ejemplo: contraseña formada por todas las letras en con una longitud de 8 caracteres.
Lo cual nos genera 282429536481 posibles contraseñas si suponemos que la contraseña está en un punto intermedio de todas las posibles contraseñas nos sale a unos siete años y medio.
Tercer ejemplo: contraseña formada por números, algunos caracteres especiales y todas las letras en minúsculas y mayúsculas con una longitud de 8 caracteres.
Lo cual nos genera 457163239653376 combinaciones y si suponemos que la contraseña está en un punto intermedio de todas las posibles contraseñas nos sale a unos doce mil años.
Como conclusión vemos que es mucho más importante la longitud que los grupos de caracteres.
¿Cómo podemos calcular la complejidad de una contraseña?
La complejidad de una contraseña reside en una sencilla fórmula matemática:
X es la suma de todos los posibles caracteres.
n es la longitud de la contraseña.
El resultado es el número de posibles contraseñas por lo tanto, a mayor sea el resultado más segura será nuestra contraseña.
Ejemplos:
Letras minúsculas (27) + números (10) con una longitud de 5 dígitos
(27+10)^5= 69343957 posibles contraseñas
Letras minúsculas (27) + letras mayúsculas (27) con una longitud de 4 a 5 dígitos
((27+27) ^ 4) + ((27+27)^5)=467668080 posibles contraseñas
Intentar que nadie vea ninguna parte de nuestra contraseña:
Imaginemos una situación común en la que estamos escribiendo nuestra contraseña con un compañero curioso delante, el cual se ha dado cuenta de los dos primeros caracteres de nuestra contraseña y que además, simplemente ha contado los asteriscos para saber la longitud de nuestra contraseña, ¿cómo nos afecta esto?
Primero, supongamos que un atacante ajeno a nuestra empresa genera un diccionario con todas las letras minúscula, mayúsculas, números y los símbolos más comunes con una longitud de entre 4 y 6 caracteres.Eso nos da un total de 100342797568 posibles contraseñas.
Ahora nuestro compañero curioso sabiendo la longitud y los dos primeros caracteres genera un diccionario con un resultado de17576 posibles contraseñas es decir, se han reducido las posibles contraseñas en más de 5.700.000 veces la original.
Motivo más que suficiente para pedirle amablemente a cualquier persona que aparte la mirada.
Sustituir las vocales por números:
He leído en más de una ocasión que recomienda sustituir las vocales por números. Pero como vosotros ahora ya sabéis que si tu contraseña ya contiene un número, sustituir sus vocales por números contra un ataque de fuerza bruta es exactamente igual las dos y si pensáis que de ese modo es más difícil que vuestra contraseña se encuentre en un diccionario, siento tener malas noticias pero hoy en día existe multitud de herramientas que en un ataque convierten las vocales en números o herramientas pensada solo para estos casos como Mutator.
Como conclusión si tu contraseña tiene algún número no la vas a hacer más segura por sustituir las vocales por números.
El futuro y nuestras contraseñas:
La tecnología avanza y eso en este caso no quiere decir que sea para bien con ella también debería avanzar nuestras contraseñas.
Como hemos visto la robustez de nuestra contraseña se puede medir por el tiempo y los recursos (ordenadores y potencia de estos). Por tanto lo que hoy consideramos una contraseña robusta dentro de algunos años no lo será por eso deberíamos no solo cambiarla, sino aumentar su longitud ya que como hemos visto esto aumenta las posibles contraseñas de forma exponencial.
Recomendaciones para que nuestra contraseña siga siendo segura:
¿Realmente una contraseña tiene que ser tan rebuscada?
La respuesta es un rotundo si, ya continuación voy a intentar explicaros porque las contraseñas deben de ser tan rebuscadas.
¿Qué es lo que determina la resistencia de una contraseña contra un ataque?
Para determinar la resistencia de una contraseña debemos de ponernos en la piel de un hacker que intenta averiguar una contraseña y para eso existen dos tipos principales de ataques: ataque por fuerza bruta, ataque por diccionario.
- Fuerza bruta: se basa en probar una a una todas las posibles combinaciones de caracteres hasta que coincide con la contraseña.
- Ataque por diccionario: se basa en ir probando una a una todas las posibles contraseñas que se encuentran en un fichero de texto.
Simplemente es solo una cuestión de tiempo y precisamente eso es a lo que debemos prestar atención.
Entonces podemos decir que: la integridad de una contraseña se puede medir por el tiempo y los recursos (número de ordenadores y potencia de estos) que llevaría adivinar la contraseña probando una a una todas las posibles contraseñas.
¿Cómo podemos prolongar el tiempo que llevaría adivinar nuestra contraseña?
Primero vamos a ver cuáles son los dos elementos que conforman una contraseña:
- Longitud: es el número de caracteres por el cual está formada una contraseña.
- Caracteres: son los símbolos o gráficos que se utilizan para componer los diferentes alfabetos.
- Consonantes y vocales en minúscula formado por 27 caracteres diferentes.
- Consonantes y vocales en mayúscula formado por 27 caracteres diferentes.
- Números formado por 10 caracteres diferentes.
- Caracteres especiales (puntos, guiones, símbolos).
Para que lo veáis con vuestros propios ojos a continuación vamos a comparar 3 combinaciones diferentes de caracteres y longitud para sacar conclusiones.
Para los siguientes ejemplos he utilizado la herramienta Crunch que es un generador de diccionarios que viene de forma nativa en kali Linux, su versión actual es la 3.5 y se distribuye bajo una licencia GPLv2.
Primer ejemplo: contraseña formada por números, algunos caracteres especiales y todas las letras en minúsculas y mayúsculas con una longitud de 4 caracteres.
Lo cual nos genera 20151121 posibles contraseñas, parece mucho pero un ordenador normal puede comprobar unas 600 contraseñas por segundo y si suponemos que la contraseña está en el punto intermedio de todas las posibles contraseñas nos sale poco más de 4,5 horas.
Segundo ejemplo: contraseña formada por todas las letras en con una longitud de 8 caracteres.
Lo cual nos genera 282429536481 posibles contraseñas si suponemos que la contraseña está en un punto intermedio de todas las posibles contraseñas nos sale a unos siete años y medio.
Tercer ejemplo: contraseña formada por números, algunos caracteres especiales y todas las letras en minúsculas y mayúsculas con una longitud de 8 caracteres.
Lo cual nos genera 457163239653376 combinaciones y si suponemos que la contraseña está en un punto intermedio de todas las posibles contraseñas nos sale a unos doce mil años.
Como conclusión vemos que es mucho más importante la longitud que los grupos de caracteres.
¿Cómo podemos calcular la complejidad de una contraseña?
La complejidad de una contraseña reside en una sencilla fórmula matemática:
X es la suma de todos los posibles caracteres.
n es la longitud de la contraseña.
El resultado es el número de posibles contraseñas por lo tanto, a mayor sea el resultado más segura será nuestra contraseña.
Ejemplos:
Letras minúsculas (27) + números (10) con una longitud de 5 dígitos
(27+10)^5= 69343957 posibles contraseñas
Letras minúsculas (27) + letras mayúsculas (27) con una longitud de 4 a 5 dígitos
((27+27) ^ 4) + ((27+27)^5)=467668080 posibles contraseñas
Intentar que nadie vea ninguna parte de nuestra contraseña:
Imaginemos una situación común en la que estamos escribiendo nuestra contraseña con un compañero curioso delante, el cual se ha dado cuenta de los dos primeros caracteres de nuestra contraseña y que además, simplemente ha contado los asteriscos para saber la longitud de nuestra contraseña, ¿cómo nos afecta esto?
Primero, supongamos que un atacante ajeno a nuestra empresa genera un diccionario con todas las letras minúscula, mayúsculas, números y los símbolos más comunes con una longitud de entre 4 y 6 caracteres.Eso nos da un total de 100342797568 posibles contraseñas.
Ahora nuestro compañero curioso sabiendo la longitud y los dos primeros caracteres genera un diccionario con un resultado de17576 posibles contraseñas es decir, se han reducido las posibles contraseñas en más de 5.700.000 veces la original.
Motivo más que suficiente para pedirle amablemente a cualquier persona que aparte la mirada.
Sustituir las vocales por números:
He leído en más de una ocasión que recomienda sustituir las vocales por números. Pero como vosotros ahora ya sabéis que si tu contraseña ya contiene un número, sustituir sus vocales por números contra un ataque de fuerza bruta es exactamente igual las dos y si pensáis que de ese modo es más difícil que vuestra contraseña se encuentre en un diccionario, siento tener malas noticias pero hoy en día existe multitud de herramientas que en un ataque convierten las vocales en números o herramientas pensada solo para estos casos como Mutator.
Como conclusión si tu contraseña tiene algún número no la vas a hacer más segura por sustituir las vocales por números.
El futuro y nuestras contraseñas:
La tecnología avanza y eso en este caso no quiere decir que sea para bien con ella también debería avanzar nuestras contraseñas.
Como hemos visto la robustez de nuestra contraseña se puede medir por el tiempo y los recursos (ordenadores y potencia de estos). Por tanto lo que hoy consideramos una contraseña robusta dentro de algunos años no lo será por eso deberíamos no solo cambiarla, sino aumentar su longitud ya que como hemos visto esto aumenta las posibles contraseñas de forma exponencial.
Recomendaciones para que nuestra contraseña siga siendo segura:
- No escribir la contraseña en un posit y pegarlo al monitor.
- Nunca marcar la casilla de recordar contraseña.
- No usar la misma contraseña para todo.
- No decir nunca nuestra contraseña.
- No usar contraseñas comunes.
Lo que yo veo es que a las personas les molesta utilizar una clave segura, y a este problema se le agrega que utilizan la misma clave en varios lados.
ResponderEliminarEn mi caso en particular, son muy pocas claves las que memorizo.
Una es la sesión en Windows en mi trabajo (en casa uso una huella digital), y otra es mi clave de KeePass.
Nada es totalmente seguro, pero KeePass me a ahorrado muchisimo tiempo. Uso clave de 20 caracteres, con todos los símbolos posibles.
Al menos por ahora, es una buena opción para mí.
Claro está que también estamos expuestos a que el problema resida en que haya sido hackeado el lugar al que ingresamos (el servidor de email por ejemplo) y ahí ya no importará cuan segura sea nuestra clave.
Lamento corregir el artículo, pero lo que dice es incorrecto, aparte de que se contradice.
ResponderEliminarSi la complejidad (o la dificultad para ser averiguada) de una contraseña se mide por una ecuación exponencial, lo que la hará más robusta será aumentar el exponente, esto es, el número de caracteres de la misma, por encima de aumentar los símbolos posibles.
Además, él mismo aconseja no cambiar números por letras, puesto que argumenta que la complejidad sería la misma. En este caso, precisamente, cambiar números por letras aumenta la cantidad de caracteres posibles, es decir, la base de la función exponencial. Si mantenemos intacta la longitud de la contraseña (exponente) pero aumentamos sus variaciones (base), la haremos más robusta.
Para ello, he usado un ejemplo sencillo.
Una contraseña de tan solo 16 caracteres (con repetición) y 22 de longitud: "hadeantiguolacostumbre".
Consta de las 5 vocales: a, e, i, o, u y 11 consonantes: b, c, d, g, h, l, m, n, r, s, t.
Utilizando la fórmula del artículo, el número de contraseñas posible asciende a la friolera de 3,094850098213x10^26, un número casi inpronunciable.
Siguiendo el ejemplo del artículo (que compara utilizando contraseñas de diferente longitud, lo cual es injusto), es decir, suponiendo que un ordenador prueba 600 contraseñas por segundo, necesitaría:
5.1580835e+23 segundos (a 600 por segundo)
8.5968058e+21 minutos
1.432801e+20 horas
5.970004e+18 días
1.6356175e+16 años; dividiéndolo por la mitad (esto es suponer que la contraseña se encuentra en la media) seguiríamos teniendo un número multiplicado por 10 elevado a 15, lo cual excede sobremanera los 12.000 años de arriba.
También hay que tener en cuenta que, a menos caracteres posibles (es decir, suponiendo que el atacante conociera nuestro exclusivo alfabeto reducido, y tal vez es mucho suponer), el procesamiento de las contraseñas posibles por parte del ordenador sería mayor (no sé de dónde vienen las fuentes, así que no me aventuro a hacer ningún cálculo), pero suponiendo que fuera 10 veces mayor (6000 por segundo), el resultado seguiría siendo abismal (sería el mismo número de antes pero dividido por 10, es decir, estaría multiplicado por 10 elevado a 14; y así sucesivamente).
Esto suponiendo que la fuerza bruta se efectúa únicamente con esos 16 caracteres (ejecutando variaciones con repetición). Contemplando únicamente el alfabeto completo (27 letras contando con la ñ) en minúsculas, hablaríamos de 3.0903154e+31 de probabilidades, algo que ningún ordenador (ni siquiera cuántico, que son capaces de superar exponencialmente a los sistemas actuales) podría desentrañar (la tierra habría sido consumida por el sol para entonces).
En cuanto a la reducción de posibles contraseñas conociendo ciertos caracteres determinados Y SU POSICIÓN (lo cual es casi fundamental), es correcto el análisis que se hace.
Conclusión: lo que realmente fortalece las contraseñas no es la variedad sino la cantidad. Además, este tipo de contraseñas son, sin duda, más fáciles de recordar que otras con mayúsculas, minúsculas y caracteres especiales.
En adelante sugeriría una revisión más detallada de los contenidos matemáticos (y científicos en general) que se incluyan en el blog.