Forta bruta

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 16 octombrie 2020; verificările necesită 11 modificări .

Enumerarea completă (sau metoda „forței brute” , ing.  forța brută ) - o metodă de rezolvare a problemelor matematice . Se referă la clasa de metode pentru găsirea unei soluții prin epuizarea tuturor opțiunilor posibile . Complexitatea căutării exhaustive depinde de numărul tuturor soluțiilor posibile la problemă. Dacă spațiul pentru soluții este foarte mare, atunci căutarea exhaustivă poate să nu dea rezultate timp de câțiva ani sau chiar secole.

Orice problemă din clasa NP poate fi rezolvată prin căutare exhaustivă. În același timp, chiar dacă calculul funcției obiectiv din fiecare soluție specifică posibilă a problemei poate fi efectuat în timp polinomial , în funcție de numărul tuturor soluțiilor posibile, enumerarea exhaustivă poate necesita un timp de rulare exponențial .

În criptografie , complexitatea computațională a căutării exhaustive este utilizată pentru a estima puterea criptografică a cifrurilor . În special, se spune că un cifru este sigur dacă nu există o metodă de „cracare” substanțial mai rapidă decât căutarea prin forță brută . Atacurile criptografice cu forță brută sunt cele mai versatile, dar și cele mai lungi.

Metoda de epuizare

Terminologie

În engleză, termenul „ forță brută ” discutat în acest articol se referă de obicei la o clasă de atacuri de hacker . În același timp, un concept mai general, o metodă matematică de epuizare a tuturor opțiunilor posibile pentru găsirea unei soluții la o problemă, corespunde termenului de „ Dovada prin epuizare ”.

Descriere

„Metoda de epuizare” include o întreagă clasă de metode diferite. De obicei, enunțul problemei implică luarea în considerare a unui număr finit de stări ale unui sistem logic dat pentru a identifica adevărul unei afirmații logice printr-o analiză independentă a fiecărei stări [1] . Metoda de demonstrare a afirmației constă din două părți:

  1. Dovada posibilității de epuizare a tuturor stărilor sistemului. Este necesar să se arate că orice stare specifică a sistemului (de exemplu, valoarea expresiei logice care se dovedește) corespunde cel puțin uneia dintre soluțiile candidate considerate.
  2. Verificarea fiecărei opțiuni și demonstrarea faptului că opțiunea luată în considerare este sau nu o soluție a problemei.

Probleme tipice rezolvate prin enumerare exhaustivă

Deși căutarea exhaustivă nu este utilizată în practică în majoritatea problemelor aplicate (în special care nu sunt legate de ruperea cifrurilor ), există o serie de excepții. În special, atunci când căutarea exhaustivă se dovedește totuși a fi optimă sau reprezintă etapa inițială în dezvoltarea unui algoritm, utilizarea acestuia este justificată. Un exemplu de optimitate a căutării exhaustive este algoritmul de estimare a timpului de calcul al produselor în lanț ale matricelor, care nu poate fi accelerat în comparație cu algoritmul bazat pe metoda „forței brute” [2] . Acest algoritm este utilizat pentru rezolvarea problemei clasice de programare dinamică  - determinarea priorităților pentru calcularea produselor matriceale de următoarea formă: .

Un exemplu de utilizare a enumerarii exhaustive

Sarcina inițială este de a calcula lanțul dat (produsul matricei) în cel mai scurt timp. Este posibil să se implementeze un algoritm secvenţial trivial care calculează produsul dorit. Deoarece produsul matriceal este o operație asociativă , se poate calcula produsul în lanț alegând în mod arbitrar o pereche de elemente ale lanțului și înlocuindu-l cu matricea rezultată . Dacă repetați procedura descrisă ori, atunci matricea rezultată rămasă va fi răspunsul: . Această formulă poate fi ilustrată după cum urmează. Se consideră lanțul matriceal: . Există următoarele 5 moduri de a calcula produsul corespunzător acestui lanț :

Alegând ordinea corectă a calculelor, puteți obține o accelerare semnificativă a calculelor. Pentru a vedea acest lucru, luați în considerare un exemplu simplu de lanț de 3 matrici. Presupunem că dimensiunile lor sunt egale, respectiv . Algoritmul standard pentru înmulțirea a două matrice după dimensiune necesită timp de calcul proporțional cu numărul (numărul de produse interne care trebuie calculate) [3] . Prin urmare, evaluând șirul în ordine , obținem produsele punctuale pentru a calcula , plus produse punctuale suplimentare pentru a calcula al doilea produs matriceal. Numărul total de produse scalare: 7500. Cu o alegere diferită a ordinii calculelor, obținem plus produse scalare, adică 75000 de produse scalare [3] .

Astfel, rezolvarea acestei probleme poate reduce semnificativ timpul petrecut cu calculul lanțului matriceal. Această soluție poate fi obținută prin enumerare exhaustivă: este necesar să se ia în considerare toate secvențele posibile de calcule și să se aleagă dintre ele pe cea care, la calcularea lanțului, ocupă cel mai mic număr de produse scalare. Cu toate acestea, trebuie luat în considerare faptul că acest algoritm în sine necesită timp de calcul exponențial [2] , astfel încât pentru lanțurile de matrice lungi, câștigul din calcularea lanțului în cel mai eficient mod ( strategia optimă ) poate fi pierdut complet în timpul necesar. pentru a găsi această strategie [4] .

Relația cu conceptul de „împărți și cuceri”

Există mai multe concepte generale aplicabile pe scară largă în teoria algoritmilor . Metoda forței brute este una dintre ele. De fapt, căutarea exhaustivă poate fi folosită în acele cazuri când avem de-a face cu un sistem determinist discret, ale cărui stări pot fi ușor analizate [5] .

Un alt exemplu principal de concept fundamental în teoria algoritmilor este principiul „ împărțiți și cuceriți ”. Acest concept este aplicabil atunci când sistemul poate fi împărțit în mai multe subsisteme, a căror structură este similară cu structura sistemului original [6] . În astfel de cazuri, subsistemele sunt, de asemenea, susceptibile de separare, sau sunt triviale [6] . Pentru astfel de sisteme, problema pusă inițial este banală. Astfel, implementarea conceptului de „împărți și cuceri” este recursivă .

La rândul său, recursiunea este un fel de căutare exhaustivă. Deci, recursiunea este aplicabilă numai pentru sistemele discrete [7] . Totuși, această cerință nu se aplică stărilor unui sistem dat, ci substructurii acestuia . Considerarea consecventă a tuturor nivelurilor oferă o soluție exhaustivă a problemei puse pentru întregul sistem discret.

În comparație cu alte exemple de enumerare completă, o caracteristică a metodei recursiunii este că soluția finală se bazează pe mai mult de un subsistem trivial. În cazul general, soluția se formează pe baza unui întreg set de subsisteme.

Pentru următoarele exemple de probleme clasice de împărțire și cucerire, forța brută este fie singura soluție cunoscută, fie implementarea originală, care a fost optimizată în continuare:

Atacul de forță brută

În criptografie , un atac criptografic cu forță brută sau forță brută [12] ( Eng.  Atac cu forță brută ) se bazează pe atacul cu forță brută - spargerea unei parole prin căutarea tuturor opțiunilor de cheie posibile. Caracteristica sa este abilitatea de a-l folosi împotriva oricărui cifr utilizat practic [13] ( pentru excepții, adică securitatea din punctul de vedere al teoriei informațiilor, vezi și cipher pad și Information-theoretic security ). Cu toate acestea, această posibilitate există doar teoretic, necesitând adesea costuri nerealiste de timp și resurse. Dacă spațiul de decizie este prea mare, atunci acest tip de atac poate eșua timp de câțiva ani sau chiar secole. Utilizarea unui atac de forță brută este cel mai justificată în cazurile în care nu este posibil să se găsească puncte slabe în sistemul de criptare atacat (sau nu există puncte slabe în sistemul de criptare luat în considerare). Atunci când se constată astfel de deficiențe, tehnicile de criptoanaliza sunt dezvoltate pe baza caracteristicilor lor, ceea ce ajută la simplificarea hackingului.

Rezistența la atacul cu forță brută determină cheia de criptare utilizată în criptosistem. Deci, odată cu creșterea lungimii cheii, complexitatea fisurii prin această metodă crește exponențial. În cel mai simplu caz, un cifr de N - biți este rupt, în cel mai rău caz, într-un timp proporțional cu 2 N [14] [15] . Timpul mediu de hacking în acest caz este de două ori mai mic și este de 2 N -1 . Există modalități de a crește rezistența cifrului la „forța brută”, de exemplu, ofuscarea ( ofuscarea ) a datelor criptate, ceea ce face să nu se distingă datele criptate de datele necriptate.

Atacurile criptografice bazate pe metoda „forței brute” sunt cele mai versatile, dar în același timp și cele mai lente. Folosit în principal de hackeri începători . Eficient pentru algoritmi simpli de criptare și chei de până la 64 de biți. Pentru cheile moderne cu o lungime de 128 de biți sau mai mult (uneori un număr mare de 200 de cifre este factorizat pentru o cheie), acestea sunt ineficiente. Orice parolă poate fi ghicită printr-o căutare exhaustivă. În același timp, chiar dacă calculul funcției obiectiv din fiecare soluție specifică posibilă a problemei poate fi efectuat în timp polinomial, în funcție de numărul tuturor soluțiilor posibile, atacul poate necesita un timp de rulare exponențial.

Paralelizarea calculelor

Pentru a crește viteza de selecție a tastelor, se utilizează paralelizarea calculelor. Există două tipuri de paralelizare:

Al treilea procesor efectuează trei operații în același timp:

  1. primirea datelor de la al -lea procesor
  2. efectuarea unei operații
  3. transferarea datelor la al -lea procesor.

Această operație poate dura chiar și o sutime de secundă. Apoi procesoarele conectate în paralel și sincron funcționează la o viteză (din moment ce sunt doar trei operații), unde  este viteza de efectuare a unei operații de către un procesor.

Atacuri inverse prin „forță brută”

Într -un atac de forță brută inversă, o singură parolă (de obicei partajată) este testată împotriva mai multor nume de utilizator. În acest caz, se aplică și paralelizarea, dar procesoarele trebuie să verifice dacă alt utilizator are o astfel de parolă. Într-o astfel de strategie, atacatorul nu încearcă de obicei să pirateze contul unui anumit utilizator. Împotriva atacurilor inverse se stabilește o politică de parole care interzice utilizarea parolelor identice.

Un exemplu de durata de ghicire a parolei

Tabelul arată timpul estimat pentru căutarea prin forță brută a parolelor, în funcție de lungimea acestora. Se presupune că în parolă pot fi folosite 36 de caractere diferite ( litere latine cu o singură literă + cifre), iar rata de forță brută este de 100.000 de parole pe secundă ( clasa de atac B , tipică pentru recuperarea parolei din memoria cache Windows ( fișiere .PWL ) pe Pentium 100 ) [ 16] .

Numărul de caractere Numărul de opțiuni Curaj Timp de căutare
unu 36 5 biți mai puțin de o secundă
2 1296 10 biți mai puțin de o secundă
3 46 656 15 biți mai puțin de o secundă
patru 1 679 616 21 de biți 17 secunde
5 60 466 176 26 de biți 10 minute
6 2176782336 31 de biți 6 ore
7 78 364 164 096 36 de biți 9 zile
opt 2.821 109 9x10 12 41 de biți 11 luni
9 1.015 599 5x10 14 46 de biți 32 de ani
zece 3.656 158 4x10 15 52 de biți 1162 de ani
unsprezece 1.316 217 0x10 17 58 de biți 41.823 de ani
12 4.738 381 3x10 18 62 de biți 1.505.615 ani

Astfel, parolele de până la 8 caractere inclusiv nu sunt în general sigure. Pentru computerele moderne, această cifră este mult mai mare. Deci, o cheie de 64 de biți (parolă) este sortată pe un computer modern în aproximativ 2 ani și căutarea poate fi distribuită cu ușurință între multe computere.

Mijloace de atac

Calculatoarele personale moderne permit spargerea prin forță brută a parolelor cu eficiența ilustrată în tabelul de mai sus. Cu toate acestea, cu optimizarea forței brute bazată pe calculul paralel , eficiența atacului poate fi crescută semnificativ [18] . Acest lucru poate necesita utilizarea unui computer adaptat pentru calculul cu mai multe fire . În ultimii ani, soluțiile de calcul care utilizează GPU -uri , cum ar fi Nvidia Tesla , au devenit larg răspândite . De la crearea arhitecturii CUDA de către Nvidia în 2007, au apărut multe soluții (vezi, de exemplu, Cryptohaze Multiforcer , Pyrit Archived 20 noiembrie 2012 la Wayback Machine ) care permit ghicirea accelerată a cheilor folosind tehnologii precum CUDA, FireStream , OpenCL .

Reziliență la un atac cu forță brută

În procesul de îmbunătățire a sistemului de securitate a informațiilor în raport cu un atac cu forță brută, se pot distinge două direcții principale:

  1. cerințe crescute pentru cheile de acces la informațiile protejate;
  2. creșterea fiabilității tuturor componentelor sistemului de securitate.

Astfel, este imposibil să se obțină un nivel ridicat de protecție prin îmbunătățirea doar a unuia dintre acești parametri [19] . Există exemple în care un sistem de autentificare bazat pe complexitatea optimă a parolei s-a dovedit a fi vulnerabil la copierea bazei de date pe computerul local al atacatorului, după care a fost supus unui atac de forță brută folosind optimizări locale și instrumente de calcul care nu sunt disponibile cu criptoanaliza la distanță [20] . Această stare de lucruri i-a determinat pe unii experți în securitatea computerelor să recomande o abordare mai critică a practicilor standard de securitate, cum ar fi utilizarea parolelor cât mai lungi [21] . Mai jos este o listă cu câteva metode practice [22] [23] [24] de creștere a fiabilității unui criptosistem în raport cu un atac cu forță brută:

Metode de optimizare a forței brute

Branch and Bound Method

Pentru a grăbi enumerarea , metoda ramurilor și legăturilor folosește eliminarea submulților de soluții fezabile care, evident, nu conțin soluții optime [25] .

Paralelizarea calculelor

Una dintre metodele de a crește viteza de selecție a tastelor este paralelizarea calculelor . Există două abordări ale paralelizării [26] :

Mese curcubeu

Condiții preliminare pentru apariția

Sistemele computerizate care folosesc parole pentru autentificare trebuie să determine cumva dacă parola introdusă este corectă. O soluție trivială la această problemă este păstrarea unei liste cu toate parolele valide pentru fiecare utilizator, dar această abordare nu este imună la scurgerile bazei de date. O modalitate simplă, dar incorectă de a vă proteja împotriva unei scurgeri de bază, este să calculați o funcție hash criptografică din parolă.

Metoda este incorectă, deoarece este posibil să efectuați o căutare în avans, iar când trebuie să spargeți parola, priviți rezultatul. Tabelul curcubeu este o optimizare a acestei metode [27] . Principalul său avantaj este o reducere semnificativă a cantității de memorie utilizată [28] [27] .

Utilizare

Tabelul curcubeu este creat prin construirea de lanțuri de parole posibile. Fiecare lanț începe cu o parolă posibilă aleatorie, apoi este supus unei funcții hash și unei funcții de reducere. Această funcție convertește rezultatul funcției hash într-o parolă posibilă (de exemplu, dacă presupunem că parola are o lungime de 64 de biți, atunci funcția de reducere poate lua primii 64 de biți ai hashului, adăugarea pe biți a tuturor celor 64 de biți blocuri de hash etc.) . Parolele intermediare din lanț sunt aruncate și doar primul și ultimul element al lanțurilor sunt scrise pe tabel. Crearea unor astfel de tabele necesită mai mult timp decât este necesar pentru a crea tabele de căutare obișnuite, dar mult mai puțină memorie (până la sute de gigaocteți, cu volumul pentru tabelele obișnuite de N cuvinte, cele curcubeu au nevoie doar de aproximativ N 2/3 ) [28] ] . În același timp, deși necesită mai mult timp (comparativ cu metodele convenționale) pentru a recupera parola originală, ele sunt mai fezabile în practică (pentru a construi un tabel obișnuit pentru o parolă de 6 caractere cu caractere octeți, 256 6 = 281 474 976 Vor fi necesare 710 656 de blocuri de memorie, în timp ce pentru curcubeu - doar 256 6 ⅔ \u003d 4.294.967.296 de blocuri).

Pentru a recupera parola, această valoare hash este redusă și căutată în tabel. Dacă nu se găsește nicio potrivire, atunci funcția hash și funcția de reducere sunt aplicate din nou. Această operațiune continuă până când este găsită o potrivire. După găsirea unei potriviri, lanțul care o conține este restaurat pentru a găsi valoarea aruncată, care va fi parola dorită.

Rezultă un tabel care poate, cu o mare probabilitate, recupera parola într-un timp scurt [29] .

Incidente

Deși orice protecție a unui sistem informațional trebuie, în primul rând, să fie fiabilă în raport cu un atac de forță brută, cazurile de utilizare cu succes a acestui atac de către intruși sunt destul de frecvente.

Atacul Enigma

Inventată în 1918, mașina de cifrat Enigma a fost utilizată pe scară largă de Marina Germană începând cu 1929. În următorii câțiva ani, sistemul a fost modificat, iar din 1930 a fost folosit activ de armata și guvernul german în timpul celui de -al Doilea Război Mondial [31] .

Primele interceptări ale mesajelor criptate cu codul Enigma datează din 1926. Cu toate acestea, nu au putut citi mesajele mult timp. Pe tot parcursul celui de-al Doilea Război Mondial, a existat o confruntare între criptografii polonezi și germani. Polonezii, obținând un alt rezultat în distrugerea criptosistemului german, s-au confruntat cu noi dificultăți care au fost introduse de inginerii germani care au modernizat constant sistemul Enigma. În vara anului 1939 , când inevitabilitatea unei invazii a Poloniei a devenit evidentă, Biroul a predat rezultatele muncii sale serviciilor de informații britanice și franceze [32] .

S-au organizat alte lucrări de spargere la Bletchley Park . Instrumentul principal al criptoanaliștilor a fost mașina de decriptare Bomba . Prototipul său a fost creat de matematicieni polonezi în ajunul celui de-al Doilea Război Mondial pentru Ministerul Polonez al Apărării. Pe baza acestei dezvoltări și cu sprijinul direct al creatorilor săi, în Anglia a fost proiectată o unitate mai „avansată”.

Partea teoretică a lucrării a fost realizată de Alan Mathison Turing [33] . Lucrarea sa privind analiza criptografică a algoritmului implementat în mașina de cifrat Enigma s -a bazat pe criptoanaliza anterioare a versiunilor anterioare ale acestei mașini, care au fost efectuate în 1938 de către criptoanalistul polonez Marian Rejewski . Principiul de funcționare al decriptorului dezvoltat de Turing a fost enumerarea posibilelor opțiuni pentru cheia de cifră și încercările de a decripta textul dacă se cunoaște structura mesajului de decriptat sau o parte din textul simplu [34] .

Din punct de vedere modern, cifrul Enigma nu era foarte fiabil, dar numai combinația acestui factor cu prezența multor mesaje interceptate, cărți de coduri, rapoarte de informații, rezultatele eforturilor militare și chiar atacuri teroriste au făcut posibilă „ deschide” cifrul [32] .

După război , Churchill , din motive de securitate, a ordonat distrugerea acestor mașini.

Vulnerabilitatea protocolului WPS

În 2007, un grup de companii care sunt membre ale organizației Wi-Fi Alliance a început să vândă echipamente wireless pentru rețelele de acasă cu suport pentru noul standard Wi-Fi Protected Setup. Printre producătorii de routere wireless care susțin această tehnologie s-au numărat companii atât de mari precum Cisco/Linksys , Netgear , Belkin și D-Link . Standardul WPS a fost destinat să simplifice foarte mult procesul de configurare a unei rețele wireless și utilizarea acesteia pentru persoanele care nu au cunoștințe extinse în domeniul securității rețelei. Totuși, până la sfârșitul anului 2011, au fost publicate informații despre vulnerabilități grave din WPS, care au permis unui atacator să ghicească codul PIN [35] al unei rețele wireless în doar câteva ore, având resursele de calcul ale unui computer personal obișnuit [36] ] .

În acest moment, Centrul de Coordonare CERT nu recomandă producătorilor să lanseze noi echipamente care suportă această tehnologie. [37]

Hacking în masă a rețelelor de acasă prin WASP

În 2010, la conferința DEFCON18 , a fost prezentat un vehicul aerian fără pilot WASP , conceput pentru colectarea în masă a statisticilor privind rețelele Wi-Fi de acasă. UAV este echipat cu un computer de bord compact care rulează BackTrack Linux.Una dintre caracteristicile sale a fost capacitatea de a sparge automat parolele rețelei fără fir folosind forța brută [38] [39] .

Vezi și

Note

  1. Ried & Knipping, 2010 , p. 133.
  2. 1 2 3 Cormen, 2001 , p. 372.
  3. 1 2 Cormen, 2001 , Product of matrix chains, pp. 370-372.
  4. Cormen, 2001 , p. 377.
  5. Cormen, 2001 , Secțiunea 4. Împărțiți și cuceriți, pp. 65-67.
  6. 12 Cormen , 2001 , p. 65.
  7. Cormen, 2001 , p. 66.
  8. ^ Knuth, 1972 , Probleme de cercetare selectate în combinatorică .
  9. Cormen, 2001 , Problema LCS : găsirea celei mai lungi subsecvențe comune, p. 392.
  10. Cormen, 2001 , Găsirea celei mai apropiate perechi de puncte, p. 1039.
  11. SchneierOnSecurity , Coliziuni în algoritmul de hashing SHA-1.
  12. Forța brută . Enciclopedia Kaspersky Lab. Consultat la 21 noiembrie 2018. Arhivat din original la 21 noiembrie 2018.
  13. Paar, 2010 , p. 7.
  14. Corman, 2001 .
  15. Knuth, 1972 .
  16. www.lockdown.co.uk , Viteza de recuperare a parolei.
  17. ↑ Parametrii Tesla , Tesla C2075 pe site-ul producătorului.
  18. Ku , Efectuarea unui atac de forță brută cu plăcile grafice Nvidia și AMD .
  19. Mark Pothier . Vă rugăm să nu vă schimbați parola  (11 aprilie 2010). Arhivat din original pe 28 iunie 2011. Recuperat la 25 mai 2011.  „Schimbarea parolei poate fi o pierdere de timp pe calea către securitatea informațiilor”.
  20. Weiss , parola „puternică” este un termen relativ.
  21. Cormac, 2009 , Refuz rațional de securitate.
  22. Gil , Ce este un Brute Force Hack ?.
  23. 1 2 McGlinn , PHP Password Hashing .
  24. 1 2 Zernov , Protecție împotriva forței brute folosind iptables.
  25. Land, 1960 , O metodă automată pentru rezolvarea problemelor de programare discretă .
  26. 1 2 3 Voevodin, 2002 , Parallel Computing.
  27. 12 Oechslin , 2003 , p. unu.
  28. 1 2 Hellman, 1980 , p. 401.
  29. Hellman, 1980 , p. 405.
  30. Harper , British Bomb Recovery Project.
  31. larin-shankin, 2007 , Al Doilea Război Mondial în aer: unele aspecte ale operațiunii Ultra.
  32. 1 2 chernyak, 2003 , Secretele proiectului Ultra.
  33. Ellsbury , „Enigma” și „Bombă”.
  34. groteck.ru , Turing Bombe machine.
  35. Liebowitz1 , Routere wireless pentru acasă supuse atacurilor cu forță brută.
  36. Ray, 2011 , Securitate insuficientă a protocolului WPS.
  37. CERT , WPS este supus forței brute.
  38. Greenberg , Flying drone sparge parolele wireless.
  39. Humphries , WASP: O dronă de recunoaștere zburătoare care pirata rețelele Wi-Fi.

Literatură

Link -uri