Noi învățăm din greșelile altora și de a proteja parolele de brute force

protejată prin parolă - nu este doar o lungă serie de litere, cifre și simboluri în diferite registre. Pentru detalii de utilizare a cedat brute force banal, dezvoltatorii trebuie să ia în considerare un sistem de criptare echilibrat și eficient. Companiile mari, pentru a înțelege acest lucru, trebuie să se confrunte cu scurgeri de date, și ai citit pur și simplu articol!

Noi învățăm din greșelile altora și de a proteja parolele de brute force

criptanaliștii de eroare de pornire

Mulți criptanaliștii aspirante cred că schema de SHA1 (SHA1 (SHA1 (.. ($ hash)))) va fi adăugat la rundele SHA1.

Totul ar fi atât, în cazul în care nu o proprietate fundamentală a algoritmului SHA1. Din aceasta rezultă că este imposibil să scrie o astfel de funcție SHA1000 computațional, ceea ce este echivalent cu o mie de ori apelurile nested SHA1 și, astfel, va fi ușor calculabil. Observați că rezultatul SHA1 (SHA1 (.. ($ hash))) - nu este același lucru ca și adăugarea mai multor runde în SHA1, deoarece există încă pre și post-procesare. Rezultatul acestei hash poate fi defavorabilă în toate privințele consumul de resurse CPU.

Atacul asupra hash

Pentru a înțelege cât de eficientă metoda de hashing parole, să aruncăm o privire la metodele existente de „restaurare“, adică ascunse în spatele hash. Ele nu sunt atât de mult, și cred că ați auzit.

Potrivit lui Paul-Henning Kamp, se md5crypt epuizat ca algoritmul de hash a parolei. ghicitul parola instrumente moderne, capacitatea de a verifica un milion de combinații pe secundă, valorificând GPU-accelerare poate restaura orice semisimvolny hash parola MD5 de mai puțin de șase minute, iar pentru căutarea de șase caractere a tuturor valorilor și totul va fi de aproximativ un minut. Deoarece în multe sisteme de criptare hash implicit încă folosit md5crypt, Paul Henning Kamp a cerut utilizatorilor și dezvoltatorilor de sisteme de operare pentru a trece la algoritmi mai stabile.

Cum de a reduce riscurile?

Din toate acestea, probabil, ar fi trebuit dat seama cât de instabile algoritmi hash criptografice moderne realitatilor atacuri moderne. Există mai multe modalități de a reduce riscurile la nivelul algoritmilor:

  1. Utilizarea unui algoritm criptografic.
  2. Marinarea existente hash. Prin marinare se referă la o metodă de complicație artificială a parolei numită sare suprapunând. Sarea este o colecție de diferite tipuri de caractere, acest lucru este, de obicei, caracterele ambelor registre, numere și caractere speciale, care sunt impuse de cantitatea de parola hash finit sau lipite de acesta.

Sărurile bazice de sarcină - alungire parola intenționată, ceea ce complică foarte mult recuperarea parolele inițiale folosind tabele de curcubeu de pre-construite. În același timp, trebuie să ne amintim că sarea nu protejează împotriva căutare exhaustivă fiecare parolă în mod individual! Mai jos este cu insertie tipuri populare de săruri.

Aici este un exemplu de cea mai simpla protecție decapat folosind săruri statice de tabele curcubeu MD5 (SHA1 (MD5 ($ pass))) pentru PHP:

sare statică și structuri similare pot servi destul de bine, atâta timp cât structura acestor constructe și G sunt ținute secrete. În cazul în care un atacator poate învăța algoritm razreversit și un fir statice (de important!) Hash cheie secretă, este deja clar că nu va fi dificil să se modifice pentru ei înșiși o „masă de curcubeu“.

Noi învățăm din greșelile altora și de a proteja parolele de brute force
Hashcat sprijină de recuperare a parolei de la „sare“ hash

Deoarece este imposibil să se bazeze pe sistemul server de securitate, trebuie să caute o altă opțiune. O opțiune mai bună poate fi de a genera o sare unică pentru fiecare utilizator pe baza ID-ul său, care le este atribuit la înregistrare pe site-ul:

Ideal - pentru a genera sare complet unic:

Trebuie remarcat o nuanță foarte importantă - o sare unică ar trebui să fie, de asemenea, introduse în baza de date simultan cu hash ca o pereche dublă. Dar chiar și obținerea accesului la acestea, un atacator este puțin probabil să genereze mai multe milioane de curcubeu dimensiune tabel în mii de terabytes :) bun.

Hai sa vorbim despre argumente pro și contra de metode și algoritmi de criptare. C, de o parte, rata celuilalt - siguranța. S-ar părea că cu cât mai devreme cu atât mai bine pentru utilizatori: în primul rând, mai puțin sarcina pe server, și în al doilea rând, înregistrarea de utilizator de mare viteză. Deși cea mai mare viteza de hashing, cu atât mai repede poate fi deschis și atacator. De fapt, aceasta este o sabie cu două tăișuri, este foarte important de a alege un teren de mijloc. Așa cum am spus deja - nici măcar nu știe materiale atacator nu costa nimic cu ajutorul unor instrumente și tehnici gata făcute pentru a sorta rapid cele mai multe dintre parolele existente.

Noi învățăm din greșelile altora și de a proteja parolele de brute force
Ciclul de viață al algoritmi criptografici populare

