A certain website I use has a section the password to which is e-mailed to you. I'm not involved with administrating it, but I've been able to discern the algorithm used for password creation. It uses fixed-length passwords coming from a fixed charset which is then shuffled (and no character appears to appear more than once).

Here are some passwords generated using this method (some which I received): 74YRAkghvq, 499Jyvnpjz, 344WXptyit, 4AVEMzdrtp, 379Ecwuyxt.

From where I'm standing, these things just scream insecurity harder than a Hummer SUV in an urban setting. There's not much on the lockout process side either.

Am I correct in my assumption?

Edit: people are asking for a threat model - those passwords aren't one-use, they're mostly allowing repeated usage and login attempts, though, yes, it is advised on the website to change them (but can you really be sure...) So, the threat model is as follows - the attacker requests a password change and utilises bruteforce capabilities (there isn't even a captcha!) to gain access to the user's account.

  • 1
    What's your threat model? – Fund Monica's Lawsuit Jul 11 '19 at 14:06
  • 2 of your examples have duplicate characters. What I find more concerning is that digits seem to always appear at the front, but it's hard to say if this is truly a problem without knowing how exactly the passwords are generated, or at least a much larger sample of passwords. As Nic asked, what's you're threat model? If these are automatically invalidated after a week it may be perfectly fine, even given how poorly they seem to be generated. – AndrolGenhald Jul 11 '19 at 15:38
  • 1
    "insecure" for what? Microsoft uses shorter automatically generated passwords with an obvious pattern for the first password (or reset passwords) for their services, but they are 1-time use passwords that must be changed once they are used. With added bruteforce detection, the risks of Microsoft's method are extremely low. So, "insecure" for what? – schroeder Jul 11 '19 at 16:45

This looks like a programmer doesn't understand what makes a password strong. Perhaps thinking: Everyone else requires lowercase, uppercase, at least 2 numbers, and at least 10 characters total.

Website admins have trained users to think about password security the wrong way. Between the way websites deny registration based on password rules and the way other websites tell users how secure ("billions of years") their password is based on a naive formula, it appears to typical users that appending a 1 in a password that doesn't otherwise contain numbers automagically makes it much more secure.

These samples look like they were generated using a similar mindset. However, it may be the case that the programmer didn't have the option to change company password policies and decided to use the easiest password for users to enter.

Especially for mobile users. Switching keyboard layouts between letters and numbers adds an extra input that can make entering passwords tedious and error prone. You could go further and generate passwords with only lowercase letters (except for the first letter being case insensitive). Reducing the character set would require making the password longer, but the longer password would still be easier to type.)

Assume that individual characters are uniformly distributed (with different character sets) and independent. You can get a conservative estimate of the password's strength by simplifying the pattern to the following rule.

Three digits (Excluding 0 and 1)

One uppercase letter (Excluding O, L, and I)

One uppercase or lowercase (Excluding O, L, and I)

Five lowercase letters (Excluding O, L, and I)

The number of possible passwords generated is then 83 * 231 * 461 * 235. About 241.6 or three trillion passwords. That's not a strong password for cryptographic key derivation and won't stand up to offline password cracking, but it's okay for rate-limited online attacks on a website that doesn't require much security.

I assume that some letters and numbers are excluded because they're easily confused. I didn't see them in the sample passwords, so I will assume they are excluded just to be on the safe side. I could have gone further and assumed other vowels weren't use (to prevent passwords contain coincidentally offensive words) but saw that vowels are used.

I noticed samples contain 1, 2, or 3 numbers, but the total length is always 10 characters. Our set of digits is smaller than the set of plausible digits and uppercase letters. I made this simplification either because I'm too lazy to compute all the different pattern variations or because I was fine underestimating numbers.

Likewise I saw a variable number of capital letters. I assumed the first was always capitalized and that the second could be lower or uppercase. I know some samples had three uppercase letters but just treated each third letter as if it were lowercase like the final 5 are.

Because of the way we simplified this pattern, we know that the actual number of possibilities is larger. The unaccounted for variations could add a few bits to the password strength. If another user wants to calculate a less conservative estimate or exact answer, then they can submit it as extra credit homework.


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.