Se incarca…

Astazi, v2 din Pwned Passwords a fost lansat ca parte a serviciului Have I Been Pwned oferit de Troy Hunt. Continand peste jumatate de miliard de parole din lumea reala, aceasta baza de date ofera un instrument vital pentru a corecta modul in care industria combate amenintarile moderne impotriva securitatii parolelor.

Am scris despre cum trebuie sa regandim securitatea parolelor si Pwned Passwords v2 in urmatoarea postare: Cum dezvoltatorii au securizat parola deci gresit . In schimb, in ​​aceasta postare vreau sa discut despre una dintre contributiile tehnice pe care Cloudflare le-a adus pentru protejarea informatiilor utilizatorilor atunci cand utilizati acest instrument.

Cloudflare continua sa sprijine Pwned Passwords, oferind CDN si functionalitate de securitate, astfel incat datele sa poata fi usor disponibile pentru descarcare in forma bruta organizatiilor pentru a-si proteja clientii. Mai mult, ca parte a celei de-a doua iteratii a acestui proiect, am colaborat si cu Troy la proiectarea si implementarea punctelor finale API care accepta interogari de intervale anonimizate pentru a functiona ca un strat suplimentar de securitate pentru cei care consuma API-ul, care este vizibil pentru client.

Aceasta contributie permite clientilor Pwned Passwords sa utilizeze interogari de gama pentru a cauta parolele incalcate, fara a fi nevoie sa dezvaluie un serviciu complet de parola nesaltata serviciului.

Obtinerea dreptului la securitate prin parola

De-a lungul timpului, industria si-a dat seama ca regulile complexe de compozitie a parolelor (cum ar fi necesitatea unui numar minim de caractere speciale) au facut putin pentru imbunatatirea comportamentului utilizatorului in crearea parolelor mai puternice; au facut putin pentru a impiedica utilizatorii sa introduca informatii personale in parole, evitand parolele comune sau sa impiedice utilizarea parolelor incalcate anterior. Stupirea credentiala a devenit o adevarata amenintare recent; numele de utilizator si parolele sunt obtinute de pe site-urile compromise si apoi sunt injectate in alte site-uri web pana cand veti gasi conturi de utilizator compromise.

Acest lucru functioneaza fundamental deoarece utilizatorii reutilizeaza parolele pe diferite site-uri web; atunci cand un set de acreditari este incalcat pe un site, acestea pot fi reutilizate pe alte site-uri web. Iata cateva exemple despre modul in care datele de acreditare pot fi incalcate de pe site-urile web nesigure:

  • Site-urile care nu folosesc limitarea ratelor sau nu pot contesta solicitarile de autentificare pot avea incalcarea credentelor de conectare ale utilizatorului folosind atacuri de forta brute ale parolelor comune pentru un anumit utilizator,
  • depozitele de baze de date de pe site-urile hacked pot fi luate offline si hashurile parolei pot fi fisurate; GPU-urile moderne fac acest lucru foarte eficient pentru parolele de dictionar (chiar si cu algoritmi precum Argon2, PBKDF2 si BCrypt),
  • multe site-uri continua sa nu foloseasca nicio forma de hashing de parola, odata incalcate pot fi capturate in forma bruta,
  • Atacurile omenesti sau deturnarea unui server web pot permite capturarea parolelor inainte de a se spala.

Aceasta devine o problema cu reutilizarea parolelor; dupa ce au obtinut combinatii de utilizator / parola din viata reala, acestea pot fi injectate pe alte site-uri web (cum ar fi gateway-uri de plata, retele sociale etc.) pana cand se obtine acces la mai multe conturi (adesea cu o valoare mai mare decat site-ul compromis initial).

Sub ghidul NIST recent, la stocarea sau actualizarea parolelor, este necesar sa se asigure ca acestea nu contin valori care sunt utilizate in mod uzual, asteptate sau compromise. Cercetarile au descoperit ca 88,41% dintre utilizatorii care au primit un apel de teama au stabilit ulterior parole unice, in timp ce doar 4,45% dintre utilizatorii care nu au primit apel de teama ar seta o parola unica.

Din pacate, exista o multime de parole scurse acolo; datele brute care se pot descarca de la Pwned Passwords contin in prezent peste 30 GB in hase de parola.

Anonimarea haselor cu parola

