Nu-mi deranjează sarea de parola pentru a reanima md5 decedat

Odată, era un băiat vesel John, porecla băiatului
Ripperul. Pe Net, el era cunoscut doar ca John The Ripper. Și acum într-una
o zi frumoasă a apărut pe stăpânul său și ia dat lui Johnny sarcina de a alege o parolă pentru hash,






pe care proprietarul a tras cu ajutorul splicity supermegaprivatnogo cu portalul de fani
cobai și alte animale. Johnny a lucrat mult timp, până când,
Mi-am dat seama că ceva nu este în regulă cu hash-ul. Sa întors la prietena lui
PasswordsPro. Iar el ia spus: "Păcat, Johnny, pașii săraci". Aici, de fapt, cu
Aici a început totul ...

Acum să plecăm de la teorie și să mergem mai departe la practică. Actualmente cunoscută
o mulțime de programe pentru selectarea parolelor: pentru orice platformă și pentru orice
interfață, scrisă de guru și începător de programatori care doresc
face o contribuție la istorie. Cu toate acestea, așa cum se întâmplă, numai
cea mai mai mult. Acum, astfel de produse software sunt foarte populare,
ca PasswordsPro. MD5Inside. John Ripper. bine, și, desigur, nu este necunoscut
proiectul RainbowCrack. care, în general, merită
un articol separat.

Luați în considerare utilizarea primului utilitar de mai sus în contextul nostru
sarcini. Viteza medie de căutare printr-un set de caractere, format din latină
litere mici și cifre, pe calculatorul meu slab cu o piatră de 1,7 GHz și
512 de metri de creiere la bord aici este de 3,3 milioane de parole pe secundă. dar
Îmi place acest utilitar nu numai pentru viteza sa, ci și pentru funcționalitate. Aceasta este o căutare pentru
dicționare, tabele de curcubeu, o căutare preliminară în mini-dicționare cu
mai departe brutum, etc. Este mai bine să vezi o dată decât să citești o sută de ori.

Deci, înapoi la parolele noastre marinate sărate. Cred că nu ar trebui să fii
să spunem că în algoritmul MD5, precum și în predecesorul său, este posibil
apariția coliziunilor (repetiții), adică parola dificilă în lungime în 32 de caractere,
care conțin caractere speciale, numere, litere de diferite registre, pot da același lucru
suma sumelor, cum ar fi, de exemplu, o parolă de cinci, șase caractere
(Teoretic). Cu toate acestea, probabilitatea apariției coliziunilor digestului digital MD5
este critic mic. Se pare ceva din categoria: dacă mulți, multe maimuțe plante
pentru mașini de scris, le dau o mulțime de timp, vor scrie mai devreme sau mai târziu
text, disponibil pentru percepție (cu apariția internetului, sa dovedit că aceasta este o minciună
🙂 - nota Forb). Teoretic, acest lucru este destul de real, numărul total
Mesaje posibile care dau digesturi digitale sunt 2 ^ 256. Cu toate acestea, în căutarea lor
va trebui să utilizați prea multe resurse de computer, bust total
valorile vor avea 1,5 * 10 ^ 62, și cantitatea totală de memorie pentru stocarea tuturor digesturilor
va fi de 2 ^ 230. Pentru a evita acest lucru sau, mai degrabă, pentru a reduce șansa de apariție
aproape la zero, dezvoltatorii de software au venit
destul de interesant mod de a complica în mod artificial parola -
impunerea "sarii".

Deci "sarea" este un anumit set de simboluri; acestea sunt de obicei simboluri
atât registrele, numerele, cât și caracterele speciale care sunt suprapuse sau lipite împreună cu
parola în sine sau cu hash a parolei.

În prezent, sunt cunoscute următoarele metode de aplicare a sării:






md5 (md5 (sare), md5 (trecere)), md5 (md5 (trecere) .salt). Prima metodă este folosită în
forum motoare IPB versiunea sub 2.0. *. În mod implicit sare și hash sunt stocate în
tabela members_converge. Utilizarea sării a fost introdusă pentru a crește
securitatea sistemului. În opinia mea, nu a existat nimic special acolo, altul
un element din proiectul chang-log. A doua metodă de sărare este folosită în forum
motorul vBulletin. Acolo, în tabel, sunt salvate parolele sare și hash
vb_user. Dacă comparăm puterea criptografică a celor două metode, cea de-a doua este mai înaltă
plan de implementare. Prima încercare de a face ceva similar a fost făcută în
unul dintre motoarele forumului. Esența algoritmului a constat în calcularea dublului
MD5 hash din text. Această metodă nu este ceva la fel de ușor
un algoritm rezistent la alunecare; Căutarea unei parole constând din litere cu ajutorul
PasswordsPro va dura câteva secunde. Personal, consider utilizarea lui ca a
calea principală este doar periculoasă. În acest articol, vom analiza o metodă de amplificare
prima variantă de sărare. Un exemplu va fi în limba de programare PHP.

