Lösenord lagras i ett väl utformat och säkert system bör
alltid vara krypterad (mer exakt, * hashed * med en stark enkelriktad funktion). Mekanismen och tidpunkten för den krypteringen varierar emellertid beroende på sammanhanget.
Här är en uppdelning och några vanliga exempel:
* Operativsystemlösenord (Windows, MacOS, Linux): När du skapar eller ändrar inloggningslösenordet för din dators operativsystem hashar OS automatiskt (krypterar) lösenordet * innan * lagrar det. Det vanliga textlösenordet vidrör aldrig lagringsmediet.
* Webbplatskonton (t.ex. Google, Facebook, Amazon): När du skapar ett konto på en webbplats eller ändrar ditt lösenord bör webbplatsen * * omedelbart hash ditt lösenord på serversidan innan du sparar det i sin databas. Använda webbplatser följer denna praxis. Processen sker transparent; Du ser det inte. En * bra * webbplats lagrar aldrig ditt lösenord i vanlig text.
* databaser: Många databassystem tillhandahåller mekanismer för att automatiskt kryptera data, inklusive lösenord, vid skapande eller modifiering. Databasadministratörer kan konfigurera dessa inställningar.
* Applikationsspecifika lösenord: Om en applikation (som en lösenordshanterare, ett program, etc.) lagrar lösenord, bör det * kryptera dem automatiskt efter skapande/modifiering.
Viktiga överväganden:
* kryptering kontra hashing: Termen "kryptering" används ofta löst, men i samband med lösenordssäkerhet, hashing är den mer exakta termen. Hashing är en * envägs * -funktion. Du kan inte enkelt vända en hash för att få det ursprungliga lösenordet. Kryptering är å andra sidan i allmänhet * vändbar * (med rätt nyckel). Att lagra lösenord som hash är mycket säkrare eftersom även om en databas komprometteras kan angriparna inte enkelt återställa de ursprungliga lösenorden. De reduceras till brute-force-attacker (försöker många lösenord och hash dem för att se om de matchar den lagrade hashen).
* saltning: Förutom hashing läggs ett slumpmässigt "salt" -värde vanligtvis till varje lösenord innan hashing. Detta gör det betydligt svårare för angripare att använda förputerade "Rainbow Tables" eller andra lösenord-cracking-tekniker.
* Betydelsen av starka hash: Inte alla hash -algoritmer skapas lika. Moderna system bör använda starka, beräkningsmässigt dyra hash -algoritmer som:
* Argon2
* bcrypt
* Scrypt
* PBKDF2 (ofta används i samband med HMAC-SHA256 eller andra säkra hashfunktioner)
* Antagandet om "borde": Det är avgörande att förstå att även om alla ovanstående system *ska *kryptera lösenord automatiskt, är det inte *garanterat *. Säkerhetsbrott inträffar på grund av dålig praxis.
Sammanfattningsvis: Även om inte alla lösenord är * garanterade * att krypteras automatiskt, bör korrekt utformade system alltid (och vanligtvis göra) krypterande (hash) lösenord vid skapandet för att skydda användarsäkerheten. Driftssysteminloggningar, webbplatskonton och databassystem är främsta exempel på platser där du förväntar dig att automatisk lösenordshash ska inträffa.