Skip to main content

Autenticación

Pass 2FA MFA

Conceptos Iniciales de Seguridad

Primero necesitamos entender algunos conceptos iniciales sobre seguridad en autenticación. Las contraseñas sirven para autenticación. En una política de seguridad alta se habla de tener como mínimo 3 factores.

  1. Algo que tú sabes. En este caso tu contraseña.
  2. Algo que tú tienes. Algo que está en tu posesión. Si fuera un coche sería la llave, pero una contracontraseña como el 2FA, un token o un dispositivo de hardware como el Yubikey del que hablaremos más adelante.
  3. Algo que tú eres este es un elemento característico tuyo, en el caso la biometría, retina, rostro, etc.

Considero válido entender qué es un hash antes de seguir adelante. Siempre debería usarse el hash para codificar una contraseña y no guardarla como texto plano en una base de datos.

Cuantos más factores de seguridad apliquemos en la autenticación más seguro será.


¿Qué tener en cuenta en la creación de contraseñas?

Es muy normal un ataque de fuerza bruta para intentar descubrir contraseñas. Es necesario seguir algunas políticas de seguridad tanto en el ámbito empresarial como personal.

Cuando creamos una cuenta en algún lugar ¿te has parado a pensar si hacen uso de hashes? No lo sabemos. Si tu contraseña fue guardada en texto plano cualquier persona con acceso a la base de datos sabrá la contraseña. Aunque sea una contraseña muy fuerte no sirve de nada si alguien consigue leerla.

Cada año decenas de sitios tienen su infraestructura comprometida generando enormes filtraciones de datos. Siendo así vamos a enumerar las prioridades en las políticas de reglas.

1- Cada contraseña debe usarse para un único propósito

Si la contraseña se filtra sabrás exactamente de dónde fue y no impactará en otros lugares.

El sitio https://haveibeenpwned.com/ registra las principales filtraciones en los sitios más importantes. Comprueba si tu cuenta aparece en algún lugar.

2 Contraseñas robustas

¿Qué es una contraseña realmente robusta?

  • Cuanto mayor mejor. Rellena el máximo de caracteres posibles en el campo de contraseña. Un campo de contraseña hoy necesita tener al menos 12 caracteres para que puedas "arriesgarte". Cualquier contraseña por debajo de eso sufriendo un ataque de fuerza bruta puede ser encontrada en milésimas de segundo. Si has pensado que tu contraseña del banco solo tiene 6 o 4 dígitos y la encuentras insegura, lo que aumenta la seguridad es que a veces solo tenemos 3 intentos y después es bloqueada automáticamente.

Si has leído sobre la parte de hashes verás que en el caso de contraseñas, los sitios bien hechos utilizan algoritmos de derivación que son más lentos. Para ganar velocidad en el proceso los hackers colaboran para generar tablas precomputadas. Empiezan tomando un diccionario grande de palabras en inglés, generan bcrypt de todas y graban en una base de datos, y después toman cada palabra, concatenan con millones de combinaciones diferentes de números y caracteres especiales antes y después y regeneran el bcrypt de todos ellos guardando en la base de datos para aumentar la base. Además aprovechan las bases de datos filtradas que encuentran en la dark web para vender y así sucesivamente. Todo esto facilita ganar velocidad procesando los datos solamente 1 vez. Sabiendo esto para dificultar aún más podemos:

  • Utilizar contraseñas aleatorias. Contraseñas completamente aleatorias escapan de las derivaciones de palabras de los diccionarios arriba citados forzando que el hacker necesite encontrar vía fuerza bruta la posible combinación. Debemos mezclar:

    • Letras mayúsculas (26 opciones en el alfabeto)
    • Letras minúsculas (más 26)
    • Números (más 10 opciones de 0 a 9)
    • Símbolos especiales (un poco más de 30 opciones)

    Todo esto genera un total de 92 posibles caracteres. Una contraseña de 12 caracteres tendría 92¹² combinaciones para calcular el hash y cada carácter más aumenta 92 veces.

  • No debes ser capaz de memorizar esa contraseña. Si eres capaz de memorizarla entonces la contraseña es fácil.

Añade Más Capas de Protección

