3

I'd wager quite a many people are required to periodically change their passwords for certain applications or even at the office. I'd also wager that a large percentage of these people "change" their password by actually only changing a single character in the password (or just adding a character).

supersecret11 >> supersecret12
sepersecret11 >> sepersecret111

My question is, practically speaking, how much "less" secure is this than changing the entire thing? I recognize mathematically the difference can be compared and significantly less secure than changing the entire thing. My question though is, if someone gains access to a password for an account, and that password fails, is there evidence of attempts to further crack these passphrases or is it more likely that your typical hacker will move on to the next account in his list?

Further, again practically speaking, not strictly mathematically, if we were to change a password from supersecret11 to s.upersecret11, doesn't this effectively accomplish the same thing as changing the entire passphrase? (again, this is asked from a general standpoint, ignoring user-targeted attacks, focusing on "lists of compromised accounts" that hackers may gain access to)

5 Answers 5

5

is there evidence of attempts to further crack these passphrases or is it more likely that your typical hacker will move on to the next account in his list?

This depends. If the attacker can guess that your password changing schema is simply to replace a single character (maybe because he got access to your two last passwords or knows how you think) than he will probably try first to change only single characters.

And if your account looks more valuable than other accounts the attacker will try harder to crack your password. It depends just on whatever the best return of investment is.

And as for the "typical hacker": The typical hacker will adapt. There are lots of password leaks out there and these are used to find out which kind of passwords are mostly used and which kind of variations are done. These information then will be used to making the cracking attempts smarter and faster. If new leaks show a change of behavior the algorithms for cracking will be adapted again.

... if we were to change a password from supersecret11 to s.upersecret11, doesn't this effectively accomplish the same thing as changing the entire passphrase?

Whatever the schema is you use to derive your next password from the previous one it will always be weaker than just choosing a random new password. This is especially true if the attacker somehow knows the schema you are using (maybe derived from knowing your last passwords) because then he can easily create and check the few variants of the new password.

1
  • To add to the last sentence: Or, maybe derived from your post on the InfoSec stack exchange. ;) (If you're going to do this at all, don't use a predictable character or a predictable character location.)
    – Wildcard
    May 6, 2016 at 4:16
4

There is the mathematical aspect which will change depending on the number of characters used and the number you can choose from. This can be calculated for any specific password for any specific system to get part of your answer.

More importantly. For people who look at password dumps on a regular basis (penetration testers as well as a number of other security professionals), we see the patterns and know what the next likely pattern will be. For example when I see the following:

user: [email protected] password: LoveMyJob6

I'm almost always going to assume that the 6 at the end represents her incrementing a number because she's had to change a password several times. Likewise you can imagine what I'd guess her next couple of passwords are likely to be:

LoveMyJob7

LoveMyJob8

LoveMyJob9

etc...

As a penetration tester, and presumably as an attacker, yes I'm absolutely going to take this into consideration and try these first. This is just one pattern but there are many patterns that are similar. If you spend some time looking at password dumps that have been made public on sites like pastebin.com you'll start to see these yourself. You'll also be horrified at how bad a lot of passwords actually are.

Back to your question, if I'm looking to gain access to a company and have several accounts I'm also going to try to gain access to at least one account as fast as I can so yes I'm going to run all the accounts for (target organization) that I have first using the exact password I find first (because it's quick and easy to load a list like that into a tool like Hydra. After than then I'll look at variations of the current passwords, then top 1000 passwords, then look for similar words the user has on personal sites or from the industry or company website. There are other things like if the old password is a word in another language like German. I may immediately load up a German dictionary or the top 500 German words used as passwords.

Ultimately human choice isn't random so from an attackers perspective attacking the human pattern is much faster than attacking by brute-force. So yes attackers, and penetration testers, are going to go that route as far as I can.

Referencing your specific question about "supersecret11 to s.upersecret11" to me this is a small change to a pass phrase and not the equivalent of changing the entire passphrase. Mind you, yes, I'd have tried supersecret12 or something else first, but If I saw another account where the same user had also lost another password such as l.esssecret11 then I'll immediately go back and try variations than look similar.

It is tricky to measure this but since a large part of the passphrase was left unchanged I wouldn't consider it the same as changing the entire passphrase.

2

Risk analysis

All password policies render mandatory to change passwords on a regular basis. This is to reduce one risk, the risk that a password is compromised and that the owner of this password or the system using it to authenticate him wouldn't discover this compromise soon enough. Then this secret would have lost its key property. This probability of compromise of a password is increasing with:

  • use (under an unnoticed surveillance camera or nearby iPhone),
  • user errors (typing a password in the wrong interface),
  • hints which render it less secret (every derivative of a known information),
  • compromised servers (which wouldn't be able to detect it and tell it to its customers),
  • dirty servers (use of a server which does save passwords under clear text form and doesn't feel necessary to inform its customers)

and all these secret incidents are a function of time. At one point in time, you should consider that the probability that the clear text form of your password is known is really == 1.

To cover this risk you have to change it, and of course in a way so as to suppress the vulnerability: the knowledge of your ennemies. Then you have to change it as fully as possible, and I would say in a way as unpredictable as possible by any kind of ennemy you are able to imagine.

In this process, your memory might also become an hidden enemy. Lets imagine that your password is a function of time as this one:

  • year n:          ße©®e†_001
  • year n+1:      ße©®e†_002

after just one year of such a practical password scheme use, you will make memory errors between present and previous versions. And you will increase password errors and finally make it appear in many log files you can't access and erase. You will finally end yourself eroding the secrecy of your passwords.

To reduce this risk, once more, you have to change it as fully as possible. And trust me your memory will also be a much better ally with a total change than with a partial one.

1

My question is, practically speaking, how much "less" secure is this than changing the entire thing? . . (again, this is asked from a general standpoint, ignoring user-targeted attacks, focusing on "lists of compromised accounts" that hackers may gain access to)

I think this is a case where it's not good to generalize. Security is a very situation dependant field. We like to generalize to give out advice to large amounts of people, but this is a case where it really depends on the specifics.

It's in the interest of an attacker to do "the easiest thing" to get access to what they want. If the attacker has 1000 other accounts that are just as good as yours, he'll move on to find a better one, whereas if he only has 3, you're more likely to be attacked. It also depends on the resources the attacker has at his disposal. If the attacker has more attacking resources than resources to attack, you might be targeted even if the attacker has 1000.

The point being, there's not really any generalization that's terribly meaningful. It depends on what you're trying to protect, and who's going after you.

0

The other answers provide good technical information on why this is not particularly secure. But it leads us to a conclusion that's interesting in its own right:

Systems which require periodic password changes are not substantially more secure than the baseline, unless you're willing either to store old passwords unhashed (questionable at best) or to give up on the avalanche effect for your hashing algorithm (objectively bad).

Storing old passwords unhashed is, arguably, not dangerous provided the old passwords are uncorrelated with the new passwords. But the trouble is that the user is not a robot. Confronted with an error saying "your new password is too similar to your old password," the user will not simply give up and make up a brand-new random password. They will go to considerable lengths to defeat your system, changing a character here or there until they find something acceptable. At this point, the old password is a significant liability since it is still broadly similar to the new password.

(You can store the old password(s) hashed and then mutate the new password to try and "find" the old password(s), or require the user to reenter their old password right before they change it, but that just bumps this idea up from "liability" to "worthless" because the user will still defeat your system one way or another.)

This is a point of intersection between human factors and security. Yes, rotating your password properly, by creating a completely new one every time, is more secure than leaving it fixed. No, it is not realistically possible to make users do this.

Instead, you should focus on making your users' passwords secure enough that they do not need to be rotated. Part of this is applying standard technical mitigations like strong (slow) password hashing and rate limiting. But there are human elements as well. Many users don't understand what makes a good password. Good password strength meters like zxcvbn (as opposed to the crappy ones you'll find all over the web) can help with this, along with user education and engagement.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .