viernes, junio 27, 2014

Hay que acabar con las passwords complejas en servicios online

Como muchos de vosotros, he intentado poner contraseñas más o menos complejas a todas mis cosas. Desde volumenes cifrados, arranque de BIOS, documentos, arranque de sistemas operativos o servicios online. Passwords que a veces me cabrean porque me cuesta tres intentos ponerlas bien. Pero sigo con mis passwords complejas, al igual que siempre he recomendado a todo el mundo que ponga claves complejas en su vida digital e incluso he dejado artículos por aquí para la generación de claves robustas - que son necesarias para muchas cosas.

Figura 1: my_p@sSw0RD!

Esta bien, pero ni mucho menos sirve para sentirse seguro. De hecho, el pensamiento que ronda mi cabeza desde unos meses acá es que en los servicios online, las contraseñas complejas no deberían existir. Deberían ser todas contraseñas sencillas para que el usuario estuviera feliz y contento. Algo como el movimiento de Facebook de permitir 3 passwords distintas para hacer la vida del usuario más sencilla. Y dejadme que os explique por qué pienso así.

¿Para que sirve una password compleja en un servicio online?

Vamos a suponer un servicio online en el que heme de registrar para hacer algo. Supongamos que es un e-commerce, una nueva red social o simplemente un juego online, donde usamos una contraseña que protege nuestra cuenta ante posibles ladrones de identidad que se lleven el servicio y los datos que contiene por delante.

En todos esos esquemas, si el servidor ha hecho los deberes la contraseña compleja no nos defiende de nada (o casi nada) que no haga una contraseña sencilla como una cadena de letras y números de 8 caracteres. Estos son los deberes que el servidor podría hacer:

Deber número 1 - Permitir que se añada un segundo factor de autenticación
Si el servicio online permite poner un segundo factor de autenticación para proteger la cuenta, como Google Authenticator, un envío de SMS o el uso de Latch. Si alguien consigue la password (sencilla o compleja) no podrá usarla nunca.
Deber número 2 - Controlar el número de intentos de contraseña fallidos a una cuenta:
El servidor debe evitar que se realicen intentos al infinito de contraseñas a una cuenta - aquí un ejemplo para fortificar WordPress frente ataques de fuerza bruta -. Evitando la fuerza bruta online - con desactivaciones parciales, añadir una segunda verificación a la cuenta, bloqueo de direcciones IP temporales, etcétera, el ataque a una password de 8 caracteres o a una password compleja - aunque no sea igual de difícil en la teoría, será igual de difícil en la práctica, ya que sortear todas las barreras será un problema exactamente igual para ambas contraseñas. El resto solo "is a matter of time".
Deber número 3 - Controlar el número de intentos a nombres de usuario con misma contraseña
Al igual que se debe tener en cuenta que se debe controlar cuando se hace un ataque de fuerza bruta - o diccionario - a una contraseña, hay que tener en cuenta que el ataque se puede hacer al nombre de usuario fijando una contraseña.  Este ataque os lo expliqué en el artículo de "tus passwords son suprayectivas".  En ese caso, igual que se fija una contraseña sencilla, se puede fijar una contraseña que cumpla la política de complejidad y sea común siguiendo la política de de complejidad del sitio web. Es fácil.
Deber número 4 - Almacenar de forma segura las passwords
Utilizando un algoritmo de cifrado de contraseñas seguro, con su salt o con algoritmos criptográficos que hagan complejo - al menos durante un tiempo prudencial su crackeo -. ¿Por qué esto? Pues porque para que alguien se haga con las passwords debe hackear el servicio online completamente - algo que debe evitar el sitio  con auditoría continúa. Al final esto puede fallar, como hemos visto, hasta en sitios como eBay.
En segundo lugar, si me obliga el sitio online a poner una password compleja que me está jodiendo la vida y luego resulta que la almacena en BASE64 o en texto claro o en MD5 sin salt, merece un castigo ejemplar. Al final, con que el tiempo que aguante el algoritmo sea el suficiente para que el servio me avise de que le han hackeado y me de tiempo a cambiarla, me valdrá.
Deber número 5 - Cifrado seguro end-to-end
Poniendo un conexión con Certificate Pinning desde las apps y de HTTPs con validación extendida, sin mezclar contenido HTTP y HTTPs y añadiendo los flags Secure a todas las cookies con una gestión segura de las. Así, tendré las medidas necesarias para saber que estoy en una conexión cifrada de forma segura o no.
¿Y el resto de ataques?

