On 26/08/17 13:25, Brian wrote:
> How does this
> 
>  echo 'secretpassword' | sha256sum - | base64 | cut -c -30 | head -1
> 
> compare with your recommendation?

I do not see the point in this post-processing.

It seems that you have a very wrong impression of what makes a password
generation scheme be a good password generation scheme.

For any probability distribution fixed in advanced, the *expected* (in
the sense used in probability theory) entropy of a password generated
with my scheme is well defined and at least 132 bits (I wanted 128 bits,
but using Base64 the choice is between 132 bits and 126 bits because 132
is not a multiple of 6). In other words, if you take a probability
distribution and keep if fixed while generating a big amount of
passwords with my scheme, the average entropy under that probability
distribution will be at least (within sampling error) 132 bits.

This property is achieved *because* there is a source of randomness
(that we can assume, has uniform distribution and thus maximal entropy
per byte) in my generation scheme, not because of Base64. Base64 is
there just to turn the random bytes into a *short* human-readable
string. One could turn the random bytes instead into a list of words (as
long as the mapping is one-to-one) and the same property about expected
entropy would hold, but then the password would be *much* longer.

Length is the *only* reason to use Base64 here instead of using the
random bytes to choose words at random.

By contrast, your “scheme” has no systematic source of randomness. It
requires that one has already decided for a “randompassword”, and then
post-process it. If the attacker knows the post-processing, guessing
this password is at least as easy than guessing the input to the
post-processing step (plus computing the hash and encoding, but this is
negligible). Moreover, your post-processing stage loses information, as
another user has already noted. If the attacker knows your
post-processing method, he can speed the search by avoid trying the
passwords that could not be possibly generated with your method because
of this loss of information.

For example, your method will never generate a string of '0000...'
because the input to Base64 are hex digits in ASCII, which never have
the byte value 0 (0 is unprintable).

If the attacker does not know the post-processing stage, then maybe he
will eventually begin to guess that your password is an human-generated
password ran through a post-processing stage. Then very possibly your
post-processing adds security (because the attacker has to guess the
post-processing method too), but how much? *It is not well defined*. We
already talked about non-well-defined probabilities, so I will not
repeat that fragment.

-- 
Do not eat animals, respect them as you respect people.
https://duckduckgo.com/?q=how+to+(become+OR+eat)+vegan

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to