Password generator differences

I have noticed that the two 1Password clients that I have been using have different character-based random password generators. 1Password 7.2.4 on macOS has sliders to select the number of digits and the number of symbols in the resulting password, whereas 1Password 7.0.9 on Android has simple toggle switches to control whether or not those character classes are included as candidates. I am curious about just how much password entropy is being sacrificed on the macOS version (where, frustratingly, it is more convenient to update passwords than on a mobile device). I was also interested in where I should set those sliders to maximize password entropy (assuming no antiquated character restrictions).

Not knowing the details of either password generator algorithm, I made some assumptions about how they work based on observation of the output. I'm guessing the Android version simply chooses a random character from the 94 printable non-whitespace ASCII characters for each position. This is trivial to calculate the possibilities. The macOS version is much trickier, because we first need to find the number of permutations of the character class entries in the resulting password. The math is a bit complicated to describe, so I won't go into it in detail here, but I did make a spreadsheet to play around with it and test my guesses.

It's possible that I've made an error (and if so, I would welcome corrections), but I'm fairly confident in what I found:

  • The amount of the decrease in entropy depends on the numbers of different character classes selected. This is unsurprising, as there are 52 letters, 32 symbols, and only 10 digits.
  • To maximize the number of possibilities in the final result, the sliders should be set so that the three character classes have the same relative ratios as their number of members. For example, in a 9-character password, the best you can do is have 5 letters, 1 digit, and 3 symbols.
  • The total amount of entropy decrease is worth noting (it can be compensated for by adding just one more character), but if there's a maximum length of, say 8 characters, you still have 9 times as many possibilities when using the simpler generator from the Android version.

I'm guessing the more complex generator is the older one, and was designed to satisfy some of those character restrictions in passwords. In my recent experience with web sites that still use those types of restrictions, this doesn't help, as they almost always have some secret list of symbols that are allowed (often different than the published list), and I need a much more specific set of controls to satisfy them. I would much prefer the version of the generator used by Android, as requires less of me and also has more possibilities for the output.

Comments

  • I should also point out that, though the passwords generated by the more complex version do have fewer possibilities, that doesn't mean they're necessarily quicker to crack, unless the attacker knows how many of each character class are included.

  • robrob Agile Customer Care

    Team Member
    edited February 20

    Hi, @gedankenexperimenter.

    Wow, I'm not sure how I didn't see this thread sooner. I gave a talk about all of this back in November at PasswordsCon in Stockholm and am very interested in the subject. :) If you watch the talk, I apologize in advance for the poor audio quality.

    You're correct on almost all counts.

    • The slider generator is the older version, yes. The plan is to replace it with the toggle version everywhere eventually.

    • Your spreadsheet correctly calculates the entropy of passwords generated on macOS given the character set sizes you used. I show an equation for this at 1:55 in the video linked above. It's slightly different from your version, but they are equivalent.

    • It looks like you got your character set sizes from our public SPG repo here: https://github.com/1Password/spg/blob/master/char_gen.go#L13. That library is what is in use by 1Password for Android, so the sizes in your spreadsheet are correct for Android.

    • However, the entropy calculation for Android is incomplete. Each enabled character set is required to be represented, so if you enable digits and symbols, for example, the generator will discard any candidate passwords that contain only letters or only letters and digits, etc. This brings the entropy down just slightly but it increases the usability of the generator since usually the intent of turning on digits or symbols is to require one of those in the resulting password. The equation for this is much more complicated than the equation for the slider version, and explaining it takes up the majority of my talk linked above.

      I'm no spreadsheet expert, but it might not be possible to write the equation there since it's recursive. If you'd like to play with it though, check out the passwordscon/demo CLI in the SPG repo: https://github.com/1Password/spg/tree/master/passwordscon. You can run ./demo --length=8 --allow=lowercase,uppercase --require=digits,symbols --exclude=ambiguous --entropy to find that the actual entropy is 48.64.

    • Finally, the Mac app uses a slightly different set of symbols than the Android app (open source SPG) . It has 29 total symbols and 21 non-ambiguous symbols, so that will tweak your numbers in the spreadsheet just slightly, in this case just from 44.68 to 45.26.

    Thanks for your post and curiosity! :)

  • If I understand correctly, the slider version of the password generator will be replaced. If so, I am disappointed that the slider version of the password generator won't be available. I need the ability to generate passwords with only digits as required by some applications and believe it or not, some sites only allow a single special character. I find I am editing the generated passwords to meet the the site/application requirements.

  • BenBen AWS Team

    Team Member

    Thanks for sharing your perspective on this @kensec. You are correct in that we are moving away from sliders. I will however mention this feedback next time we're brainstorming about the direction we're going with the password generator.

    Ben

  • jpgoldbergjpgoldberg Agile Customer Care

    Team Member

    I need the ability to generate passwords with only digits as required by some applications

    That's not uncommon, @kensec. While I don't know what the user interface (UI) will eventually look like, but I expect there to be a "PIN" mode presented in some way or other.

    The command-line utility (still very experimental days), based on the new generator does allow for this

    $ opgen characters --allow=digits --length=8
    37478343
    

    On the whole, we've been trying to simplify what is exposed in the UI in 1Password for password generation, while at the same time, we've actually made the underlying engine more powerful. This gives us the flexibility to tinker with what we do offer in the UI over time. That is, the old generator it was a "what you see is all you get". Pretty much everything that the old generator was capable of underlyingly was presented in the UI. Now that we have a more powerful underlying generator, we don't expose its full power in the UI, but we can adjust what is exposed without having the rewrite the generator engine.

    This makes comments and observations like yours very valuable, as we now have the capability to expose more features.

  • I just stumbled into this thread but learning that the generator toggles are leaving is a bit concerning since around 30-40% of the sites that I navigate to have arbitrary length and character type restrictions. So I’ll have to chime in and echo my concern as well along with @kensec .

  • BenBen AWS Team

    Team Member

    Thanks @wavesound. We want the password generator to be as helpful as possible, while not making it overwhelming or overly complex for less technically literate folks. It is a difficult balance to strike.

    Ben

  • primeprime
    edited April 15

    I saw this today in my windows computer. I like the slider so much better than what it is now. Please bring back the slider.

    Edit: I got a prompt to change one of my work password. I forgot the limitations I have. The one site Lets me have 1 number and 1 number only. So I have to “customized” the password. Please bring back the slider, it’s making more work for me.

    These are old sites and the funny part (or sad) they only work in Internet Explorer. Maybe one day they will let me add a special character to my passwords.

  • I was curious -- what are the plans to simplify password generation and provide a lot more consistency across the different interfaces. For example, I would expect that the configuration settings I have in the desktop app would be leveraged by the browser plugin. I have a LOT of applications that do not support characters like * % ? -- so I have a tendency to configure use multiple works with a valid character delimiter. The issue is, the browser plugins do not leverage the app settings so I need to forgo using the browser to generate passwords (which is rather annoying).

    Thoughts?

  • LarsLars Junior Member

    Team Member

    Hey @prime - as jpgoldberg and Ben mentioned, this is something I don't think we'll be bringing back; at least, not in that specific form. As you observed, these are older sites that will (one would hope) be updated in the not-too-distant future. Even if not, the number of such instances is decreasing over time naturally; I'm not sure how often you have to generate new passwords for the gradually-decreasing number of sites like this, but I'm not sure it makes sense to build the next (and hopefully forward-looking) iteration of the password generator around the needs of sites stuck in the past. Don't worry, however, you'll get a chance to play with things long before anything's set in cement, via the beta channel. :)

  • primeprime
    edited April 15

    @Lars I can promise these sites will not be updates anytime soon. Most enterprises companies are behind, heck one company is dealing with Windows XP at their office (thank goodness it’s not our company). This is a company who does telecommunications. I’m now dreading with the other sites I have to change my password every 90 days. So every 90 days (and not at the same time) I’m going to have to deal with this.

    This is how far behind some of the companies we works for are. One only lets me use an 8 letter password only. One (as far as I know, just this one) only lets me have 1 number. One company’s passwords isn’t case sensitive. One company I do stuff for, the screen is black and has a big green cursor.

  • BenBen AWS Team

    Team Member

    I'd bet they'd update if these poor practices resulted in a data breach that were to go public. :( In any event, we'll continue to evaluate how we can better present the UI for the password generator. As jpgoldberg mentioned above the underlying generator is quite powerful... the question is how to expose that in a way that doesn't scare off less savvy customers.

    Ben

  • @Ben,

    I've said this before and I'll mention it again. I think it would be great if the password generator had a really simple UI by default. However, in the settings control panel, there could be a toggle that exposes a power user interface to the password generator.

    I think that would satisfy Marketing's desire to keep the UI as simple as possible, but still give the customers the power that many people need today and will continue to need for the near future. I personally think that this is a good compromise that would make most people happy (you can't please everyone).

    Gord.

  • BenBen AWS Team

    Team Member

    Thanks @gordcook. As you've probably heard in other threads our development team has a fairly strong resistance to adding additional preferences / settings, strongly favoring choosing sensible defaults. That said, this may be a case where a strong argument could be made. I'll bring the topic up with development and see what the best way we can approach this is.

    Ben

  • @Ben they won’t. Sadly it’s cheaper to fix from a massive breach then to update everything. I’ve heard many IT people even say this across all the companies that my company works for. We are a small company and our stuff is more up to date than the big wigs that we work for. Sadly, everyone in the USA uses some kind of product from one of these companies.

    I like @gordcook idea. I would hate to have to get a different password manager just for my work stuff. I shouldn’t have to do all of these work arounds just to change a password.

  • LarsLars Junior Member

    Team Member

    @gordcook - it isn't just "marketing" (in fact, it's not really that at all) which makes us leery of too much UI clutter. It's a long-held and pretty stubborn belief that good design isn't (just) about how something looks, but about how it works. We've all seen more than a few examples of products whose products whose designers appear to have decided, at some point along the line, "ah, heck with it: just give 'em every option," either out of frustration or even out of a belief that more "configurability" translates into a better experience and more satisfied users. We don't think this is true, most of the time. We agree it's not our job to think for you or make 1Password too rigid or difficult to use and un-adaptable to various circumstances, but we also believe that it's our job to be creators of a first-class password management solution that can manage to be powerful enough for the more-demanding and knowledgeable users while remaining unintimidating or off-putting for newer users who deserve good security too, even if they don't know what an elliptic curve is or when it's appropriate to use cipher block chaining mode or Galois-counter mode. ;)

    We may very well end up with something similar to what you're suggesting, but don't be surprised if it doesn't include every asked-for or wished-for power user feature. It's sometimes a difficult balance to strike, between making a product that's great for beginners but no really experienced person would use, and one that's full-featured enough for "Pros," but which makes the average person feel inadequate and/or like they're in the wrong place. But striking that very balance, is our goal. :)

  • @Lars, I appreciate that you're taking it seriously. I feel like you've given us this Lamborghini, but in the future you're only going to ship with an automatic transmission. ;)

    The way I see it, to reduce the number of options, you're either going to be creating passwords that are too complex for many of our sites (forcing people to choose passwords), or cripple it down to the lowest common denominator. Neither of these are good for security as a whole.

    Anyway, I see that I've made my point so I won't bring it up a 3rd time. :+1:

  • brentybrenty

    Team Member

    :) :+1:

  • jpgoldbergjpgoldberg Agile Customer Care

    Team Member

    We've made some changes to the default symbol set used by the password generator. These haven't yet percolated to the various 1Password clients yet, but they should start to appear "any day now". The new default symbol set is [email protected]_*, while the old one was !#%)*+,-.:=>[email protected]]^_}~.

  • Given that a 70 bit poorly hashed password is going to be near the very edge what what could plausibly be cracked by any entity on earth, I feel that this reduction in strength of generated passwords for the default case is acceptable. Users can chose longer passwords.

    I would like to see an option for the old set (i.e. the implied 'non-default' case) but I understand this may be in contrast to the KISS principle.

  • BenBen AWS Team

    Team Member

    but I understand this may be in contrast to the KISS principle.

    Indeed. :)

    I would like to see an option for the old set (i.e. the implied 'non-default' case)

    Thanks for the feedback. :+1:

    Ben

Leave a Comment

BoldItalicStrikethroughOrdered listUnordered list
Emoji
Image
Align leftAlign centerAlign rightToggle HTML viewToggle full pageToggle lights
Drop image/file