Microsoft says mandatory password changing is “ancient and obsolete” (2019)
arstechnica.com
arstechnica.com
>Password expiration policies do more harm than good, because these policies drive users to very predictable passwords composed of sequential words and numbers which are closely related to each other (that is, the next password can be predicted based on the previous password). Password change offers no containment benefits cyber criminals almost always use credentials as soon as they compromise them.
>Mandated password changes are a long-standing security practice, but current research strongly indicates that password expiration has a negative effect. Experiments have shown that users do not choose a new independent password; rather, they choose an update of the old one. There is evidence to suggest that users who are required to change their passwords frequently select weaker passwords to begin with and then change them in predictable ways that attackers can guess easily.
>One study at the University of North Carolina found that 17% of new passwords could be guessed given the old one in at most 5 tries, and almost 50% in a few seconds of un-throttled guessing. Furthermore, cyber criminals generally exploit stolen passwords immediately.
[1]https://www.microsoft.com/en-us/research/wp-content/uploads/...
There's still the problem of breaches in unrelated services, which must be considered as part of the attack surface when users can just use a single password anywhere. This to me seems like the most obvious benefit of expiring passwords.
Whatever human-rememberable algorithm people are using to rotate passwords, if an attacker knows a password they used at any point previously they'll get the new one quickly.
I did a consulting engagement a few years ago where we cracked 60% of passwords in a 40k user directory in under 3 hours, on a laptop. Every password met NIST complexity requirements of the time.
Would love to know how long it would take to crack
5ae2b1ce4999dfd2c8f1a57509650e75
as a password.
Hell even 5ae2b1ce4999dfd2 is probably more secure than the majority of passwords chosen by users
iOS has the right approach: they suggest random passwords in Safari and explain why, then save them in a local hardware-encrypted store with biometric quick unlock. Downside of course is they also sync to Mac and don’t have the same usability in other contexts. Windows support was recently added, but is only as secure as the TPM option and firmware of your BIOS/CPU chips and given encryption requires Pro, it’s possible some security features also require Windows 10 Pro. I’m also not sure how iCloud for Windows communicates with Chrome or if that’s been documented somewhere. https://support.apple.com/en-ca/guide/icloud/mmfeee20145e/ic...
A permanent solution is to skip the password and just use biometrics and machine identity, such as with FIDO2. Obviously not required in every scenario, but much more secure than a re-used password, even one that hasn’t yet leaked, because it might still (be leaked due to re-use, that is). Add to that tracking of which machines and locations a user logs in to for flagging suspicious “I can’t access my account,” requests etc. Encourage users to log in from more than one device if they can to help regain access automatically if a device is lost or reformatted…
So that's effectively the same thing as if the site only used FIDO2 - because that's the same technology Apple uses within Safari and other web browsers to implement Sign in with Apple.
You can do the same with your Microsoft account: https://www.microsoft.com/en-us/microsoft-365/blog/2018/11/2...
The big name left out of all this is Google. They seem to have embraced using passwords everywhere, except, oddly enough, on their passwords management website - https://security.googleblog.com/2019/08/making-authenticatio...
Every once in awhile Google Chrome will prompt me to sign in with a password, skipping the 2FA check, just to validate my identity. It's kind of pointless, really. If they can't trust my device to be secure, why are they asking me to enter a password on my device? That just weakens my account's security if they legitimately couldn't trust my device... Better to have my device validate its ID and my ID via Windows Hello or the same FIDO2-style biometrics and call it a day.
You can opt to replace any biometrics with a device-specific password that is more secure than other passwords because it never leaves the device or even an additional two-factor key, at the option of the device maker.
For example, you can use a separate FIDO2 key within Windows Hello for enterprise use cases against Azure AD instead of using biometrics to sign in to your computer.
Folks can choose what level of security they are comfortable with. For me, personally, and everyone I know, passwords are much easier to steal and reuse because they leak regularly, can be tested multiple times without consequence, and so on.
To be clear, I’m saying password managers are awesome but device-based security is more awesome. Add a local password to your device based security is more awesome still, but then so is having a friend approve your request or other additional layers of security. Biometrics are the new PIN code “minimum” not the best we can do but better than sharing one string of text with the rest of the internet and assuming it will never leak.
Note that the risk model is roughly identical if a device is lost. Just as with a compromised password, you would have to visit websites using the device directly and revoke its access. This is made simpler if you combine FIDO2 with OAuth2 because then you only need to de-enrol the device from Microsoft or Apple. OAuth2 provides an additional layer of protection because it can tell you when your device is used, and can add additional security factors such as notifying you when a login occurs that not every site might build. OAuth2 does this by replacing passwords with timed tokens depending on how it’s configured, so at minimum new tokens are logged.
The same applies to the use of short-lived credentials in AWS or other cloud providers vs using permanent secret tokens. When using permanent secret tokens, like passwords, these are often very hard to rotate without consequences because you do so very rarely. They are also subject to reuse on different machines. By comparison, a short-lived token can use machine identity on a cloud server to add an additional layer of protection, and depending on the authorization system could validate a local device, use of a second FIDO2 or biometric device, validate the server requesting delegate permissions on your behalf, and validate the duration and scope of data being accessed, all at the same time.
In highly sensitive scenarios, one could even use asymmetric encryption stored on devices to ensure that any intermediate or delegate servers cannot decrypt API responses, only the recipient of the data. Of course, you need a model to trust your client app, but App Stores notarization and containerization go a long way to making it easier to wipe and redeploy secure machines frequently, such as with every system update, optionally leaving user data alone.
If your fingerprint is compromised, where can get new fingerprints?
Device based security (like a FIDO2 key, or even a phone with an authenticator app) is great, beuacse when it's compromised, you can change it.
Biometrics though is even worse than a userID, it's public, left everywhere, and can't be changed
If your fingerprints are lifted/leaked from a glass, for example, then published, your attackers also still need physical access to the device you use biometric security against.
If that's public, such as your house front door, I agree, you've a problem. If that's your cellphone, then you have to ensure you don't leave your phone unsupervised.
The same is frankly true of other exploits that can be done in-person, such as USB attacks or PIN code screen bypass, and so on. Once you have physical access to a device, you can authenticate via many means, not just biometrics.
I'd point out that a password can also be compromised. https://xkcd.com/538/
But given a list of common words, it’s pretty easy to figure out how “Autumn2012!!!” will change with the seasons.
[1] https://google.com/search?q=0x5ae2b1ce4999dfd2c8f1a57509650e...
[2] https://google.com/search?q=0x5ae2b1ce4999dfd2+%2F+%28170+qu...
It's been a while since I fired up John the Ripper but it has low hanging fruit modes built in.
So even if you are using quite long simple alphanum strings of gibberish then seriously consider adding one or more character class into the mix eg capitals and easy to identify special chars like $£% etc.
To really go for gold why not mix entire scripts eg the usual en_* alphabet and say Bulgarian Cyrillic. Gasp as your keyboard mapper explodes! Alternatively, look into MFA.
I agree about incorporating other characters. As long as it's not "Dictionaryword1!" :) https://youtu.be/aHaBH4LqGsI
5ae2b1ce4999dfd2 is about 10^19 options.
Most passwords will come from a set of around 100 characters (52 letters, 10 numbers, about 35 symbols on my keyboard). An 8 character password would be 10^17 options.
Such experiments clearly do not introduce the use of password managers which promote the generation of long passwords with high entropy.
Specifically in the case of master login passwords, where the usage of a password manager isn't feasible (like Active Directory and Windows logins), this may be the case. And it still requires that the domain forbid PIN/biometric logins and thus result in people complaining about entering long passwords with entropy each time.
My password needs to be something I can quickly type, so I just use the same one (a strong, multiple-word passphrase) and add its validity period to the end.
This actually makes hitting arbitrary password requirements easy too; make one word capitalized (or one lowercased), separate each with an allowed symbol, and the validity period is numeric so it passes just about every security check while being easy to type and remember.
Also I can use it for various other things (like password manager secret etc) which don't support yubis out of the box.
rips hair out
One aspect though is that some people tend to use the same password in multiple places and with passwords ending up in https://haveibeenpwned.com, you might argue for periodic password changes.
These are built into common assessment tools so you'll get identical policies down to things like byte-for-byte identical PAM module config because most places just licensed one of these tools and demanded everyone use it.
Other requirements from the same section: retain old passwords to disallow dupes for at least 5 cycles, passwords must be minimum 7 chars, and contain both alpha and numeric.
You might be able to justify non-compliance with a compensating control, but I've never heard of anyone who tried it.
Note that this only applies to employees who are in PCI scope. Most internal staff are not, and should not be!
Similar policies are common for all users though. They pre-date PCI (which is how they became part of PCI DSS) and now PCI's retention of these policies justifies continued use elsewhere. The tail wags the dog.
The logical assumption is that PCI does not consider satisfaction of 8.3 to be a compensating control for the requirements in 8.2.4 -- however I've never heard of anyone who made the attempt.
...
PCI is a weird mix of requirements, evaluations, and compensations. The final authority is the PCI org themselves (i.e. the card networks), but the eval is performed by PCI-approved third parties, for report to your business partners. Requirements are extensive but not always definitive. Compensations are subjective, at best. Enforcement is sketchy but can be devastating.
The usual approach is to comply, comply, comply, and accept that some of it is policy theater, but it's rarely bad policy.
Password rotation is bad policy, but ironically it's mitigated by MFA!
The compensating control is to implement the full NIST recommendation (like enforcing an extra long password length, monitoring for compromised passwords, having a documented passphrase policy, etc...), and in your compensating control worksheet describe how those practices go above and beyond the DSS requirements. That bits quite simple, because there’s plenty of authoritative resources you can reference to justify that position.
The harder part is coming up with a justification for why you need to implement that compensating control. Because a compensating control can only be implemented to address a legitimate business/technical constraint. But that bit really just takes a little creativity.
Also, use of the term "passphrase" instead of "password" and recommending a short sentence with multiple words, casing, spacing and punctuation.
P@ssw0rd!
P@ssw0rd!2
P@ssw0rd!3
P@ssw0rd!4
P@ssw0rd!5Not plaintext, but encrypted (not hashed) with the idea that they can be used for things like that.
https://docs.microsoft.com/en-us/windows/security/threat-pro...
How can you do that with a prior password if you didn’t store it as plaintext when it was current? You can’t encrypt something you don’t have. Unless you are encrypting the old hash, not the password.
Assuming the user uses the password in other places, this can be a bad thing.
This is selfish, though. If that database of passwords leaks, they are prime candidates to test on *other* sites.
1. https://www.systutorials.com/docs/linux/man/8-pam_pwquality/
correct, you do it like that:
- h@se2003 - h@se2006 - h@se2009 - h@se2012 - h@se2103 - h@se2106
you get the point ;-) bonus points for encoding the username into it and making it a thing for the whole company, yeah very secure!
Sup3rdup3rp4ss2021Q2
One of the reasons why I want the Credit card cartels to die.
More cynically: password reuse is allowed after 5 cycles.
This way, you can't change your password more than once a day. This makes quickly cycling through to get back to your original password hard.
Next day: I can now change my password.
Turns out that I couldn't change my password the first day because it had already been changed to abcd1234 that day. I was not impressed.
Unless you had data on your smartphone or had a friend who was logged in, you were SoL.
It's why mandatory change policies are so stupid. Users will always sacrifice security for convenience.
Even those that know better.
Won't work for the Windows password, but with more and more corporations outsourcing their tools to the cloud, system account password is rapidly becoming the least important one (like it already is for most people's personal devices).
It's orders of magnitude less of a pain in the ass than password cycling.
I just did similarly within a SOC2 audit. I sent the auditors a list of 50+ articles and references i've been maintaining for years saying that password changing is a bad idea (this article is on the list) from many different sources. I never heard back and the item was marked approved by them.
https://gist.github.com/technion/65c652194fb1427e6828ea23ff4...
forcing https://www.washingtonpost.com/news/the-switch/wp/2016/03/02...
regular https://www.wired.com/2016/03/want-safer-passwords-dont-chan...
password https://practical365.com/security/microsoft-recommending-non...
changes https://www.scmagazineuk.com/end-password-expiry/article/147...
is https://www.sans.org/security-awareness-training/blog/time-p...
a https://www.ftc.gov/news-events/blogs/techftc/2016/03/time-r...
bad https://arstechnica.com/information-technology/2016/08/frequ...
idea https://www.ftc.gov/news-events/blogs/techftc/2016/03/time-r...
can https://www.schneier.com/blog/archives/2016/08/frequent_pass...
you https://cryptosmith.com/password-sanity/exp-harmful/
please https://www.zdnet.com/article/changing-your-password-regular...
stop https://www.ncsc.gov.uk/articles/problems-forcing-regular-pa...
this was one of the more cheeky version I sent to a vendor.
How is that managed? Are they hashed or stored in the clear? If they were hashed, then they would have to know which algo to use for a password at a point in time otherwise they would lose that data whenever they switched the hashing mechanism.
And when that data inevitably leaks, attackers have a nice table of passwords and metadata that will easily help them out in other places.
A solved problem with public key crypto, where you are in full control of the secret and can take your own steps to protect that.
This is why the modern approach is something you know (password, PIN) plus something you have or are given (time code, texted code, face, fingerprint) for authentication. For environments with MFA, regular password changes seem like a solution that's no longer needed. Ours is a long password changed once a year and I imagine the mandatory change will be phased out eventually.
I wonder if Microsoft employees (all or portions) have to rotate their passwords due to PCI compliance despite Microsoft's stance on the subject.
For odd historical reasons HIPAA is passive-aggressively prescriptive through the definition of secured PHI in guidance issued under the HITECH act, whereas the basic Privacy and Security Rules are less so.
> It’s more about defining what PHI is, and what the consequences are for mishandling it.
Well, the Administrative Simplification part of HIPAA (which is far from the whole thing, and which the Privacy and Security pieces are in turn smaller components of) are really more about standardizing and encouraging use of health IT in multiparty interactions in healthcare. The Privacy and Security aspects were included largely to mitigate public fear of shared, common-format digital transactions and records being a privacy risk.
I used to do a lot of contract work for the Clarke County School District in Athens, GA. For "security" reasons they weren't able to create domain accounts for people who weren't full time employees, so I'd often have to track down the IT manager to gain access to servers I was working on.
He eventually got sick of having to drop what he was doing a dozen times a day, so one day he just gave me his password: a dictionary word followed by the number 23. Eventually the password failed, and he gave me his new password: that same dictionary word followed by a 24.
Fast forward a few years and I'm back installing some updates, and before I get to work he hands me a slip of paper, on which he had written Dictionaryword29.
Attackers don't need hints on passwords, they don't need hints on targets. They just target everyone, and try all easy passwords.
Pentester here, to clear any dubious assumptions.
4-5 dictionary words with proper sentence structure is a lot safer for the most part. Random safer still, but much harder to remember... my current password for work in a sentence with 24 characters. spaces, capitals and punctuation. Other than my OS and password manager, I really don't remember any other passwords I use, and the majority are random generated at this point.
I also use a wildcard mail forwarder, so most new sites I've used in the past year or two are all unique emails as well.
In a similar vein, over the past few years whenever I've got in a discussion with IT people who defend mandatory password change policies, I ask them to give me the last password they were using before changing it. No one has ever taken me up on that.
In my experience the average password consists of 1-3 words with some meaning to the user, sometimes either in 1337speak or followed by numbers/symbols if the password policy requires them.
However, I would also not defend mandatory password change policies, so you would never end up asking me :D
† I can't tell you now because the day after I ceased working for them I sent the nice leather-bound book I write passwords down in to my Product Owner, so that the answer to all subsequent "Do you happen to remember the password for...?" questions would be "Either it's in the book which you have or No". To be fair he only called me and asked that question once, which is why he was my favourite Product Owner, "capacity to learn from experience: 10/10".
If something got a look inside your book, everything is compromised. At least by changing to another random gibberish password, an attacker would not get back in (in contrast to someone that increments a number, for example), but how much damage can something do in that time before you notice? How long do you think it takes a skilled attacker to install a backdoor (the answer is definitely less than 44 days)?
This is the second major problem with password rotation: it is false security. If credentials are compromised, immediately change them: don't wait 45 or 90 days.
If they're not compromised, changing them is basically pointless, because humans are going to human and either have an incrementing number, predictable pattern, or actual complex, random, unrelated passwords ... that they then write down.
Personally I would be much more concerned about other things - my stuff is there, not to mention often myself - but I'm sure that a vast faceless corporation would be primarily concerned with the potential for these hypothetical bad guys to learn and maybe disseminate secret passwords.
How often do you think that actually happens? It's a bit... high risk for opportunistic "cyber criminals" don't you think? Figure out where key employees live, then break in and... look for passwords they've written down and then presumably use them quickly before they're invalidated.
Writing passwords down on paper and leaving that paper in an insecure area isn't.
Your little address book full of passwords is the same as a password manager, and for a lot of people it's easier for them to manage the security of a booklet than it is to handle a password manager properly. And for those people, it's definitely worth using a book for the sake reasons we say using a password manager is a good idea
I used a book for passwords issued by that employer because at that time they lacked any in-house password manager and I foresaw from the outset that I would want to be able to hand them "my passwords" in the limited context of that employment as distinct from stuff like my personal Wikipedia account, my Google account and so on.
Besides, actually remembering your passwords is a security flaw, too. Memorable passwords are naturally less random, and if the password is in my mental memory, an attacker can compromise my password by smashing me over the kneecap with a heavy wrench until I tell them. If I don’t even know my password, that’s probably bad news for my kneecaps but slightly more secure overall.
If someone did break into my house as an act of espionage (corporate or nation state), I'd be worried about much more than just my password security.
Dictionary word with first letter uppercase, followed by two-digit number, followed by exclamation mark. With the overall length exactly being the minimum length of the policy.
I simply disabled password rotation policy on my account ノ(ジ)ー'
https://github.com/MicrosoftDocs/windows-itpro-docs/issues/5...
- Maximum length requirements (often secret until you try to put a password in)
- Requiring some symbols, but not others
- Silent truncation of the the password without telling you
- Failure because the password is too long, but the error says something else (like missing symbol)
This isn't just small unknown companies either. If you use a password longer than 32chars in Zoom when creating your account it just truncates the remaining without telling you. Login works on the websites, but if you try to login via the client it fails. If I manually backspace to 32chars it works. I tried to tell it to their US Twitter support and they just kept sending me a password reset link so I gave up (they're a bad company anyway [0]). Tmobile's website used to do the same thing, except worse because it would truncate on creation but not on validation.
How is this not standardized in some sane way?
An old credit union I was part of in NY (SEFCU) mandated passwords with exactly 6 characters. When I complained about this I was told it was secure because they forced one of the characters to be a symbol.
[0]: https://zalberico.com/essay/2020/06/13/zoom-in-china.html
> I paste in my password. It gets cut off to N characters by the form. > I paste that same password on the login page. There is no character limit on the login form.
Bonus points for truncating the password differently in the login form and the password change form. Now you can't login anymore!
> Failure because the password is too long, but the error says something else (like missing symbol)
A few years ago the local City government in Paris put out some new app to pay for parking. You'd have to create an account and give them your credit card[0]. When I say they had some ridiculous maximum password length, something like 8 characters, I decided that I could actually take the five minutes to pay in person.
I haven't tried the app ever since, so no idea if this crazy limitation is still in effect.
---
[0] There was no option to give the credit card on each payment, they had to save it on file. Of course, they weren't aware that local banks were rolling out credit cards with changing verification codes, so some cards would've had to be re-entered anyway...
Yes, when I setup my first password manager one of my banks said "max length 32" so I updated to a 32-character password. Then, when I next went to login, I found the login form had an off-by-one error and Javascript would truncate the password down to 31 characters.
I was lucky and knew just enough to be able to use the console to patch the Javascript on the fly. I complained to them and they said they'd look into it; a month later I went down to a 30-character password, to stay far away from any further off-by-one issues.
Heh...
Developer: Shoot, we've got an off by one error here. No problem, I'll just add one. Or should I subtract one?
*10 min later*
OP: That's weird, my 30 character password is now failing.
A bank with billions should have a manual process that may involve checking your identity in 20 different ways and maybe even pre-registering your whereabouts with the police, but ultimately resulting in giving you access to your account back.
I'm guessing it might take sending them a strongly-worded legal letter to make further progress.
(I mean, hey, that's if you're lucky -- otherwise System A maximum allowed PW length is less than System B minimum required PW length.)
And they add the horrible on-screen pad you have to click through (everyone can memorize it).
People working in bank regulations are truly incompetent.
For a bank?! And here I am complaining that Chase doesn't support application-based OTP. I hope you ran far far away from that CU.
I use Fidelity now and while it has issues, it's much better.
Still can't believe they were allowed to have such a bad and secret password policy for so long.
There’s a well-known bank in Australia that has been doing this for years [1]. It’s very convenient, and if there was a significant fraud risk associated with it, you’d think they would have changed their policy by now.
Someone who doesn’t care or know or care to know. If the company (or manager in some cases) doesn’t treat people right they may not do anything above the bare minimum to survive.
So the next time a problem comes up, e.g. the old password field in the database only holds 8 characters but someone sent a memo around requiring users to provide passwords of a certain length, they might just truncate the input - problem solved, now back to lunch. Or if they would have to argue or fill in a form for a new database, they might just not do it. It could even be that they have incentive for this, e.g., easier to get raise if they don’t ask for new task related things all the time.
Whenever something stupid happens I’m reminded of the movie Office Space, this happens even at FAANGs.
For pw manger based passwords sure you just cut your search space down by a lot but for human typed passwords that are words / sentences ehhh
Though it's a little bit different when it's an intentional tradeoff decision vs. just being bad at software.
In FB's case with billions of non-technical users the tradeoff is probably valid.
I'm pretty sure this behavior of capslock is pretty common across most platforms, I can't think of a platform it didn't do this on. It worked just now on a few distros of Linux and Windows, I don't own a Mac so I cannot test that for you. What platform does shift not invert the case to lowercase if capslock is on?
It does make passwords weaker. But 26^8 is still 200B. People aren't making 100B login attempts to break your case-insensitive alphabet-only eight character password.
You really don't want to rely on a breach being just the password hashes and nothing else. In the case where the adversary was able to do literally nothing other than exfil the hashes, a stronger password will help you. But is this actually a common threat model?
And if you have SMS-2FA enabled, an adversary with your password needs to sim-swap you anyway, which is doable but scales very badly.
Easier just to phish people.
I've worked at a bank, in software.
They are significantly worse at tech than other industries. They're propped up by usury, overdraft fees, slow, antiquated systems. Why does it take 3 business days to get a refund? The information moves in milliseconds today, yet it still takes 3 business days to get your money back.
Banks hold people's life savings among other things and thus, I would think, should absolutely be putting the best security to practice. Both physical (like safes and so forth) and technical.
I've heard that the reason is interaction with legacy systems.
I'm not looking this up right now, but I believe bcrypt or some 'version' or 'implementation' (excuse the inaccurate language) of bcrypt limits you to 72 characters. If that limit is not made clear to the user, then they may find it odd when their 73+ character password can have the last N-72 characters changed and still successfully log in. Silent truncation is most likely a result of ignorance on the part of the software developer (I'll admit I did not know about this limit for a long time), whereas maximum length could be the opposite.
More info on this, since I'm no expert: https://security.stackexchange.com/questions/39849/does-bcry...
I disagree. I used to have my password manager generate long passwords, but I realized that the entropy was just being clipped to 256 bits by the hash function. It's not that crazy to go over. That being said 256 bits of entropy is plenty.
If my math is correct, 256bits of hash can effectively support up to about a 36-character password, depending on how many bits of entropy you give each character.
I'll provide an edge case example to prove my point: suppose someone has a password that repeats the character 'q' 100 times, then repeats the character 'a' 100 times, and so on, until the password contains 8 randomly selected characters. This password has (slightly more than) 8 characters of entropy, right? If you truncate the password to 36 characters, the password will simply be 'q' repeated 36 times, so the truncated password will have (slightly more than) 1 character of entropy, right? But if you hash the 800-character input to a 36-character hash, the hash will contain exactly as much entropy as the input: (slightly more than) 8 characters worth.
Maybe the example with 36 characters doesn't seem realistic to you, but my previous bank (Handelsbanken) actually secretly truncated passwords to 8 characters. I was not aware of this, and I had a password that contained multiple consecutive words (like correcthorsebatterystaple). I thought I had a secure password, little did I know my password was actually a single word because of the truncation. Now, if my bank had instead hashed user inputs to an 8-character hash, and used that as the password to their legacy system that only supports passwords up to 8 characters, my password would have actually contained 8 characters of entropy.
Your chances of starting out with more entropy in a 800 char passphrase is likely to be larger than what you are likely to have when starting with a 36 char passphrase.
If you hash a 36 char passphrase then you retain most of the entropy of that 36 chars. No more no less. If you hash a 800 char passphrase then you maintain most of the entropy of that in the resulting 36 chars. Which is likely to be more.
Security risk or not. Changing your password on the idrac and it not being what's expected and having to jump into a DC to change 30+ host iDRACs was not ideal.
All because I couldn't find the bug at the time, I read it a few weeks later only after over a week of back breaking basic sys admin work.
Small bonus. It built my use case for fucking off more on premise infrastructure into the cloud.
Woah that's so secure. What if you only had 2 characters; both symbols. I'm sure that is 2x as secure.
Wouldn't it be 4x? (2^2)
Apparently it was known internally, as they used some ancient system behind the scenes that would only support a max of 8 chars, and the website just truncated your password and passed that on. The new app didn't truncate and would get an error response.
We were required to change passwords once a month, and not re-use any of our last 6 passwords.
It has always seemed like a totally pointless exercise.
I can see potential value for service accounts, as long as you have automation in place to change them where needed - but for user accounts, it's complete madness.
basepassword-2021
which they will change next year to
basepassword-2022
Because password hashing makes it impossible to retrieve the original password, there is no way to guard against people just using a basepassword and appending some type of counter to it.
Thus if there really is a breach where the plaintext password is recovered by an attacker it is trivial to find out what this year's version is.
So all you end up doing is needlessly irritating your users, for not much security.
Multifactor Authentication is a much better solution for the issues of unknown breaches.
Sure there is. In your update logic, decrement any numbers and check the hash against the existing password. Alternatively, require the existing password in the same form and you don't have to check against hashes, since you have the plaintext password right there.
People will either keep trying new strategies to embed counters in their passwords (maybe increment a letter, or multiple a number by 10), or they’ll just write the password on a post-it they keep on their laptop.
Either way you’ve now got a whole load of complicated code that makes it harder to people to create genuinely strong and memorable passwords, and no additional security.
Because it had a fairly short password cycle, I'm sure most users ended up with something like "password1!TwentyFour" then "password1!TwentyFive".
Me: I just changed my password 51 times when it was time. I'm not sure what point I was proving, but I was proud of myself.
Of course, it's also possible they stored the clear text password, I have no real way of knowing.
This is impractical if you're following good password storage practices. Assume the user's new password is 16 characters long, and that only the 95 printable characters are allowed in passwords. Then to test that the Levenshtein distances between it and the user's last 5 passwords are all greater than 1, the server would have to compute (5 * (1 + 95 * 17 + 16 + 94 * 16)) = 15,680 different hashes, which will take quite a while if you picked a secure iteration count for your password hashing function. And even if you did this, it still couldn't detect mypassword100100 -> mypassword101101 -> mypassword102102, etc. (Making sure the Levenshtein distances are greater than 2 would require checking millions of hashes.)
Presumably, you will also have a forgot password flow that allows you to change your password without entering the old one.
People will make things easy for themselves. Coming up with good passwords is hard. Having to rotate passwords just seems like a lot of busywork and people will make it as easy for themselves as possible.
SomePasswordABC SomePasswordDEF SomePasswordGHI
...
Or
My1Password! My2Password! My3Password!
...
Or
MyPasswordUno MyPasswordDue MyPasswordTre
Almost all the implementations require the old password when you change it to the new password, so it's trivial to check if they are too similar.
def changePassword(login, cleartextOld, cleartextNew):
if too_similar(cleartextOld, cleartextNew):
return new Error("too similar")
hashOld = hash(cleartextOld)
hashNew = hash(cleartextNew)
if authorized(login, hashOld):
setPassword(login, hashNew)
return new Ok();
If you're afraid of sending cleartext passwords - do the too_similar check on the client side. The users that can write their own client to bypass client-side checks are exactly the users you don't need to worry about.That's why, to encourage users to assume last month's password was compromised, when my users change their password the old password is automatically posted to twitter
/s
> Thus if there really is a breach where the plaintext password is recovered by an attacker it is trivial to find out what this year's version is.
These are contradictory statements.
Then the system could reject these on the next password change without storage of the original plaintext password.
Or, the current plaintext password is compared to the new plaintext password (normally a password change requires the current password) so you can do more sophisticated similarity checks, but only compared to the current passord, not any older ones.
The purpose of preventing similar passwords isn't to prevent a user from defeating themselves, it's to prevent an adversary from defeating the user.
Now you can rightfully argue that blocking similar passwords isn't an effective measure against an adversary, and this article kind of suggests that... but it is possible to implement such a system.
I think the idea is that most users will just choose another password if you tell them the one they entered is too similar to their previous password.
But my opinion is that ensuring creative passwords with an unclear similarity rule will only result in creative bypasses of that rule.
A better focus is on plugging the hole where the password was stolen. If it’s not plugged the password will simply be stolen again.
The reason rotating passwords is pointless is because people always end up changing their password to some easy to guess variation of the original password. If you prevent that from happening, the new password won't be guessable if you have the old one.
I am not a network guy at a cellular company, but IMO it would make more sense to use a more local gateway for outgoing connections rather than potentially routing things all the way across the country. These days people keep their number but move all over the country. It would be insane to have to route things back home every time.
Checking geo IP services on my phone usually put me in roughly the same metro area that I'm physically in despite my area code belonging to a city hundreds of miles away. That said, I just tried a lookup on the cellular network on Maxmind and it thought I was in the next state over (a couple hundred miles off).
IP geolocation services usually aren't as great as what people think. My residential home IP had probably previously belonged to some Canadian ISP as things that would base their defaults off a detected geo IP lookup would think I was in some small town in Quebec despite living a thousand miles away. IP addresses change hands, people connect through all kinds of proxies and CGNAT gateways, location databases get old.
I'm not basing it on my phone number that's for central NC and from 10 years ago, I'm going off of the geoip and the fact that I get tons of ads or sites defaulting to Atlanta for weather or local store searches if I don't allow them more device based location data.
it's the latter, not the former. once you're compromised, passwords, changed or not, are no longer an obstacle at all.
password rotation does not increase security.
If you're infiltrating a company, most people's accounts certainly don't give you the level of access required to bypass the need for passwords entirely. You'd have to be specifically hacking a sysadmin's account or something.
There are very many different levels of "compromised" and they're not all the same.
That being said, I agree with the overall premise that password rotation is outdated.
Unix-like OS in 80s-90s truncated passwords to 8 bytes, hashed in MD5 and stored them to regular file `/etc/passwd`. And in those era it was estimated to take six months to few centuries to brute force a password, therefore it was recommended to maximally complicate the password within 8 letters in length, and change it every one half the brute forcing time, or three months. Supposedly everything made sense in that timeframe in that context.
In the era when password hashes were still readable to everyone in /etc/passwd (this was later fixed by storing the passwords instead in a shadow file called /etc/shadow which can only be read by root), it was not MD5, but "crypt" (a DES variant). AFAIK, the MD5 and newer password hashing schemes don't truncate the password to 8 bytes, only traditional "crypt" did that.
https://inbox.vuxu.org/tuhs/87bluxpqy0.fsf@vuxu.org/
https://fossbytes.com/unix-co-founder-ken-thompsons-bsd-pass...
[1] https://github.com/dspinellis/unix-history-repo/tree/BSD-3-S...
People (including me) _hate_ memorizing things and would probably write an assigned password down, but isn't it better to expose passwords to nosy coworkers than to the whole internet, as is so often the case with weak or reused passwords?
We do that. We generate long random-character passwords (both for e-mail, web sites, and other accounts), and we don’t provide any online way for users to change them. If the users need to change a password, they have to contact us to do it (which is reasonable, since a big part of our value proposition is our responsive support). We only very occasionally even get such requests, and even more seldom get requests from users to set their own passwords. So far, everybody has been perfectly satisfied when hearing “No, users don’t set their own passwords. We can generate a new one for you any time you like.”.
This policy has been in effect since before my time, and I have worked here for more than 10 years. During this time, there was one user who really wanted something more memorizable for a specific account, so I set a correcthorsebatterystaple-style password on that account only. One other user had trouble adding the password to their password manager, and I had to help them do that. Otherwise, no problems.
The focus should be on preventing a security breach, not what to do after its happened.
Password rotation has always been a bad idea.
https://labs.bishopfox.com/industry-blog/2018/08/password-se...
At least one policy I am looking at maintains the 90 day rotation requirement if you use basic password authentication, but offers alternative options for compliance with other authentication features. But even most of those tend to have yearly rotation requirements.
Just imagine, maybe a subset of neurons inside your brains have amazing ideas that could change your life, but it might take decades (or never) for them to surface to the conscious level where you realize "oh, I have an idea".
How to make sure organizations are not less than the sum of their parts?
The US bank I recently opened an account with (in 2021) is in the S&P 500, publicly traded. The only form of 2FA they support is SMS or some proprietary hardware keychain LCD thing they don't give out for free (which I assume is the M+A great grandchild of those RSA TOTP fobs that were the fad in the 90s).
It's not weird. Most security organizations are wholly incompetent, doing cargo cult security nonsense "because that's the way we've always done it".
We have to adhere to outdated security practices simply because the auditors will flip out and the documented controls in government mandates. Section “10.12.3.4” says you must rotate passwords.
I wouldn't want to image a world where every website would force me to rotate my password, each with it's own interval and method. Imagine the upkeep time cost.
There's one particular website I have to log into exactly once per year. I have monthly reminders to log into and change my password anyway, lest I have to create a new account 10 months later.
No, I am not jaded or bitter on this topic. Why do you ask?
So if Microsoft Employees 1,2,3 share a password to Vendor X's system, and employee 2 moves to another part of the company or leaves, the shared password will eventually change and employee 2 won't know it anymore.
Passwords have this nasty tendency to get leaked, one of my older e-mail accounts is listed in 12 different breaches on haveibeenpwned.com
And while the ideal is not to reuse passwords, keeping that practice up with the number of accounts that are nowadays required with a somewhat digital lifestyle is kind of impossible, short of using a password manager.
But then you are locked into a password manager and gotta hope it works on all the devices you gonna need your passwords on or else you will be stuck manually putting in long and complex passwords.
If you can don't rely on passwords, use hardware security keys and protocols like U2F and other FIDO2 related protocols. Sure you might still have a pin, but now you rely much less on it so it can be much simpler.
If you can't use word phrases instead of passwords, e.g. 4 randomly selected words, and yes randomly selected for the user, not choose by the user. But with a way to "re-roll" when setting the pass phrase.
As a side effect of being more secure (then normal remembered passwords) and easier to remember. As a benefits they are also easier to insert on phones with swipe keyboards and have some nice tricks wrt. internationalization you could use. (Make sure they still work with password managers.)
Practically maybe not possible currently, but if you already rely on a password manager there is technical very little reason not to replace passwords with a U2F/FIDO like process connecting to the password manager. This might be less secure than a HSK but still nice. Ah, anyway that's currently not a think.
Lastly if your service isn't generally "security sensitive" and login sessions tend to be long consider login links send to your password reset email. Especially if combined with password-less fido auth based on the browser + TPM this can be a nice approach (you use password-reset-like links to setup password-less fido auth on the given device).
And yeah, if you think using your org domain to authenticate people on a 3rd party cloud server is a security problem, well you are not alone.
https://docs.microsoft.com/en-us/microsoft-365/admin/manage/...
Which states:
Current research strongly indicates that mandated password changes do more harm than goodIt forces users to keep inventing new passwords which they can never remember, then they end up writing the passwords on post-it-notes and sticking them on their computer screens where everyone can see.
Same issue with forcing people to use special characters in their passwords; it makes people choose passwords that they can't remember.
I've used systems where the situation became so out of control that I literally had to go through the entire 'forgot your password' (reset password) flow every single time I wanted to log in. That was the fastest way for me to log into that service.
Then somewhere else I read an IT policy that said 'You will be assigned a password by IT, do not change it.'
I have seen numerous cases of IT support asking users passwords to make fixing a machine more permanent. I have seen more than one where they kept that record.
I have also seen lots of cases of, 'I have their passwords so I can log in to their email when they are away'. We know it is stupid, but these smart people didn't.
That is why I still rotate passwords, I know some will be compromised internally. I do it on a slow schedule though.
Each time it has been a huge political battle to get people to do the most basic not insane things to have even the most basic security.
I bet there's a looot of company websites where CompanyName123 is the default password.
That kind of magical thinking is what got us mandatory password rotation in the first place.
Password rotation has a kernel of truth: automated credential rotation really works, and sometimes you need to force manual rotations to migrate to a newer hash algorithm, and I'll bring up another reason for it.
But the main reason we have password rotation is people have some magical belief that a credential gets "old" so we have to freshen it up.
Security rules are the same: they work, or they don't, and that can be very complicated due to human factors. But they don't "get old" and magically lose their effectiveness. If password rotation is broken, it's always been broken.
> Chief among them, the requirements encourage end users to choose weaker passwords than they otherwise would. A password that had been “P@$$w0rd1” becomes “P@$$w0rd2” and so on.
Not true. If they hadn't been forced to rotate, they would have stuck with P@$$w0rd1 the whole time, and P@$$w0rd2 is not weaker than that.
> At the same time, the mandatory changes provide little security benefit, since passwords should be changed immediately in the event of a real breach rather than after a set amount of time prescribed by a policy.
There is a clear benefit, especially for large enterprise systems: a periodic password change does put a limit on when the attacker could have used the password.
So when a credential is exploited, if you're rotating yearly, you only need to search back at most a year to figure out the scope of the breach.
I don't know how much of a benefit this is, in practice. Maybe someone who has done a real log dive can comment.
The only certainty is that you must never have passwords older than logs.
> If it’s a given that a password is likely to be stolen, how many days is an acceptable length of time to continue to allow the thief to use that stolen password?
They get this right.
Forced scheduled frequent password updates are not and worsen rather than improve security. That's the point here.
In environments in which data leakage probability is high, and detection capabilities poor, periodic password changes are a defensible risk-mitigation measure, though in practice unless new tokens are themselves robust, the practice backfires. The problem is that both sides of the risk calculus need to be considered --- compromised token validity period, and token strength. People being people, the first is actually the safer risk to take.
The thing is that with the requirement you can guess the last one or two characters of pretty much the entire user base. Also, if you’re constantly changing your password it possibly means that people have to type it in more often, which can lead to shorter passwords too.
While on my soapbox, I'd like to tell them that it's really dumb to count multiple attempts of the same password individually and then lock you out after you attempt the same password three times. And your most recent password should count as zero attempts. These kinds of dumb policies only hurt legitimate users and do nothing to improve actual security.
With a password manager, this process is pretty painless, if not automatic.
Mandating it for my Hello Kitty: Island Adventure account seems a bit heavy-handed though.
Rather than pulling back the recommendations, we should really be implementing open standards for automatic rotations that don't rely on reverse engineering / implementing various third party reset password flows.
Why, though? The article debunks, with evidence, the usual reasons people give for requiring rotations.
If something we doesn't measurably increase security, we should scrap it.
> The same researchers have warned that mandating password changes every 30, 60, or 90 days—or any other period—can be harmful for a host of reasons. Chief among them, the requirements encourage end users to choose weaker passwords than they otherwise would.
That is incorrect in my case since I generate random passwords, and no other evidence is cited. I would be curious what other reasons they have in mind.
I agree in general, most people may not have password managers still, but that seems like the problem to be fixing, rather than relaxing security advice.
Specifically, password managers for login passwords is a bit of a tricky subject, but that's why I hate the idea of "live" accounts, where my login password and online password are the same.
- It's something on your body, you'll notice if it's not there.
- Unintentional use / involuntary use is relatively rare.
- The hardware token can still be paired with other metrics (password/passphrase, PIN, biometrics, secondary device, OTP, geocode).
- A duress code can be included. (Memorable duress codes ... are another matter.)
- The NFC ring is itself replaceable. This solves the "ten fingers" biometrics replacement/rotation challenge. (Count Rugen gets a bonus.)
- A "ring tap" can be incorporated reasonably into most authentication workflows.
- Those unable to wear a ring directly will likly have other options that should be suitable (amputees, paraplegics, motor-neural disabilites, etc.). Disabled access should be pretty high, especially relative to altnernatives.
But yes, the initial assumptions surrounding password-based security at MIT in 1960 are all but entirely voided in present usage.
MS acknowledges and supports this, yet ad still doesn't support banned lists without serious modification and customization to ad. which no sane ad admin will allow.
I think ms is finally starting to abandon on prem ad, in favor of the less capable, and less tested azure ad. it is a shame that a staple of enterprise it is slowly dieing out without a real replacement.
in other words, the only good password is a randomly generated bitstring (just like a key!) represented as some weird almost but not quite total subset of 8-bit ascii that was based around some weak and wild assumptions that human generated text is not guessable.
this is getting out of hand.
Sounds pretty wrong to me. I think when they say "the best passwords" they mean the hardest to crack. But a password that you need to remember that's hard to remember is not a good password. It doesn't take much research to understand that passphrases are the best kind of password. 4 random words (if throttled, 5-6 if not eg for local encryption). It's a bit silly to me for this article to imply these people are spending years researching passwords, and this is what they come up with. We need to switch to client side certs already. Passwords for websites are obsolete.
After that, the advice sounds pretty correct to me.
The only thing you should remember is the password into your password manager, and if you want to add more words, by all means; I just find it quicker to type, no harder to remember, while making a dictionary attack unfeasible, by adding a character or two to the passphrase. I.e., "correct!horsebattery,staple" (though I agree that at four words you're fine anyway; I'm just saying that with a little noise thrown in I can type two or three words, plus a couple standalone, easy to remember characters for the same level of complexity)
I had a bank that expired their online banking passwords every 30 days (in spite of also having 2FA via physical token ON TOP OF THE PASSWORD). Guesss what, my password was word-number-word. I just incremented the number 10 months, then reused old numbers.
Incidentally they rebuilt their online interface and changed the tokens for new ones. The password doesn't seem to expire any more but it's still required for some reason.
We offered MFA instead including Fido 2. If password rotation is that important, you're welcome to pay for SAML support so that you can control it yourself, but the platform would not be offering it.
Example:
MyStaticPassword-2019
MyStaticPassword-2020
MyStaticPassword-2021
If an attacker knows that the last 4 characters of a password are "2021" then it is additional information which can help to possibly crack a cryptographic algorithm.
I maintain a user-facing system that expires passwords after 120 days, no exceptions, and I've tried in vain to get that restriction lifted.
Nothing worse than users blabbing details about their passwords like that.
From there every site can use a long randomized password. With 16 random characters, pure alphanumeric is more than fine sufficient to be essentially impossible to crack. If one does get compromised, such as by being stored in plaintext, nothing else is. The only way to compromise the user is to compromise the password manager key which should never leave the user's computer.
Yes it does become a master key, but email already acts like that and a well implemented password manager is far better. The alternatives all involve bad passwords, password re-use, and passwords on post-its.
My router had a random pre-generated password. It was a series of consonant vowel consonant atoms separated by numbers. That manages to be reasonably memorable and highly secure, and it's reasonably unlikely to land on something someone finds offensive.
* Password managers
* Physical objects that hold the key (credit cards, access cards)
Or, for a non-solution:
* Just get angry at anyone who forgets their password, while also insisting they never write it down (a common approach in the bad old days)
Forcing people to constantly change passwords just means they either iterate a number or write them down. It also means they start to resent the tech and people who make them do it. It helps no one.
The big obstacle to reason is baked-in policies encouraged or enforced by regulation which demand rotation.
The only proper way to detect this is if you store the last 8 password hashes for example, to check that people aren't cycling.
Next sentence:
> Microsoft is finally catching on to a maxim that security experts have almost universally accepted for years
So ... they're not bucking a major trend?
Are there any that encode generated passwords on a slip of paper that require something you know in case you lose it?
Disclaimer: worked on the design of the passwordless mfa solution set at saas pass.
Perhaps it's a general question of how to explain something to someone who is not too bright to comprehend it?
Relevant XKCD? https://xkcd.com/936/
Everyone has a personal computing device in 2021. Who is still sharing a family computer and needs to switch user accounts? How many businesses still operate with shared workstations?
Adding additional sessions (i.e. devices) to my netflix account should be as simple as scanning a QR code from an already-authenticated device with my unauthenticated device. This pattern feels magical with applications like Whatsapp web interface. It instantly works and you had to remember nothing. Virtually everything along the consumer segment could work like this.
There are obviously pedantic edge cases that we could invent all day, but there are also blindingly-obvious value paths we can go down as well. Recovery of lost devices is clearly a big issue with this scheme, but its the same resolution in any scenario. You resort to SMS/Email/Phone to re-establish your identity on the new device and use some emergency token issued as part of recovery to bootstrap the whole thing again. It's exactly the same shape problem as forgetting your password.
I also don't feel like lugging around my employer's laptop wherever I go, but I sometimes happen to need to check an email or something when I'm at a friend's house (so I can't register the device). Should I not be able to do that?
> Who is still sharing a family computer and needs to switch user accounts?
My client does. People work in shifts, it would make absolutely no financial sense to have double the number of computers. It would also be a pain to have to switch screens, etc. Or much more expensive to equip everyone with laptops.
The device you initially register on is the one that has access. Subsequent devices could chain off of that one.
If you lose a single device and have others on the same account, it's trivial to recover. If you lose all devices on the account, it's the same scenario as forgetting your gmail password. You go to some recovery page and follow steps to prove your identity again.
But the question was more along the lines of: how do you protect the lost device from being used by the thief, thereby impersonating you? You presumably need some method to let the device know it's really you.
So if it's not a password, what is it? I seem to remember an article a few years back of a group (probably the CCC, but I'm not sure) that managed to reproduce Angela Merkel's fingerprint without physical access to her fingers. Apple claims Face ID is more secure. But is it, really? I honestly don't know, and finger unlock was supposed to be secure, too. What happens if we find out it isn't?
Enter literally every mobile device unlock/security scheme since this all began.
Which is more secure in the average case today?
A) A password or passphrase, with all of its historical flaws in aggregate.
B) Apple's iOS unlock feature using a recommended/default configuration, and some 256 bit session token tucked away somewhere in secure device storage.
I would personally have a hard time answering this directly. Lots of "it depends", which tells me there are contexts where each scheme can make sense.
If you were to apply the spy movie aesthetic here, you would probably find it much easier to coax a password out of an unwilling participant than it would be to hack open a pile of cryptographic secrets you found laying on the street.
The finger unlock of my iPhone doesn't let me do everything. There are operations for which the password is required even if you have the right fingerprint.
So basically, the "security" of my phone is protected by my password.
If I know the password, but I don't have the fingerprint: I don't care, I can do anything. I can even enroll the finger I have.
If I have the finger but forget the password, I'm going to have a bad day since the touch ID feature requires me to input my password at least once a week and I cannot change the password or do any other sensitive operation.
So how does this scheme replace passwords? Sure, it's more convenient, since people don't have to type the password 500 times a day.
But will they actually use strong passwords? When I've initially set up my iPhone it asked to set up a code in addition to the fingerprint. That default was a 4 digit pin[0]. That's some high security right there.
---
[0] This was some 4-5 years ago, things may have changed. I remember seeing an article grilling Apple over this default. It was fairly easy to switch to a regular password, but we're talking about the default here, which we know is what most non-technical people will use.
85% of Americans have a smartphone. 15% of Americans do not. https://www.pewresearch.org/internet/fact-sheet/mobile/
What are the stats for other countries?
Enter email@address.com and easypassword1
You are then asked for Google Authenticator code, which is a six digit code based on a secret key and the time of day.
It generally works quite well though it's a pain if you lose your Authenticator key (stored the in a phone app usually)
The ones that deal with physical objects. Ones that control machinery, keep track of objects in warehouses and stores, etc.