Autenticació i Control d'Accés
Proposta didàctica
En aquest bloc treballem el RA2: Configura sistemes de control d'accés i autenticació incorporant validació multifactor.
Criteris d'avaluació
-
CA2.1 Configura mecanismes d'autenticació multifactor.
-
CA2.2 Aplica polítiques d'autenticació basades en contrasenyes seguint les recomanacions actuals.
-
CA2.3 Implementa autenticació basada en certificats digitals.
-
CA2.4 Configura autenticació per tokens i OTP (One-Time Passwords).
-
CA2.5 Analitza els riscos i limitacions de l'autenticació biomètrica.
Continguts de referència
- Factors d'autenticació
- 1.1 Factor de coneixement (password, PIN, patró)
- 1.2 Factor de possessió (token, smartphone, targeta)
- 1.3 Factor d'inherència (biomètrica: empremta, iris, veu)
- 1.4 Factor de localització i context
- Autenticació multifactor (MFA/2FA)
- 2.1 TOTP (Time-based One-Time Password) – RFC 6238
- 2.2 HOTP (HMAC-based OTP) – RFC 4226
- 2.3 FIDO2 i WebAuthn
- 2.4 Passkeys (FIDO2 sense contrasenya)
- 2.5 Push notifications
- Polítiques de contrasenyes
- 3.1 NIST SP 800-63B: recomanacions modernes
- 3.2 Frases de contrasenya (passphrases)
- 3.3 Verificació contra llistes de paraules compromeses
- Autenticació per certificats digitals
- 4.1 X.509 i PKI
- 4.2 Autenticació mútua TLS (mTLS)
- Tokens hardware i OTP
- 5.1 YubiKey i FIDO2
- 5.2 Google Authenticator, Authy
- 5.3 Targetes intel·ligents (smartcards)
- Biomètrica en autenticació
- 6.1 Tipus: empremta dactilar, reconeixement facial, iris, veu
- 6.2 Mètriques: FAR, FRR, EER
- 6.3 Riscos: spoofing, privacitat, irrevocabilitat
- Zero Trust Architecture
- 7.1 Principis de Zero Trust
- 7.2 NIST SP 800-207
Questionari inicial
- Quina diferència hi ha entre autenticació i autorització?
- Quins tres factors principals s'utilitzen en l'autenticació?
- Per qué una contrasenya sola no és suficient per protegir un compte?
- Que és el MFA i per qué es recomana?
- Quina diferència hi ha entre TOTP i HOTP?
- Que és FIDO2 i per qué millora la seguretat respecte a les contrasenyes?
- Per qué el NIST SP 800-63B recomana no obligar els usuaris a canviar la contrasenya regularment?
- Que és una passphrase i per qué és millor que una contrasenya tradicional?
- Qué és l'autenticació biomètrica i quines formes existeixen?
- Per qué la biomètrica NO és el factor d'autenticació més segur?
- Que és el SIM swapping i com afecta la seguretat del 2FA per SMS?
- Qué és una YubiKey i quin factor d'autenticació representa?
- Que és Zero Trust Architecture i en qué es diferencia del model tradicional de seguretat perimetral?
- Que és un atac de phishing de credencials i com el prevé FIDO2?
- Que és mTLS (mutual TLS) i en quin context s'utilitza?
- Qué és un atac de força bruta i com es pot mitigar?
- Per qué és perillós reutilitzar contrasenyes entre serveis diferents?
- Que és Have I Been Pwned i per a qué el faries servir?
- Qué és el principi del mínim privilegi (Least Privilege) i com s'aplica en autenticació?
- Quina diferència hi ha entre autenticació single-factor, two-factor i multifactor?
Programació d'aula
| Sessió | Continguts | Activitats | CAs Treballats |
|---|---|---|---|
| 23-26 | Factors d'autenticació i vulnerabilitats del 2FA SMS | Demostració SIM swapping, anàlisi casos reals | CA2.1, CA2.2 |
| 27-30 | TOTP, FIDO2 i WebAuthn | Configurar Google Authenticator i Authy | CA2.1, CA2.4 |
| 31-34 | Polítiques de contrasenyes NIST SP 800-63B | Comparació polítiques, test passphrases | CA2.2 |
| 35-38 | Certificats digitals X.509 i autenticació mTLS | Inspecció certificats web amb OpenSSL | CA2.3 |
| 39-42 | Tokens hardware YubiKey i bypass d'autenticació | Laboratori: intentar bypassar 2FA per SMS | CA2.4, CA2.5 |
| 43-44 | Biomètrica, riscos i Zero Trust - avaluació bloc 2 | Qüestionari i cas pràctic Zero Trust | CA2.5 |
Factors d'Autenticació
La tríada d'autenticació
L'autenticació és el procés de verificar que algú és qui diu ser. Els factors d'autenticació es classifiquen en tres categories fonamentals:
graph TB
subgraph F1 ["Factor 1: Coneixement (Something you KNOW)"]
P["🔑 Contrasenya / PIN\nPatró de desbloqueig\nPreguntes secretes"]
end
subgraph F2 ["Factor 2: Possessió (Something you HAVE)"]
T["📱 Smartphone (app TOTP)\nYubiKey / Token hardware\nTargeta intel·ligent"]
end
subgraph F3 ["Factor 3: Inherència (Something you ARE)"]
B["👁️ Empremta dactilar\nReconeixement facial\nVeu / Iris"]
end
subgraph F4 ["Factor 4: Localització (Somewhere you ARE)"]
L["📍 Adreça IP\nGeolocalització GPS\nXarxa de confiança"]
end
MFA["✅ MFA = Combinació de 2+ factors"]
F1 --> MFA
F2 --> MFA
F3 --> MFA
F4 -.->|Opcional| MFA
style MFA fill:#228844,color:#fff
style F1 fill:#2266cc,color:#fff
style F2 fill:#886600,color:#fff
style F3 fill:#660066,color:#fff
style F4 fill:#004466,color:#fff
El 2FA per SMS és vulnerable
L'autenticació de dos factors per SMS es considera insegura per diverses raons:
- SIM Swapping: Un atacant convenç a l'operadora de telefonia per transferir el teu número de telèfon a una SIM seva. En 2019, Jack Dorsey (CEO de Twitter) va ser víctima d'aquest atac.
- Intercepcions SS7: El protocol SS7 (que interconnecta xarxes de telefonia) té vulnerabilitats que permeten interceptar SMS.
- Phishing en temps real: Pàgines web de phishing podem capturar el codi SMS introduït per l'usuari i usar-lo immediatament.
Alternativa: Usa TOTP amb una app com Aegis (Android) o aplicacions FIDO2/WebAuthn.
Autenticació Multifactor (MFA)
TOTP – Time-based One-Time Password
TOTP (RFC 6238) és l'estàndard darrere dels codis de 6 dígits que expiren cada 30 segons. Funciona de la manera següent:
- Durant la configuració, el servidor genera una clau secreta compartida (normalment en format Base32, mostrada com a QR code).
- Tant el servidor com l'aplicació mòbil coneixem:
- La clau secreta compartida
- El temps actual (Unix timestamp)
- El codi TOTP es calcula com:
- Com que tots dos coneixen el temps i la clau, calculen el mateix codi sense comunicar-se.
sequenceDiagram
participant U as Usuari
participant App as App TOTP (mòbil)
participant S as Servidor
Note over U,S: Fase d'inscripció (una vegada)
S->>U: QR code (clau secreta)
U->>App: Escaneja QR
App->>App: Emmagatzema clau secreta
Note over U,S: Fase d'autenticació (cada vegada)
U->>S: Nom d'usuari + contrasenya
S->>U: Sol·licita codi TOTP
App->>App: Calcula TOTP(clau, temps_actual)
U->>S: Introdueix codi de 6 dígits
S->>S: Calcula TOTP esperat i compara
S->>U: ✅ Accés concedit (si coincideix)
Apps TOTP recomanades: - Aegis (Android, codi obert): Permet exportar còpies de seguretat xifrades. - Authy: Sincronització al núvol, disponible a mòbil i escriptori. - Google Authenticator: Simple, sense núvol, però sense còpia de seguretat fins fa poc. - Bitwarden Authenticator: Integrat al gestor de contrasenyes.
FIDO2 i WebAuthn
FIDO2 és l'estàndard d'autenticació sense contrasenya més segur disponible avui. Combina dos protocols:
- CTAP2 (Client to Authenticator Protocol): Com el dispositiu d'autenticació (YubiKey, smartphone) es comunica amb el navegador.
- WebAuthn (Web Authentication API): API JavaScript estàndard W3C que permet als llocs web usar FIDO2.
Per qué FIDO2 és invulnerable al phishing?
En FIDO2, la clau privada mai surt del dispositiu físic. La verificació es fa per criptografia asimètrica lligada al domini web exacte:
Registre:
1. Lloc web envia un "challenge" al dispositiu
2. Dispositiu genera un parell de claus (pública/privada) ÚNIC per a aquest domini
3. Envia la clau pública al servidor
4. La clau privada QUEDA AL DISPOSITIU (mai es transmet)
Autenticació:
1. El servidor envia un challenge signat amb el domini
2. El dispositiu verifica que és el domini correcte (anti-phishing automàtic!)
3. Signa el challenge amb la clau privada
4. El servidor verifica la signatura amb la clau pública registrada
Passkeys – El futur sense contrasenyes
Passkeys és la implementació de FIDO2 de Google, Apple i Microsoft per eliminar les contrasenyes del tot. La clau privada es guarda al dispositiu (o al núvol del fabricant xifrada) i s'activa amb biomètrica local (FaceID, TouchID, Windows Hello). Cap contrasenya, cap phishing, cap intercepcions. Disponible a Android, iOS, Windows i macOS des de 2022-2023.
Polítiques de Contrasenyes (NIST SP 800-63B)
L'evolució de les recomanacions
Durant dècades, la seguretat de contrasenyes es va basar en regles que en realitat feien els sistemes menys segurs:
Regles antigues (evitar):
- Obligar a canviar la contrasenya cada 90 dies → els usuaris incrementen un número al final
- Exigir majúscules + números + símbols → genera patrons predictibles com P@ssw0rd1
- Longitud mínima de 8 caràcters → massa curta per als sistemes de força bruta moderns
Recomanacions NIST SP 800-63B (2017, actualitzat 2024):
| Recomanació | Detall |
|---|---|
| ✅ Longitud mínima 8 caràcters, màxim 64+ | Com més llarga, millor |
| ✅ Permetre tots els caràcters Unicode | Inclosos espais i emojis |
| ✅ Verificar contra llistes de contrasenyes compromeses | Usar Have I Been Pwned API |
| ✅ No obligar a canvis periòdics de contrasenya | Canviar NOMÉS si hi ha indicis de compromís |
| ❌ No exigir complexitat arbitrària | Majúscules/números/símbols obligatoris |
| ❌ No usar preguntes de seguretat | Sovint la resposta és públicament accessible |
| ❌ No truncar contrasenyes llargues | Permet passphrases llargues |
| ✅ Bloquejar contrasenyes de diccionari | "password", "123456", "qwerty" etc. |
Passphrases: el millor dels dos mons
Una passphrase és una seqüència de paraules aleatòries que és alhora llarga (segura contra força bruta) i memorable:
Exemples de passphrases:
✅ "cotxe-blau-bolet-82-estrella" → 31 caràcters, fàcil de recordar
✅ "tardorTrenverdAlba2024" → 22 caràcters, combinació natural
✅ "gat feliç poma rotllo" → 20 caràcters amb espais
Versus contrasenyes "complexes" però febles:
❌ "P@ssw0rd1!" → 10 caràcters, patró MOLT comú, en diccionaris d'atac
❌ "Abc123!!" → 8 caràcters, patró predictible
El generador de passphrases Diceware (usa 5 tirades de dau per triar paraules d'una llista de 7776 paraules) produeix passphrases amb ~65 bits d'entropia per paraula afegida.
Eines per verificar contrasenyes compromeses:
# Verificació anònima via Have I Been Pwned (API de k-anonymity)
# S'envia només els 5 primers caràcters del hash SHA1
PASSWORD="la_teva_contrasenya"
HASH=$(echo -n "$PASSWORD" | sha1sum | tr '[:lower:]' '[:upper:]' | cut -c1-40)
PREFIX="${HASH:0:5}"
SUFFIX="${HASH:5}"
curl -s "https://api.pwnedpasswords.com/range/$PREFIX" | grep "$SUFFIX"
# Si retorna resultats, la contrasenya ha estat compromesa N vegades
Miniactivitat
- Usa l'eina https://haveibeenpwned.com/Passwords per comprovar si "P@ssw0rd" i "correcthorsebatterystaple" han estat compromeses.
- Genera una passphrase de 5 paraules aleatòries amb https://www.diceware.net/ i calcula quants anys trigaria a trencar-la per força bruta amb un equip de 10^12 intents/segon.
- Analitza la política de contrasenyes d'un servei web popular (Gmail, GitHub, LinkedIn) i avalua si segueix les recomanacions NIST.
Autenticació per Certificats Digitals
Certificats X.509 i autenticació basada en PKI
Un certificat digital X.509 conté: - La clau pública del titular - Informació d'identitat (Common Name, Organització, etc.) - Dates de validesa - Extensions (Subject Alternative Names per a webs, etc.) - Signatura de l'Autoritat de Certificació (CA)
Autenticació basada en certificats (Client Certificate Authentication):
En lloc de contrasenya, el client presenta un certificat digital. El servidor verifica que: 1. El certificat ha estat signat per una CA de confiança 2. El certificat no ha caducat 3. El certificat no ha estat revocat (consulta CRL o OCSP) 4. El client pot demostrar que posseeix la clau privada corresponent (repte-resposta)
# Verificar un certificat web amb OpenSSL
openssl s_client -connect www.exemple.cat:443 -servername www.exemple.cat < /dev/null 2>/dev/null | \
openssl x509 -noout -text | grep -A5 "Subject:\|Validity\|Subject Alternative"
# Verificar si un certificat ha estat revocat (OCSP)
openssl ocsp -issuer ca.crt -cert servidor.crt \
-url http://ocsp.exemple.cat -text
Mutual TLS (mTLS)
En mTLS, tant el client com el servidor presenten els seus certificats. Això proporciona autenticació bidireccional sense contrasenyes:
sequenceDiagram
participant C as Client (navegador/API)
participant S as Servidor
C->>S: ClientHello (TLS handshake)
S->>C: ServerHello + Certificat del servidor
S->>C: Solicita certificat de client
C->>S: Certificat de client + Signatura de prova de possessió
S->>S: Verifica certificat client (cadena CA, caducitat, revocació)
C->>S: Verifica certificat servidor
Note over C,S: Canal TLS bidireccional establert
C->>S: 🔒 Comunicació xifrada i autenticada ambdós extrems
mTLS s'usa àmpliament en: - APIs corporatives i microserveis (service mesh com Istio) - Accés VPN (OpenVPN, WireGuard amb certificats) - Portals d'administració interna - IoT i dispositius embedits que necessiten autenticació forta
Tokens Hardware i OTP
YubiKey i el factor FIDO2
YubiKey de Yubico és el token hardware de seguretat més popular. Suporta múltiples protocols:
- FIDO2/WebAuthn: Autenticació sense contrasenya al navegador
- FIDO U2F: Segon factor en llocs web (llegat)
- OTP: Genera contrasenyes OTP de 44 caràcters (Yubico OTP)
- PIV: Targeta intel·ligent per a autenticació d'empreses i govern
- OpenPGP: Emmagatzema claus PGP al hardware
Avantatges del hardware token vs. app de mòbil:
✅ Immune al phishing (lligat al domini web)
✅ Immune a malware al telèfon mòbil
✅ No necessita bateria (generalment)
✅ Factor físic inqüestionable
✅ Funciona sense cobertura / bateria del mòbil
Desavantatges:
❌ Cost (25-70€ per unitat)
❌ Es pot perdre (cal tenir còpia de seguretat)
❌ No es pot usar en alguns telèfons sense adaptador
Smartcards i PIV
Les targetes intel·ligents (smartcards) emmagatzemen certificats digitals en un chip segur. L'estàndard PIV (Personal Identity Verification, FIPS 201) és el sistema usat per les agències federals dels EUA.
En entorns corporatius, les targetes intel·ligents permet: - Iniciar sessió a Windows/Linux amb certificat en comptes de contrasenya - Signar digitalment documents - Xifrar correus electrònics (S/MIME) - Accés físic a edificis (targeta de proximitat combinada)
Miniactivitat
Configura TOTP en un compte personal (GitHub, Google, o un servei web que el suporti):
- Activa l'autenticació de dos factors al servei.
- Escaneja el QR amb l'app Aegis o Google Authenticator.
- Documenta els codis de recuperació i explica on s'haurien de guardar de forma segura.
- Reflexiona: si perds el telèfon, com podries recuperar l'accés?
Autenticació Biomètrica
Tipus i tecnologies
L'autenticació biomètrica usa característiques físiques o de comportament úniques de cada persona:
| Tipus | Tecnologia | Precisió | Usabilitat | Costos |
|---|---|---|---|---|
| Empremta dactilar | Sensor òptic o capacitatiu | Alta | Alta | Baix |
| Reconeixement facial | Càmera IR (3D) o 2D | Alta | Alta | Mig |
| Iris / Retina | Càmera IR especialitzada | Molt alta | Baixa | Alt |
| Geometria de mà | Escàner 3D | Mitja | Alta | Mig |
| Veu | Micròfon + ML | Baixa-Mitja | Alta | Baix |
| Signatura manuscrita | Tauleta digitalitzadora | Mitja | Mitja | Baix |
| Comportament | Ritme de teclat, gait, ratolí | Baixa | Molt alta | Mig |
Mètriques de fiabilitat
Per avaluar un sistema biomètric s'usen tres mètriques principals:
- FAR (False Acceptance Rate): Probabilitat que el sistema accepti un usuari no autoritzat. Un FAR de 0,001% significa que 1 de cada 100.000 intentos d'impostors serà acceptat.
- FRR (False Rejection Rate): Probabilitat que el sistema rebutgi un usuari legítim. Un FRR alt fa el sistema frustrant d'usar.
- EER (Equal Error Rate): Punt on FAR = FRR. Menor EER indica millor sistema.
Compromís: Reduir el FAR augmenta el FRR i viceversa. Els sistemes han de trobar el punt d'equilibri adequat per al context.
Riscos i vulnerabilitats de la biomètrica
La biomètrica NO és revocable
Si una contrasenya es filtra, pots canviar-la. Si la teva empremta dactilar o les dades de la teva cara es filtren, no pots canviar-les mai. Quan el proveïdor A guarda una còpia de la teva empremta digital i pateix una bretxa de dades, el teu factor biomètric queda compromès per sempre per a qualsevol servei.
Atacs de suplantació (Spoofing/Liveness attacks): - Empremta: Amb una empremta "robada" (de superfícies tocades o fotos) i una impressora 3D o làtex s'ha aconseguit enganyar alguns sensors. El sensor FaceID d'Apple (IR estructurat 3D) és molt més difícil d'enganyar. - Cara: Imprimir una foto o usar un vídeo pot enganyar sistemes sense detecció de "liveness" (prova de vida). Android i iOS usen detecció de profunditat IR per mitigar-ho. - Veu: Amb mostres d'àudio de les xarxes socials, sistemes TTS (text-to-speech) basats en IA poden imitar una veu amb prou qualitat per enganyar alguns sistemes.
Problemes de privacitat: - Les dades biomètriques són dades de categoria especial al RGPD (article 9): necessiten protecció reforçada i consentiment explícit. - Les bases de dades centralitzades de biomètrica és un objectiu d'alt valor per als atacants. - Millor pràctica: emmagatzemar les dades biomètriques LOCALMENT al dispositiu (secure enclave del chip), mai enviar-les a servidors externs.
Zero Trust Architecture
Principis del model Zero Trust
Zero Trust (Confiança Zero) és un model de seguretat que substitueix la premissa tradicional de "la xarxa interna és segura" per una nova: "no confiar mai, verificar sempre".
Model tradicional (perimetral): - Tallafoc separa la xarxa "confiable" (interna) de la "no confiable" (Internet) - Un cop dins de la xarxa interna, els dispositius confien entre ells - Un atacant que compromet un dispositiu intern pot moure's lateralment sense restriccions
Model Zero Trust: - Cap usuari, dispositiu o xarxa és de confiança per defecte, ni tan sols la xarxa interna - Cada sol·licitud d'accés és autenticada, autoritzada i verificada contínuament - L'accés es concedeix amb el mínim privilegi necessari - Es monitoritza tot el trànsit, intern i extern
flowchart LR
U["👤 Usuari\n(qualsevol lloc)"] --> PDP
subgraph ZeroTrust ["Zero Trust Control Plane"]
PDP["Policy Decision\nPoint (PDP)\n\n🔍 Verifica:\n- Identitat (MFA)\n- Dispositiu (MDM)\n- Context (IP, hora)\n- Comportament"]
PEP["Policy Enforcement\nPoint (PEP)\n\n🔒 Aplica la decisió\n- Permet o denega\n- Xifra el trànsit\n- Registra l'accés"]
end
PDP -->|Decisió| PEP
PEP -->|Accés controlat| R["🖥️ Recurs\n(aplicació, dades)"]
style ZeroTrust fill:#1a1a2e,color:#eee
style PDP fill:#16213e,color:#eee
style PEP fill:#0f3460,color:#eee
Implementació de Zero Trust
NIST SP 800-207 defineix set principis del Zero Trust:
- Tots els recursos es consideren no confiables (incloent la xarxa interna)
- Totes les comunicacions estan protegides independentment de la ubicació
- L'accés es concedeix per sessió i amb mínim privilegi
- L'accés als recursos es determina per política dinàmica (identitat + dispositiu + comportament)
- La seguretat de tots els dispositius és monitoritzada i verificada
- Tota l'autenticació i autorització és dinàmica i estrictament aplicada
- Es recopila informació sobre els actius, la infraestructura i les comunicacions per millorar la postura de seguretat
Tecnologies que implementen Zero Trust: - ZTNA (Zero Trust Network Access): Accés granular per aplicació en lloc de VPN de xarxa sencera. Productes: Cloudflare Access, Zscaler Private Access, Tailscale. - SASE (Secure Access Service Edge): Combina SD-WAN amb seguretat al núvol (ZTNA, CASB, SWG) en un servei unificat. - Microsegmentació: Divideix la xarxa en segments petits amb controls d'accés estrictes entre ells. - PAM (Privileged Access Management): Controls especials per a comptes privilegiats (administradors).
Miniactivitat
Analitza el model de seguretat de la teva xarxa domèstica o escolar:
- Descriu quins dispositius confien implícitament entre ells per estar a la mateixa xarxa WiFi.
- Identifica dos escenaris on un atacant que hagi compromès un dispositiu podria accedir a recursos d'altres dispositius de la xarxa.
- Proposa dues mesures concetes que s'alineen amb el model Zero Trust per mitigar els riscos identificats.
Cas Pràctic: Anàlisi de l'Autenticació d'una Organització
Context
Una empresa de 150 empleats utilitza: - Active Directory amb polítiques de contrasenya: mínim 8 caràcters, expiració cada 90 dies, bloqueig als 5 intents - VPN amb autenticació per contrasenya (sense MFA) - Aplicació web interna accessible per HTTPS amb usuari/contrasenya - SSH als servidors amb autenticació per contrasenya (port 22 obert a Internet) - Accés a Office 365 / Google Workspace sense MFA
Vulnerabilitats identificades
Analitza cada punt i respon:
- Identifica almenys 5 vulnerabilitats d'autenticació en l'escenari anterior.
- Per a cada vulnerabilitat, classifica-la per risc (Alt/Mig/Baix) i proposa una mesura de mitigació.
- Dissenya un pla de millores ordenat per prioritat, considerant cost d'implementació i reducció de risc.
- Quins estàndards (NIST SP 800-63B, ISO 27001, CIS Controls) cobreixen les vulnerabilitats identificades?
Recursos
Eines i serveis
- Have I Been Pwned: Verificar adreces de correu i contrasenyes compromeses
- FIDO Alliance: Especificacions oficials FIDO2 i Passkeys
- WebAuthn.io: Demo interactiva de WebAuthn al navegador
- Authy: App TOTP multiplataforma amb còpia de seguretat
- Aegis: App TOTP per Android, codi obert
Documentació tècnica
- NIST SP 800-63B: Guia de gestió d'identitats digitals
- NIST SP 800-207: Arquitectura Zero Trust
- RFC 6238: Especificació TOTP
- W3C WebAuthn: Especificació WebAuthn