Acum câteva zile eram nemulțumit de faptul că banca ING, unul dintre furnizorii personali și ai business-ului are o politică mai... interesantă în ceea ce privește parolele conturilor de HomeBank.
Critica
Discuția de pe Twitter a plecat de la faptul că, periodic, ING consideră ca este mai sigur să ceară reintroducerea parolei în aplicația de HomeBank, în special pe mobil, unde deja există un nivel de securitate dat, cel puțin pe iOS, de credențiale biometrice (în cazul meu, amprenta facială).
Discuția, publică, pe Twitter, a decurs în modul următor:
EU: De cand o parola (de maxim 5 caractere, cat permiteti) este mai sigura decat o autentificare biometrica (in acest caz Apple Face ID)?
ING: Este necesara verificarea periodica a parolei pentru a se nu ajunge in situatia in care aceasta este uitata.
EU: Cu tot respectul, parolele nu se uita si aceasta practica este incorecta. Parolele se pastreaza in “vault-uri” create special in acest sens (ex: 1Password, LastPass, KeePass s.a.). Acestea cripteaza datele si le tin in siguranta. Alternativ, exista password logbooks.
Contrar credinței că îmi place cu orice motiv să critic (nu alegeam să lucrez cu această bancă dacă nu o consideram cea mai bună pentru nevoile mele, specifice), doresc să atrag doar atenția asupra unui număr de bune practici, care, implementate corect, pot scuti utilizatorii de o multitudine de probleme.
Din 2014 utilizez exclusiv 1Password ca manager de parole. Rulează extraordinar de bine și pe gustul meu atât pe macOS, iOS cât și pe Windows. Vault-urile (da, sunt mai multe) sunt păstrate în iCloud și pe serverele 1Password și, sincer să fiu, înafara parolei master, pe care o pot regenera din cap ori-de-câte-ori o uit, alte parole nu le cunosc, fiind generate aleator, cu multiple caractere, majuscule și minuscule, caractere speciale și au o dimensiune considerabilă.
O parola generată chiar acum, de exemplu, arată similar cu:
8v{Uoj}my/T=27pxRGRpiy}7DMtncycmbtYT4U2
Nu, nu am utilizat-o, dar există suficiente posibilități de generare. Chiar și în situația unui data breach, o asemenea parolă nu este din dicționar, deci ca brute force nu poate fi accesat un cont care ar deține o asemenea parolă, iar ca generare a acesteia pe un numar mare de GPU-uri pentru recalcularea hash-ului, fie acesta slabele MD5 sau SHA1 ar dura prea mult pentru a fi rentabil din punct de vedere al raportului valoare_date/timp-costuri.
Înainte de 2014 am utilizat LastPass, un alt manager foarte bun de parole, dar care nu m-a încântat la fel de mult precum 1Password, care are acel ADN de... Apple. Este simplu, își face treaba și nu te încurcă si mai mult, după ce l-am setat pe iOS nu m-a mai întrebat vreodată parola master. Tot ce trebuie să fac este să ma uit la iPhone-ul cu Face ID, respectiv să pun degetul pe senzorul de amprentă la device-ul cu Touch ID.
Nu aceeași situație este, însă prezentă la ING HomeBank. Developerii aplicației HomeBank trăgând concluzia, evident eronată, că solicitând pe un device mobil reintroducerea parolei care poate fi de maxim 5 cifre (!) este un lucru inteligent, benefic chiar.
Să zicem că, la un moment dat o persoană este jefuită, după ce, cineva din zonă a văzut care este parola de HomeBank, formată din maxim 5 cifre. Cu iPhone-ul poate apoi transfera orice sume dorește din conturile acestei persoane într-ale sale fără să mai aibă vreo piedică. E drept că trebuie să treacă de parola smartphone-ului, dar multe persoane nici aceste parole nu le setează cu un minim de securitate în minte. Aceștia aleg, în schimb, conveniența - cum introduc mai repede parola pentru a debloca device-ul.
Pentru developeri
Din 2006 de când scriu aplicații software și web am trecut prin diverse practici de securizare a aplicațiilor realizate. De la banalele credențiale păstrate în plain text, la parole cu hash-uri BCrypt, cu salt și eventual, apoi, criptate, în funcție de aplicație.
O bună practică, foarte sigură este următoarea:
- validarea parolei cu PwnedPasswords, prin API
- forțarea unui minim de securitate în parolă pentru a nu permite parole de dicționar
- hash SHA512, cu salt, daca parola nu a fost compromisă
- BCrypt din SHA512-ul rezultat la punctul 1, unde poți merge cu un strength mai mare de 10 (default), dacă sunt date extrem de sensibile
- criptarea string-ului rezultat cu chei generate zilnic și păstrate separat
- implementarea unui sistem de second-factor, care să nu depindă atât de mult de un cont de email, care poate fi ușor compromis
Dacă ultimii doi pași par destul de complicați, gândește-te ce date stochezi. Nu în toate cazurile aceștia sunt necesari.
Îndrumă utilizatorii să folosească un password manager sau, dacă sunt persoane în etate și lucrează singure, acasă, eventual un password logbook pe care să îl păstreze închis în sertarul de la birou.
O alternativă este utilizarea contului de email și a unui token temporar pentru autentificare:
- utilizatorul introduce adresa de email;
- adresa de email, trimisă, evident peste TLS, este verificată în sistem și se generează o parolă complexă, unică, cu ul TTL de cca. 1h;
- acea parolă, complexă, este trimisă prin email utilizatorului valid;
- la prima logare sau la momentul DateTime+TTL parola este dezactivată/ștearsă.
Pentru administratori
Nu mai forța modificarea parolei la 3 luni! Este o practică idioată! Da, ai citit bine, este o practică idioată!
Am văzut această practică greșită inclusiv la marile companii, unde administratorii, din exces de zel și fără să gândească de două ori, forțează aceste politici... ai ghicit... greșite!
Să zicem că Iuăn "Hacker" Budoi, hacker autohton din comuna transilvană Făcumâna, a furat parola unui utilizator de-al tău. Crezi că stă cu parola în backlog și își programează în calendar o dată la care să acceseze contul în baza credențialelor, că deh, are copii de crescut, vaci de dus la păscut, nevastă bețivă și toate "belelele" pe cap... sau acționează în cel mai scurt timp? Spui că poate a găsit azi credențialele, în ziua 89 de la ultima resetare? Bravo! Ai salvat un utilizator, pe toți ceilalți i-ai încurcat!
Soția, care lucrează pentru o multinațională din State, mi se plângea ieri de aceeași politică și la ei: "of, iar trebuie să schimb parola!". Norocul ei că i-am facut cunoștință cu password managerele.
Dragi admini, încetați cu prostiile de acest gen! O parolă trebuie modificată doar sub suspiciunea de compromitere a acesteia. Aici vă pot ajuta și developerii, așa cum am menționat mai sus, prin inplementarea unui API de genul PwnedPasswords. Dacă se descoperă că parola a fost compromisă, se poate sugera sau forța modificarea acesteia sau se poate marca acel cont ca posibil compromis și urmări atent.
Utilizatorii care nu obișnuiesc să pastreze datele sensibile, precum credențiale de conturi, în vault-urile password managerelor vor fi primii care vor încerca să ocolească aceste restricții:
- vor reutiliza parole de la alte conturi;
- vor genera parole similare, modificând doar unul dintre caractere;
- vor reveni imediat la parola inițială, prespunând că o politică adițională permite reutilizarea parolelor mai vechi.
Institutul National de Standarde si Tehnologie al Departamentului de Comerț al Statelor Unite ale Americii a menționat foarte bine regulile de solicitare a unei parole, în Publicația Specială 800-63B, actualizată în iunie 2017:
- eliminarea modificărilor parolelor la intervale prestabilite, cu excepția situației când s-a depistat sau presupune un security breach sau la opțiunea deținătorului de cont;
- emininarea cerințelor de complexitate (caractere speciale, litere mari și mici, cifre) - cu această politică sunt doar parțial de acord;
- forțarea verificării parolelor noi în baza unui dicționar/tabel. Aici includ eu posibilitatea utilizării, adițional, a unui serviciu similar celui menționat mai sus.
Pentru utilizatori
Te rog mult, instalează și învață să utilizezi un password manager. Există multiple. Câteva bune sunt:
- 1Password - preferatul meu
- LastPass
- KeePass
- sau multe altele
Dacă utilizarea unui produs software adițional te descurajează și lucrezi singur, acasă, unde nu au acces decât persoane din familie, poți cumpăra un password logbook, care, cel puțin parțial te va ajuta să "ții minte" parole complexe, diferite pentru conturile tale.
Nu utiliza aceeași parolă de mai multe ori. Știu că este cel mai ușor să folosești și la contul de Facebook și la cel de iCloud și la cel de Instagram aceeași parolă, dar nu este bine! Compromiterea unor credențiale crește riscul pentru celalalte conturi ale tale. Generează o singură parolă, complexă, pentru fiecare cont în parte și utilizează-o pe aceea.
Dacă un cont/furnizor îți permite să activezi opțiunea de two factor, activează-o de îndată. Recent am îndrumat clienții noștri să utilizeze pe serviciile de email furnizate și pe accesul la panelul de administrare two factor și deja 82% dintre aceștia au activat aceste opțiuni, după ce le-am explicat care pot fi riscurile.
În cazul în care ai vreo suspiciune că una dintre parolele sau conturile tale au fost compromise, utilizează cu încredere aplicația web HaveIBeenPwned sau Pwned Passwords.
Pentru instituții sau companii de toate felurile
Securitatea aplicațiilor și modul de securizare a conturilor sunt aspecte principale ale unor aplicații public-facing și trebuie tratate în momentul realizării arhitecturii aplicației, nu la finalul acesteia.
Este important ca, în procesul de decizie să fie implicate diferite persoane din afara "bulei" în care noi, developerii/arhitecții software sau testerii suntem adânc băgați. Există, în acest sens sesiuni beta publice sau cu public restrâns, controlat.
Servicii de genul celor oferite de Microsoft, prin Azure Application Insights sau cele ale New Relic pot arăta modurile în care un utilizator a dorit să utilizeze o aplicație. O persoană atehnică sau cu un nivel redus de cunoștințe tehnice va utiliza într-un alt mod aplicația față de o persoană tânără sau față de o persoană cu un nivel de cunoștințe tehnice mai ridicat.
Această lipsă de gândire în cazuri concrete a dus și la frustrarea mea cu ING HomeBank. Ei vor ca utilizatorii lor să nu uite parolele (din 5 cifre), iar eu vreau securitate, nu o reducere a securității din motive de... asta credem că este o practică bună pentru utilizatorii noștri.
ING, îmi sunteți dragi, dar aruncați un ochi la concurență, la Revolut, vedeți cum se face, poate vă vin idei bune. Dacă nu vă descurcați, fără jenă, întrebați, testați și măsurați (uite rima!).
În rest, spor la succes și la cât mai multe parole bune și aplicații sigure!