06-06-2016, 00:36 door Anoniem: Door Erik van Straten: M.b.t. max. toegestane wachtwoordlengte:
01-06-2016, 18:20 door Anoniem : 1 - default van het platform (verreweg de grootste oorzaak van alle 'keuzes' ).
Ik geloof er niks van. Eneco met 10 is totaal absurd.
Ik heb een algemeen lijstje oorzaken van instellingen gegeven.
Ja, je hebt een lijstje gegeven, maar net zoals dat jij niet onderbouwt waar je jouw aannames op baseert, heb ik ook mijn antwoord niet onderbouwd. Ik heb er te weinig ervaring mee, maar kan mij niet voorstellen dat moderne frameworks nog dit soort onverstandige, en m.i. niet te rechtvaardigen, beperkingen opleggen. Als je mij voorbeelden kunt geven van redelijk actuele frameworks die dit nog
wel doen, is het 1-0 voor jou.
06-06-2016, 00:36 door Anoniem: Jij was toch een IT professional - dan moet je herkennen dat "gewoon de default" erg vaak de reden is waarom veel instellingen staan zoals ze staan. Dat je voor een onderwerp waar je erg thuis in bent je opwindt als mensen een minder geschikte default niet tweaken zal best , maar het blijft gewoon vaak het antwoord op de "waarom" vraag in IT.
Het is wat onder de gordel, maar inderdaad weet ik persoonlijk (wellicht als geen ander) dat software-maker-opdrachtgevers vaak de goedkoopste weg zoeken en geen zin hebben in onderhoud, ook niet als veranderende marktomstandigheden en/of inzichten daarom vragen. Maar tegelijkertijd vind ik dat
niet te rechtvaardigen, en daarom schrijf ik dit soort bijdragen.
06-06-2016, 00:36 door Anoniem: Specifiek voor de 10 lengte van eneco hoeft dat niet de reden te zijn.
En wat dan wel?
06-06-2016, 00:36 door Anoniem: 01-06-2016, 18:20 door Anoniem : 2 - de password lengte moet door de hele stack (webserver, applicatie code, hash library of database builtin) tot en met de hash-input gesupport worden.
Tenzij de server nog wachtwoorden plain-text opslaat, is het, om server-performance-redenen (en, enigszins qua security, vooral als er "onderweg" TLS inspectie plaatsvindt), erg prettig als
de browser in plaats van
de server de afgeleide van het wachtwoord bepaalt, en
dat naar de server stuurt. Normaal gesproke heeft die afegeleide een vaste lengte en mag beslist niet worden ingekort.
Ik denk niet dat dat gebruikelijk is. Heb je (veel) voorbeelden van webpagina's waarin de JS het werk doet van hashen ?
Nee, ik ben ook geen webontwikkelaar. Ik weet wel dat als je een bestand "uploadt" naar VirusTotal.com, dat bestand eerst door Javascript in de browser wordt gehashed (SHA256) om te zien of het bestand al "bekend" is bij Virustotal, dit ongetwijfeld om bandbreedte te besparen. Er is dus geen technische reden om dit niet te doen.
Ik ging er dus gewoon vanuit dat dit wel zo zou zijn. Ook zijn er vragen over te vinden op Internet met, in mijn ogen, onterecht hoog scorende antwoorden zoals in [1] met onderwerp "https security - should password be hashed server-side or client-side?". Het "belangrijkste" antwoord (dat met 37 de meeste punten scoort) luidt:
Nov 2 '11 at 12:11, door Nicole Calinoiu: If you hash on the client side, the hashed password becomes the actual password (with the hashing algorithm being nothing more than a means to convert a user-held mnemonic to the actual password). This means that you will be storing the full "plain-text" password (the hash) in the database, and you will have lost all benefit of hashing in the first place. If you decide to go this route, you might as well forgo any hashing and simply transmit and store the user's raw password (which, incidentally, I wouldn't particularly recommend).
Natuurlijk maakt client-side "verhaspelen" van een wachtwoord (d.w.z. het berekenen van een wachtwoord
afgeleide) PtH (Pass-the-Hash) aanvallen mogelijk, maar hoe
erg is dat?
1) De aanvaller
heeft al uitgebreide toegang tot de server als hij de database kan stelen, en heeft dan meestal meteen ook toegang tot alle andere gegevens van gebruikers. Client-side of server-side verhaspelen maakt niet uit hierbij;
2) Mocht de aanvaller niet meteen directe toegang tot andere (evt. versleutelde) gegevens van gebruikers hebben, dan kan hij alle opgeslagen wachtwoordafgeleiden in de database
vervangen door een wachtwoordafgeleide naar zijn keuze (waarvan hij het bijbehorende wachtwoord kent natuurlijk), en vervolgens,
ingelogd als ware hij de rechtmatige gebruiker, alle beschermde gegevens van alle gebruikers uitlezen. Client-side of server-side verhaspelen maakt niet uit hierbij;
3) Het
belangrijkste argument voor het
niet opslaan van plain-text wachtwoorden, namelijk de onverstandige maar menselijke eigenschap om wachtwoorden te hergebruiken, blijft overeind bij client-side verhaspelen (mits je een algoritme met minstens 1
unieke parameter hebt geïmplementeerd, hier moet
wel een secure random component in zitten - anders zouden wachtwoordafgeleiden op verschillende sites identiek kunnen zijn).
Kortom, op mogelijke browser issues na zie ik geen nadelen voor client-side "verhaspelen" van wachtwoorden, wel voordelen (en aangezien voor de meeste sites een fatsoenlijke en recente browser vereist is, verwacht ik nauwelijks tot geen browser issues).
Nog mooier is het als clients de wachtwoordafgeleide niet "plain text" verzenden, maar de server hen een public key stuurt waar de client de wachtwoord-afgeleide mee versleutelt en het resultaat naar de server stuurt. Waarna de server dat, met zijn private key, ontsleutelt en vergelijkt met de eerder opgeslagen wachtwoord-afgeleide (of, als het om 1e invoer of wijzigen van een wachtwoord gaat, opslaat in de database). Dan heb je echte end-to-end encryptie (browser -> server) en is die wachtwoord-afgeleide in elk geval beschermd tegen lekkende TLS inspectie (door virusscanners, UTM's of geheime diensten met apparatuur van bijv. Blue Coat).
06-06-2016, 00:36 door Anoniem: Het geeft ook een heel vervelende dependency tussen browser code en authenticatie backend - als tzt gekozen wordt voor een andere backend hash moet alle logica (oud en nieuw en migratie) in de browser code , in plaats van in de middleware of backend .
Het is een verandering, maar de trend is Javascript voor vanalles en nog wat (JQuery, Angular etc) dus zie ik niet in waarom het berekenen van een wachtwoordafgeleide in browsers een probleem zou zijn.
Nb. ik zeg hiermee
niet dat een webbrowser prima geschikt is voor alle cryptografische bewerkingen, want dat is gewoon (nog) niet zo.
06-06-2016, 00:36 door Anoniem: Voor wat betreft zorg omtrent TLS decryptie : forget it. Als dat gebeurt door de website operator (SSL offload engine, plaintext processing erachter) moet je die keten maar vertrouwen, net zoals je de hele dienst (blijkbaar) vertrouwt .
Eens.
06-06-2016, 00:36 door Anoniem: Als het gebeurt door een derde partij die je sessie kan inspecteren , beschouw het maar als een hele compromise.
Eens, maar zie mijn bovenstaande oplossing, die niet de sessie beschermt, maar, in de basis, wel het wachtwoord.
06-06-2016, 00:36 door Anoniem: Als ze kwaadwillend genoeg zijn om aan de gang te willen gaan met je password , kunnen ze ook de javascript die de hashing doet wel omschrijven - jij kunt bij gebrek aan TLS de code ook niet vertrouwen.
Eens met de opmerking dat het, on-the-fly, wijzigen van pagina's
die je niet eerder gezien hebt (untargeted attack) ongeveer ondoenlijk is. Bij een
targeted attack kunnen geheime diensten inderdaad alle informatie wijzigen die tussen server en browser wordt uitgewisseld. Tenzij er waterdichte protocollen (signeren, checken, en unsigned data weigeren) worden gebruikt die dat voorkomen, maar die zijn schaars tot non-existent.
06-06-2016, 00:36 door Anoniem: 01-06-2016, 18:20 door Anoniem : 2 - mensen maken fouten. bij overtikken, en ook met 'off-by-one' cut&paste missers . Of overlopende regels waarbij er een spatie, of enter op het overloop punt bij komt.
Onkunde is geen rechtvaardiging van onveilige websites waar gebruikers gevoelige informatie op (kunnen) achterlaten. Beboeten die hap.
Get REAL. Het geneuzel dat 16 of 20 karakters fundamenteel onveilig is, is precies dat - gezeur.
En ga vooral graag op een helpdesk werken waar je een product support waar alle ultra nerd opties _wel_ mogelijk zijn.
De Autoriteit Persoongegevens wordt bemand door juristen, niet door nerds met BOFH complex.
Jammer dat je hier op de man speelt en geen inhoudelijk argumenten geeft.
06-06-2016, 00:36 door Anoniem: Je kunt erop rekenen dat de eisen van de AP volgen uit allerhande 'best practices' uit audit wereld, en een (online) password met een lengte limit van orde 20 is an-sich daar echt geen faal criterium.
Een boete zie ik op die grond echt niet gebeuren.
Met [2] in het achterhoofd voorzie ik dit wel. M.i. is de vraag niet
of maar
wanneer.
06-06-2016, 00:36 door Anoniem: Als security verantwoordelijke moet je aan je _hele_ populatie denken.
Exact.
06-06-2016, 00:36 door Anoniem: Ik erger me nogal aan veel mensen hier die de mentaliteit hebben dat als ze maar veilig zitten met hun super 200 karakter diceware radioactief random gekozen passphrase , al die "lusers" met hun beetje te simpele password het maar lekker aan zichzelf te wijten hebben als het misgaat . Moeten ze maar niet dom zijn.
Hier spreek je jezelf tegen. Op sommige sites ben ik
gedwongen om een onveiliger wachtwoord te gebruiken dan ik zou willen en word daarmee een luser. Dat is de wereld op z'n kop.
06-06-2016, 00:36 door Anoniem: Bovendien zetten websiteeigenaren het niet graag in, omdat het DoS (beperkte of geen beschikbaarheid dus) aanvallen vereenvoudigt of ronduit mogelijk maakt, met de bijbehorende usability/support issues.
Dat is een afweging. Een auto-reset na 15 minuten (bv digid) is een prima optie om de retry-rate extreem laag te houden.
3 pogingen per 15 minuten geeft je een heel klein woorden boek.
Dat hangt van de use case af. Als een account ge-DOS-ed wordt terwijl
jij de gebruiker hebt gevraagd in te loggen omdat
jij iets van hem wilt, en de gebruiker geeft het na 1 of 2x op en loopt naar de concurrent, dan heb
jij een probleem.
06-06-2016, 00:36 door Anoniem: Als je dan ook nog het probende IP na een tijdje in de blacklist gooit heb je heel veel problemen voor al je gebruikers opgelost.
Niet als meerdere (of zelfs (heel) veel) gebruikers achter 1 NAT IP-adres zitten en meerdere daarvan, of allen, op jouw site proberen in te loggen en 1 daarvan (of een derde) dat probeert te verhinderen.
En ook
dit is de wereld op zijn kop. Omdat
jij weigert langere wachtwoorden toe te staan dwing je verstandige gebruikers zoals ik tot korte wachtwoorden. En omdat er korte wachtwoorden worden gebruikt, is account-lockout noodzakelijk - namelijk om gehackte korte wachtwoorden door brute force aanvallen te voorkomen. Met potentieel denial of service als consequentie.
Als iedereen voldoende lange wachtwoorden zou gebruiken (dat moet dan wel
kunnen, of men dat wil
weet je nu niet eens), random gegenereerd met een wachtwoordmanager, zijn brute force aanvallen
zinloos en zou je die wachtwoorden best plain-text op mogen slaan van mij; minder code, minder kans op fouten, sneller inloggen en ook nog minder energieverspilling.
De tijdbesparing (o.a. minder code) zou je dan kunnen gebruiken om beter te voorkomen dat aanvallers toegang krijgen tot jouw database, want daar staan niet alleen (verhaspelde) wachtwoorden in - maar ook andere, door jou te beschermen, gebruikergegevens. Een win-win situatie dus.
[1]
https://security.stackexchange.com/questions/8596/https-security-should-password-be-hashed-server-side-or-client-side[2]
https://autoriteitpersoonsgegevens.nl/nl/nieuws/verscherpte-aandacht-ap-voor-verouderd-beveiligingsprotocol-sslv2