curve

Passwords – hvor svært kan det være?

Morten Rembøl Jacobsen

Software Craftsman 2. maj 2019 øje

Overalt i vores dagligdag møder vi dem. Fra netbanken til emailsystemet – fra bibliotekscomputeren med chokolade på tastaturet til login på missionskritiske systemer til flere millioner kroner. Adgangskoder/passwords har i mange år været førstevalg til identifikation af brugere i systemer, der indeholder beskyttet information, og derfor er vi som både brugere, og ikke mindst systemudbydere, nødt til at forholde os til de digitale ”røvere” – hackerne.

Disse kriminelle forsøger at bryde vores adgangskoder og stjæle vores digitale identitet for derved at skaffe sig uautoriseret adgang til den beskyttede information. Denne virkelighed har medført øgede krav til adgangskodernes kompleksitet, hvilket desværre ikke nødvendigvis har medført bedre adgangskoder.

Og nej, det er slet ikke så ligetil, som overskriften antyder. Derfor vil vi i denne artikel gennemgå adgangskodernes funktion og tegne et billede af de trusler, man typisk står over for – samt give eksempler på, hvilke tiltag vi i tidens løb har gjort, hvilke konsekvenser det har haft, og hvilken vej vi bevæger os fremadrettet.

Hvorfor var det nu, at passwords var en god idé?

Når det er nødvendigt at kunne identificere en bruger, kan man groft sagt benytte sig af teknikker indenfor en eller flere af følgende kategorier:

  • Noget du har
    Dækker over en fysisk ting – det kunne være et smart card, et NemID kort, en USB-nøgle med en digital ”nøgle” eller en telefon der kan modtage en SMS.
  • Noget du er
    Her taler man f.eks. om en form for biometrisk signatur. Det kunne være fingeraftryk, øjen- eller ansigtssignatur.
  • Noget du ved
    Her finder vi adgangskoderne. Koderne skal være tilpas komplekse til at de ikke umiddelbart kan gættes, de skal kunne huskes af den autoriserede bruger, og de skal beskyttes – ofte ved at brugeren skal kunne huske dem og systemudbyderen benytter kryptografiske teknikker til at hemmeligholde dem. Her er altså tale om en forholdsvis omkostningslet løsning idét der ikke kræves særlig infrastruktur til biometri, telekommunikation eller hardwareadgang på brugerens adgangsterminal. Samtidig er det ”nemt” for brugeren, da denne blot skal huske to ting: brugernavn og adgangskode.

I en stor del af de systemer vi benytter os af på internettet, er adgangskoden vores eneste forsvar mod uautoriseret adgang, og derfor er det også vigtigt at vi, både som brugere såvel som leverandører, forstår den trussel vi står over for, så vi kan agere fornuftigt ift. at bekæmpe den.

Hvem er de digitale røvere, og hvordan bærer de sig ad?

Når man sidder klar ved loginskærmen og skal til at aflevere sin hemmelighed til systemet i den anden ende, så er der en række såkaldte angrebs-”vektorer” hackerne kan anvende, f.eks: Der kan sidde en person bag dig og aflure din kode, der kan være malware på computeren, kommunikationen kan være usikker eller du kan f.eks. blive udsat for et såkaldt man-in-the-middle angreb.

Samlet gælder dog, at netavisernes overskrifter først males rigtig gule, når store kontoudbydere såsom f.eks. LinkedIn må meddele at millioner af kontooplysninger er blevet kompromitteret.

I denne artikel vil vi ikke beskæftige os med sikkerheden i transporten af hemmeligheden fra brugerens enhed til tjenesteudbyderen, men derimod udelukkende fokusere på udvalgte problemområder ift. selve passwordet. I de følgende afsnit vil vi kort beskrive to konkrete kategorier af angreb (på et password) samt hvad angriberne kan få ud af det.

Online angreb

I et online-angreb forsøger hackerne typisk at benytte det bagvedliggende system til at få adgang til dine hemmeligheder. For at holde eksemplet simpelt, antager vi her et system, hvor det er muligt at foretage fem ugyldige logins, hvorefter kontoen bliver låst. Dette – udover evt. IO-begrænsninger (netværk/CPU-tid på serveren) – udelukker et mere udtømmende angreb mod systemet.

Det behøves heller ikke at være så komplekst. Hvis angriberen blot er interesseret i at få adgang til nogle (ikke bestemte) konti, kan denne f.eks. forsøge sig med ét password pr. bruger. Hvilket password skal angriberen så anvende? Almindelige brugere på internettet er sjældent særligt velopdragne i IT-sikkerhed. Derfor vælger en andel af brugerne stadig dårlige passwords. Angriberen kan derfor blot vælge fra listerne af oftest anvendte dårlige passwords, og der vil da være en vis sandsynlighed for at denne kan skaffe sig adgang uden yderligere modstand, da angriberen jo bruger systemet som tiltænkt.

I en anden situation har angriberen måske en liste over kendte brugernavne/passwords fra et andet system, hvorfor angrebet sandsynligvis vil give højere succesrate.

Angriberen har selvfølgelig automatiseret og distribueret processen, hvorfor denne kan dække en stor brugerflade relativt hurtigt.

Offline angreb

I et offline angreb, antages angriberen at have skaffet sig adgang til en kopi af beskyttede data og er derfor ikke begrænset af eventuelle beskyttelsespolitikker i det kørende system. Det kunne f.eks. være en kopi af en til flere tabeller med logininformationer hvori man kunne forestille sig at angriberen kunne observere følgende sammenhæng pr. bruger:

Brugernavn, PasswordHash og PasswordSalt

I ”gamle” dage (næ! – det sker stadig) kunne man også støde på situationer, hvor angriberen kunne observere adgangskoden i klartekst, men for eksemplets skyld, vil vi antage, at man som minimum har anvendt en hash-funktion (H), og at man i denne sammenhæng har anvendt en unik ”Salt” værdi pr. bruger. Værdien af PasswordHash kan derfor udtrykkes som følger:

PasswordHash := H(password,salt)

Vi vil også antage, at der er anvendt en hashfunktion uden kendte sikkerhedsproblemer (hvorfor det bedste angreb mod adgangskoden vil være en systematisk afprøvelse af værdier i inputdomænet).

Nu hvor forudsætningerne er på plads vil vi kort beskrive systematikken i angrebet. Eftersom angriberen kender to ud af tre ubekendte i ovenstående beskrivelse og samtidig formodes at kende den anvendte algoritme, kan denne nu forsøge at ”gætte” passwordet. Eftersom angriberen ikke er begrænset af eventuelle regler i det kørende system, har denne også, teoretisk set, uendeligt mange forsøg til rådighed. Angriberen kan benytte sig af en simpel brute-force algoritme, hvori alle værdier i inputdomænet afprøves. Denne metode er dog ikke effektiv, især ikke hvis leverandøren har anvendt en egnet hashalgoritme og i øvrigt har sikret, at passwords har en høj entropi (krav om f.eks. længde).

En mere effektiv tilgang er et målrettet angreb, hvor man f.eks. benytter ordlister – f.eks. RockYou (bl.a. til udførelse af dictionary-attacks), tegnerstatningsstrategier, og tegnsekvens-mønstre til at sammensætte forslag til passwords ud fra kendte password-mønstre. Derved begrænses størrelsen af inputdomænet, og angriberen kan hurtigere finde en stor andel af password-værdierne ved en systematisk afprøvning. Har kontoudbyderen ikke indlagt støj i inputdomænet vha. Salt, vil et angreb med en ”Rainbow Table” også være en mulighed.

Når det så er gået galt – hvad så?

Hvis angriberen først har fat i en korrekt kombination af brugernavn og passwords, kan denne få adgang til at handle på vegne af den legitime bruger og eventuelt overtage kontoen ved at ændre brugernavn/login (f.eks. som hos Netflix).

Seriøse systemudbydere sender typisk advarsler ud ved login fra nye enheder/lande, men i den store verden – internettet – er disse udbydere i undertal. Ydermere åbner en brudt adgangskode op for en hel vifte af nye angreb mod store (og små) tjenester, og her er brugerne ofte deres egen værste fjerne – de genbruger password.

I forhold til et offline-angreb, kræver et online-angreb med en liste af kendte brugernavne/passwords betydeligt mindre indsats, og genbrug af password, kan derfor hurtigt få omfattende konsekvenser for de berørte – især hvis de ikke har aktiveret/haft mulighed for f.eks. to-faktor autentifikation.

Ét forsvar mod angreb var passwordkompleksitet

Nu hvor vi kender til trusselsbilledet, kan vi berøre nogle af de ting man har forsøgt for at højne sikkerheden af passwords. En af de ting er passwordkompleksitet. På et tidspunkt begyndte flere kontoudbydere at stille krav til tegnsammensætningen af de valgte adgangskoder. Ofte omfattede kravene, at man skulle have både store og små bogstaver samt eventuelle specialtegn. I enterprisesystemer støder man ofte også på password-rotationskrav (hvis effekt er forkastet af Microsoft) samt forbud mod genbrug af historisk anvendte passwords. Målet med kompleksitetskravene var at brugerne skulle finde på et godt password, der var unikt, så komplekst, at det ikke kan gættes og havde tilpas høj entropi til at et udtømmende angreb ikke var sandsynligt inden for rimelig tid.

Desværre har kravene ofte ført til en række unoder, som ikke nødvendigvis har indfriet løftet om et mere sikkert password og i nogle tilfælde kan det have haft den helt modsatte effekt.

Passwords, der bruges af mennesker, skal huskes af mennesker

.. og mennesker har det med at være ”dovne”. Ofte har hver person forskellige konti spredt ud over en række forskellige tjenester. I de færreste tilfælde benytter (almindelige) IT-brugere sig af de såkaldte password managers (f.eks. 1Password og LastPass), så de ender med at genbruge dem på tværs af de forskellige tjenester. Det omfattende genbrug er ikke nødvendigvis pga. kompleksitetskravene, men det har nok heller ikke trukket i den anden retning.

Passwordkonstruktionen følger bestemte mønstre

Et andet problemområde er brugeres tendens til at konstruere passwords der følger bestemte mønstre. Et eksempel kan være, konstruktionen ”Passwr12”. Som udgangspunkt er det 8 tegn, hvilket i mange år var minimumsanbefalingen. Det indeholder både store og små bogstaver, stavefejl samt tal så ud fra en simpel betragtning opfylder det kravene til et stærkt password. Desværre falder det indenfor en meget populær kategori, hvilket betyder at i et offline-angreb, vil udfaldsrummet være meget mindre da en angriber kan nøjes med at teste mod mønsteret Ullllldd (U = Uppercase, L=Lowercase, d= digit), hvilket giver betydeligt lavere entropi end hvis hvert tegn var ”tilfældigt”, eller hvis passwordet var længere.

Skal vi hjælpe dig med at lave sikker software?

Ensidigt fokus op kompleksitet beskytter ikke tilstrækkeligt mod offline-angreb

Hvis man forsøger at skabe et password der er sikkert ift. de angreb vi har berørt, er et for ensidig fokus på kompleksitet ikke den rigtige vej at gå. Uden tilstrækkelige krav til længde, underkendes den formodede kompleksitet af den tilgængelige computerkraft i selv almindelige hjemmecomputere.

OWASP har udviklet et online værktøj – PassFault – der kan bruges til at vurdere styrken af ens password og hvor sårbart der er, hvis det stilles over for et målrettet offline angreb. Man kan vælge afviklingsmiljø samt hash-algoritme, og det giver et godt billede af forskellen i styrke mellem forskellige bud på et ”sikkert” password.

Vi vil starte med at måle på styrken af passwordet fra eksemplet tidligere: ”Passr12”. Vi vælger ”Everyday Computer” og Windows NTLM som password beskyttelse.

Som vi kan se på resultatet, er der altså ikke tilstrækkelig med styrke ift. et målrettet angreb. Hvis vi i stedet prøver med otte tilfældige tegn ”*7#S@0r!” (kompleksitet), formoder vi at vi kan opnå et bedre resultat.

Det viser sig dog ikke at være tilfældet. Hvorfor? Fordi otte tegn giver for få mulige kombinationer til at gøre et målrettet angreb mod NTLM urealistisk. Hvis vi nu i stedet for forsøger os med et langt password ”iamusingalongpassword”, hvad sker der så?

Til trods for at vi er et betydeligt større inputdomæne, får vi stadig ikke et tilfredsstillende resultat. Årsagen er, at vi bruger rigtige ord og at vi kun bruger små bogstaver. Hvis vi prøver at skrive teksten ud med mellemrum og tal ”I Am Using 1 Long Password !”, får vi derimod kombineret længde med kompleksitet, hvilket giver en voldsom forøgelse i udfaldsrummet:

Det ser allerede meget bedre ud, og vi behøver i virkeligheden ikke så meget kompleksitet, så vi kan godt fjerne noget af kompleksiteten for at gøre det nemmere at huske.

Som det kan ses i resultatet, er vi nu ved at have sporet os ind på, hvad der skal til for at øge styrken af vores password:

  • Det er vigtigt at skabe en konstruktion, der er nem at huske, men som samtidig indeholder de elementer, der gør det sikkert. Man kan derfor se på ”passphrases”.
  • Kompleksitet er et godt redskab til at opnå højere entropi, men det kan ikke stå alene. Der er også behov for at fokusere på længden. Skal man vælge mellem længde og kompleksitet, er længde at foretrække, da det er nemmere at opnå høj entropi ad den vej og samtidig få et password der kan huskes.
  • Hvis man anvender en passwordmanager, kan man ofte generere lange passwords bestående af tilfældige tegn.

