# MFA Strategy — Ninja Nexus

## Mål

Multi-factor authentication under **egen kontrol** — ikke afhængig af Microsoft Authenticator eller Duo alene, men med support for industristandarder.

---

## Faser

### Fase 3 (MVP): TOTP + Backup Codes

| Metode | Prioritet | Beskrivelse |
|--------|-----------|-------------|
| **TOTP** | P0 | RFC 6238 — kompatibel med alle authenticator-apps |
| **Backup codes** | P0 | 10 engangs-koder genereret ved enrollment |

### Fase 3+ (Udvidet): FIDO2 / WebAuthn

| Metode | Prioritet | Beskrivelse |
|--------|-----------|-------------|
| **FIDO2 security key** | P1 | YubiKey, Feitian — phishing-resistant |
| **Windows Hello** | P1 | Biometri via platform authenticator |
| **Passkeys** | P2 | Synced passkeys (Apple/Google) |

### Fase 5+ (Advanced): Adaptive MFA

| Metode | Prioritet | Beskrivelse |
|--------|-----------|-------------|
| **Push notification** | P2 | Nexus-app godkender login |
| **Risk-based** | P3 | MFA kun ved usædvanlig login (ny IP, ny enhed) |
| **SMS** | P3 (undgå) | Kun som sidste udvej — SIM-swap risiko |

---

## MFA Policies

| Rolle | MFA krav | Metoder |
|-------|----------|---------|
| Super Admin | Altid, hver login | TOTP + FIDO2 |
| Admin | Altid | TOTP minimum |
| Support | Altid | TOTP minimum |
| User | Konfigurerbar (admin kan enforce) | TOTP anbefalet |

---

## Enrollment Flow

```
1. Bruger logger ind første gang (password only — tidsbegrænset)
2. Shell: "Opsæt MFA for at fortsætte"
3. Bruger vælger metode (TOTP anbefalet)
4. TOTP: vis QR-kode → bruger scanner → indtast bekræftelseskode
5. Generer 10 backup codes → vis én gang → bruger gemmer
6. MFA aktiv — fremtidige logins kræver anden faktor
```

---

## Recovery

| Scenario | Handling |
|----------|----------|
| Mistet authenticator | Backup code → reset MFA → re-enroll |
| Mistet backup codes | Admin-assisted recovery (verificer identitet) |
| Mistet alt | Admin reset MFA → tvungen re-enrollment |
| Compromised MFA | Admin revoke → session kill → re-enroll |

---

## Teknisk implementering

- TOTP secret: genereret server-side, gemt encrypted (AES-256)
- QR-kode: `otpauth://totp/NinjaNexus:{email}?secret={secret}&issuer=NinjaNexus`
- Verification window: ±1 tidsinterval (30 sekunder)
- Rate limit: max 5 MFA-forsøg per 15 minutter
- FIDO2: WebAuthn API i Shell (WebView2 eller native)

---

## Compliance

- MFA opfylder NIST 800-63B AAL2 (TOTP) og AAL3 (FIDO2)
- Backup codes er single-use og hashed i database
- MFA enrollment og brug logges i audit

---

*Se også: [SECURITY_MODEL.md](./SECURITY_MODEL.md) · [ZERO_TRUST.md](./ZERO_TRUST.md)*
