Den slags adgangskode, du skal oprette, har meget at gøre med, hvordan adgangskoden opbevares.

For år siden var tilfældige adgangskoder på otte tegn bestående af store og små bogstaver, symboler og tal virkelig svære at knække. I nogle tilfælde tog en sådan adgangskode år at knække.

Takket være nutidens skiftende teknologi og lejelige maskiner er denne tid blevet reduceret til timer. Men hvordan opbevares disse adgangskoder i første omgang?

Sådan gemmes adgangskoder online

Systemer gemmer ikke brugeradgangskoder direkte i filer eller databaser, fordi angribere kan overtage databasen, hvor systemerne opbevarer adgangskoderne. I stedet krypterer systemer brugeradgangskoder, og angribere støder på en krypteret version af hver adgangskode.

Der er nogle algoritmer, som systemer bruger til at kryptere adgangskoder. En af disse algoritmer er den symmetriske algoritme. Den symmetriske algoritme er en form for kryptering hvor du kan bruge den samme nøgle til både kryptering og dekryptering. Nøglen du vil bruge til at kryptere dataene er den samme til både kryptering og dekryptering. Sikkerheden af ​​symmetriske algoritmer indebærer nogle risici, da der kun er én nøgle til dekryptering. Af denne grund bruger systemer generelt ikke symmetriske algoritmer til adgangskodekryptering.

instagram viewer

Generelt er den metode, som systemerne bruger til kryptering, hash-algoritmer. Hash-algoritmer er til at verificere og repræsentere integriteten af ​​data, ikke til at kryptere data. Hash-algoritmer konverterer data til en hash i fast størrelse. Disse hashes repræsenterer normalt en unik hash af data.

Takket være hash-algoritmen, hvis en angriber har overtaget adgangskodedatabasen, kan angriberen ikke få adgang til adgangskoden baglæns herfra. Der er en meget vigtig nuance, som du skal være opmærksom på her. Teoretisk set kan en angriber, der kompromitterer et system, der bruger den samme hash-algoritme til alle adgangskodekombinationer, sammenligne de opnåede resultater. Hvis angriberen producerer den samme værdi som et resultat af disse sammenligninger, har angriberen fundet ud af, hvad den åbne version af adgangskoden er. Denne metode handler om forsøg og fejl, og det er denne form for angreb generelt kaldet et brute force angreb.

I begyndelsen af ​​2000'erne kunne det tage hundreder af år at prøve alle kombinationer for 8-tegns adgangskoder krypteret med populære hashing-algoritmer. Dette inkluderer selvfølgelig ikke meget simple kombinationer såsom "123456" eller "mit kodeord" i dette sæt. Med udviklingen af ​​nutidens software- og hardwareteknologier har metoden til at knække adgangskoder også ændret sig meget.

Virkningen af ​​nye GPU'er

Parallelle databehandlingsegenskaber for grafikprocessorer (GPU'er) er blevet forbedret over tid. GPU'er er ikke i stand til at udføre alsidige operationer som generelle CPU'er. Så selvom der er så mange kerner og parallel processorkraft, giver det ikke mening at bruge dem til næsten alle problemer som CPU.

Alligevel er det muligt at udføre nogle hash-algoritmer, der bruges til adgangskoder, ganske effektivt på GPU'en. De beregnelige hashes per sekund, du kan opnå med traditionelle CPU'er, er vokset enormt med nye GPU-platforme.

For at få en idé skal du undersøge hash-tallene per sekund for hash-algoritmer som NTLM, MD5 og SHA1 i tabellen nedenfor. Det er nok for nu at vide, at disse algoritmer kun er en hash-algoritme. For at lave denne tabel brugte jeg et klyngesystem bestående af 25 AMD Radeon GPU'er.

Algoritme

Hashings pr. sekund

NTLM

350.000.000.000

MD5

180.000.000.000

SHA1

63.000.000.000

SHA512Crypt

364.000

Bcrypt

71.000

Scrypt

33.000

Som du kan se, kan du med et sådant system generere NTLM-hash 350 milliarder gange i sekundet. Det betyder, at du kan prøve alle kombinationer af en 8-tegns adgangskode på mindre end 6 timer. Desuden tilhører hardwaren i dette eksempel for år siden. Forestil dig nutidens magt til at knække adgangskoder.

Hvad skal softwareudviklere gøre?

Den måde, programmører skal gå på, er ret enkel: de bør foretrække algoritmer, der tager længere tid at beregne hash-værdier, når de krypterer adgangskoder. Udviklere skal ikke kun lære om ydeevnen af ​​den algoritme, de bruger på CPU'en, men også om, hvor modstandsdygtig den er over for GPU-verdenen.

Hvis udviklere arbejder med en softwareramme, der også adresserer adgangskodekrypteringsprocesser såsom Django, Ruby på Rails, og Spring Security, bør de tjekke, om der er truffet de rigtige beslutninger inden for rammerne mht sikkerhed.

For eksempel, Udtænk, et af de mest brugte biblioteker til brugeroperationer i Ruby on Rails, bruger Bcrypt som standard hash-algoritme. Det giver dig også mulighed for at bruge en anden metode som hash-algoritmen. Bcrypt-algoritmen er pålidelig, da det stadig tager meget lang tid for GPU'en at gå i stykker.

Kort sagt, jo længere tid hashværdiberegningen tager, jo mere sikker er du.

Hvor mange tegn skal dit kodeord have?

Hvert ekstra tegn, du bruger, vil geometrisk øge antallet af forsøg og fejl, der er nødvendige for at knække dit kodeord og gøre dit kodeord mere sikkert.

Lad os overveje denne situation gennem to forskellige scenarier. Overvej værdierne i tabellen ovenfor for NTLM-hash-algoritmen og forestil dig, at du vil forsøge at knække adgangskoden. Forestil dig at målrette adgangskoder på otte tegn eller mere.

Antal tegn

Store/små bogstaver og tal

Store/små bogstaver, tal og specielle symboler

8

mindre end 1 minut

2 minutter

9

2 minutter

2 timer

10

2 timer

En uge

11

6 dage

2 år

12

1 år

200 år

13

mere end 100 år

mere end 1000 år

Når du undersøger tabellen, kan du se, at brugen af ​​en adgangskode på minimum 12 tegn er sikker, når du bruger alle kombinationer af store/små bogstaver, tal og specielle symboler. Hvis du ikke bruger specielle symboler, så viser det sig, at du skal bruge 13 tegn som den sikre adgangskodelængde. Hvis du brugte Bcrypt-hash-metoden i stedet for NTLM-hash i dette system, ville 8 tegn være nok. Du har dog ikke mulighed for at vide, med hvilken hash-metode et system, du går ind på over nettet, beholder din adgangskode. Derfor bør du overveje alle muligheder.

Hovedproblemet for softwareudviklere er, at det er næsten umuligt at overbevise brugere om at have en adgangskode på minimum 12 tegn. I dag er det muligt at sige, at hastigheden af ​​adgangskodebrug af denne længde er lav. Derfor vil det ifølge brugsscenariet for det udviklede system være nødvendigt at finde en mellemvej, som vil blive accepteret af brugerne for at forbedre deres adgangskodesikkerhed.

et sidste forslag til udviklere er at kontrollere ikke kun minimumslængden, men også den maksimale længde af de input, der kommer gennem de formularer, du har præsenteret for brugeren. Især når du aktiverer brugen af ​​en hash-algoritme, der er langsom til at beregne, såsom Bcrypt for sikkerhed formål, kan du støde på nogle risici, hvis du ikke kontrollerer den maksimale længde af adgangskoden indtastet af brugeren. For eksempel kan angribere udføre angreb ved at prøve dusinvis af adgangskoder på 100 tusinde tegn på samme tid med nogle specielt forberedte anmodninger. I et sådant tilfælde er det højst sandsynligt, at dit system ikke reagerer på andre brugere.

Råd til slutbrugere

Gør din adgangskode til en længde på mindst 12 tegn, og sørg for at inkludere store og små bogstavskombinationer, tal og symboler. Glem aldrig, at de systemer, der gemmer din adgangskode, kan blive hacket, og dine oplysninger kan blive misbrugt. Du kan ikke vide, hvilke algoritmer et system bruger til at kryptere din adgangskode, så det er helt op til dig at tage forholdsregler og oprette stærke adgangskoder.