Deci, ceea ce vedem aici. Funcția de calculare a sumei de hash din pașii sărate
destul de simplu. Mai întâi primim un hash din textul probă
(c0a8e1e5e307cc5b33819b387b5f01fd), atunci hash-ul din sarea în sine este de la 123! ## 038;% asgfHTA
(033352797d18a1bb33e77562559b474d). Apoi, două sume de hash sunt lipite împreună într-una
șir (033352797d18a1bb33e77562559b474dc0a8e1e5e307cc5b33819b387b5f01fd). după
Acest lucru are ca rezultat un hash de la acesta (e612c1f3055ac3f9c31f52d421a3e721). O astfel de metodă nu este
protejează parolele foarte slabe. Uneori nu trebuie să știe nici pentru autopsiile lor
sare, doar algoritmul de suprapunere. Avem următoarele acțiuni:

  1. Prin suma hash a parolei "sărate", găsim un șir cu o lungime de 64 de caractere; bust
    Simplifică faptul că sunt utilizate numai caractere latine cu litere mici
    intervalul a-f și numerele.
  2. Tăiați acea parte a șirului rezultat, care este un hashed
    sare (în cazul nostru, acestea sunt simboluri de la 33 la 64).
  3. Feed pentru a căuta șirul rezultat (caracterele 1-32).

Toate acestea pot fi foarte facilitate dacă folosim programul menționat mai sus.
Iată cum gestionează PasswordsPro această "problemă":

  1. Descărcați, despachetați, executați programul în sine.
  2. În setări alegem limba de care avem nevoie (în cazul meu este rusă).
  3. După instalarea limbii dorite și repornirea shell-ului programului, ștampilează elementul
    meniul "Atașați forța bruta completă". Nu vom fi înțelepți, așa că lăsați o bifă
    numai pe elementul "Set de caractere - a..z".
  4. Acum este momentul să hrăniți animalul. Adăugați un nou hash, sare etc. hash:
    e612c1f3055ac3f9c31f52d421a3e721; Sare (cheie HMAC): 123! ## 038;% asgfHTA. Tip Hash
    selectați md5 (md5 (sare) .md5 (trecere)) [PHP], faceți clic pe "Adăugați" și începeți să bustați.

După cum puteți vedea, această metodă nu este rezistentă la criptare. Să încercăm să o consolidăm într-un cuplu
timp. În algoritmul meu, voi folosi metoda de schimbare și înlocuire. Să începem.

Primul pas este de a declara o serie de caractere speciale care vor fi
lucrarea metodei de înlocuire:

Apoi, vom obține suma hash descrisă mai sus din metoda standard de sărare
(md5 (md5 (trecere) md5 (sare)):

Vom declara încă o variabilă, în care hash-ul va fi stocat din parola nesalvată:

Următorul pas este să compilați o tabelă de sume de hash care se potrivesc de la sărare și
sumele de hash de la nesălare.
Masa a fost construită pentru a explica principiul amplificării algoritmului. algoritmul
Câștigul va fi după cum urmează: dacă caracterul n'th din hash-ul MD5 este din text simplu
(text necriptat) este o cifră, într-un hash sărat la care se va schimba
Caracterul special al cărui număr din matricea declarată anterior corespunde acestei cifre.
Adică cel de-al doilea caracter din șirul simplu este zero. Prin urmare, va înlocui simbolul
"6" în linia de sare cu simbolul "

“. În plus, a doua condiție: dacă caracterul n
MD5 hash din text simplu este o literă și se încadrează în intervalul a-d, apoi în sărat
este tradus în cazul de sus. Ei bine, dacă nici una dintre condiții
este executat, apoi în linia sărată se schimbă la un caracter cu cel corespunzător
numărul de serie din șirul md5 (md5 (pass) .md5 (sare)). Aici, de fapt, listarea
toate cele de mai sus:

După ce utilizați această metodă îmbunătățită, parola simplă proba
se transformă în fiară "E

21 ". Și că o astfel de fiară nu o face
diferă de ceilalți frați MD5, înainte de a fi afișat, înregistrându-se în baza de date
sau prin comparație îl redăm din nou într-un hash MD5. Șansa de a selecta această parolă
aproape la zero. Iată o listă completă a articolului sub forma unui singur cod.
Pentru comoditate, am făcut-o sub forma unei funcții obișnuite PHP.







Trimiteți-le prietenilor: