Seguridad de contrasenas: guias del CCN-CERT, hashing y que no es Base64

El CCN-CERT y el ENS establecen los requisitos para contrasenas en la administracion espanola. Esta guia cubre generacion, hashing, comprobacion de filtraciones y doble factor.

Como generar una contrasena segura segun el CCN-CERT?

El Centro Criptologico Nacional (CCN-CERT), organismo adscrito al Centro Nacional de Inteligencia, publica guias detalladas sobre contrasenas para las administraciones publicas espanolas y el sector privado (Guia CCN-STIC 827, Gestion de contrasenas).

Las recomendaciones del CCN-CERT:

  • Minimo 12 caracteres para accesos con mecanismo de bloqueo tras intentos fallidos
  • Minimo 16 caracteres para accesos sin bloqueo automatico
  • 20 caracteres o mas para cuentas criticas (correo electronico principal, accesos VPN, administracion de sistemas)
  • Completamente aleatoria, sin palabras del diccionario, sin nombres, sin fechas
  • Unica por servicio, reutilizar una contrasena convierte una brecha en multiples compromisos

El Esquema Nacional de Seguridad (ENS, Real Decreto 311/2022) establece requisitos de autenticacion para los sistemas de la Administracion Electronica espanola. En la categoria ALTA del ENS se exige autenticacion multifactor para todos los accesos privilegiados.

El CCN-CERT desaconseja el cambio periodico forzado de contrasenas cuando no existe sospecha de compromiso, ya que fomenta patrones debiles y predecibles.

Generador de contrasenas

Que hace que una contrasena sea dificil de descifrar?

Los atacantes no prueban contrasenas caracter por caracter. Utilizan:

  • Ataques de diccionario: listas de palabras comunes, nombres y contrasenas conocidas extraidas de filtraciones (la lista "rockyou" contiene 14 millones de entradas)
  • Credential stuffing: pares usuario-contrasena de una brecha se prueban en otros servicios
  • Fuerza bruta: todas las combinaciones posibles, practicable solo contra contrasenas cortas

Una contrasena de 16 caracteres, completamente aleatoria y unica por cuenta, resiste los tres tipos de ataque. Las reglas de complejidad (mayuscula, numero, simbolo) importan mucho menos que la longitud y la aleatoriedad.

La LOPDGDD (Ley Organica 3/2018) y el RGPD establecen que el responsable del tratamiento debe aplicar "medidas tecnicas apropiadas" para proteger los datos personales. Una politica de contrasenas deficiente puede considerarse un incumplimiento.

Generador de contrasenas

Como comprobar si sus datos han aparecido en una filtracion?

Si un servicio que utiliza sufre un ataque, su direccion de email y contrasena (como hash o, en servicios mal gestionados, en texto claro) pueden venderse en foros criminales. Comprobar si su email aparece en filtraciones conocidas le indica que contrasenas cambiar con prioridad.

Have I Been Pwned (haveibeenpwned.com) es el servicio de referencia para esta comprobacion. Creado por el investigador de seguridad Troy Hunt, cataloga miles de millones de pares de credenciales de miles de filtraciones. Introducir su email muestra en que brechas aparecio y que datos quedaron expuestos.

Si su email aparece en una filtracion: cambie inmediatamente la contrasena del servicio afectado, compruebe si ha reutilizado esa contrasena en otros sitios y active la autenticacion de dos factores donde este disponible.

La AEPD (Agencia Espanola de Proteccion de Datos) recomienda en su guia de privacidad para usuarios comprobar periodicamente si los datos personales han sido comprometidos.

Como protege el hashing las contrasenas almacenadas?

Cuando un servicio almacena su contrasena correctamente, nunca guarda el texto en claro. Pasa la contrasena por una funcion de hash, una operacion matematica unidireccional que produce una salida de longitud fija llamada hash o resumen.

