I was reading some questions on here regarding the correct horse battery staple method, and the conclusion was that, assuming any words in the list of most common English words, every word adds about 10-11 bits of entropy, so the XKCD method was relatively correct in their conclusion.

Now, how much secure would that password be if you added random noise (actual random noise, generated from a proper PRNG) to that string? Say, for example, I had correct horse battery staple as my password (ignoring the fact this sentence is pretty common) and then I added some noise, so I get 3orrezt hors bat8ery s9appe@. How much more secure did it actually become? Or is there no point worrying about this kind of thing anyway?

Also, what about adding a small password inside the bigger sentence, for example, correct $58j#O1, battery staple?

  • How did you add this noise? That's what determines the extra entropy. – Gilles 'SO- stop being evil' Aug 21 '15 at 22:24
  • @Gilles As I said, using a secure PRNG. For example, say rolling a dice with n sides (where n is the number of characters in the string), and then rolling another dice with, say, 96 sides and changing the original value to the value obtained with the other dice. (BTW, I don't mean real dices, just a CSPRNG device). – MKII Aug 21 '15 at 22:56
  • The question is, what did you do with the output of the RNG? How do you choose which characters to change, what do you change them to, etc.? – Gilles 'SO- stop being evil' Aug 21 '15 at 23:10
  • @Gilles Like I said, the CSPRNG decides both which characters to change, and how they are changed. The idea would be to allow the generator to do all the work, so as to avoid reducing the entropy (since humans are biased). – MKII Aug 21 '15 at 23:14
  • I have a feeling that 2 years from now, we're going to be seeing "correcthorsebatterystaple" up in the list of "Top 10 worst passwords" along with "password" and "asdf1234". People tend to take these things very literally. – Nic Barker Aug 22 '15 at 0:34

Use enough entropy then there's nothing to worry about.

For an 80 bit password just choose 8 random words.

Using your

correct $58j#O1, battery staple

technique with CSPRNG, assuming your password section is over the full character range (96 chars) then you have 10 bits + 6.5 * 7 + 10 + 10 = 75.5 bits.

These are both under the assumption the attacker knows your generation method. In reality they don't so this adds an immeasurable amount of entropy for an untargeted attack.

  • In both examples, it became significantly stronger.
  • However, the original was almost assuredly strong enough
  • And by adding the randomness you generally blow up the "easy to remember/type" value in the diceware/xkcd style password
  • if you need more entropy,either add more words, or use a password manager with a completely gibberish password.

Silverlight Fox's calculation uses the zxcvbn measurement, which assumes the attacker knows your method. As they said, in reality they don't so you effectively moved the attack space from the already large diceware space, to the full brute force space, for a XX length password.

But you get almost that same benefit by adding a SINGLE RANDOM CHAR anywhere in the list that isn't from the diceware list. Once you have added that single char, the additional chars add 6.5 bits of entropy each, but you already massively increased the difficulty of cracking the password


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.