El resto de los problemas que voy a tener con mi identidad recaen en mi lado. Si la password la publico en un post-it o en una captura de una foto es mi problema. Si me como un troyano en mi equipo o usa la password en un equipo que no es mío controlado es cosa mía. Si me como un ataque de red con un man in the middle en IPv4 o IPv6 porque no he visto las alertas de seguridad es mi problema. Y en todos estos casos, el problema será igual para contraseñas sencillas y contraseñas complejas.

En todos ellos, al final, si el sitio me permite poner un segundo factor de autenticación si alguien me roba la password recibiré la alerta de que algo va mal. Al menos en soluciones como Latch - donde te llegará la alerta - o vía SMS donde te llegará un código que te indicará que alguien ha iniciado sesión, que en soluciones como Google Authenticator no se recibe ninguna alerta de seguridad cuando alguien ha usado la password correctamente.

Es más, si mi cuenta tiene un 2FA, creo que el servicio online debería premiarme y dejarme poner contraseñas sencillas y dejar las contraseñas complejas solo para aquellos usuarios que no hayan puesto el 2FA. Una PIN de 4 números y un Latch es mucho más seguro para tu cuenta online que una password compleja y hace mucho más fácil la vida del usuario.

Saludos Malignos!

18 comentarios:

  1. Lector habitual27/6/14 11:15 a. m.

    ¿Y los que utilizamos gestores de contraseñas (KeePass, p.ej.) para guardar las credenciales de todos los sitios en los que estamos registrados?

    Empiezo con las desventajas:
    1- Las contraseñas de los correos "piedra angular" nunca se guardan en estos gestores => hay que sabérselas sí o sí y proteger estas cuentas con 2FA.
    2- Cada que que arrancas el sistema, muy probablemente lo primero que hagas es abrir el gestor de contraseñas.
    3- Relacionado con 2, dependes de un programita para poder iniciar sesión en los sitios. Ese programita puede que no esté disponible para todas las plataformas (KeePass está programado en .NET, por ejemplo).
    4- Relacionado con 2 y 3, aparte de depender del programa, dependes de traerte siempre los almacenes de contraseñas. Y ya que estamos, por si se nos pierde o nos roban el pendrive, no está de más utilizar TrueCrypt para proteger además otros datos (sigo sin encontrar alguna alternativa, y tampoco creo que a la NSA le interese por ahora mi pen).
    5- Hablando de Truecrypt y de la NSA, ¿puedo fiarme de mi gestor aunque sea código abierto?

    Sigo con las ventajas:
    1- De un vistazo tengo controlados todos los sitios en los que estoy registrado. ¿Le preguntamos al internauta medio que si sabe todos los sitios en los que se ha registrado?
    2- Puedo colocar contraseñas todo lo compleja que quiera, total, luego hago un "Auto-type" con ofuscación de doble canal (teclado y portapapeles con avances y retrocesos al azar) y ya he iniciado sesión. Esto es mucho más robusto frente a keyloggers que la introducción manual de contraseñas, aunque no siempre funciona.

    Por último, comentar que no veo del todo claro esto de utilizar contraseñas "sencillas". ¿Puedo acordarme de 5 contraseñas sencillas? Probablemente, sí. Pero, y si de esas 5, ¿solo una la escribiría a menudo y el resto de pascuas a ramos? Total, que para no olvidarlas haría lo que hacen muchos: utilizar la misma pass para todo. Lo que nos lleva inevitablemente al gestor de contraseñas para gestionar responsablemente nuestra "vida digital". Siempre está la opción de usar pass fáciles para los servicios utilizados más a menudo (simpre que tengan 2FA), respaldadas en un gestor que almacene además, todas aquellas credenciales que por infrecuentes nunca nos acordaríamos.

    ResponderEliminar
  2. Hola Chema, coincido contigo, llevo mucho tiempo pensando en que las contraseñas seguras son una absoluta molestia y además siempre se olvidan. Voto por 2FA como Latch.

    El tiempo hablará.

    Saludos!

    ResponderEliminar
  3. Latch hasta en la sopa...

    ResponderEliminar
  4. Te felicito Chema, te habéis convertido en todo un charlatán! Todo esto lo dices para justificar el hecho de que tu producto Latch, no soporta contraseñas seguras, las cuales haz recomendado durante décadas en este blog, para no quedar mal ahora lo justificas subliminalmente.

    Podrás ser un gurú de la seguridad informática, pero no eres una autoridad ni ente regulador en la materia. Lo que recomiendas viola lineamientos de seguridad establecidos para empresas y bancos por razones de peso.

    Te estoy perdiendo todo el respeto. En este blog no pasa un solo artículo sin que queráis vendernos a fuerza uno de tus libros o productos. Actuáis igual que los magufos y mediocres.

    ResponderEliminar
  5. @Anónimo, no soy yo el único que dice que las contraseñas hay que acabar con ellas. Me encantaría que yo hubiera sido el ideólogo de esta teoría completa, pero no es así.

    Este artículo está muy centrado en las contraseñas de Servicios ONLINE que tienen unas características muy concretas, tal y como he desarrollado en el artículo. ¿a parte de intentar meterte conmigo has querido rebatir algún "lineamiento" de mi argumentario?

    Citas a los bancos, y tras hablar mucho con ellos, su deseo es rebajar la complejidad de la password al mínimo. De hecho algunos piensan volver al PIN y dejar el motor antifraude por detrás.

    Las passwords complejas hay que usarlas en sitios donde tengan sentido, como cuando el atacante puede tener acceso físico a ellas - por eso he hablado claramente de Servicios Online y el cracking de la base de datos tras un owning -.

    Por último, si no pensase que Latch tiene sentido no lo hubiera creado e invertido tanto cariño y tanto amor, pero en este sitio habla de 2FA en general, incluido Latch, Google Authenticator y SMS (que también vendemos en Telefónica).

    Saludos!

    ResponderEliminar
  6. Hola, coincido contigo en todo Chema, pero en realidad ¿cuántos servicios tienen todos estos deberes hechos de forma eficaz?

    Si resulta que estos son solo unos pocos ¿lo único que quedaría sería intentar utilizar una contraseña compleja desde nuestro lado para, por lo menos, dar algo más de dificultad ante ciertos ataques?


    Un saludo.

    ResponderEliminar
  7. Hola, coincido contigo en todo Chema, pero en realidad ¿cuántos servicios tienen todos estos deberes hechos de forma eficaz?

    Si resulta que estos son solo unos pocos ¿lo único que quedaría sería intentar utilizar una contraseña compleja desde nuestro lado para, por lo menos, dar algo más de dificultad ante ciertos ataques?


    Un saludo.

    ResponderEliminar
  8. @Anónimo, por eso digo que "hay que acabar con ellas" y les mando deberes a los servicios online. A Google, Microsoft, Apple, etcétera se las supongo.

    Saludos!

    ResponderEliminar
  9. Hola, Chema.

    Llevo siguiendo tu blog desde que lo descubrí hace un par de meses, y quiero felicitarte por tu trabajo.

    Es muy fácil hacer críticas destructivas. No se necesita demasiado para ello. Personalmente pienso que tienes toda la razón en los planteamientos, y considero LATCH como una magnífica innovación en seguridad. Sería absurdo no hablar de ella y evitar darla a conocer en tu propia página.

    Llevo programando desde 1986, y hoy me has hecho replantearme los mecanismos de seguridad de mi proyecto actual.

    Un abrazo, y mi agradecimiento por tus aportaciones.

    Francisco del Aguila.

    ResponderEliminar
  10. Buenas,
    Totalmente deacuerdo Dr.Maligno.
    No sirve de nada poner contraseñas robustas si los servicios online no ponen de su parte y dejan en pelote a sus clientes, Muy mal¡ Caca Cacota¡ Pues a mi proveedor de Hosting; Webnode.es les mande esto el 12 de jun. 2014:

    Buenas,
    Hola mi nombre es Jonathan, vivo en las Islas Baleares, apasionado a la informática y su seguridad en especial y cliente de Webnode.

    Hoy me encontraba con tiempo(estoy en paro, osease todo el del mundo)XD y he realizado algunas pruebas a ver que ocurriría si alguien atacara mi red y realizase un ataque Man-in-the-middle y/o mediante Phishing (en el segunado ataque la responsabilidad reside en principalmente en el usuario)el obtener mis credenciales ha resultado muy sencillo ya que no implementáis el protocolo HTTPS ni encriptais las passwords.

    Mi consejo es el siguiente:
    Pueden empezar o bien Encriptando las Passwords de los clientes en el Login de inicio de sesión para editar la web o implementando el protocolo HTTPS para para complicarle las cosas a los atacantes para que en caso de un ataque Man-in-the-middle, captura de Cookies(mediante Phishing cagada la emos) pues una vez obtenido las passwords si se dirigen al login del sitio entraran sin problema alguno :(

    Otra opción seria implementar la verificación en dos pasos como en Google o similar. Saber mas: http://www.google.com/intl/es/landing/2step/

    Pero si lo que quieren es algo fuera de serie y mas sofisticado, estar actualizados y a la altura de los mejores les recomiendo Latch, un servicio de Eleven Patch, la start-up de Telefónica dirigida por Chema Alonso, propone un sencillo y muy práctico sistema para proteger tus cuentas y servicios online.
    ¿En qué consiste? Saber mas: https://latch.elevenpaths.com/

    El implementar algunas de estas medidas de seguridad les ahorrara muchos quebraderos de cabeza y ese tiempo lo pueden emplear en otras cosas y no "perderlo" pidiendo disculpas y explicaciones a todo aquel que le ocurra, que no haya ocurrido no quiere decir que no pueda ocurrir, mas vale prevenir que curar :)

    Atentamente: Jonathan Novel

    PD: Queres es poder, visto lo visto, ajo y agua... yo protejo a mis usuarios o lectores eliminando el registro al sitio :)

    ResponderEliminar
  11. Un ejemplo claro de que es mas seguro algo incluso sin passwod que con la password mas chunga del mundo mundial :) pero yo sigo siendo vulnerable :(

    He dicho¡

    ResponderEliminar
  12. Y hablando de contraseñas seguras qué opinas de usar servicios como LastPass o Password? Ya que son tan largas o son tan diferentes las que creamos que tal o qué ventajas o desventas de sobre un servicio como este?
    Salu2

    ResponderEliminar
  13. esto de las pass es un gran tema, y de que sea simple para la usuarios finales es lo ideal. (ya a nivel corporativo ó gubernamental, tendrían que asegurarse de otras maneras) Y también creo, que el tema pasa por educar al usuario de hogar y al admin, al uso de las mismas. No creo que sea un tema menor. El 2fa es un buen sistema, luego vamos a pasar al 3fa, 4fa y así. y no olvidemos la ingenieria social, el trashing, etc.

    ResponderEliminar
  14. esto de las pass es un gran tema, y de que sea simple para la usuarios finales es lo ideal. (ya a nivel corporativo ó gubernamental, tendrían que asegurarse de otras maneras) Y también creo, que el tema pasa por educar al usuario de hogar y al admin, al uso de las mismas. No creo que sea un tema menor. El 2fa es un buen sistema, luego vamos a pasar al 3fa, 4fa y así. y no olvidemos la ingenieria social, el trashing, etc.

    ResponderEliminar
  15. Yo creo que las contraseñas tienen que ser complejas, pero no difíciles. Me explico, lo que no tiene sentido es tener una contraseña de 16 caracteres hexadecimales aleatorios para el correo, otra para el Facebook y otra para el Dropbox. Porque eso no lo recuerda ni el tato, y acabas jorobando el tema apuntándolas en un papel o desastre similar. Pero tampoco hace falta irse al otro extremo, que es poner "pepito1234" en todas partes, y palante. Un término medio es poner contraseñas diferentes, pero usando siempre el mismo criterio. Por ejemplo, usando "corr-pepito-01" para el correo, "face-pepito-01" para el facebook, y así sucesivamente. De esta manera tenemos contraseñas relativamente fuertes (son diferentes entre servicios, largas y con caracteres diferentes de letras), pero triviales de recordar.

    ResponderEliminar
  16. Bitcoiner y fan de Latch y Maligno5/7/14 3:52 a. m.

    Jesús, recuerdo una historia de un programador famoso en una conferencia que puso su pass a lo " hola.soy55.blackhack ", el tipo salio corriendo porque le estaban haciendo en todos los servicios en los que estaba escrito. Por cambiar black.. por Facebook. ..

    ResponderEliminar
  17. Yo apunto todos mis "user" y todas mis "password" en una libreta. Y eso es siempre lo recomiendo a familiares y amigos que suelen poner la misma contraseña en todos los sitios. Y ya han perdido cuentas en, por ejemplo, Google o Hotmail, por no acordarse si se llevan un tiempo sin entrar o porque tienen creadas más de una cuenta en un mismo sitio web.
    Y eso, apuntarlo todo en una libreta, es una costumbre que cogí hace ya años. Como siempre, es mejor coger una costumbre antes que lamentarse.
    Adiós.

    ResponderEliminar