On Thu, Feb 14, 2019 at 12:32 AM Rich Freeman <ri...@gentoo.org> wrote:
> > > On Wed, 6 Feb 2019 04:28:49 +0800, Mark David Dumlao wrote:
> > >
> > >> My own solution is actually very simple. I have a "secret algorithm"
> > >> that incorporates several secrets with a predictable way to generate a
> > >> site-specific secret. The end result is a 100% predictable way to
> > >> generate unique passwords for every site that are cryptographically
> > >> secure from each other (you cannot derive
> > >> one from the other) which can be generated by any device using the
> > >> appropriate tools.
> I just stumbled on lesspass which seems to be such a tool for
> algorithmic password generation (lesspass.com).

Great tool. Good to know there are those that think alike. One
important point though is that in my "version", the user has to
completely know a secure algorithm (which is where all the security
comes from), with a managed tool this is only feasible for technical
users (or at least technical past a certain level). A version of
lesspass that allows users to view and customize the secret-generation
algorithm would be much more secure.

Or another way to put it might be: if an attacker knows that you're
using lesspass, then the only encryption they have to break is that on
your master password, so your security is only as strong as your
master password. On the other hand, if an attacker knows that I am
using an algorithm-generating technique, they need to break both the
master secret AND the algorithm, which could have vastly more entropy
than the master secret itself.

>
> Some thoughts regarding this approach:
>
> 1. Remembering the right "site name" for every site might be tricky -
> sites change names/URLs and you won't have any database to search.

In my personal practice, not a problem. In practice you always
remember the old site name for any common enough site. If you don't,
you reset the password to the new site name.

> 2.  The solution does allow incremental counters for sites, but of
> course that is basically state and it looks like they have a way to
> sync this somewhere, but of course that means having a cloud sync
> infrastructure and that info could get compromised (doesn't include
> the passwords themselves).

Also not an issue for me in practice. In practice you also remembr
which sites forced you to change passwords, since they're pretty much
the only ones in that class.

> 3.  Master password complexity probably matters more than for
> something like Lastpass/KeepassX.  With traditional password managers
> you need the database plus you need to crack the master password (or
> get it some other way).  With a purely algorithmic approach you can
> probably guess at all the parameters other than the master password,
> so anybody can try to crack you without stealing any data at all,

This is an issue for lesspass, because the only secret is the master
password. This is not an issue for algorithmic approaches in general,
because the algorithm is part of the secret. Every which way that you
choose to encode the intermediary steps in my example above is also
part of the secret, because none of those can be guessed from the
resulting password.

As an example, encoding "madum...@gmail.com" as the site-specific
identifier would give a completely different password than
"gmail:madumlao" or "madumlao@gmail" or "madumlao+gmail", etc. And
that hasn't yet counted any peppering which influences intermediary
hashes.

That being said, any system that depends on a master password had
better be goddamned secure. In fact, my email account - which is a
resetting point for basically all services - is exempt from my
password algorithm and uses some ridiculously long secret. Likewise,
your keepass / lesspass secrets should probably be some insane
paranoid level secret that themselves don't come from keepass /
lesspass and their alternatives.

> 4.  I'm not sure how straightforward it would be to change
> passwords/etc.  If you have 100 sites, you'd have to remember what
> password you used for what site, or change them all at once.  Again,
> the stateless approach has its downsides as passwords are not
> stateless from the standpoint of the remote sites.

Actually the generation approach is massively simpler since the
passwords themselves don't matter. If you don't like your secret, are
not sure which iteration a site is, are not sure if a site used an old
or new secret, etc, you can trigger a password reset on most services
and force it to use the current generated password. You can update any
passwords on an as-needed basis to always use the current generated
iteration.

> If you do increment passwords, well, now you just introduced state
> back in, and the "stateless" solution isn't really so.
>
> Password incrementing is an issue for any algorithmic solution - you
> need to be able to remember which password version is in use on what
> site.

If you're talking about remembering the iteration counter for a
particular site, well, yes you have to store state somewhere. But
consider:
1 very strong secret + remember that these 3 or 4 sites are on iteration X

is a LOT less headspace than
4+ independent strong secrets

and I'm pretty sure most people have logins on more than 4 sites.

If literally the only state you need to know about a site is the Nth
iteration, I wouldn't mind cloud providers knowing that because they
can't do anything about that number.

Reply via email to