Problema cheie in verificarea parolelor cu vechea API Pwned Passwords (si cu toate serviciile similare) consta in modul in care parolele sunt verificate; utilizatorii fiind solicitati in mod eficient sa trimita hashes de parole nesalvate pentru a identifica daca parola este incalcata. Hasile trebuie sa fie nesalate, deoarece sararea lor le face dificil de cautat rapid din punct de vedere computerizat.

In prezent, exista doua optiuni care sunt disponibile pentru a valida daca o parola este sau nu scursa:

  • Trimiteti parola (intr-un hash nesaltat) unui serviciu tert, unde hasul poate fi depozitat pentru fisurare sau analiza ulterioara. De exemplu, daca efectuati un apel API pentru o parola scursa la un serviciu API terta parte folosind un plugin WordPress, IP-ul cererii poate fi utilizat pentru a identifica instalarea WordPress si apoi a incalca-o atunci cand parola este fisurata (cum ar fi dintr-o dezvaluire ulterioara); sau,
  • descarcati intreaga lista de hase de parola, decomprimati setul de date si apoi executati o cautare pentru a vedea daca hash-ul dvs. de parola este listat.

Inutil sa spun, acest conflict poate parea plasat intre o stanca constienta de securitate si un loc greu nesigur.

Calea de Mijloc

Problema de intersectie a setului privat (PSI)

Informaticienii academici au luat in considerare problema modului in care doua (sau mai multe) parti pot valida intersectia de date (din doua sau mai multe seturi inegale de date pe care le are deja), fara a impartasi informatii despre ceea ce au. Cu toate ca aceasta lucrare este interesanta, din pacate aceste tehnici sunt noi si nu au fost supuse revizuirii pe termen lung de catre comunitatea criptografica si primitivele criptografice nu au fost implementate in nicio biblioteca majora. In plus (dar in mod critic), implementarile PSI au substantialmente mai mari decat abordarea k- anonimitatea (in special pentru comunicare). Chiar si stadiul actual al academiei nu este cu limite de performanta acceptabile pentru un serviciu API, overhead-ul de comunicare fiind echivalent cu descarcarea intregului set de date.

K-Anonimatul

In schimb, abordarea noastra adauga un strat suplimentar de securitate prin utilizarea unei proprietati matematice cunoscute sub numele de anonimitate k si aplicarea acesteia pe hase de parola sub forma de interogari de gama . Ca atare, serviciul API Pwned Passwords nu obtine niciodata suficiente informatii despre un hash de parola care nu a fost incalcat pentru a-l putea incalca ulterior.

k -Anonymity este utilizat in mai multe campuri pentru a elibera seturi de date anonimizate, dar viabile; de exemplu, astfel incat spitalele pot elibera informatii despre pacienti pentru cercetari medicale, in timp ce retin informatii care dezvaluie informatii personale. In mod formal, se poate spune ca un set de date detine proprietatea k -Anonymity, daca pentru fiecare inregistrare dintr-un tabel lansat, exista alte k – 1 inregistrari identice cu acesta.

Folosind aceasta proprietate, suntem capabili sa separati hasii in „galeti” anonimizate. Un client este capabil sa anonimizeze hash-ul furnizat de utilizator si apoi sa descarce toate hash-urile scurse in aceeasi „galeata” anonimata ca si hash-ul, apoi face o verificare offline pentru a vedea daca hash-ul furnizat de utilizator se afla in acea galeata incalcata.

Mai precis:

In esenta, activam tabelul asupra functiilor de derivare a parolelor; in loc sa cautam hase sarate pana la punctul in care acestea sunt unice (in raport cu intrari identice), introducem in schimb ambiguitate in ceea ce cere clientul.

Dat fiind ca hash-urile sunt valori hexadecimale cu lungime fixa, suntem capabili sa le truncam pur si simplu, in loc sa trebuim sa recurgem la o structura de arbore de decizie pentru a filtra datele. Acest lucru inseamna ca galetile au dimensiuni inegale, dar le permite clientilor sa interogheze intr-o singura solicitare API.