Al iniciar sesion, el servicio aplica hash a lo que escribio y lo compara con el hash almacenado. Si coinciden, la autenticacion es exitosa sin que el servidor haya conocido nunca la contrasena real.

Propiedades fundamentales del hashing criptografico:

  • Unidireccional: no se puede obtener la entrada original a partir del hash
  • Determinista: la misma entrada produce siempre el mismo hash
  • Resistente a colisiones: dos entradas diferentes no deben producir el mismo hash

Para almacenar contrasenas, los algoritmos lentos son mejores: bcrypt, scrypt y Argon2 son costosos computacionalmente por diseno, haciendo los ataques de fuerza bruta impracticables aunque se robe la base de datos. SHA-256 y SHA-512 son rapidos (adecuados para verificacion de integridad de archivos) pero demasiado rapidos para contrasenas, una GPU moderna puede probar miles de millones de hashes SHA-256 por segundo.

El articulo 32 del RGPD y la LOPDGDD exigen "medidas tecnicas apropiadas" para los datos personales almacenados. El uso de MD5 o el almacenamiento en texto claro puede derivar en sanciones de la AEPD. El ENS (categoria ALTA) requiere algoritmos de hashing aprobados por el CCN.

Generador de hash

Es Base64 una forma de cifrado o proteccion?

No. Base64 es una codificacion, no un cifrado. Convierte datos binarios en una cadena de texto usando 64 caracteres ASCII imprimibles. El resultado parece ilegible, pero cualquier herramienta, incluida la consola de desarrollador del navegador, puede revertirlo instantaneamente sin ninguna clave.

Base64 se usa para transportar datos binarios por sistemas que solo manejan texto: imagenes incrustadas en emails HTML, tokens JWT, cargas utiles binarias de API.

Nunca use Base64 para ocultar datos sensibles. Una codificacion no es una proteccion. Una contrasena o clave API almacenada en Base64 es practicamente texto en claro. La proteccion real requiere cifrado real (AES-256 o equivalente).

Codificador / Decodificador Base64

Que es la autenticacion de dos factores y por que importa?

La autenticacion de dos factores (2FA) agrega una segunda verificacion ademas de la contrasena. Aunque un atacante tenga su contrasena correcta (por una filtracion, phishing o adivinanza), no puede iniciar sesion sin el segundo factor.

Los tres tipos comunes de 2FA, de menor a mayor seguridad:

  1. App de autenticacion (Google Authenticator, Authy, Microsoft Authenticator), genera un codigo de 6 digitos que cambia cada 30 segundos. Resiste la mayoria de los ataques de phishing estandar.
  2. Llave de seguridad hardware (YubiKey, passkey FIDO2), dispositivo fisico que se conecta o acerca. La opcion mas segura; la llave esta vinculada al sitio especifico, por lo que los ataques de phishing no pueden interceptar el codigo.
  3. Codigo por SMS, mejor que no tener 2FA, pero vulnerable a ataques de SIM swapping.

El CCN-CERT recomienda activar 2FA primero en cuentas de correo electronico (que son el mecanismo de recuperacion de casi todas las demas cuentas), luego en banca online y accesos profesionales.

Para desarrolladores: implemente TOTP (Time-based One-Time Password, RFC 6238). Existen bibliotecas en todos los lenguajes principales. El ENS exige MFA para accesos privilegiados en sistemas de categoria ALTA y MEDIA.

Lista de comprobacion practica

  • Contrasenas: 12 caracteres minimo (CCN-CERT), 16+ recomendado, completamente aleatorias, unicas por servicio
  • Almacenamiento: gestor de contrasenas (Bitwarden es gratuito y de codigo abierto)
  • Comprobar filtraciones: buscar el email en haveibeenpwned.com
  • Responsabilidad del desarrollador: usar bcrypt o Argon2, nunca MD5 ni texto claro
  • 2FA: activar en correo, banca y cualquier cuenta con datos personales o de pago
  • Base64 no es seguridad, use AES-256 para lo que necesite proteccion real