19 ms·
Stop forcing arbitrary password rules
- ckaygusu 11y agoOne startup I was working for were enforcing different rules depending on where you were setting the password e.g. 4 characters when you follow the forgotten password procedure, 8 characters when registering, 12 characters when changing password normally. Another thing, a visa broker in Turkey had a so ridiculous password rule and gibberish error message, I had to read the source code and parse the regex by hand. Only then I was able to type in a valid password.
- armabiz 11y agoYour password has expired :)
- ddlatham 11y ago100 times yes. The mere presence of a single character from a different class does not increase entropy. It means that most common passwords move from 8 lowercase letters to 6 lowercase letters plus 1 number plus 1 symbol, which is even easier to search. If you have a sophisticated entropy estimation tool, or library, great. Another simple thing is using a min length, plus restrict from a dictionary of the million most leaked passwords to outlaw those (can hold it in a bloom filter if size is a concern).
- Retric 11y agoMust contain 2 of the following, (upper case letter), (lower case letter), (number), or (Symbol) is higher entropy than 8 lower case letters.
- sokoloff 11y agoMathematically, but not socially. It means that humans reduce the entropy across the board to (more than, IMO) compensate for the mathematical advantage.
- deleted 11y ago[deleted]
- Retric 11y agoDo you have any data on this? Last I check pick to was a slightly better option.
- sokoloff 11y agoI don't have any real data. I know my own behavior for "sites I don't care about" and every once in a while I'm exposed to someone else's password (when they tell me their password for a site they don't care about, or where I see a password in plaintext in our shared password manager). There's an awful lot of "capitalize the first letter" and "replace e by 3, a by 4, o by 0" and "sometimes append a bang". That results in meeting the password complexity rules without any additional entropy in the first 2 rules and 1 bit of entropy for the last rule.
- bradleyjg 11y agoA randomly selected member of the set of all of 8 character strings which contain at least 2 of [(upper case letter), (lower case letter), (number), or (Symbol)] has more entropy than the a randomly selected member of the set of 8 character strings which contain only lower case letters. However, all bets are off if the respective strings are no randomly selected. 'Passw0rd' is worse than 'xmliicou'.
- sfilipov 11y agoAdditionally, I thought that's what key stretching and PBKDF2 - to slow down brute force attacks.
- vortico 11y agoAbstract: pls use https://github.com/dropbox/zxcvbn https://github.com/dropbox/zxcvbn
- repsilat 11y agoFor most websites, users should just be warned that their password is insecure, not forced to use a stronger one. Your website probably isn't important enough to me to get its own strong password.
- forgotpwtomain 11y agoI agree with the point the author is making and generally am just as annoyed by arbitrary password rules; nevertheless: > chili dog monkey nutso Is definitely not 18 quintillion years at best it's approximately 250000^4 which is 2^72. A good (though still requiring some memorizing effort approach) would be something along the lines of https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki https://github.com/bitcoin/bips/blob/master/bip-0039.mediawi... which uses a standard dictionary of 1626 easily memorable english words with each password being a 12 word mnemonic phrase. 1626^12 ~= 12^128
- mrob 11y agoIt's less than that because the words were clearly not picked randomly. "Chili dog" is an English phrase, and "monkey nutso" is a transformation of "monkey nut", also an English phrase.
- petercooper 11y agoit's approximately 250000^4 If the attacker knows you've used four dictionary words in a row. Now you need to multiply the number by the odds of that..
- forgotpwtomain 11y agoIt's not quite like that - even if you don't try the more readily accessible combinations before the longer ones, but simply split your computational effort on each one in proportion (you'll find all of the 4 word ones have been tried when only 1/250000 of the 5 word ones have). Not to mention that "chili dog monkey" are not exactly rare words and even a 10k word english dictionary would contain those.
- paulmd 11y agoAnd the entropy of the password 0b0 is only a single bit - if the attacker knows you've used a single-bit password. Hashed into the SHA-256 space that's only a 1:2^256 chance of someone colliding with it. Still, is that a password you'd set? What does that have to do with the output of the password in terms of brute-force guessing? Aren't you kind of assuming that an opponent won't try a broad dictionary attack? Equal distribution of hash outputs fundamentally assumes equivalent distributions of hash inputs, and that's not true for the distributions of common passwords. Again - everyone knows the passphrase patterns everyone uses, everyone knows the password transformations everyone follows (eg l33t) and overall those patterns are significantly weak against attack because of this public knowledge. By those algorithm, with knowledge of salts/etc those passwords are very weak. Should you use a song, or a slight modification, or a l33t transformation? Certainly not - if the input space isn't uniformly distributed across the input space, the probability of hitting pay dirt definitely isn't uniformly distributed across the output space. Even the class of "valid transformations of sensical English sentences" is not an equal distribution because of the above. If you can compress a language you can attack it, because by the assumption of compression the data is not at its minimum entropy. Maybe not feasibly if you're lucky - but don't bet on it just because Webster's is big.
- ErrantX 11y agoArgh! The XKCD entropy comic. Back away slowly.. The "4 common words" password meme was around a lot after that comic. However, such passwords are definitely not secure because a good dictionary attack will break it in hours. You do not have as much entropy as you think with them. The same problem tangentially applies to his suggested password schema to. The problem is: as soon as you start using human word or pseudo words then your complexity decreases significantly. With that said he has a point: password complexity schemas as employed by websites are not good enough. It should enforce length and complexity properly (not by saying "you must have these types of characters" but by really analysing the password). I appreciate the UX problems involved there... but then we could push people towards using password managers and auto-generated passwords. Summary: use a password manager and auto-generate complex passwords.
- desdiv 11y agoCan you explain why the XKCD scheme is weak to dictionary attacks? Using the 2048 common words example from the comic, there would be 2048^4 = 1.8e13 four word combinations. I don't see any possible attack that's faster than brute-force here.
- ErrantX 11y agoOf course, it's not the worst schema. But it gets a lot more credit than it is worth. Using dictionary words reduces the entropy of your password significantly. And for a cracker it can be trivial to attack passwords of that form. Given the sort of compute power you can obtain cheaply nowadays, attacking 4-word schemas (especially given people tend to use common words) is not hard. It's to some degree security through obscurity: no, a cracker will not know your schema in advance but he will attempt to attack multiple schema types. If you're the sole target then that's probably not a concern - it would be a major effort, with limited rewards, to attack your unknown password schema. But if yours forms part of a larger set of passwords being attacked (where the use of multiple schemas and attacks will reap high rewards) then you're at more risk. IMO, for all the password schemes that people come up with there is no good alternative to a long, randomly generated string with multiple character types. Always use a password manager!
- nsmalch 11y agoI see this a lot now, with the proliferation of libraries that allow for arbitrary passwords. Possibly some form of systemic trickling down of bad practices into software with horrible consequences "Your password must contain the seventh circle of hell, and a Taco Emoji"
- mdpopescu 11y agoI liked the message saying something like "your password must contain three characters from Game of Thrones" :)
- jshc 11y agototally agree. just to make things worse, the password rule on the client side sometimes does not agree with the one on the server side. XD
- lifeisstillgood 11y agoI use pwsafe for iOS (yes trusting some guy built a binary ok) to keep my many passwords for each domain. It will generate (no I don't know the RNG) passwords based on policy settings (length, characters, etc) And like the author, flat out my number one bugbear is that no matter what random(ish) password I choose before signing up, some idiot will decide that my 12 letter password is too long or my password must have an upper case, or a number of a special character - but never in a consistent manner. I really want to just move to google authenticator and one factor auth. Just stick a QR code up, let me photo it on screen and I will give you a HMAC code right back. No passwords. Just illusion
- benashford 11y agoAnd then you lose your phone and...
- lifeisstillgood 11y agoPretty much the same as everything else that happens when I lose my phone. Total disaster.
- emsy 11y agoSecond worst password rule: preventing to paste in the password field. As seen at The OS X FileVault dialog, PayPal, Blizzard and many more....
- aruggirello 11y agoThird worst password rule: preventing the browser from prompting user to save the password for your site. I found this to usually happen with home banking sites (as a workaround, I usually have to disable and re-enable javascript).
- scintill76 11y agoChrome hackaround: 1. Right-click the field, Inspect element. 2. Go to Console tab, type: $0.value = 'mypassword'; $0 is the last selected element: https://developer.chrome.com/devtools/docs/commandline-api https://developer.chrome.com/devtools/docs/commandline-api
- carbonic 11y agoYou can do this in FF and probably others by using this method: 1. click on the input field. 2. Type document.activeElement.value = 'MyPassword'; into the console.
- dugmartin 11y agoI have this as a bookmarket named 'Reveal Passwords': javascript:(function(){var IN,F;IN=document.getElementsByTagName('input');for(var i=0;i<IN.length;i ){F=IN[i];if(F.type.toLowerCase()=='password'){try{F.type='text'}catch(r){var n,Fa;n=document.createElement('input');Fa=F.attributes;for(var ii=0;ii<Fa.length;ii ){var k,knn,knv;k=Fa[ii];knn=k.nodeName;knv=k.nodeValue;if(knn.toLowerCase()!='type'){if(knn!='height'&&knn!='width'&!!knv)n[knn]=knv}};F.parentNode.replaceChild(n,F)}}}})()
- emsy 11y agoThat's good for browser passwords, but finding out that your 64 character password can't be pasted in the system dialog after erverything is set up is extremely frustrating (there is a hard to find command line workaround though). I think Blizzard enforces the no-paste rule in its Battle.net launcher (that you can't trick) but I'm not 100% sure.
- plorg 11y agoI was in Chicago with my family recently and purchased a one-day pass for the CTA. When I returned home I found you could create an online account connected to the card, ostensibly to be able to fill it up automatically, but also to track your ridership. I thought it would be interesting to see what kind of data a rider could get from the card. I spent quite a bit of time trying to create an account only to receive a generic 50x error page each time. I tried disabling adblockers, completely unblocking javascript, disabling extensions, and nothing worked. I tried it in different browsers, and on different computers. I still received the 50x error. Then, on a whim, I tried using a different password. When that worked, I tried changing the password using 1-character-removed tweaks of the original. There was a single character that, it turns out, would cause the application to choke on passwords (I don't remember which character). Presumably it was an escape character or a semicolon. It's not impossible for account systems to fail in unexpected ways, so there are probably more than a few (poorly-designed) websites which have seemingly arbitrary password requirements which are designed to avoid the kind of error I found above. Still, it would be better to fix the error in the webapp than to try to patch it by limiting the user input - that's an obvious security problem waiting to happen.
- deleted 11y ago[deleted]
- sago 11y agoSuggests to me that form-input is being used unescaped at some point in their software. I wonder what the password "foo'; drop table users;" would do.
- mikelward 11y agoLast I knew, the T-Mobile registration form prevented typing the letter 'v' in the password field. It was a rookie programmer trying to prevent pasting.
- HNSucksAss 11y agoThe best password bullshit I've encountered was United Healthcare's. They put a list of password requirements on their page, but even if you adhere to all of them, the page will claim that your password is invalid. Why? Because they AUDIT YOUR PASSWORD FOR "SWEAR" WORDS. I shit you not: http://goldmanosi.blogspot.com/2013/09/united-healthcare-audits-your-passwords.html http://goldmanosi.blogspot.com/2013/09/united-healthcare-aud...
- lhecker 11y agoI completely agree with the author, but... what he completely misses is the biggest annoyance: maximum length rules. I'd probably sacrifice my firstborn if Microsoft would finally wake up and accept passwords longer than 16 goddamn characters...
- WhitneyLand 11y agoThis sounds a little obsessive. How often are hackers brute forcing a random 16 character hash?
- dagss 11y agoPoint is you can use passphrases that are easier for humans to remember, but you then need to measure entropy as numbers of words and size of dictionary and 16 characters is too little. https://xkcd.com/936/ https://xkcd.com/936/
- lhecker 11y agoYep exactly that. It would be great if I could just use some whole words as the password for accounts which I need to use often or are really important and thus IMHO make password stores impractical (e.g. desktop login, Gmail, …)
- eru 11y agoAdd second factor authorization for these, in any case. Google Authenticator app on the phone works reasonably well, or perhaps even get a physical token.
- freehunter 11y agoI use a passphrase on my Gmail account in the manner of "This is the password I am using for Gmail". Works just fine.
- WhitneyLand 11y agoPass phrases can be a problem because they are attacked using dictionaries just like words are. Choose carefully.
- bradjohnson 11y agoIt always seems like banks are way behind the curve on this for whatever reason. My old credit union that I left a couple years back required specifically a 6 character ^[0-9]$ password for complete access to my account. I have no idea why this seemed like a good idea to them. Plus the idiotic security question crap that they usually store in plain text. Just let me store my email and send me an email if I lose access; security questions make you /less/ secure.
- jpdus 11y agoTotally agree. At least 1 Uppercase means 99% of people just use an uppercase first character for their standard password. 1 number means they append 1,2 or a year and 1 special character means they append an exclamation mark. Entropy added = 0 (if password rules are known to the attacker). I don't get how anyone who cared the slightest about security would think otherwise and enforces these stupid rules.
- kristopolous 11y agoI think a lot of it is driven by management. I've had to talk management out of it before. Then they still "don't get it" and think I'm OK with an "easier to hack" website, holding it against me as a character flaw - as if I'm a bad engineer who doesn't believe in diligence. Anyway, that's probably where they come from - implemented by more obedient employees.
- JoeAltmaier 11y agoHa! I add '0' to the end of my password. Uncrackable!
- 1ris 11y agoOut of all, my bank forces to have my password to have exactly 5 chars. This is madness. Fortunately to actually do anything I need a second authentication factor.
- reviseddamage 11y agowhat bank is it?
- therein 11y agoMy bank does the same, and they limit everyone to 8 characters. It is Schwab.
- pjmlp 11y agoThe worse ones are the constraints to which characters one isn't suppose to use, which on my book only reveals sloppy coding as the developer wasn't able to cope with arbitrary characters.
- adamc 11y agoSometimes it reveals things about the underlying system (e.g., that they are storing passwords on a mainframe, or in a database with a different character set).
- frik 11y agoThe iCloud and Microsoft account password rules are bad examples. The first one forces one to use certain characters (uppercases, numbers) amd the second one supports only up to 16 characters.
- codedokode 11y agoWhat we really need is to stop using passwords. Passwords are awful UX design solution. The users have to think of and remember some meaningless phrase to get the service they really needed. If you use easy password, your account can be hacked. If you use difficult password, you won't remember it in a week. For some people remembering a password or login might be especially difficult. You can use software to generate and remember passwords but all of them will be lost if you reformat your drive. Some of password managers are proprietary, non cross-platform and some would upload your passwords to the so called cloud so NSA can look at them too. In any case your passwords can be easily compromised when your PC is infected or you use somebody's else device. What we need is to get rid of this obsolete system. We need hardware authorisation key (that could look like a real key) that can be used for both registration and logging in and would generate and securely store private keys for all used services. Such device should use strong crypto, should not allow exporting private keys, update firmware or operate without user confirmation. I think such kind of keys will appear sooner or later, they are superior to passwords and password managers and easy to use but I am not sure that they will be open source, cross platform, and backdoor-free unless we do something in advance.
- CHY872 11y agoNo. They are not superior to passwords - they merely provide different tradeoffs. For example, the site that requires your hypothetical key-type key would require that either all of their customers have spent money on such a key (bad) or that they are willing to pay for keys for all of their customers. This is something that has been thought about in detail - see https://vtllf.org/blog/ssh-web-sign-in/quest-to-replace-passwords.png https://vtllf.org/blog/ssh-web-sign-in/quest-to-replace-pass... for Stajano's analysis.
- xixixao 11y agoMore importantly, you just replaced the problems of virtual keys with the problems of physical keys: you can lose them. Recovery is much more difficult than recovery of a virtual key.
- 11y ago
- cespare 11y agoHere's a collection of offenders: http://password-shaming.tumblr.com http://password-shaming.tumblr.com
- coreyp_1 11y agoI despise expiring passwords. My university makes me change my password every 6 months, and they keep a list of the last 2 year's worth of passwords so that you can't reuse them. That, and they disallow some characters such as "#" and " " (space). It's annoying.
- JoeAltmaier 11y agoTypically, folks just change the '1' at the end to '2'. And so on. I agree this is another totally pointless password rule that helps nobody.
- draven 11y agoThey also did that at one of my previous workplace. We couldn't reuse any of the passwords we used in the past (no limit apparently), but in the form to change our password, they checked if the current and new passwords were different w/ some Js. With the help of firebug we could keep the same password as long as we wanted.
- falcolas 11y agoI don't care for them either, but there is definitely a purpose: it limits the vulnerability period of a users password compromise. For example, if you share passwords between sites, compromising one site gives you a limited time frame in which to attack the other. 6 months isn't even a bad compromise; some places with high security requirements make it 30 days.
- chris_wot 11y agoI've been wondering about password complexity for a while now. If a password is cryptographically hashed, so long as it isn't a dictionary word or date, why on earth do people add in complexity rules that prevent arbitrary character sequences? What I'm getting at here is that if you had a 8 character password (for the sake of the example), and you can type in lowercase letters, uppercase letters, numbers and punctuation marks the total combinations of values is 95^8. But then you remove all possible values of just numbers, all values that are just letters, all values that are just special characters. That reduces the set of combinations by (52^8) for alphabetic characters, then reduce further by 10^8 for numeric only values, then 33^8 for special characters. That's quite a few characters removed! But then you get Apple's recent password requirement of no repeated characters in their iCloud and App Store passwords. My math behind permutations is a bit rusty, but that removes a hell of a lot of passwords as well. On top of this, if you require at least one special character, alphanumeric character, and at least one number, then that reduces the number of possible passwords even further! I've never understood how this made passwords safer... What am I missing?
- Natanael_L 11y agoThey assume people are using short stupid 90's style password rules. Which many unfortunately are...
- chris_wot 11y agoNot following...
- Natanael_L 11y agoStuff like aaa123
- chris_wot 11y agoWell, if you put in xuui-659995!?)) then it won't let you use this either. How does that make any sense? Edit: In fact, interestingly I used a pseudo-"random" generator made up in my brain. And there you have a big problem - I couldn't help myself but I grouped letters, numbers and special characters. I have to ask - if most of us do this, as we pick our own passwords, then don't we by our very nature make it easier to crack our own passwords?
- whoopdedo 11y agoI was disappointed to learn that Android wouldn't accept a password with non-ASCII characters. I wanted to mix accents, punctuation, and symbols that are all easily typed with the soft keyboard, but it was rejected as "too short" because anything that wasn't between 0x20-0x7E was trimmed.
- dendory 11y agoPassword rules are needed, otherwise passwords would be even worse than they are now, with people going back to using '1' or '1234'. They just need to be better designed: Must have at least 16 chars, OR Must have at least 8 chars with 1 number, 1 letter, 1 symbol, AND Must not have more than 3 repeating characters
- JoeAltmaier 11y agoI think the rest of this thread, and the OP, have been systematically refuting that claim.
- kevinsimper 11y agoThe problem is that those that enforce those rules does not read these articles :( its sad
- AndyMcConachie 11y agoOr browser manufacturers could implement HOBA and we could stop worrying about passwords for the web. Just sayin... http://tools.ietf.org/html/rfc7486 http://tools.ietf.org/html/rfc7486
- deleted 11y ago[deleted]
- armabiz 11y agoSurprised of 99% agreement here at HN, because usually IT/security people in majority of the cases don't understand me when saying ^^ the same.
- coldcode 11y agoOften the stupidest limitations in passwords come from the backend system being an ancient banking/insurance/healthcare system running on a mainframe using rules that were prevalent 30-40 years ago. Having worked for a smallish financial/banking company we had an AS/400 with code mostly written in a 4GL tool as the system of record. The database didn't even have unique keys. Everything modern (like web apps) was limited by what this system supported.
- mkobit 11y agoOne that comes to recent memory is Schwab. A few points from this (http://www.jeremytunnell.com/posts/swab-password-policies-and-two-factor-authentication-a-comedy-of-errors http://www.jeremytunnell.com/posts/swab-password-policies-an...) article from December 2014: > "Schwab.com passwords are limited to eight characters, cannot contain symbols, and are case insensitive. " > "I now know that on the backend, my secure 16 digit password got stored in the system as only the first eight characters." > "So what they do is allow UP TO eight characters to represent the password, which is stripped from the contents of the password field. Assuming that the user is activating a token, there will be characters left over. Instead of using the LAST six characters to check the token code, they pull the NEXT 6 characters." Seems like these companies just do not want to put the effort or deal with the customer pain of updating to a newer model.
- xjay 11y agoTruncation: The browser could have warned users for years already. Pasting something that gets cut off is data loss. Relying on a JavaScript implementation to do this is a hack that only covers some sites (yes, you could have an add-on, but no, that would require JavaScript, and it's still a hack). Binary Passwords: I could just copy/paste blocks of hexadecimal digits into the password field using a fixed number of digits corresponding with the key size, and they would be interpreted as a stream of unsigned binary octets. The only thing you'd need to know was the length. A suitable format is using hexadecimal. If you're using a password manager, you already don't care about what the characters are, only that it is secure. Passwords are also no longer limited to use printable characters. How would you implement that for all users? Adding a prefix like 0x to enter hex mode?
- gravypod 11y agoI also hate companies that won't let you use a space in your password. What kind of crazy stuff is that? Stuff like "I like spaces" would not work.
- elinchrome 11y agoMaybe it's because spaces are unicode characters and they are worried that their password system isn't unicode compatible.
- rdancer 11y agoRight on!
- dheera 11y agoPick whatever high-entropy passwords you want, and tack on "Aa$1" onto the end of every password to deal with the silly systems.
- armabiz 11y agoI would also add to this statement that this shouldn't be user's problem, but service problem. By forcing setting strange passwords services transfer their problem to secure passwords to user's shoulders. Instead of following shitty password rules in forms, it's better to make it very hard or expensive to brute-force these passwords. So any heuristics to identify ubnormal/dangerous activity and take an action by decreasing attacker chances like rate limiting/captchas and so on. * If you see one IP trying to login with incorrect creds with really high rate - then it's probably attack. * If you see really lots of IPs trying to crack specific user account at the same time - then it's probably attack. Instead of that I can see the opposite practice: service set draconian password politics, but just allow requests with incorrect credentials without any limits: "30req/sec? You're welcome, buddy! Need an API maybe?" I can suspect something like this happened before: "It looks like a lot of work with rate limiting and all the stuff, let's just force our users to set 10+ character passwords with one+ capital letter, one+ number, one+ special character". Oh, and in these examples there is usually cherry on cake like: - Dev1: "Let's not allow 2 same characters or 3 characters of same type" - Dev2: "Let's also force our users to change their passwords every 3 months" - CEO: "Brilliant ideas! We're secure now!" These surprises are up to every developer's/another genius infosec imagination :) So, my conclusion is that best security systems should be almost invisible to normal users and let attackers screaming.
- jstoiko 11y agoCombination of words are the way to go. Often, when I tell people that, they seem to get stuck probably because that's not what they've been used to doing. I would be inclined to give some kind of hint to the user: "a good password, easy to remember: pick at least 4 random words and separate them by a character of your choice."
- darkhorn 11y agoThey want me to enter upper case letter. I enter Ö and it doesn't accept it
- theophrastus 11y agoApologies if this is a common held practice which i'm unaware, but why not establish a policy amounting to: "if the system-admin can't somewhat trivially crack your password then i won't bug you about it". That is, allow any password, then if your chosen crack software can't crack that password, leave them alone. If you can crack it then: "Please select another password, as our trivial cracking software discovered it". This would strike me as a less user burdensome method which would be more generally secure than every 13 weeks: "9-12 characters including one of each of the following set"
- dogancelik 11y agoI was looking for a cloud MongoDB provider, so I found MongoLab then I tried to register. It didn't let me because my password didn't have a number in it, do you want to know the password I used? Here's the password: U\"&%x#vdE Their support site has more ridiculous password rules. Like one capitalized letter, one number, one lowercase letter, one non-alphanumeric, etc. I asked the support and he said this: Not all of our users are as savvy with security concerns. I told them Google allows "aaaaaaab"... I wish them to get rich with their non-savvy users, best of luck to them.
- tsana 11y ago"Through 20 years of effort, we've successfully trained everyone to use passwords that are hard for humans to remember, but easy for computers to guess." Wow.
- z3t4 11y agoAllowing 100,000 login attempts per second is in itself insecure! Using longer passwords in that case is just treating the symptoms of a bad security strategy. Good security strategy: Have many layers of security! For example: Limit the login attempts to max ten tries. And another layer, whether you like it or not is to make users not use their "standard" password. More security layers: hash+random salt, SSL, password timing, logging, 2-way authentication, hiding, white-listing, ... a strong password =) Please note the difference between cryptography and password authentication though. In cryptography, a longer key is most likely always better.