Aceasta abordare poate fi implementata intr-un mod banal. Sa presupunem ca un utilizator introduce testul de parola intr-un formular de autentificare si serviciul in care se conecteaza este programat pentru a valida daca parola lor se afla intr-o baza de date cu hase de parola scurse. In primul rand, clientul va genera un hash (in exemplul nostru utilizand SHA-1) a94a8fe5ccb19ba61c4c0873d391e987982fbbd3. Clientul va trunca apoi hash-ul cu un numar predeterminat de caractere (de exemplu, 5), rezultand un Prefix Hash din a94a8. Acest prefix Hash este apoi folosit pentru a interoga baza de date la distanta pentru toate hashes-urile care incep cu acel prefix (de exemplu, facand o solicitare HTTP la example.com/a94a8.txt). Intreaga lista de hash este apoi descarcata si fiecare hash descarcat este apoi comparat pentru a vedea daca se potriveste cu hash-ul generat local. Daca da, se stie ca parola a fost scursa.

Deoarece acest lucru poate fi implementat cu usurinta prin HTTP, cache-ul din partea clientului poate fi utilizat cu usurinta in scopuri de performanta; API-ul este suficient de simplu pentru ca dezvoltatorii sa-l implementeze cu putina durere.

Mai jos este o implementare simpla Bash a modului in care API-ul Pwned Passwords poate fi interogat folosind interogari de gama (Gist):