Desigur, puteți forța utilizatorii de parole noastre pyatnadtsatiznachnye de utilizare a resurselor folosind numere, litere mari și litere mici, caractere speciale. Dar, desigur, că, în astfel de mâini, utilizatorii existenți ai resursei rula pur și simplu departe, iar altele noi vor ocoli partidul său.

Doriți să îmbunătățească securitatea - va trebui să investească în timp și resurse, raportul de resurse / timp este direct proporțională.

Este mult mai convenabil pentru a încetini funcțiile hash folosesc diferite algoritmi de criptare, cu funcție încorporată în PHP 4.0.32 și realizuemogcherez criptă ():

Dacă al doilea argument pentru a cripta nu este trecut, acesta va fi selectat în mod aleatoriu, astfel încât sarea este generată complet de accident. Metoda medie de aur de încetinire a funcției hash este utilizarea Blowfish algoritm criptografic. Blowfish - Criptarea este o modalitate de a încetini cheie algoritmul de partiționare (algoritmul este destul de rapid după cheia de partiționare [programarea cheie], precum și atunci când doriți să criptați un mesaj de mare, cu o singură cheie). Prin standardele moderne, acest lucru este codul ar trebui să ofere securitate maximă.

De ce există o vulnerabilitate?

Înainte de a răspunde la această întrebare, trebuie să înțelegem de ce există vulnerabilități în algoritmul hash criptografic. La urma urmei, scopul principal al utilizării criptografiei este inițial a fost de a ascunde informații și, ca urmare, face practic imposibil să decripteze mesajele zaheshirovannogo ca algoritmi hash ciclice au fost inițial supuse unor coliziuni. Pentru a înțelege acest lucru, nu trebuie să fie un matematician abrupt.

Până de curând (în urmă cu aproximativ șase ani) coliziune pentru algoritmi criptografici hashing poate părea fantastic, dar astăzi acest lucru nu este o surpriză. Odată ce „stabil“ algoritmi hash MD4 / MD5, care au devenit standarde de facto în multe proiecte și soluții în domeniul produselor de securitate a informațiilor, acum complet fără speranță și ar trebui să fie trimise într-o singură direcție ... da, ai ghicit: în cele mai multe / dev / null: ).

Dacă bine versat în matematică și criptografie aplicată, este posibil să se găsească o eroare în algoritmul hashing ca algoritm mai complex, cu atât mai mare probabilitatea de a găsi ea. Trebuie să înțelegem că un fel de lucru: în criptografie, precum și în programarea, cu cât proiectul, cu atât mai mare eroarea. A greși este uman, așa că, dacă găsiți erori există speranță întotdeauna indispensabilă în acest sens, factorul uman :). Atunci când portarea algoritmi de criptare și scrierea ambalaje, de asemenea, posibilă apariția unor erori.

Ca un exemplu, un set de erori remarcabile în punerea în aplicare a clasei RSACryptoServiceProvider biblioteci .NET Framework recent descoperite. După cum sa dovedit, RSACryptoServiceProvider revendicată în clase și metode au DSACryptoServiceProvider SignHash eroare prostească, care constă în psevdorandomizatsii trei din cele patru blocuri. Rezultat: + 75% pentru a ataca pe criptare RSA vm .NET.

Multe reviste și articole științifice ca să descrie produsele în termeni de algoritmi de criptare și lungimi cheie. Algoritmi euphonious: descrierea acestora pot fi concise și ușor comparate între ele. „Chei de 128 biți înseamnă un grad ridicat de protecție“. „Triple DES este un grad ridicat de protecție.“ „Chei de 40 de biți înseamnă nivel scăzut de protecție.“ „2048-bit RSA mai bine decât 1024-bit RSA».

Dar lucrurile nu sunt atât de simple în lumea reală. chei mai lungi nu înseamnă întotdeauna o protecție mai bună. Să comparăm algoritmul criptografic cu un sistem de blocare de pe ușa ta. Cele mai multe încuietori de încredere au patru ace de metal, fiecare dintre care pot fi într-una din cele zece poziții. Seturile cheie știfturile o anumită combinație. Dacă cheia le setați bine, se deschide dispozitivul de blocare. Astfel, acesta poate fi doar 10 mii chei diferite, iar atacatorul, gata pentru a încerca toate dintre ele vor ajunge neapărat la casa ta. Dar o blocare îmbunătățită cu zece pini, oferind 10 miliarde de chei posibile, dintre care unele vor fi, fără îndoială, respinse, sau va conține un defect, desigur, nu va face casa mai sigure. biscuiti hash corecte nu testeaza toate cheile posibile (atac de „cap“), cele mai multe nu face chiar atât de dificil de a alege de blocare (atac criptografic pe algoritmul), și de a folosi instrumente și recomandări gata făcute. Cele mai multe încuietori nu vor fi salvate de la astfel de atacuri, în timp ce vor exista erori în proiectarea algoritmilor.

concluzie

criptografie puternică, dacă faci totul bine, dă o mulțime, dar nu este un panaceu. Concentrându-se pe algoritmi de criptare, combinate cu ignorarea altor aspecte de securitate, cum ar fi încercarea de a proteja casa - nu pentru a construi un gard în jurul ei, și instalarea unei coloane uriașe, în speranța că inamicul va zbura direct la el. Atacantul trece pur și simplu prostut algoritmi. Uneori, inventarea unui nou mod de a sparge sistemul, folosim aceleași greșeli vechi care dezvoltatorii se repetă din nou și din nou. Totul este nou - bine uitat vechi.

Arată acest articol unui prieten: