Fullständig uppräkning (eller "brute force"-metoden , eng. brute force ) - en metod för att lösa matematiska problem . Hänvisar till klassen av metoder för att hitta en lösning genom att uttömma alla möjliga alternativ . Komplexiteten i den uttömmande sökningen beror på antalet möjliga lösningar på problemet. Om lösningsutrymmet är mycket stort, kan uttömmande sökning inte ge resultat på flera år eller till och med århundraden.
Alla problem från klass NP kan lösas genom uttömmande sökning. Samtidigt, även om beräkningen av målfunktionen från varje specifik möjlig lösning på problemet kan utföras i polynomtid , beroende på antalet av alla möjliga lösningar, kan en uttömmande uppräkning kräva en exponentiell körtid.
Inom kryptografi används beräkningskomplexiteten i uttömmande sökning för att uppskatta den kryptografiska styrkan hos chiffer . I synnerhet sägs ett chiffer vara säkert om det inte finns någon "cracking"-metod som är väsentligt snabbare än brute-force search . Brute-force kryptografiska attacker är de mest mångsidiga, men också de längsta.
På engelska hänvisar termen " brute-force " som diskuteras i den här artikeln vanligtvis till en klass av hackerattacker . Samtidigt motsvarar ett mer allmänt koncept, en matematisk metod för att uttömma alla möjliga alternativ för att hitta en lösning på ett problem, termen " Proof by exhaustion ".
"Utmattningsmetoden" innefattar en hel klass av olika metoder. Vanligtvis innebär problemformuleringen övervägande av ett ändligt antal tillstånd i ett givet logiskt system för att identifiera sanningen i ett logiskt påstående genom en oberoende analys av varje tillstånd [1] . Metoden för att bevisa påståendet består av två delar:
Även om uttömmande sökning inte används i praktiken i de flesta tillämpade problem (särskilt inte relaterade till att bryta chiffer ), finns det ett antal undantag. I synnerhet när en uttömmande sökning ändå visar sig vara optimal eller representerar det inledande skedet i utvecklingen av en algoritm, är dess användning motiverad. Ett exempel på optimaliteten av uttömmande sökning är algoritmen för att uppskatta tiden för beräkning av kedjeprodukterna av matriser, som inte kan accelereras jämfört med algoritmen baserad på "brute force"-metoden [2] . Denna algoritm används för att lösa det klassiska problemet med dynamisk programmering - att bestämma prioriteringarna för beräkning av matrisprodukter av följande form: .
Den initiala uppgiften är att beräkna den givna kedjan (matrisprodukten) på kortast tid. Det är möjligt att implementera en trivial sekventiell algoritm som beräknar den önskade produkten. Eftersom matrisprodukten är en associativ operation , kan man beräkna kedjeprodukten genom att godtyckligt välja ett par element i kedjan och ersätta det med den resulterande matrisen . Om du upprepar de beskrivna procedurerna gånger, kommer den återstående resulterande matrisen att vara svaret: . Denna formel kan illustreras enligt följande. Tänk på matriskedjan: . Det finns följande 5 sätt att beräkna produkten som motsvarar denna kedja :
Genom att välja rätt beräkningsordning kan du uppnå en betydande acceleration av beräkningarna. För att se detta, överväg ett enkelt exempel på en kedja av 3 matriser. Vi antar att deras storlekar är lika, respektive . Standardalgoritmen för att multiplicera två matriser med storlek kräver beräkningstid proportionell mot antalet (antalet inre produkter som ska beräknas) [3] . Genom att utvärdera strängen i ordning får vi därför punktprodukterna att beräkna plus ytterligare punktprodukter för att beräkna den andra matrisprodukten. Det totala antalet skalära produkter: 7500. Med ett annat val av beräkningsordningen får vi plus skalärprodukter, det vill säga 75000 skalärprodukter [3] .
Sålunda kan lösningen av detta problem avsevärt minska tiden som spenderas på beräkningen av matriskedjan. Denna lösning kan erhållas genom uttömmande uppräkning: det är nödvändigt att överväga alla möjliga sekvenser av beräkningar och välja från dem den som, vid beräkning av kedjan, upptar det minsta antalet skalära produkter. Det bör dock tas med i beräkningen att denna algoritm i sig kräver exponentiell beräkningstid [2] , så för långa matriskedjor kan vinsten från att beräkna kedjan på det mest effektiva sättet (optimal strategi ) gå förlorad helt när det tar tid. för att hitta denna strategi [4] .
Det finns flera allmänt tillämpliga allmänna begrepp i teorin om algoritmer . Brute force-metoden är en av dem. I själva verket kan uttömmande sökning användas i de fall då vi har att göra med ett diskret deterministiskt system, vars tillstånd lätt kan analyseras [5] .
Ett annat utmärkt exempel på ett grundläggande koncept i teorin om algoritmer är principen " dela och erövra ". Detta koncept är tillämpligt när systemet kan delas upp i många delsystem, vars struktur liknar strukturen i det ursprungliga systemet [6] . I sådana fall är delsystemen också mottagliga för separation, eller är triviala [6] . För sådana system är det initialt uppställda problemet trivialt. Implementeringen av begreppet "dela och härska" är således rekursiv .
I sin tur är rekursion ett slags uttömmande sökning. Så, rekursion är endast tillämplig för diskreta system [7] . Detta krav gäller dock inte tillstånden i ett givet system, utan dess understruktur . Konsekvent övervägande av alla nivåer ger en uttömmande lösning på problemet för hela det diskreta systemet.
Jämfört med andra exempel på fullständig uppräkning är en egenskap hos rekursionsmetoden att den slutliga lösningen är baserad på mer än ett trivialt delsystem. I det allmänna fallet bildas lösningen på basis av en hel uppsättning delsystem.
För följande exempel på klassiska dela-och-härska-problem är brute force antingen den enda kända lösningen eller den ursprungliga implementeringen, som har optimerats ytterligare:
Inom kryptografi är en brute-force kryptografisk attack , eller brute force [12] ( Eng. Brute-force attack ) baserad på brute force attack - knäcka ett lösenord genom att söka alla möjliga nyckelalternativ. Dess funktion är möjligheten att använda den mot vilket praktiskt använda chiffer [13] ( för undantag, det vill säga säkerhet ur informationsteoretisk synvinkel , se även chifferblock och Informationsteoretisk säkerhet ). Denna möjlighet finns dock endast teoretiskt, vilket ofta kräver orealistiska tids- och resurskostnader. Om beslutsutrymmet är för stort kan denna typ av attack misslyckas i flera år eller till och med århundraden. Användningen av en brute force-attack är mest motiverad i de fall där det inte är möjligt att hitta svaga punkter i krypteringssystemet under attack (eller det inte finns några svaga punkter i krypteringssystemet som övervägs). När sådana brister hittas utvecklas kryptoanalystekniker baserat på deras egenskaper, vilket hjälper till att förenkla hacking.
Motstånd mot brute-force attack avgör krypteringsnyckeln som används i kryptosystemet. Så med en ökning av nyckellängden ökar komplexiteten för sprickbildning med denna metod exponentiellt. I det enklaste fallet bryts ett N -bitars chiffer, i värsta fall i en tid proportionell mot 2 N [14] [15] . Den genomsnittliga hackningstiden i detta fall är två gånger kortare och är 2 N -1 . Det finns sätt att öka krypteringens motstånd mot "brute force", till exempel obfuskering ( obfuscation ) av krypterad data, vilket gör det icke-trivialt att skilja krypterad data från okrypterad data.
Kryptografiska attacker baserade på "brute force"-metoden är de mest mångsidiga, men samtidigt de långsammaste. Används främst av nybörjare hackare . Effektiv för enkla krypteringsalgoritmer och nycklar upp till 64 bitar långa. För moderna nycklar med en längd på 128 bitar eller mer (ibland faktoriseras ett stort antal 200 siffror för en nyckel) är de ineffektiva. Alla lösenord kan gissas genom en uttömmande sökning. Samtidigt, även om beräkningen av objektivfunktionen från varje specifik möjlig lösning på problemet kan utföras i polynomtid, beroende på antalet av alla möjliga lösningar, kan attacken kräva en exponentiell körtid.
För att öka hastigheten för val av tangenter används parallellisering av beräkningar. Det finns två typer av parallellisering:
Den e processorn utför tre operationer samtidigt:
Denna operation kan ta så lite som en hundradels sekund. Sedan arbetar processorerna parallellkopplade och synkront med en hastighet (eftersom det bara finns tre operationer), där är hastigheten för att utföra en operation av en processor.
I en omvänd brute force-attack testas ett enda (vanligtvis delat) lösenord mot flera användarnamn. I detta fall gäller även parallellisering, men processorerna måste kontrollera om en annan användare har ett sådant lösenord. I en sådan strategi försöker angriparen vanligtvis inte hacka sig in på en viss användares konto. Mot omvända attacker upprättas en lösenordspolicy som förbjuder användning av identiska lösenord.
Tabellen visar den uppskattade tiden för brute-force-sökning av lösenord beroende på deras längd. Det antas att 36 olika tecken kan användas i lösenordet ( latinska bokstäver i ett fall + siffror), och brute force-hastigheten är 100 000 lösenord per sekund ( attackklass B , typiskt för lösenordsåterställning från Windows - cache ( .PWL- filer) på Pentium 100 ) [16] .
Antal tecken | Antal alternativ | Mod | Söktid |
---|---|---|---|
ett | 36 | 5 bitar | mindre än en sekund |
2 | 1296 | 10 bitar | mindre än en sekund |
3 | 46 656 | 15 bitar | mindre än en sekund |
fyra | 1 679 616 | 21 bitar | 17 sekunder |
5 | 60 466 176 | 26 bitar | 10 minuter |
6 | 2176782336 | 31 bitar | 6 timmar |
7 | 78 364 164 096 | 36 bitar | 9 dagar |
åtta | 2,821 109 9x10 12 | 41 bitar | 11 månader |
9 | 1,015 599 5x10 14 | 46 bitar | 32 år |
tio | 3,656 158 4x10 15 | 52 bitar | 1162 år |
elva | 1,316 217 0x10 17 | 58 bitar | 41 823 år |
12 | 4,738 381 3x10 18 | 62 bitar | 1 505 615 år |
Lösenord upp till och inklusive 8 tecken är därför i allmänhet inte säkra. För moderna datorer är denna siffra mycket högre. Så, en 64-bitars nyckel (lösenord) sorteras ut på en modern dator på cirka 2 år och sökningen kan enkelt fördelas på många datorer.
Moderna persondatorer tillåter brute force cracking av lösenord med effektiviteten som illustreras i tabellen ovan. Men med brute force-optimering baserad på parallell beräkning kan attackens effektivitet ökas avsevärt [18] . Detta kan kräva användning av en dator anpassad för flertrådig beräkning . Under de senaste åren har datorlösningar som använder grafikprocessorer , som Nvidia Tesla , blivit utbredda . Sedan skapandet av CUDA- arkitekturen av Nvidia 2007 har många lösningar dykt upp (se till exempel Cryptohaze Multiforcer , Pyrit Archived November 20, 2012 at the Wayback Machine ) som tillåter accelererad nyckelgissning med hjälp av teknologier som CUDA, FireStream , OpenCL .
I processen att förbättra informationssäkerhetssystemet i förhållande till en brute-force attack kan två huvudriktningar urskiljas:
Det är alltså omöjligt att uppnå en hög skyddsnivå genom att bara förbättra en av dessa parametrar [19] . Det finns exempel på hur ett autentiseringssystem baserat på den optimala lösenordskomplexiteten visade sig vara sårbart för att kopiera databasen till angriparens lokala dator, varefter den utsattes för en brute force attack med hjälp av lokala optimeringar och beräkningsverktyg som inte är tillgängliga med fjärrkryptanalys [20] . Detta tillstånd har fått en del datasäkerhetsexperter att rekommendera ett mer kritiskt förhållningssätt till säkerhetsstandardpraxis som att använda lösenord som är så långa som möjligt [21] . Nedan är en lista över några praktiska metoder [22] [23] [24] för att öka tillförlitligheten hos ett kryptosystem i förhållande till en brute force attack:
För att påskynda uppräkningen använder metoden förgrening och bunden eliminering av delmängder av genomförbara lösningar som uppenbarligen inte innehåller optimala lösningar [25] .
En av metoderna för att öka hastigheten för nyckelval är parallellisering av beräkningar . Det finns två metoder för parallellisering [26] :
Datorsystem som använder lösenord för autentisering måste på något sätt avgöra om det angivna lösenordet är korrekt. En trivial lösning på detta problem är att hålla en lista över alla giltiga lösenord för varje användare, men detta tillvägagångssätt är inte immunt mot databasläckor. Ett enkelt men felaktigt sätt att skydda mot en basläcka är att beräkna en kryptografisk hashfunktion från lösenordet.
Metoden är felaktig genom att det är möjligt att göra en sökning i förväg, och när du behöver knäcka lösenordet, titta på resultatet. Regnbågsbordet är en optimering av denna metod [27] . Dess främsta fördel är en betydande minskning av mängden minne som används [28] [27] .
AnvändningRegnbågsbordet skapas genom att bygga kedjor av möjliga lösenord. Varje kedja börjar med ett slumpmässigt möjligt lösenord och utsätts sedan för en hashfunktion och en reduceringsfunktion. Den här funktionen omvandlar resultatet av hashfunktionen till något möjligt lösenord (om vi till exempel antar att lösenordet är 64 bitar långt, kan reduktionsfunktionen ta de första 64 bitarna av hashen, bitvis tillägg av alla 64-bitars block av hash, etc.). Mellanlösenord i kedjan kasseras och endast de första och sista elementen i kedjorna skrivs till bordet. Skapandet av sådana tabeller kräver mer tid än det tar att skapa vanliga uppslagstabeller, men mycket mindre minne (upp till hundratals gigabyte, med volymen för vanliga tabeller med N ord, behöver regnbågstabeller bara ungefär N 2/3 ) [28 ] . Samtidigt, även om de kräver mer tid (jämfört med konventionella metoder) för att återställa det ursprungliga lösenordet, är de mer genomförbara i praktiken (att bygga en vanlig tabell för ett 6-teckens lösenord med byte-tecken, 256 6 = 281 474 976 710 656 minnesblock kommer att krävas, medan för regnbågen - endast 256 6 ⅔ \u003d 4,294,967,296 block).
För att återställa lösenordet reduceras detta hashvärde och slås upp i tabellen. Om ingen matchning hittas, tillämpas hashfunktionen och reduceringsfunktionen igen. Denna operation fortsätter tills en matchning hittas. Efter att ha hittat en matchning återställs kedjan som innehåller den för att hitta det kasserade värdet, vilket kommer att vara det önskade lösenordet.
Resultatet är en tabell som med stor sannolikhet kan återställa lösenordet på kort tid [29] .
Även om allt skydd av ett informationssystem först och främst måste vara tillförlitligt i förhållande till en brute force attack, är fall av framgångsrik användning av denna attack av inkräktare ganska vanliga.
Enigma-chiffermaskinen uppfanns 1918 och användes flitigt av den tyska flottan från 1929 och framåt. Under de följande åren modifierades systemet, och sedan 1930 användes det aktivt av den tyska armén och regeringen under andra världskriget [31] .
De första avlyssningarna av meddelanden krypterade med Enigma-koden går tillbaka till 1926. De kunde dock inte läsa meddelandena på länge. Under hela andra världskriget var det en konfrontation mellan polska och tyska kryptografer. Polackerna, som fick ytterligare ett resultat i att bryta det tyska kryptosystemet, stod inför nya svårigheter som introducerades av tyska ingenjörer som ständigt uppgraderade Enigma-systemet. Sommaren 1939 , när oundvikligheten av en invasion av Polen blev uppenbar, överlämnade byrån resultaten av sitt arbete till brittisk och fransk underrättelsetjänst [32] .
Ytterligare inbrottsarbete organiserades på Bletchley Park . Kryptanalytikernas huvudverktyg var Bomba -dekrypteringsmaskinen . Dess prototyp skapades av polska matematiker på tröskeln till andra världskriget för det polska försvarsministeriet. Baserat på denna utveckling och med direkt stöd från dess skapare, designades en mer "avancerad" enhet i England.
Den teoretiska delen av arbetet gjordes av Alan Mathison Turing [33] . Hans arbete med den kryptografiska analysen av algoritmen implementerad i Enigma-chiffermaskinen baserades på tidigare kryptoanalys av tidigare versioner av denna maskin, som utfördes 1938 av den polske kryptoanalytikern Marian Rejewski . Funktionsprincipen för dekrypteringsverktyget som utvecklats av Turing var att räkna upp möjliga alternativ för chiffernyckeln och försök att dekryptera texten om strukturen för meddelandet som dekrypteras eller en del av klartexten var känd [34] .
Ur en modern synvinkel var Enigma-chifferet inte särskilt tillförlitligt, men bara kombinationen av denna faktor med närvaron av många avlyssnade meddelanden, kodböcker, underrättelserapporter, resultaten av militära ansträngningar och till och med terroristattacker gjorde det möjligt att " öppna" chiffret [32] .
Efter kriget beordrade Churchill , av säkerhetsskäl, att dessa maskiner skulle förstöras.
2007 började en grupp företag som är medlemmar i organisationen Wi-Fi Alliance sälja trådlös utrustning för hemnätverk med stöd för den nya standarden Wi-Fi Protected Setup. Bland tillverkarna av trådlösa routrar som stöder denna teknik fanns så stora företag som Cisco/Linksys , Netgear , Belkin och D-Link . WPS-standarden var avsedd att avsevärt förenkla processen att sätta upp ett trådlöst nätverk och dess användning för personer som inte har omfattande kunskaper inom området nätverkssäkerhet. Men i slutet av 2011 publicerades information om allvarliga sårbarheter i WPS, vilket gjorde det möjligt för en angripare att gissa PIN-koden [35] för ett trådlöst nätverk på bara några timmar, med datorresurserna för en vanlig persondator [36 ] .
För närvarande rekommenderar CERT Coordinating Center inte tillverkare att släppa ny utrustning som stöder denna teknik. [37]
2010, vid DEFCON18- konferensen , presenterades ett obemannat flygfordon WASP , designat för massinsamling av statistik om Wi-Fi-hemnätverk. UAV:en är utrustad med en kompakt inbyggd dator som kör BackTrack Linux.En av dess funktioner var möjligheten att automatiskt knäcka lösenord för trådlösa nätverk med brute force [38] [39] .