Hur lagrar nätverk dina lösenord och annan inloggningsinformation?

Hur lagrar nätverk dina lösenord och annan inloggningsinformation?
Läsare som du hjälper till att stödja MUO. När du gör ett köp med hjälp av länkar på vår webbplats kan vi tjäna en affiliate-provision. Läs mer.

För år sedan var slumpmässiga lösenord med åtta tecken bestående av stora och små bokstäver, symboler och siffror riktigt svåra att knäcka. I vissa fall tog ett sådant lösenord år att knäcka.





Tack vare dagens föränderliga teknik och uthyrningsbara maskiner har denna tid reducerats till timmar. Men hur lagras dessa lösenord i första hand?





MAKEUSE AV DAGENS VIDEO SCROLL FÖR ATT FORTSÄTTA MED INNEHÅLL

Hur lösenord lagras online

System lagrar inte användarlösenord direkt i filer eller databaser, eftersom angripare kan ta över databasen där systemen förvarar lösenorden. Systemet krypterar istället användarlösenord och angripare stöter på en krypterad version av varje lösenord.





Det finns några algoritmer som system använder för att kryptera lösenord. En av dessa algoritmer är den symmetriska algoritmen. Den symmetriska algoritmen är en typ av kryptering där du kan använda samma nyckel för både kryptering och dekryptering. Nyckeln du kommer att använda för att kryptera data är densamma för både kryptering och dekryptering. Säkerheten för symmetriska algoritmer medför vissa risker eftersom det bara finns en nyckel för dekryptering. Av denna anledning använder system i allmänhet inte symmetriska algoritmer för lösenordskryptering.

I allmänhet är metoden som system använder för kryptering hashalgoritmer. Hashalgoritmer är till för att verifiera och representera dataintegriteten, inte för att kryptera data. Hashalgoritmer konverterar data till en hash med fast storlek. Dessa hash representerar vanligtvis en unik hash av data.



Tack vare hash-algoritmen, om en angripare har tagit över lösenordsdatabasen, kan angriparen inte komma åt lösenordet baklänges härifrån. Det finns en mycket viktig nyans som du bör vara uppmärksam på här. Teoretiskt sett kan en angripare som kompromissar med ett system som använder samma hash-algoritm för alla lösenordskombinationer jämföra resultaten. Om angriparen producerar samma värde som ett resultat av dessa jämförelser har angriparen tagit reda på vad den öppna versionen av lösenordet är. Denna metod handlar om trial and error, och denna form av attack är allmänt kallad brute force attack .

I början av 2000-talet kunde det ta hundratals år att prova alla kombinationer för 8-teckens lösenord krypterade med populära hashalgoritmer. Naturligtvis inkluderar detta inte mycket enkla kombinationer som '123456' eller 'mitt lösenord' i denna uppsättning. Med utvecklingen av dagens mjukvaru- och hårdvaruteknologier har metoden att knäcka lösenord också förändrats mycket.





Effekten av nya GPU:er

  två rtx2080 grafikkort

Parallella databehandlingsmöjligheter hos grafikprocessorer (GPU) har förbättrats över tiden. GPU:er kan inte utföra mångsidiga operationer som processorer för allmänna ändamål. Så även om det finns så många kärnor och parallell processorkraft, är det inte vettigt att använda dem för nästan alla problem som CPU.

Ändå är det möjligt att utföra vissa hashalgoritmer som används för lösenord ganska effektivt på GPU:n. De beräkningsbara hasharna per sekund du kan uppnå med traditionella processorer har vuxit enormt med nya GPU-plattformar.





För att få en uppfattning, undersök hash-talen per sekund för hashalgoritmer som NTLM, MD5 och SHA1 i tabellen nedan. Det räcker för nu att veta att dessa algoritmer bara är en hashalgoritm. För att skapa denna tabell använde jag ett klustersystem bestående av 25 AMD Radeon GPU:er.

Algoritm

Hashings per sekund

NTLM

350 000 000 000

MD5

180 000 000 000

SHA1

63 000 000 000

SHA512Crypt

364 000

Bcrypt

71 000

Manus

33 000

Som du kan se kan du med ett sådant system generera NTLM-haschar 350 miljarder gånger per sekund. Det betyder att du kan prova alla kombinationer av ett 8-teckens lösenord på mindre än 6 timmar. Dessutom tillhör hårdvaran i detta exempel för år sedan. Föreställ dig dagens lösenordsknäckande kraft.

Vad bör mjukvaruutvecklare göra?

  En utvecklare som skriver kod

Sättet som programmerare bör gå är ganska enkelt: de bör föredra algoritmer som tar längre tid att beräkna hash-värden vid kryptering av lösenord. Utvecklare behöver inte bara lära sig om prestandan hos algoritmen de använder på processorn utan också om hur motståndskraftig den är mot GPU-världen.

Om utvecklare arbetar med ett mjukvaruramverk som även adresserar lösenordskrypteringsprocesser som Django, Ruby on Rails och Spring Security bör de kontrollera om rätt beslut har fattats inom ramverket vad gäller säkerhet.

Till exempel, Tänka ut , ett av de mest använda biblioteken för användaroperationer i Ruby on Rails, använder Bcrypt som standard-hashalgoritm. Det låter dig också använda en annan metod som hash-algoritmen. Bcrypt-algoritmen är pålitlig eftersom det fortfarande tar väldigt lång tid för GPU:n att gå sönder.

Sammanfattningsvis, ju längre hashvärdesberäkningen tar, desto säkrare är du.

Hur många tecken bör ditt lösenord ha?

Varje extra tecken du använder kommer geometriskt att öka antalet försök och fel som krävs för att knäcka ditt lösenord och göra ditt lösenord säkrare.

Låt oss överväga denna situation genom två olika scenarier. Tänk på värdena i tabellen ovan för NTLM-hashalgoritmen och föreställ dig att du kommer att försöka knäcka lösenordet. Föreställ dig inriktning på lösenord på åtta tecken eller mer.

vad är ett hack på en telefon

Antal tecken

Versaler/gemener bokstäver och siffror

Versaler/gemener, siffror och specialsymboler

8

mindre än 1 minut

2 minuter

9

2 minuter

2 timmar

10

2 timmar

1 vecka

elva

6 dagar

2 år

12

1 år

200 år

13

mer än 100 år

mer än 1000 år

När du granskar tabellen kan du se att användningen av ett lösenord på minst 12 tecken är säkert när du använder alla kombinationer av stora/små bokstäver, siffror och specialsymboler. Om du inte använder speciella symboler så visar det sig att du behöver använda 13 tecken som säkra lösenordslängd. Om du använde Bcrypt-hashmetoden istället för NTLM-hash i det här systemet skulle 8 tecken vara tillräckligt. Däremot har du inte möjlighet att veta med vilken hashmetod ett system du går in på över webben behåller ditt lösenord. Det är därför du bör överväga alla möjligheter.

Det största problemet för mjukvaruutvecklare är att det är nästan omöjligt att övertyga användare att ha ett lösenord på minst 12 tecken. Idag är det möjligt att säga att andelen lösenordsanvändning av denna längd är låg. Därför, enligt användningsscenariot för det utvecklade systemet, kommer det att vara nödvändigt att hitta en medelväg som kommer att accepteras av användarna för att förbättra deras lösenordssäkerhet .

ett sista förslag för utvecklare är att kontrollera inte bara den minsta längden utan också den maximala längden på indata som kommer genom formulären du har presenterat för användaren. Speciellt när du aktiverar användningen av en hashalgoritm som långsamt beräknas, såsom Bcrypt för säkerhetsändamål, kan du stöta på vissa risker om du inte kontrollerar den maximala längden på lösenordet som användaren anger. Till exempel kan angripare utföra attacker genom att prova dussintals lösenord på 100 tusen tecken samtidigt med några speciellt förberedda förfrågningar. I ett sådant fall är det mycket troligt att ditt system inte svarar för andra användare.

Råd till slutanvändare

Se till att ditt lösenord är minst 12 tecken långt och se till att inkludera kombinationer av stora och små bokstäver, siffror och symboler. Glöm aldrig att systemen som lagrar ditt lösenord kan hackas och din information kan missbrukas. Du kan inte veta vilka algoritmer ett system använder för att kryptera ditt lösenord, så det är helt upp till dig att vidta försiktighetsåtgärder och skapa starka lösenord.