Publicado por & archivado en Internet, Seguridad.

En muchos sitios nos obligan a poner contraseñas cada vez más largas, con caracteres, mayúsculas y números por «nuestra seguridad».

¿Es esto realmente útil?

TL;DR; Esto no aumenta la seguridad de los usuarios y no sirve para mejorar la resistencia de nuestra contraseña contra ataques a las cuentas, sino para excusar la incompetencia de algunos CISO.


Por ejemplo, nuestro asistente para crear cuentas de correo electrónico genera contraseñas alfanuméricas de 6 caracteres (por ejemplo: xp54na), ¿Es insegura esta contraseña?

Al mirar esa contraseña parece fácil de adivinar ¿verdad?

Pues no, dicen que las apariencias engañan y este es el caso.

Una contraseña de 6 caracteres (sin contar las de 1 a 5 caracteres), usando números y letras minúsculas (sin acentos ni eñes), nos daría 36 diferentes caracteres y números, que serian 36^6-36^5-36^4-36^3-36^2-36. Las posibles combinaciones son 2.114.588.556 (unos 2000 millones).

Si incluyéramos mayúsculas las posibles combinaciones con 6 caracteres llegarían a los 55.000 millones (por ejemplo: Xp54nA), y si añadimos 26 símbolos más llegarían a 459.000 millones (por ejemplo: Xp5$n@). Un atacante nunca sabrá qué tipo de contraseña hemos usado, ni cuantos caracteres o símbolos tiene, así que la dificultad es extrema si no usamos contraseñas predecibles.

En cualquier caso las combinaciones son muchas más de las que parece a simple vista, incluso cuando eliminemos todas las palabras que puedan encontrarse en un diccionario de cualquier idioma.

 

¿Por qué dicen entonces que una contraseña de 6 caracteres es insegura?

Es porque con los procesadores modernos es posible introducir miles de contraseñas por segundo, por lo que podríamos saltar contraseñas de ese tamaño posiblemente en unas horas, días o semanas, dependiendo de la potencia del ordenador. Así que de aquí viene la idea, la contraseña se puede obtener probando todas las combinaciones, pero hay un pequeño detalle que se nos escapa en este razonamiento.

 

¿Por qué no se puede saltar por fuerza bruta una contraseña de 6 caracteres?

Si esto fuera así, en un rato cualquiera podría averiguar el PIN de la SIM de nuestro móvil, después de todo es un número de 4 dígitos que nos daría 10.000 combinaciones.

Se podrían meter a mano en un rato, pero todos sabemos que no es posible porque al tercer intento el teléfono se bloquea, por tanto, las probabilidades de conseguirlo son de 3 entre 10.000, es decir, un 0,03%, lo suficientemente difícil como para que sea casi imposible saltar el PIN de un móvil.

En nuestros servidores de correo ocurre lo mismo, al tercer intento se bloquea la IP.

Si el atacante dispusiera de muchas IPs (por ejemplo si dispone de una netbot formada por sistemas comprometidos), podría intentar nuevas combinaciones mientras le queden IPs sin bloquear, pero el servidor no verifica las contraseñas de forma instantánea como si fuera una consulta a un archivo local, suele tardar 1s o más, así que aun en el mejor de los casos, conociendo el tamaño y tipo de contraseña, disponiendo de millones de IPs, suponiendo que se conoce el nombre de usuario con certeza y que ningún otro mecanismo de seguridad le va a bloquear, necesitaría cientos de millones de IPs en el mejor de los casos (las netbots más grandes que se han visto tenían unos pocos millones).

Un atacante necesitará probablemente unos 200 millones de IPs y unos 100 años para saltar una contraseña aleatoria de 6 caracteres de un servidor de correo

En la práctica es aun peor para el atacante. Hemos visto que en todos los intentos de ataque por fuerza bruta a nuestros servidores tratan de saltar la contraseña poniendo como nombre de usuario el email, pero nuestro sistema no permite usarlo, es decir, los atacantes intentan contraseñas sobre usuarios inexistentes, por lo que realmente nunca conseguirán saltar una sola contraseña, a menos que sean capaces de averiguar también el usuario.

 

¿Y por qué lo intentan si no lo van a conseguir?

Es que no lo intentan realmente, o al menos no como la gente piensa que es, probando contraseñas hasta adivinarla.

La mayoría de ataques que se hacen para saltar contraseñas son a partir de bases de datos que se han filtrado en Internet (robos de bases de datos), o mediante ataques de diccionario, que sólo funcionan si se usan contraseñas muy simples, por ejemplo secuencias como 1234 o qwerty, o palabras comunes que se puedan encontrar en un diccionario, por eso, se deben usar contraseñas aleatorias o imposibles de predecir.

Si a alguien que tenía nuestros datos le han robado la base de datos de usuarios (nuestros datos están en bases de datos que ni sabemos, y muchas de esas las han robado y filtrado en la deep web), es muy posible que haya atacantes que tienen nuestro email, usuario y contraseña usados en otros servicios (por eso es tan mala idea reutilizar contraseñas).

Si quieres saber si alguna vez han robado tus datos, pon tu email aquí: ‘;–have i been pwned? y pulsa el botón «pwned?»

En estos casos, lo que pasa es que alguien ha obtenido la contraseña que has usado en otro servicio, al que le han robado tus datos, por tanto, si reutilizas la misma contraseña (algo que mucha gente hace), pueden probar a acceder a tu correo o tus cuentas en redes sociales.

Nosotros para evitar esto (cuando configuramos un servidor de correo para un cliente), impedimos que se pueda usar el email como usuario. El usuario final podrá reutilizar su contraseña, pero no el usuario si se lo generamos nosotros, lo que hace que un atacante no tenga forma fácil de obtener ese dato y por tanto, intentar acceder al servicio.

 

¿Por qué no obligar a usar una contraseña larga si no cuesta nada?

Es por una cuestión práctica y porque puede llegar a ser más insegura (debajo lo explico).

Es menos complejo manejar contraseñas cortas y es igual de seguro (si se generan aleatoriamente).

La mayoría de usuarios que necesita acceder por el webmail o introducir su contraseña son capaces de recordar una secuencia aleatoria de 6 caracteres, pero si les das una contraseña aleatoria más compleja, necesitarán apuntarla o guardarla en algún sitio, lo que finalmente puede hacer que sea más insegura. Por ejemplo, porque termine apuntada en un documento de texto en el escritorio.

Para los técnicos que dan soporte es también mucho más cómodo cuando configuran equipos introducir contraseñas más cortas, especialmente cuando hay muchos usuarios, poner contraseñas complejas puede dar lugar a muchos errores y problemas al introducirlas, salvo si se pasan copiando y pegando, que implica que probablemente las estás dejando en un email o documento fácilmente accesible por terceros.

Por eso, nosotros configuramos los asistentes de contraseñas para generar 6 caracteres por una cuestión práctica, que no sólo no compromete la seguridad de ninguna forma, sino que probablemente hace que sea más seguro.

Imagínese que cada vez que se quiera configurar un cliente de correo o acceder al webmail haya que escribir una contraseña como esta: L4hk4Vxbr8hFRAj23cHw, en vez de esta: fa82xp, para finalmente no obtener ninguna ventaja práctica en la seguridad.

Claro que para acceder al webmail (o páginas web), podríamos guardar las contraseñas en el navegador, pero eso de por si facilita también que la puedan robar por otros medios (porque se almacena sin cifrar, igual que si guardan en algún email o documento), así que podría ser mucho peor que la seguridad adicional que ofrecería teóricamente una contraseña más larga.

 

¿Está mal usar contraseñas largas?

No está mal, yo lo hago, genero contraseñas aleatorias distintas para cada servicio y también emails distintos y los guardo en Keepass (un gestor de contraseñas), pero siempre puede haber problemas, por ejemplo, podrían robar la contraseña maestra y hacerse con todas las demás credenciales.

Usar contraseñas de más de 6 caracteres no aumenta la seguridad para impedir el acceso no autorizado a nuestras cuentas. Acertar una contraseña con 2000 millones o 2000 trillones de combinaciones, es en la práctica lo mismo, ya que en ambos casos es sencillamente imposible.

Es decir, no es tan sencillo como «contraseña más larga» = «más seguridad», esta es una simplificación falaz.

La seguridad depende de múltiples factores que además son mucho más complejos de lo que nos quieren hacer creer.

Por ejemplo, en los accesos a nuestras páginas webs usamos técnicas que impiden el acceso de un atacante aun cuando consiguiera averiguar el usuario y la contraseña. Si podemos hacer esto ¿Importa realmente si la contraseña es más larga o más corta?

Es por esto que los bancos han implementado sistemas 2FA (segundo factor de autentificación), o el uso de datos biométricos. Estos sistemas (y otros que no se ven pero está ahí), hacen que la contraseña no sea tan importante.

Personalmente utilizo como 2FA un token U2F Hypersecu Mini (Universal 2nd Factor de FIDO), que he comprado por 5€ (han subido mucho, debería haber comprado más), además de un generador de claves TOTP que tengo instalado en el móvil con la app Aegis que tiene acceso biométrico. Podría tener como contraseña 1234 y nadie podría acceder a mis cuentas.

