TL;DR: Ook met een tot 20 bits "beperkte" lengte van een hash van een wachtwoord geef je enorm veel prijs over dat wachtwoord. Sowieso kunnen cybercriminelen hierdoor enorme aantallen mogelijke wachtwoorden
uitsluiten.
Aanvankelijk zullen nog niet veel mensen hun "foute" wachtwoord hebben gewijzigd, en is de kans groot dat de hash van hun wachtwoord
nog wel voorkomt in de haveibeenpwnded database. Later worden aanvallen
nog eenvoudiger, namelijk doordat cybercriminelen ook nog eens de "foute" wachtwoorden (in de haveibeenpwned database) kunnen uitsluiten.
DetailsTroy Hunt maakt volgens mij een grote denkfout. In
https://www.troyhunt.com/ive-just-launched-pwned-passwords-version-2/ staat onder meer:
The SHA-1 hash of that string is "21BD12DC183F740EE76F27B78EB39C8AD972A757" so what we're going to do is take just the first 5 characters, in this case that means "21BD1". That gets sent to the Pwned Passwords API and it responds with 475 hash suffixes (that is everything after "21BD1") and a count of how many times the original password has been seen.
[...]
Now keep in mind that as far as I'm concerned, the partial hash I was sent could be any one of 475 different possible values. Or it could be something totally different, I simply don't know and therein lies the anonymity value.
For the sake of perspective, here are some stats on what this means for the data within Pwned Passwords:
1. Every hash prefix from 00000 to FFFFF is populated with data (16^5 combinations)
2. The average number of hashes returned is 478
3. The smallest is 381 (hash prefixes "E0812" and "E613D")
4. The largest is 584 (hash prefixes "00000" and "4A4E8")
Een
aanvaller die de eerste 5 nibbles (hexadecimale karakters, elke waarvan 4 bits representeert) in handen krijgt, weet het volgende:
A) Ofwel je gebruikt een "slecht" wachtwoord dat bekend is bij HaveIBeenPwned, dan zijn er gemiddeld 478/2 = 239 pogingen nodig om in jouw account in te breken. Nb. veel te weinig servers implementeren een account lockout policy die zo'n aanval binnen een realistische tijdspanne (enkele weken voor een high profile account) onmogelijk maakt;
B) Ofwel je gebruikt een "goed" wachtwoord dat
niet bekend is bij HaveIBeenPwned.
Juist
ALS je al enige tijd een browser gebruikt die hierop checkt, is de kans groot dat het
NIET gaat om een wachtwoord als bedoeld achter A). Aanvallers kunnen dan
volstaan met het maken van een rainbow tables van wachtwoorden die
NIET voorkomen in de database van HaveIBeenPwned, te beginnen met korte wachtwoorden, maar denk hierbij ook aan (voor de hand liggende) passphrases bestaande uit bekende woorden.
Voorbeelden1) De SHA-1 hash van "
1Gehe!m" (zonder "") is D3031CD314B1948127DCA31C5AFF8140875BE9EA en komt
niet voor in https://downloads.pwnedpasswords.com/passwords/pwned-passwords-sha1-ordered-by-hash-v5.7z die ik op 2019-07-23 gedownload heb (uitgepakt ca. 24GB). In die file komen 543 regels voor die beginnen met "D3031".
Is "
1Gehe!m" daarmee een goed wachtwoord (d.w.z.
was dat zo voordat ik het hier publiceerde)? Volgens dit systeem wel - totdat een cybercrimineel leert dat de eerste 5 karakters van de SHA-1 hash van mijn wachtwoord "D3031" zijn
EN weet dat ik Chromium Edge gebruik en
dus dat het waarschijnlijk niet een van die 543 gelekte wachtwoorden is. Dat scheelt een boel onnodige brute force pogingen!
2) De SHA-1 hash van "
I like football!" is 78EBED76F31C727A3430002B52518351DDF94470. Ook deze komt niet voor in die file. Wel komen er 472 regels in voor die beginnen met "78EBE". Dit soort passphrases zijn m.i. best voor de hand liggend (vervang football door andere sporten, namen etc. - er staat welliswaar geen cijfer in, maar wel een hoofdletter en een leesteken - waarmee het aan veel password policies zal voldoen).
Conclusie: zie de TL;DR: bovenaan. Een veel gemaakte fout door ICT-ers die denken te beveiligen is dat ze niet
omgekeerd denken en niet vanuit het perspectief van een aanvaller redeneren. Iets dat, toegegeven, best lastig is, maar wel noodzakelijk; anders schiet je -voor je het weet- in je eigen voet. Ik vermoed dat, zoals zo vaak, het risico onvoldoende wordt meegenomen dat die 5-char-lange-hashes in verkeerde handen kunnen vallen, en/of men denkt dat een aanvaller toch niets heeft aan "maar" 5 karakters.
Door Anoniem: Als Chrome en Firefox het al ook doen, waarom moet er dan weer negatief gedaan worden als Windows Edge hetzelfde gaat doen?
Je mag me negatief noemen, maar ik wil graag
goed beveiligen. En ik wist niet dat Chrome en Firefox dit al deden, ik zal er eens induiken.