Nume! ‘) “prefix =” $ {superiorCase: 0: 5} “raspuns = $ (curl -s https://api.pwnedpasswords.com/range/$prefix) in timp ce se citeste linia -r; do lineOriginal = “$ prefix $ line” daca [“$ {lineOriginal: 0: 40}” == “$ superiorCase”]; apoi ecuati „Parola incalcata”. iesire 1 fi facut <<< “$ $” ecou “Parola nu a fost gasita in baza de date incalcata.” iesirea 0

Punerea in aplicare

Hasile (chiar si sub forma nesaltata) au doua proprietati utile care sunt utile in anonimizarea datelor.

In primul rand, efectul de avalansa inseamna ca o mica schimbare a hasei are ca rezultat o iesire foarte diferita; asta inseamna ca nu puteti deduce continutul unui hash de la alt hash. Acest lucru este valabil chiar si sub forma trunchiata.

De exemplu; Prefixul Hash 21BD1 contine 475 de parole aparent fara legatura, inclusiv:

lauragpe alexguo029 BDnd9102 melobie quvekyny

In plus, hash-urile sunt distribuite destul de uniform. Daca ar fi sa contorizam parolele scurse originale de 320 de milioane (in setul de date Troia) de catre primul charectar hexadecimal al hasei, diferenta dintre hasele asociate celui mai mare si cel mai mic Prefix Hash este de 1%. Graficul de mai jos arata numarul de hasi dupa prima lor cifra hexadecimala:

Algoritmul 1 ne ofera o verificare simpla pentru a descoperi cat de bine ar trebui sa trunchiem hase pentru a ne asigura ca fiecare „galeata” are mai mult de un has in ea. Acest lucru necesita ca fiecare hash sa fie sortat dupa valoarea hexadecimala. Acest algoritm, incluzand un sortare initial de imbinare, se desfasoara in aproximativ O (n log n + n) timp (cel mai rau caz):

Dupa identificarea lungimii Prefixului maxim de hash, este destul de usor sa separati hasiile in galeti separate, asa cum este descris in Algoritmul 3:

Aceasta implementare a fost initial evaluata pe un set de date de peste 320 de milioane de parole incalcate si gasim Lungimea maxima a prefixului la care toate hash-urile pot fi trunchiate, mentinand, totusi, proprietatea k-anonimatul, este de 5 caractere. Cand hashes-urile sunt grupate de un prefix Hash format din 5 caractere, gasim numarul median de hashes asociat cu un prefix Hash este 305. Cu intervalul de dimensiuni de raspuns pentru o interogare care variaza de la 8,6KB la 16,8KB (o mediana de 12,2KB ), setul de date este utilizabil in multe scenarii practice si este cu siguranta o dimensiune de raspuns buna pentru un client API.

Pe noul set de date Pwned Password (cu peste jumatate de miliard) de parole si pastrand lungimea Prefixului Hash 5; numarul mediu de hase returnate este de 478 – cel mai mic fiind 381 (E0812 si E613D), iar cel mai mare prefix Hash este 584 (00000 si 4A4E8).

Impartirea hasei in galeti cu un prefix Hash de 5 ar insemna un maxim de 16 ^ 5 = 1.048.576 galeti ar fi utilizate (pentru SHA-1), presupunand ca fiecare prefix Hash posibil ar contine cel putin un has. In seturile de date am constatat ca acesta este cazul si cantitatea valorilor distincte ale Prefixului de Hash a fost egala cu cea mai mare cantitate posibila de galeti. Desi pentru algoritmii de hashing siguri, este ineficient din punct de vedere calculat inversarea functiei hash, este de remarcat faptul ca, intrucat lungimea unui hash SHA-1 este in total 40 de caractere hexadecimale lungi si 5 caractere sunt utilizate de prefixul Hash, numarul total dintre posibilele hashi asociate cu un prefix Hash este 16 ^ {35} ≈ 1.39E42.

Importante avertismente

Este important sa retineti ca, in cazul in care parola unui utilizator este deja incalcata, un apel API pentru o gama specifica de parole incalcate poate reduce candidatii de cautare folositi intr-un atac de forta bruta.

filme porno cu mame si fiice http://www.marriagebureau.com/__media__/js/netsoltrademark.php?d=adult66.net/
filme porno cu copii http://weshallovercomefund.org/__media__/js/netsoltrademark.php?d=adult66.net/
black porno http://biospassword.hanair.com/__media__/js/netsoltrademark.php?d=adult66.net/
porno teen gay http://baylorbearpride.org/__media__/js/netsoltrademark.php?d=adult66.net/filme-porno/amatori
top filme porno http://www.paralyzedveteransofamerica.org/__media__/js/netsoltrademark.php?d=adult66.net/filme-porno/anal
filme 2019 porno http://clientprivileged.com/__media__/js/netsoltrademark.php?d=adult66.net/filme-porno/asiatice
porno hunt http://0iq.3arabitop10.net/__media__/js/netsoltrademark.php?d=adult66.net/filme-porno/beeg
porno cu fete tinere http://jessefrederick.com/__media__/js/netsoltrademark.php?d=adult66.net/filme-porno/blonde
milfe porno http://www.six-sigma-black-belt.com/__media__/js/netsoltrademark.php?d=adult66.net/filme-porno/brazzers
filme porno coreene http://www.eddievanhalen.cc/__media__/js/netsoltrademark.php?d=adult66.net/filme-porno/brunete
cele mai bune filme porno http://www.nigeriamusic.com/__media__/js/netsoltrademark.php?d=adult66.net/filme-porno/chaturbate
laura andresan filme porno http://betaproject.net/!jump?url=https://adult66.net/blonda-in-lenjerie-intima-sexy-e-fututa-anal-de-prietenul-ei
filme porno n http://belascotheater.org/__media__/js/netsoltrademark.php?d=adult66.net/pustoaica-de-17-ani-e-violata-in-patul-ei-de-doi-prieteni-veniti-in-vizita
serial porno http://hostalia.adsmrkt.com/click/c00abd79ffef524dfcf1b94d6/a15b4502b780347ef9f7b8907/?redir=https://adult66.net/partida-de-sex-cu-doi-adolescenti-virgini-care-se-filmeaza
filme porno cu babe gratis http://pqj.vitaminsfordummies.com/__media__/js/netsoltrademark.php?d=adult66.net/cuplu-de-amatori-isi-filmeaza-partida-de-sex-porno-apoi-au-orgasm
brazzers free porno http://www.mtviewicearena.com/__media__/js/netsoltrademark.php?d=adult66.net/doi-minori-amatori-fac-sex-salbatic-si-se-filmeaza
porno romanest http://i-conelectric.com/__media__/js/netsoltrademark.php?d=adult66.net/cuplu-de-amatori-excitati-face-sex-fierbinte-in-jacuzzi-si-se-filmeaza-cum-se-fut
compilation porno http://sheltercanadian.com/__media__/js/netsoltrademark.php?d=adult66.net/sex-anal-sex-oral-cu-un-cuplu-de-amatori-pe-canapeaua-din-sufragerie
filme porno xxx cu mature http://familyfaresupermarkets.net/__media__/js/netsoltrademark.php?d=adult66.net/doi-indragostiti-fac-sex-romantic-si-se-filmeaza-unu-pe-altu
poze porno gratis http://pervasive-systems.net/__media__/js/netsoltrademark.php?d=adult66.net/bruneta-draguta-e-dezvirginata-pe-bune-de-prietenul-mai-mare-care-o-filmeaza

In timp ce utilizatorii cu parole incalcate existente sunt deja vulnerabili la atacuri cu forte brute, cautarea unui interval specific poate ajuta la reducerea numarului de candidati de cautare – desi serviciul API nu ar avea nicio modalitate de a determina daca clientul a fost sau nu a cautat o parola. asta a fost incalcat. Utilizarea unui algoritm determinist pentru a rula interogari pentru alte prefixe Hash poate ajuta la reducerea acestui risc.

Un motiv pentru care este important este ca aceasta implementare nu garanteaza in prezent diversitatea l , ceea ce inseamna ca o galeata poate contine un has care este in mod substantial mai mare decat altii. In viitor, speram sa utilizam informatii de utilizare pe baza de procent din datele originale incalcate pentru a garanta mai bine aceasta proprietate.

Pentru utilizatorii generali, Pwned Passwords este de obicei expus prin interfata web, utilizeaza un client JavaScript pentru a rula acest proces; daca serverul web originar a fost deturnat pentru a schimba returnarea JavaScript, acest calcul ar putea fi eliminat (iar parola poate fi trimisa serverului de origine deturnat). Desi solicitarile JavaScript sunt oarecum transparente pentru client (in cazul unui dezvoltator), este posibil sa nu depinda de acestea si pentru utilizatorii tehnici, sunt de preferat cererile bazate pe clienti non-web.

Cazul de utilizare initial pentru acest serviciu urma sa fie implementat in mod privat intr-un centru de date Cloudflare, unde serviciile noastre il pot utiliza pentru a imbunatati securitatea utilizatorului si sa foloseasca interogari de gama pentru a completa securitatea de transport existenta. In functie de riscurile dvs., este mai sigur sa implementati acest serviciu singuri (in propriul centru de date) si sa folositi abordarea k- anonimitate pentru a valida parolele unde serviciile nu au ele insele resursele pentru a stoca o intreaga baza de date cu hase de parola scurse.

V-as recomanda cu nerabdare sa nu stocati interogarile de gama utilizate de utilizatorii serviciului dvs., dar daca faceti din orice motiv, pastrati-le ca analitice agregate, astfel incat acestea sa nu poata fi conectate la parola utilizatorului.

Ganduri finale

Mergand mai departe, pe masura ce testam mai mult aceasta tehnologie, Cloudflare analizeaza modul in care putem folosi o implementare privata a acestui serviciu pentru a oferi mai bine functionalitatea de securitate, atat pentru cererile de conectare la tabloul de bord, cat si pentru clientii care doresc sa previna umplerea credentiala pe propriile site-uri web folosind reteaua noastra de margine Vom cauta de asemenea sa ia in considerare modul in care putem incorpora lucrarile recente pe privat Set Interesection Problema alaturi in considerare l -diversity pentru garantii de securitate suplimentare. Ca intotdeauna; va vom tine la curent chiar aici, pe blogul nostru.

Securitatea celor mai bune practici pentru parole

postari asemanatoare

04 martie 2020 13:00

Captuseala cu parole introduse (lampi de lava si lucratori)

Incepand de astazi, oferim un nou avans in securitate in API-ul Pwned Passwords – clientii API pot primi raspunsuri captusite cu date aleatorii …

    De 

20 decembrie 2018 13:00

Lucrari de acreditare bancare-grad: inutilitatea validarii partiale a parolelor

Recent, cand m-am conectat la unul dintre furnizorii de carduri de credit, am fost intampinat de un ecran familiar. Dupa ce am introdus numele de utilizator, serviciul mi-a cerut sa furnizez 3 caractere aleatorii din parola pentru validarea dreptului de proprietate asupra contului meu …

    De 

26 februarie 2018 12:04

Utilizarea Cloudflare Workers pentru identificarea parolelor pwned

Saptamana trecuta, Troy Hunt a lansat serviciul sau Pwned Password v2, care are o API gestionata si memorata in cache de Cloudflare folosind o schema inteligenta de anonimat. Urmatorul cod simplu poate verifica daca exista o parola in baza de date a Troiei fara a trimite parola catre Troia …

    De 

21 februarie 2018 19:00

Modul in care dezvoltatorii au obtinut securitatea parolelor asa gresit

Atat in ​​viata noastra reala, cat si online, exista momente in care trebuie sa ne autentificam – unde trebuie sa confirmam ca suntem cine spunem ca suntem. Acest lucru se poate face folosind trei lucruri ….

    De