It's certainly true that as technology improves and the mechanisms we build to secure things evolve new keys need to be used in order to stay up-to-date. But this amounts to secret rotation that aligns with evolving systems not arbitrary 90-day expiration policies. Much different argument.
Keys should not be rotated.. security strategies should.
I'd prefer 2FA and (allowing / encouraging) longer / stronger passwords over change policies.
The two are not mutually exclusive. If you require users to change passwords regularly, and also make sure the new password is sufficiently different from the last one (like, most characters must be different or something), guess what the users are likely to choose of their own so called free will.
And I'm not even speaking of how you must store a password to be able to tell that a new password is sufficiently different from all the old ones. (Hint: probably plaintext.)
> […] "forced" password expiration [is] often the only way to ensure that the end user actually updates their password regularly.
That does not work. I have defeated it in my last gig with this simple method:
Complicatedpassword1
Complicatedpassword2
Complicatedpassword3
Complicatedpassword4
Complicatedpassword5
And I will do it again, because a complex password that never changes is much more secure than random crap that I will have to simplify just so I can remember it. Also good luck trying to defeat my strategy (or similar strategies) without storing more than a hash of the password, properly generated with a memory hard function like Argon2.Enter Old Password: Complicatedpassword1
Enter New Password: Complicatedpassword2
Sorry, your new password is too similar to your old password.
(Passwords are still stored and verified using hashing, but with a form like this, your most recent and new passwords are available in plaintext for comparison when you make the change.)
Complicatedpassword1
PasswordComplicated1
Complicatedpassword2
PasswordComplicated2
Complicatedpassword3
PasswordComplicated3
And if that fails, they win. Clearly they don't care about security, so I'll use a weaker password. And I will note it on a post-it and keep it in my wallet.It is fair to point out that the relevance of this is dependent on your attack model. If you suspect someone is trying to crack your password then just a longer password is fine. If you suspect a leak then you actually need to change/update password.
Users who don't care will still choose bad passwords, this is why 2FA is important :)
Forced periodic password rotation was mainly security theatre. Most users just choose sequence passwords, so an attacker who gets one can easily work out the others.
If you then take counter-measures to stop obvious sequences, you're heading into seriously user-unfriendly password policies, which is the kind of thing that gives security a bad name.
Far better to make use of 2FA at that point.