Hashing og password-lagring
Kommunikation og IT A · HTX · A-niveau · IT-sikkerhed
🔒 Hashing og sikker password-lagring
Hashing er en envejs-funktion — input → output (hash), men man kan IKKE gå baglæns.
```python
import hashlib
hash = hashlib.sha256("password123".encode()).hexdigest()
→ "ef92b778bafe771e89245b89ecbc08a44a4e166c06659911881f383d4473e94f"
```
Passwords MÅ ALDRIG gemmes i ren tekst — brug hashing!
Problem med simpel hashing: rainbow tables (prægenererede hash→password tabeller) kan omgå den.
Løsning: Salt + slow hash:
- Salt: tilfældig unik streng tilføjet til password før hashing
- bcrypt / Argon2 / scrypt: bevidst langsomme hashfunktioner — gør brute force dyrt
```python
import bcrypt
Gem password
hashed = bcrypt.hashpw(password.encode(), bcrypt.gensalt())
Verificér
bcrypt.checkpw(password.encode(), hashed) # True
```
Regel: Brug bcrypt eller Argon2 til passwords. SHA-256 alene er ikke tilstrækkelig til passwords.
Læringsmål
- Forklare hvorfor passwords aldrig må gemmes i klartekst
- Implementere sikker password-hashing med bcrypt
- Forklare salt og dens rolle mod rainbow-table-angreb
- Anvende korrekt password-verificering i et login-system
Sådan kan du arbejde med emnet
- Forklar hvorfor man hasher passwords i stedet for at gemme dem i klartekst
- Beskriv hvad "salt" er, og hvorfor det gør hashing mere sikkert
- Diskutér hvorfor en hurtig hash-algoritme som MD5 er uegnet til password-lagring
Træningsforslag
- Byg et login-system med bcrypt-hashing
- Generer en SHA-256 hash og find den via et online rainbow-table — forstå problemet
- Læs NIST's retningslinjer for sikker password-håndtering
Øv dette emne med AI — quizzer, forklaringer og feedback tilpasset dit niveau.
Prøv Fagportalen gratis