Selv om man benytter sig at de lange og stærke passwords, er det dog stadig vigtigt at huske på god praksis så som:

  • Undgå genbrug
  • Undgå at konstruere noget, der er så svært, at det ender på et stykke papir
  • Undgå f.eks. at bruge kendte citater – de vil ofte være i ordlister (password cracking dictionaries)
  • Undgå – ved rotation – at foretage en simpel udvidelse f.eks. fra ”Min Kat Hedder Brian 2018” til ”Min Kat Hedder Brian 2019”.

Nogle gange sker der desværre det, at hackerne får succes med at bryde ind i sikrede systemer. Derfor bør du:

Hvad kan vi gøre som systemleverandører?

Når vi som udbydere af loginsystemer skal beskytte brugerens identitet, kan vi gøre en række for at beskytte os mod angreb inden for de forskellige kategorier. Nedenstående er eksempler, som allerede er realiseret hos de fleste seriøse udbydere:

  • Guide brugeren til valg af bedre passwords.
  • Bloker anvendelse af alment kendte dårlige passwords f.eks. top 100 mest anvendte.
  • Lås kontoen efter x antal forsøg.
  • Advar den legitime bruger, hvis der logges ind fra en ny enhed eller et nyt land.
  • Advar brugeren, såfremt password ændres.
  • Hold en historik over de seneste x antal logins, og gør denne liste tilgængelig for brugeren.
  • Tillad brugeren at logge ud fra alle enheder, hvis denne har mistanke om misbrug.
  • Implementér to-faktor autentifikation og kræv begge faktorer ved login på en ny enhed eller ændring af kritiske kontooplysninger så som email/brugernavn.

Udover beskyttelse mod angreb på det kørende system, skal data også beskyttes effektivt, såfremt det skulle blive lækket. Udover en fornuftig passwordpolitik, der kræver både god længde samt evt. kompleksitet, er det derfor vigtigt at vælge en algoritme, der er designet til at beskytte passwords effektivt dvs. en algoritme, der f.eks. ikke er effektiv at afvikle på en GPU og som tager en vis tid at afvikle.

OWASP har samlet en række anbefalinger til valg og konfiguration af inputparametre til et udvalg af adaptive algoritmer, som er velegnede til passwordbeskyttelse. Én af disse algoritmer er ”Bcrypt” og for at give et eksempel på forskellen, benyttes PassFault igen. Tager vi et simpelt password ”MyCatIsRed” og skifter vi til ”Dedicated Cracker” er forskellen slående:

  • NTLM: Mindre end én dag
  • BCrypt: 790 år.

Første torsdag i maj er ”World Password Day”

I bogen ”Perfect Passwords” opfordrede forfatteren ”Mark Burnett” læserne til at indføre en ”Password day”, hvor vigtige passwords skulle opdateres. I 2013 erklærede ”Intel Security” den første torsdag i maj som værende ”World Password Day”. Formålet var at sætte fokus på passwordsikkerhed og opfordre brugere til skifte gamle passwords ud med nye, lange og stærke passwords. Derudover opfordres der til at aktivere to-faktor autentifikation for derved effektivt at sætte en stopper for anvendeligheden af stjålne passwords og beskytte sin digitale identitet.

Hos STRONGMINDS beskæftiger vi os ofte med problematikker i relation til websikkerhed og benytter derfor denne dag til at informere om, hvilken rolle password har haft og stadig har i det økosystem, der er internettet. Derudover har vi belyst nogle af de trusler, vi står over for samt givet eksempler på de forsvarsmekanismer vi, både som systemleverandører såvel som brugere, har.

Selv om der er en generel bevægelse mod øget anvendelse af to-faktor autentifikation, er størstedelen af logins stadig begrænset til anvendelsen af en enkelt hemmelighed. Derfor er fokus på passwordsikkerhed stadig højaktuelt og vil fortsat være det i mange år fremover.

Om forfatteren

Morten Rembøl Jacobsen er Software Craftsman og konsulent hos STRONGMINDS. Han er uddannet IKT-ingeniør og er mentor i vores Software Craftsman-program.

Skal vi hjælpe dig videre?

Morten Rembøl Jacobsen

Software Craftsman

T: (+45) 3095 6420