Siempre que sea posible utiliza en conjunto con la contraseña el 2FA (Two Factor Authentication) aplicando el factor de Algo que tú tienes. Un 2FA es una contracontraseña válida por un corto período de 30 segundos. Cada vez que el hacker intente acceder a alguna cuenta tuya protegida por 2FA tendrá una segunda barrera que tendrá que conseguir acertar más seis números aleatorios dificultando más 999999 veces. Fuera de eso existirá el retraso del procesamiento por esa segunda barrera haciendo inviable continuar.

Es importante mencionar que no es bueno recibir el código 2FA por SMS pues el móvil puede ser robado y la persona puede recibir el código usando tu tarjeta SIM en otro móvil hasta que consiga hacer la recuperación del número.

Existen varias apps para generar 2FA siendo las más comunes Google Authenticator, Auth y Microsoft Authenticator.

Un YubiKey es un dispositivo físico de seguridad fabricado por Yubico, utilizado para autenticación 2FA, autenticación multifactor (MFA) y otras formas de seguridad digital. Se parece a un pequeño pendrive y está diseñado para proteger accesos a sistemas, cuentas online y datos confidenciales. Puede usarse en puertos USB, NFC y hasta con conector USB-C, dependiendo del modelo. Funciona con diversos servicios y plataformas, como Google, Microsoft, GitHub, etc. Soporta diversos protocolos como U2F (Universal 2nd Factor), FIDO2, OTP (One Time Password) y otros estándares de seguridad.

yubikey

El primer y segundo modelo se diferencian en la conexión USB y USB-C pero tienen la misma funcionalidad. Una de las ventajas es que esa Y en el medio sirve para uso de huella digital. Usando la huella liberamos el dispositivo a utilizar el MFA implementando un factor más de seguridad el de Algo que tú eres. No todos los lugares soportan hardware keys y la usabilidad no es de las más simples siendo necesaria una mejor comprensión sobre este asunto.

4 Utiliza un gestor de contraseñas

Debes estar preguntándote cómo memorizar esas contraseñas aleatorias imposibles de grabar. Recomiendo utilizar un buen gestor de contraseñas. Los propios navegadores poseen esta funcionalidad, pero necesitarás utilizar siempre el mismo navegador en todos los lugares debido a la sincronización.

Lo ideal es no tener tus contraseñas en el servidor de nadie, pero como no todo el mundo tiene el conocimiento para eso entonces basta usar lo que tienes.

Yo suelo utilizar Bitwarden como un servidor auto alojado en mi infraestructura. Bitwarden es el gestor de contraseñas open source. Tienen el servicio gratuito en su infraestructura para que lo uses, pero también te permite tener el tuyo aisladamente como hago yo.

Bitwarden puede instalarse

Localmente en la máquina...

alt text

Como un plugin en el navegador...

alt text

Y en tu smartphone bitwarden playstore. Incluso en este método podemos utilizar la huella para hacer el login en el servidor.

El propio Bitwarden consigue generar las contraseñas aleatorias que citamos arriba.

Bitwarden Contraseña

Bitwarden ya tiene soporte al 2FA en el campo Authenticator Key (TOTP) en el que pones la contraseña inicial generada por el 2FA y después ya queda generando la contracontraseña allí mismo.

La única contraseña que necesitas memorizar es la contraseña maestra de Bitwarden, aquella que abre la caja fuerte para acceder al resto de las contraseñas. En este caso siempre es bueno usar una passphrase bien larga.

Una passphrase es una frase enorme. Cuanto mayor mejor, ej: MiseriepreferidaesBreakingBad!

Tanto Bitwarden como gestores de contraseñas en navegadores hacen el autocompletado de los campos de contraseña facilitando nuestra vida.

Hay varias soluciones gratuitas no necesita ser Bitwarden. Hasta antivirus como kaspersky tienen password manager, pero es una solución de pago.

LastPass y 1Password son gestores de contraseñas muy conocidos, pero ya han sufrido invasiones. Cuando vayas a elegir alguno haz al menos una búsqueda sobre la confiabilidad, pues si ellos no consiguen ni garantizar su propia seguridad qué decir de la tuya.