Ordbogsangreb ( Engelsk ordbogsangreb ) - et angreb på sikkerhedssystemet ved hjælp af metoden til fuldstændig opregning ( engelsk brute-force ) af de tilsigtede adgangskoder , der bruges til autentificering , udført ved sekventielt at gennemgå alle ord ( adgangskoder i deres rene form eller deres krypterede billeder) af en bestemt type og længde fra ordbogen for efterfølgende at hacke systemet og få adgang til klassificeret information . [1] Denne begivenhed er i de fleste tilfælde af negativ karakter, i modstrid med moralske og lovgivningsmæssige normer.
Fra sandsynlighedsteoriens synspunkt er valget af et kodeord deterministisk og logisk. Adgangskoden kan være: fødselsdato, navn, objekt, et sæt tal, en sekvens af bogstaver tæt anbragt på tastaturet. I det generelle tilfælde er ovenstående sammenkædet .
Resultatet af disse antagelser er, at forudbestemmelse i adgangskodevalg spiller en nøglerolle i valget af algoritmer, som ordbogssøgningsmetoden er baseret på .
Der er to typer angreb:
Det er muligt at beregne en adgangskodestyrkescore, især for at bestemme andelen af vellykkede ordbogsangreb . Sandsynligheden for succes kan defineres som forholdet mellem antallet af knækkede adgangskoder i et ordbogsangreb og det samlede antal forsøg.
Brugen af Internet Worm i 1988 giver et veldokumenteret tilfælde af adgangskodeknækning. [2] Ormen forsøgte at knække adgangskoder ved at arbejde med en række ordbøger. Den første fase af angrebet brugte et sæt ord, der indeholdt brugernavne taget fra Unix-systemets adgangskodefil. Hvis dette ikke lykkedes, blev der brugt en intern ordbog med 432 almindeligt anvendte internetjargonord. Hvis andet trin ikke lykkedes, blev der brugt en Unix -ordbog med 24474 ord. Ormen tjekkede også for en tom adgangskode. Angrebne websteder rapporterede, at omkring 50 % af adgangskoder blev knækket med denne strategi.
Det næste skridt var Daniel Kleins arbejde . [3] For at give sine resultater indsamlede han krypterede Unix -systemadgangskodefiler . Denne samling indeholdt cirka 15.000 forskellige brugernavn/adgangskode-par ( login/adgangskode ) . Klein konstruerede en række ordbøger og et sæt mekanismer til at muliggøre permutationer. Ordbogen han leverede bestod af cirka 60.000 genstande. Dette ark indeholdt navne, steder, fiktive referencer, bibelske termer, udtryk fra W. Shakespeares digte osv. Efter at have anvendt en permutationsstrategi (brug af store bogstaver, åbenlyse substitutioner, permutationer af tal), modtog han en adgangskodeplads på mere end 3,3 millioner muligheder. Brug af denne ordbog hjalp Klein med at knække 24,2% af alle adgangskoder på visse servere.
I 1991-1992. Eugene Spafford( eng. Eugene Spafford ) formåede at bygge, baseret på statistik, en ordbog, hvormed 20% af adgangskoder på udvalgte servere bukkede under for at knække. [fire]
I 2000 gennemførte et team af forskere fra University of Cambridge en undersøgelse, hvor 195 hash- kodeord blev angrebet, hvoraf 35% blev knækket. [5]
Tabel: Procentdel af adgangskoder fundet i systematisk forskningForsker(e) / projekt | Tid | Adgangskoder bekræftet | Procentdel af fund, [%] |
---|---|---|---|
Internetorm [2] | 1988 | tusindvis | ~50 |
Kleins undersøgelse [3] | 1990 | 15.000 | 24.2 |
Spaffords undersøgelse[fire] | 1992 | 13787 | 20.0 |
Forskere fra University of Cambridge [5] | 2000 | 195 | 35,0 |
I de fleste adgangskoder er der en fonetisk lighed med ordene i naturligt (engelsk) sprog; grunden til dette er letheden ved at huske denne form for information om en given adgangskode. Denne egenskab tages i betragtning i "Markov-filtre" baseret på Markov-kæden , som er en standardteknik i naturlig sprogbehandling. Tilstedeværelsen af ikke-alfabetiske tegn i adgangskoden kan tolkes som at anvende en tilstandsmaskine til et bestemt sæt elementer.
En menneskeskabt alfabetisk adgangskode er ujævnt fordelt i rummet af alfabetiske sekvenser. Denne tilstand kan tages i betragtning med stor nøjagtighed i "Markov-filtre" af nul og første orden: [6]
Matematisk,
nul orden af Markov-modellen:
første ordre af Markov-modellen:
hvor er sandsynligheden for fordeling af en sekvens af tegn, er karakteren af denne sekvens, er frekvensen af et individuelt tegn eller digram i teksten.
For at eliminere usandsynlige strenge i ordbogen bruges sandsynlighedsdiskretisering - et to-niveau system med en tærskel er introduceret :
nul orden af Markov-modellen:
første ordre af Markov-modellen:
Bemærkninger
For at oprette statsmaskiner introduceres nogle begrænsninger og antagelser i forhold til den knækkede adgangskode:
Deterministiske endelige automater er ideelle midler til udtryk med de foreslåede begrænsninger. [6]
Det første trin i opbygningen af en ordbog baseret på endelige automater er at skabe en sekvens af regulære udtryk ( \" små bogstaver " , \" caps før små bogstaver " , \" alle caps kommer før små bogstaver " , osv.).
En ordbog er defineret som et sæt ord, der matcher Markov-filtre og et begrænset antal regulære udtryk anvendt på dem.
Algoritmen, der bruges til at bygge ordbogen, er lidt anderledes end Markov-filteret på nulniveau (i dette tilfælde vil en anden tærskel blive brugt for forskellige ordlængder i ordbogen ). [6]
Den ændrede ordbog er defineret som
Omskriv filteret (ordbogen) i additiv form
hvor .
Lad . Derefter definerer vi delordbøger . Bemærk, at er defineret, fordi , derfor ikke afhænger af valget af .
For ethvert præfiks indeholder den delvise ordbog alle mulige sekvenser af tegn, der kan knyttes til det præfiks , så den resulterende streng opfylder alle Markov-egenskaber.
Generelt kan der skrives en delordbog
Rekursiv algoritme til beregning af størrelsen af en delordbog [6]
partial_size1 ( current_length , level ) { if level >= threshold : return 0 if total_length = current_length : return 1 sum = 0 for hver char i alfabetet sum = sum + partial_size1 ( current_length + 1 , level + mu ( char )) return sum }Rekursiv algoritme til at finde en nøgle fra en ordbog (tager et indeks i tasterummet som input og returnerer den tilsvarende nøgle ) [6]
get_key1 ( aktuel_længde , indeks , niveau ) { if total_length = current_length : returner "" sum = 0 for hvert tegn i alfabetet new_level = level + mu ( char ) // slået op fra forudberegnet array size = partial_size1 [ current_length + 1 ][ new_level ] if sum + size > index // '|' henviser til strengsammenkædning retur char | get_key1 ( aktuel_længde + 1 , indeks - sum , nyt_niveau ) sum = sum + størrelse // kontrol kan ikke nå her print "indeks større end keyspace størrelse" ; exit }Bemærkninger
Som med nulordsmetoden defineres delvise ordbøger .
Når du har slået en streng op i en delvis ordbog , skal du bekymre dig om det sidste tegn (under hensyntagen til digrammet og dets fordeling)
partial_size2 ( current_length , prev_char , level ) { if level >= threshold : return 0 if total_length = current_length : return 1 sum = 0 for hvert tegn i alfabetet hvis current_length = 0 new_level = mu ( char ) else new_level = level + mu ( prev_char , char ) sum = sum + partiel_størrelse2 ( nuværende_længde + 1 , char , nyt_niveau ) } get_key2 ( aktuel_længde , indeks , prev_char , niveau ) { if total_length = current_length : returner "" sum = 0 for char i alfabetet hvis nuværende_længde = 0 new_level = mu ( char ) andet new_level = level + mu ( prev_char , char ) size = partial_size2 ( current_length + 1 , char , new_level ) if sum + size > index return char | get_key2 ( aktuel_længde + 1 , indeks - sum , char , nyt_niveau ) sum = sum + størrelse // kontrol kan ikke nå her print "indeks større end keyspace størrelse" ; exit }Kommentar
Der er flere måder at imødegå online ordbogsangreb på :
Bemærkninger
Det antages, at den korrekte login/adgangskode -kombination er indtastet af brugeren af denne konto , mens ordbogsangrebet udføres af et automatisk program. Det kræves, at et forsøg på at indtaste den korrekte adgangskode er "beregningsmæssigt simpelt" for mennesker og "beregningsmæssigt svært" for maskiner.
Protokollen er en test, der tillader serveren at skelne et menneske fra en bot . Den blev først foreslået af M. Naor ( eng. Moni Naor ) og kaldes den omvendte Turing-test ( eng. Reverse Turing-test (RTT) ), et andet navn for den er CAPTCHA . Reverse Turing-testen skal opfylde følgende betingelser: [7]
Billedtesten opfylder alle ovenstående betingelser.
Protokol 1 (kombination af Turings omvendte test med ethvert autentificeringssystem) [8]
Brugeren bliver bedt om at svare på en RTT-besked, før godkendelsen starter (inden login/adgangskode indtastes ).
Kommentar
Denne metode er ikke optimal for store systemer, da det er ret irriterende og psykologisk svært for brugeren at indtaste svaret på RTT-testen hver gang før godkendelse . [otte]
Protokol 2 (brugerloginprotokol, ændret version af protokol 1) [8]
Hvis brugeren er logget ind, sender serveren en cookie til brugerens computer , der indeholder en registrering af brugerens godkendelse og gyldighedsperioden for denne meddelelse (forudsat at manglende evne til at ændre informationen i cookien uden at give serveren besked (dette kan garanteres ved at tilføje en MAC ( beskedgodkendelseskode ), som beregnes ved hjælp af en nøgle , der kun er kendt af serveren).
Bemærkninger
Offline ordbogsangreb kan forhindres eller gøres vanskeligere på følgende måder:
Trusted Platform Module (TPM) er en hardwarechip, der gør det muligt for computere at holde data sikre. Besiddelse af hemmelige oplysninger (herefter - authData ) er nødvendig for at få adgang til og bruge TPM-nøgler .
Under angrebet kan kryptanalytikeren lære: [9]
Kompilering af ordbøger baseret på modtaget information bruges i et offline ordbogsangreb til at bestemme authData .
Kampmetoder - ved hjælp af en modificeret SPEKE kryptografisk metode( Simple Password Exponential Key Exchange ), som er baseret på Diffie-Hellman-nøgleudvekslingsalgoritmen (lader to parter oprette en delt hemmelighed ( eng. stærk delt hemmelighed ), baseret på en svag delt hemmelighed ( eng. svag hemmelighed ), som de deler).
Protokol (modificeret kryptografisk metode SPEKE)
1. brugeren udfører den kommando , der kræves til autorisation med authData ;
2. brugerproces og TPM er inkluderet i SPEKE-protokollen
, bruger som en svag fælles hemmelighed ;
3. Brugerprocessen vælger en tilfældig og sender den til TPM , hvor er hash-funktionen ;
4. TPM vælger en tilfældig og sender til brugerprocessen;
5. hver af dem beregner en hemmelighed ;
6. erstattes af som HMAC-nøgle .
Bemærkninger