Door Anoniem: Door Anoniem: Bij dit soort keuzes (toegestane lengtes en karaktersets) moet je over lange tijd en over een hele keten systemen garanderen dat je keuze werkt.
Als je 1000 karakters unicode wilt toestaan moet je weten dat werkt , en blijft werken over een jarenlange evolutie van OSen en browsers. Zonder dat een browser update misschien automatisch een linewrap (\r\n) in een invulveld introduceert.
Er is al vele jaren een beweging *naar* Unicode gaande in plaats en niet naar andere character sets. OS'en ondersteunen het massaal, browsers ondersteunen het massaal, het is gewoon op dit moment de universeel toepasbare manier om teksttekens te coderen, en er is voor zover ik weet niets anders in ontwikkeling met de potentie om Unicode te vervangen. Als Unicode niet zeker genoeg is op de lange termijn, wat dan wel?
Unicode is een manier een veel grotere variatie aan tekst/karakter elementen op te slaan dan mogelijk is in ascii .
Dat is prettig waar de tekst bedoeld is om gelezen te worden door mensen .
Het _kunnen_ opslaan en weergeven van subtiele typografische verschillen, en wat coderingskeuzes leidt ertoe dat een verschillende reeks bytes er voor de menselijke kijker erg hetzelfde kan uitzien .
Of, andersom, dat de invoer van een bepaalde volgorde van toetsaanslagen een andere reeks bytes oplevert . Bijvoorbeeld afhankelijk van de taal/keyboard instelling van het systeem, of van veranderende keuzes van browser of OS.
Of verschil van cut & paste uit een localized document of pw manager applicatie versus direct intikken.
Het is niet zo vaakl dat gebruikersinput feitelijk rechtstreeks beschouwd wordt als een bitstring die exact moet kloppen.
Juist bij passwords is dat het geval - de invoer gaat een hash in en dat klopt of klopt niet . Geen fuzzy match,geen wildcard, eentje is goed en 2^160-1 zijn fout .
Het is al een uitdaging bij filesystems (filenaam opslag, en invoer vanuit filebrowsers), en daar zijn namen tenminste nog bereikbaar door het OS. (Linus heeft een boeiende rant over HFS+ wat dat betreft )
De uitdaging bij passwords is dat een set van 20+ toetsaanslagen nu , over veel OSen, browsers en jaren , dezelfde hash uitkomst geeft wanneer dezelfde toetsen aangeslagen worden.
En de plek waar de de invoer verwerkt wordt zit relatief ver (in termen van api's ) van de plek waar de toetsen ingedrukt worden - het is of de website van de bank, of hooguit de javascript code in de browser . Met os/libraries/en browser buiten het domein van de bank - en het strak vastleggen daarvan ('werkt met OS 1.2.3 browser 40.2.1' ) is nu juist zo ongewenst.
Kortom - als het fout gaat is het vrijwel onmogelijk uit zoeken ('password fout'), de gebruiker doet feitelijk niet verkeerd, want die tikt echt de juiste letters in, en toch werkt het niet .
Aan invoervelden die precies weergeven wat de gebruiker heeft ingetoetst en niet net iets anders zal altijd behoefte bestaan. Een applicatie kan makkelijk regelovergangen toevoegen maar kan geen automatisch toegevoegde regelovergangen verwijderen omdat er geen manier is om ze te onderscheiden van wat een gebruiker zelf heeft ingetoetst. Het invoegen van regelovergangen maakt geen kans om in een W3C-standaard opgenomen te worden en als een browser het zelf introduceert dan is dat een bug.
Je gaat in op een triviaal voorbeeld maar mist het generieke probleem.
En je sprong van 20 naar meteen 1000 tekens is trouwens nogal fors, daar ligt nog een hoop tussen.
Waarom je trouwens zo graag 30 in plaats van 20 gegenereerde tekens wilt hebben ontgaat me.
Omdat het hier ook gaat om tekens die mensen zelf intoetsen, en dan is de zin die jij net schreef een stuk makkelijker in te toetsen en te onthouden dan Wjtzg30!pv20gtwh0gm.
En 20 is te kort maar 30 precies goed ?
Mensen doen uberhaupt niet aan lang intypen van passphrases - voor dit soort toepassingen zijn passwords gewoon nogal beperkt in rendement. Een ultra lang password toestaan is vooral nep veiligheid -