Como se ve, aumentar la longitud y complejidad de la contraseña sólo produce molestias a los usuarios sin aumentar la seguridad, incitando además a prácticas aun peores, como pegar la contraseña en un postit sobre el monitor o a usar contraseñas absurdas, por ejemplo, esta de 16 caracteres con mayúsculas, minúsculas, números y símbolos (pasaría cualquier sistema de verificación de contraseñas): Qwerty,123456789

 

¿Por qué entonces en muchas webs o asistentes de seguridad fuerzan o recomiendan usar contraseñas más largas?

Esto no es porque se pueda ganar acceso por tener una contraseña de 6 caracteres alfanumérica, en vez de una de, por ejemplo, 16 caracteres (2000 millones contra 140K trillones de combinaciones), si fuera tan fácil, a los delincuentes les resultaría veinte veces más fácil ganar el Euromillones o la Primitiva (una entre 100 millones aprox), que saltar una contraseña aleatoria de 6 caracteres.

Esto se hace «sólo» para evitar que se puedan saltar las contraseñas si un delincuente accede al servidor y roba la base de datos. Pero si eso sucediera, el menor de los problemas sería que pudieran saltar las contraseñas.

Además, basta con que en una base de datos de millones de registros haya unas pocas contraseñas débiles para obtener la clave privada y descifrar todas las demás, aun cuando se usen algoritmos de alto coste matemático como bcrypt, por lo que tampoco suele importar en estos casos el tamaño o la seguridad de las contraseñas.

Al final la exigencia de usar contraseñas «fuertes», como vemos ahora en todas partes, es una medida que obliga a los usuarios a poner contraseñas complejas por si acaso a la empresa responsable le roban la base de datos. Y aun así, no suele servir para nada.

Esto es como pedirte que te pongas paracaídas al subir a un vuelo comercial, por si el avión se cae.

No se vosotros, pero yo no me subiría a ese avión.

 

¿De verdad roban información de millones de usuarios?

Esto, que suena impensable, ha sucedido y lamentablemente sigue sucediendo a diario.

Y no suelen ser pequeñas empresas, sino todo lo contrario, entre las mayores brechas de seguridad con pérdida de datos están empresas como Adobe, eBay, Equifax, Facebook, LinkedIn, Marriott, Microsoft, MySpace o Yahoo. Los datos comprometidos se cuentan por miles de millones.

Luego son los mismos responsables de estos sitios, incapaces de mantener sus bases de datos a salvo, los que nos piden que usemos contraseñas estrambóticas «por nuestra seguridad», cuando en realidad es por si acaso a ellos les roban la base de datos.

Es lamentable que muchos responsables de seguridad terminen «copiando» estas políticas sin pensar lo que hacen. Ven que otros piden contraseñas más largas y por mera inercia hacen lo mismo, sin pararse a pensar si eso tiene sentido o si tratar de culpar a los usuarios de sus errores es lo correcto.

Hemos perdido cientos de millones de datos de usuarios ¿Qué hacemos? Pedir a los usuarios que usen contraseñas más largas ¿En serio?

Las cosas no son como en las películas donde un delincuente trata de adivinar que contraseña puso alguien escribiendo el nombre de su mascota. Más bien son cosas, entre otras, como:

  • Bots cargados con millones de datos previamente robados de bases de datos tratando de usar credenciales que teníamos en otros servicios.
  • Phishing para meter un virus que registre las pulsaciones de nuestro teclado.
  • Apps o complementos de navegadores con malware.
  • Ataques a procesadores como Spectre y Meltdown.
  • Vulnerabilidades en navegadores al cargar scripts maliciosos.

 

¿Qué contraseña puedo usar que sea segura?

Para evitar que puedan acceder a tu cuenta es importante que evites secuencias fáciles, como 1234 o qwerty, y también palabras que se puedan encontrar en un diccionario o una lista de nombres o empresas (usados para hacer ataques de diccionario todos ellos).

Si usas alguna de las contraseñas que hay en esta página, tienes grandes probabilidades de que la averigüen en un ataque por fuerza bruta, ya que son las primeras que van a probar.

Evita también datos personales propios o de familiares, no uses fechas, nombres, direcciones o similares tuyos o de familiares.

Tampoco te creas que escribir tu nombre al revés es buena idea, si no me crees, mira esta increíble historia (la contraseña, averiguada en un día, eran los apellidos del muerto al revés).

 

Estos son algunos trucos que puedes usar para recordar mnemónicamente las contraseñas:

– Usa dos o más palabras inconexas separadas por símbolos o números y sin relación con ningún dato personal, (ejemplos: patO-tren empanada4All cara.Sapo Tacones,high 7daysIN,elParadise).

En un ataque por fuerza bruta empezar a combinar palabras separadas por símbolos o con números en medio, más aun si mezclas idiomas y mayúsculas, hace que el número de intentos necesarios para averiguar la contraseña sea casi infinito, por lo que los que hacen un ataque por diccionario nunca llegan a ese punto, sino que se prueban las combinaciones más usadas.

– Usa la primera letra de las palabras de un refrán, cita o poema, por ejemplo, «Más Vale Pájaro En Mano Que Ciento Volando» podría ser «mvpemqcv» y se pueden construir variantes más complejas (Por ejemplo: Mvpem,q100v), que son mnemónicamente muy fáciles de recordar y muy difíciles de adivinar o atacar con diccionario.

– Cambia algunas letras por números, esta es la conversión más común (aunque se pueden usar otras): [ L = 1 | 2 = Z | 3 = E | 4 = A | 5 = S | 6 = b | 7 = Z | 8 = B | 9 = g | 0 = O ] (Por ejemplo: 0D10Lo5Lun3s). No hace falta cambiar todas las letras, aunque fuera sólo una ya rompería cualquier ataque por diccionario (Por ejemplo: I’DontL1keMondays).

– Usa secuencias de letras y números con datos que conozcas alterados, por ejemplo, si tus padres viven en el Paseo de la castellana 444 de Madrid, podrías usar MADPCas@444. La contraseña es casi imposible de averiguar aunque haya partido de una dirección porque contiene partes en mayúsculas, partes en minúsculas, partes de palabras, un símbolo y los números.

Usar la dirección de los padres es una idea, pero puede ser cualquier cosa que puedas recordar, por ejemplo, información del pasado como tu dirección de niño, el nombre o dirección de tu colegio, datos sobre alguna afición, el modelo de una consola de videojuegos, tu marca de maquillaje favorito, o lo que sea.

El truco está en que cojas información que ya está en tu cabeza, que otras personas no puedan saber que conoces (o imaginar que hayas sacado tu contraseña de ahí), y generar una contraseña a partir de esos datos. Por ejemplo, si te regalaron un gato que se llamaba Salem cuando tenías 9 años, podrías usar Salem9CAT.

Mis recomendaciones para mantener tus cuentas seguras son:

  • Inventa una contraseña segura que puedas recordar (por ejemplo, con los trucos de arriba), úsala con un gestor de contraseñas (como keepass), y almacena ahí todas las credenciales (con keepass el mismo archivo de contraseñas se puede compartir en el ordenador y el móvil).
  • Para el uso diario puedes guardar las contraseñas en el navegador, aunque mejor que no lo hagas para servicios críticos (que impliquen dinero), como el banco o tu cuenta de PayPal o Amazon, porque se guardan sin cifrar y se pueden leer. Usa siempre una «ventana de incógnito» al acceder al banco o servicios donde haces compras, ya que los complementos de los navegadores pueden ser peligrosos.
  • Si eres usuario de Windows tal vez fuera buena idea disponer de una memoria USB con un Linux, para poder arrancar tu ordenador con un sistema operativo «limpio» para acceder a servicios críticos.
  • Siempre que puedas activa el 2FA, ya lo tienen en casi todas las webs. Lo mejor es usar TOTP, hay montones de Apps como Google Authenticator, TOTP Authenticator o Aegis.
  • Nunca uses la misma contraseña en dos sitios, este es uno de los peores errores que se pueden cometer, por eso es buena idea usar un gestor de contraseñas, porque recordar decenas o cientos de contraseñas distintas es imposible.
  • Evita acceder a tus servicios usando otras cuentas, como Facebook, Google o Twitter, es cómodo, pero si te hackean una de ellas tendrán acceso a todo. Además, estas empresas no son precisamente conocidas por mantener la privacidad de nuestros datos.
  • Si puedes, utiliza un nombre de usuario y email distinto en cada sitio donde te des de alta. Si tienes tu propio dominio, es habitual poder crear alias de correo ilimitados en una cuenta. En Intervia no sólo puedes hacer esto, además, puedes añadir un comentario en cada email, por ejemplo, puedes crear un email paypal@example.com para usar en PayPal y otro fb@example.com para acceder a FaceBook. Esto además es útil porque si recibes spam en uno de los emails, sabrás quién ha sido y podrás borrarlo para no recibir más.
  • Por último, si usas un gestor de contraseñas puedes disponer algún medio para que, si te pasa algo, tus familiares puedan conocer la contraseña para acceder al resto de credenciales. Nunca pensamos que nos pueda pasar algo, pero piensa que pasaría en ese caso y a que datos podrían necesitar acceder tus familiares de no estar tu. Ya no es sólo que te mueras, imagina que tienes un accidente, por ejemplo, si sería útil que tus familiares pudieran acceder al banco o a otros servicios.

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *