Vad är saltet i en Linux-lösenordshash och varför spelar det roll?

Senaste uppdateringen: 04/12/2025
Författare: Isaac
  • Saltet är en slumpmässig sträng som läggs till lösenordet före hashen för att uppnå unika hashvärden per användare.
  • Linux Den lagrar hash, salt och algoritm i /etc/shadow, vilket stärker säkerheten mot dictionary-attacker och rainbow-tabeller.
  • God praxis kräver långa, slumpmässiga och unika salter, tillsammans med robusta hashalgoritmer och databaser väl skyddad.
  • Lösenordssaltning bör integreras i bredare säkerhetspolicyer som inkluderar starka lösenord, MFA och lösenordshanterare.

salt i lösenordshash i Linux

Om du arbetar med GNU/Linux-system eller helt enkelt är orolig för säkerheten för dina konton har du förmodligen hört talas om salt i lösenordshashenDet är ett av de där koncepten som nämns mycket, men ofta bara är halvförstått: det låter tekniskt, men i verkligheten är det skillnaden mellan ett system som är lätt att bryta och ett som är mycket mer motståndskraftigt mot attacker.

Kort sagt, salt är en nyckelelement för att göra lösenordshash oförutsägbaraDet fungerar genom att lägga till slumpmässig data innan hashalgoritmen tillämpas, så att även om två användare har samma lösenord kommer resultatet som lagras i databasen att vara annorlunda. Därifrån är den specifika implementeringen i Linux, dess förhållande till /etc/shadow, verktyg som mkpasswd och moderna säkerhetsrutiner en hel värld i sig, som vi kommer att utforska i detalj.

Vad exakt är saltet i en lösenordshash?

definitionen av salt i lösenordshash

Inom kryptografi, en salt (salt) är ett slumpmässig teckensträng vilket läggs till i en användares lösenord innan en hashfunktion tillämpas. Målet är att den resulterande hashen ska vara unik även om lösenordet i klartext är detsamma för flera användare.

När en användare skapar eller ändrar sitt lösenord genererar systemet ett slumpmässigt saltDen kombinerar det med lösenordet (före, efter eller i ett specifikt format beroende på schemat) och tillämpar en hashalgoritm på den kombinationen, till exempel SHA-256 o SHA-512Lösenordet lagras inte i databasen, utan snarare hash av (lösenord + salt), och i de flesta scheman lagras även saltet i sig tillsammans med hashen.

Denna teknik gör många av de attacktekniker baserade på förberäknade hashvärden, som regnbågstabeller, och komplicerar ordboks- och brute-force-attacker i stor skala. En angripare kan inte längre utnyttja det faktum att flera användare delar ett lösenord, eftersom var och en kommer att ha en annan hash.

Det är viktigt att förstå att salt inte är en hemlighet i sig: Det är inte ett lösenord eller en privat nyckelDess funktion är att introducera slumpmässighet och unikhet i hashprocessen. Säkerhet beror fortfarande på användningen av starka lösenord y lämpliga hashalgoritmer, helst specifikt utformade för lösenord (som bcrypt, scrypt, Argon2), även om många klassiska Linux-system använder varianter av SHA-256 eller SHA-512.

Så här fungerar lösenordssaltning steg för steg

Så fungerar lösenordssaltning

Saltningsprocessen kan sammanfattas i en serie ganska enkla steg, men med en enorm inverkan på säkerheten:

  Hur man upptäcker skadliga processer med Process Explorer och VirusTotal

Först, när en användare registrerar eller ändrar sitt lösenord genererar systemet en unikt och slumpmässigt salt för den autentiseringsuppgiften. Det saltet är vanligtvis tillräckligt långt (till exempel 16 byte eller mer) och erhålls från en kryptografiskt säker slumptalsgenerator.

Därefter kombineras lösenordet som användaren valt med det saltet för att bilda en mellankedjaDenna kombination kan vara så enkel som att sammanfoga salt + lösenord, eller så kan den ha ett mer komplext format definierat av hash-schemat. Det viktiga är att varje användare får en unik kombination.

Sedan, en envägs hashalgoritmResultatet är en till synes slumpmässig sträng, hashen, med fast längd, som lagras i databasen tillsammans med saltet. I moderna system söks efter algoritmer som producerar långa och komplexa utgångarDetta ökar sökutrymmet och gör brute-force-attacker dyrare.

Slutligen, när användaren loggar in, hämtar systemet återigen det angivna lösenordet. associerat salt Från databasen upprepar den exakt samma kombinerings- och hashprocess och jämför resultatet med den lagrade hashen. Om de matchar vet den att lösenordet är korrekt utan att behöva känna till klartexten.

Denna mekanism säkerställer att även om databasen läcker ut kommer angriparen bara att se individuella hashtyper med sina egna salterIstället för en uppsättning jämförbara hashvärden är det inte magiskt att stoppa en attack, men det blir betydligt dyrare beräkningsmässigt.

Fördelar med att använda salt i lösenordshash

Fördelar med att använda salt i lösenord

Den främsta anledningen till att använda saltning är att stärker säkerheten för lagrade lösenord mot en mängd olika attacker. Men det är värt att i detalj beskriva de specifika fördelarna.

För det första ger saltning motståndskraft mot ordboksattackerUtan salt kan en angripare förbereda en enorm lista med vanliga lösenord och deras hashvärden, och helt enkelt jämföra dem med den stulna databasen. Med ett unikt saltvärde per användare blir dessa förberäknade hashvärden värdelösa, eftersom varje kombination av lösenord + salt genererar ett annat värde.

För det andra försämrar användningen av salt effektiviteten hos regnbågsbordDessa är helt enkelt förberäknade databaser med hashkoder för populära lösenord för att påskynda återställningen. Återigen, eftersom resultatet beror på den specifika saltkoden, blir dessa tabeller utformade för osaltade hashkoder värdelösa eller åtminstone mycket ineffektiva.

En annan tydlig fördel är att det förbättrar integritet vid läckageÄven om en inkräktare får tillgång till användartabellen med dess hash och salt, kommer de inte att kunna snabbt identifiera vem som har samma lösenord som andra eller enkelt utföra massattacker. Varje konto kräver individuell uppmärksamhet, vilket vanligtvis är opraktiskt i stor skala.

  Varning för den nya WhatsApp-bedrägeriet: Bizum och videosamtal för att stjäla konton och pengar

Dessutom ökar saltningen komplexiteten i brute force-attackerIstället för att kunna testa ett lösenordskandidat mot alla hashkoder samtidigt, tvingas angriparen att ta hänsyn till varje användares salt, vilket multiplicerar den totala arbetsbelastningen. Om detta kombineras med en långsam och parametriserbar hashalgoritm (som bcrypt eller Argon2) ökar attackkostnaden ytterligare.

Slutligen är saltning en teknik som anpassar sig väl till den tekniska utvecklingen. Även när datorutrustning förbättras och nya attacker dyker upp, kombinationen av robust hash och unikt salt Den upprätthåller en hög och skalbar svårighetsgrad: du kan öka saltets längd, stärka algoritmen, öka beräkningskostnaden etc.

Hur Linux implementerar lösenordssaltning (/etc/shadow)

I Linux-system och andra *NIX-varianter lagras inte användarlösenord i /etc/passwd, utan i filen / Etc / shadowDen här filen, som endast är tillgänglig för superanvändaren, lagrar lösenordshasharna tillsammans med ytterligare information, och det är där användningen av salt och hashalgoritmen tydligt syns.

Raderna i /etc/shadow har en struktur som liknar:

användare:$id$sal$hash:ytterligare_fält…

Symbolen $ Separera de olika delarna. Den första delen efter användarnamnet anger typ av algoritm används. Till exempel, $ 1 $ representerar vanligtvis MD5, $ 5 $ SHA-256 och $ 6 $ SHA-512, som är den vanligaste algoritmen i moderna distributioner eftersom den erbjuder större säkerhet än äldre scheman baserade på DES eller MD5.

Efter att algoritmidentifieraren visas saloch sedan resulterande hashAllt detta finns inom samma fält. När ett lösenord valideras läser systemet identifieraren, saltet, tillämpar algoritmen som motsvarar det angivna lösenordet och jämför den beräknade hashkoden med den lagrade.

Om du snabbt vill kontrollera vilka användare som har krypterade lösenord och vilken algoritm som används kan du använda ett kommando som grep '\$' /etc/shadowI detta sammanhang används dollartecknet ($) för att hitta rader med hash-tecken i modernt format. Symbolen måste escapeas med ett bakåtsnedstreck eftersom den i reguljära uttryck betyder "slut på raden".

Konton utan lösenord eller låsta konton visar vanligtvis ett värde som detta i det fältet. ! o * istället för en hash med dollar, vilket indikerar att den inte kan autentiseras med ett standardlösenord. Denna struktur gör en sak tydlig: Linux integrerar saltning i sitt format av lagring lösenord nativt.

Skillnaden mellan lösenordshashing och salting

Det är viktigt att tydligt skilja mellan två begrepp som ibland blandas ihop: hasch y saltningLösenordshashning är den process genom vilken ett lösenord omvandlas till ett oigenkännligt värde med hjälp av en envägsalgoritm. Servern behöver aldrig känna till det ursprungliga lösenordet, bara för att verifiera att användaren känner till rätt lösenord eftersom den producerar samma hash.

  Vad är WINUX: Linux med en fri själ och utseendet och känslan av Windows

Problemet är att om två lösenord är identiska, Osaltad hash kommer också att vara identiskDetta gör det möjligt för en angripare att jämföra och gruppera användare efter lösenord eller använda förberäknade tabeller. Dessutom, om hashalgoritmen är snabb och utformad för dataintegritet (som enkel SHA-256), blir den mer sårbar för massiva brute-force-attacker.

Saltning kommer in just för att lösa den svagheten: det handlar om lägg till slumpmässiga data till lösenordet innan den hashas. Resultatet blir att även om två användare väljer ”casa” som lösenord, kommer hasherna i databasen att vara helt olika, eftersom den ena till exempel kommer att ha ”casa+7Ko#” och den andra ”casa8p?M” som pre-hash-sträng.

Således konkurrerar inte hashing och saltning med varandra, utan kompletterar snarare varandra. Hashing ger enriktningsegenskap och enkel verifiering; saltet ger unikhet och motståndskraft mot massiva attackerEn implementering av säker lösenordslagring kombinerar båda teknikerna, helst med hjälp av en algoritm utformad för detta ändamål, med konfigurerbar kostnad.

Använda salt i Linux med mkpasswd

I GNU/Linux-miljöer och andra system UnixEtt mycket praktiskt sätt att experimentera med saltning är verktyget mkpasswdDet här kommandot används för att generera krypterade lösenord säkert och är vanligtvis integrerat i processer för användarskapande, administrationsskript etc.

Den grundläggande syntaxen för mkpasswd låter dig ange lösenordet som ska krypteras och en serie alternativ, såsom algoritmtyp (till exempel des, md5, sha-256, sha-512) med hjälp av alternativet -mI moderna system är det klokt att välja SHA-512 som ett minimum, eller genom ännu mer robusta system om distributionen stöder dem.

Det särskilt intressanta alternativet i samband med saltning är -S, vilket tillåter tillsätt ett salt till lösenordet innan det krypteras. Om det inte anges manuellt kan mkpasswd generera en slumpmässigt salt i varje körningså att även om man använder samma inloggningslösenord blir den resulterande hashen olika varje gång.

Detta kan enkelt verifieras: om du krypterar "password123" flera gånger med mkpasswd, använder SHA-512 och ett slumpmässigt salt, kommer du att få helt olika hashvärden. Men om du skickar samma saltvärde med -S, kommer hashvärdet alltid att vara identiskt, eftersom kombinationen av lösenord + salt inte ändras.

Tack vare det här verktyget är det väldigt enkelt Förbered lösenord krypterade med salt att lägga till i konfigurationsfiler, hantera användare manuellt eller testa saltningsbeteende utan att behöva programmera någonting.

Vad är digital hygien?
Relaterad artikel:
Digital hygien: säkerhet, välbefinnande och ordning i ditt onlineliv