[pass] generate passwords natively instead of dependency
Brian Candler
b.candler at pobox.com
Tue Nov 15 11:37:28 CET 2016
On 14/11/2016 21:27, ilf wrote:
> Here's a simple way to generate passwords from /dev/random directly in
> shell:
>
> tr -dc "[:graph:]" < /dev/urandom | head -c 32
Aside: even though urandom doesn't block, I still think it's a really
bad idea to consume 4KB or more of data from it to generate a single
password.
As it says in the random(4) manpage:
Users
should be very economical in the amount of seed material that
they read from /dev/urandom
(and /dev/random); unnecessarily reading large quantities of
data from this device will have
a negative impact on other users of the device.
The amount of seed material required to generate a cryptographic
key equals the effective key
size of the key. For example, a 3072-bit RSA or Diffie-Hellman
private key has an effective
key size of 128 bits (it requires about 2^128 operations to
break) so a key generator only
needs 128 bits (16 bytes) of seed material from /dev/random.
While some safety margin above that minimum is reasonable, as
a guard against flaws in the
CPRNG algorithm, no cryptographic primitive available today can
hope to promise more than 256
bits of security, so if any program reads more than 256 bits
(32 bytes) from the kernel ran-
dom pool per invocation, or per reasonable reseed interval (not
less than one minute), that
should be taken as a sign that its cryptography is not skilfully
implemented.
So if you want to generate a 32 character password, using a 95 character
set (6.57 bits of entropy per character), then you should consume 210
bits from /dev/urandom - no more. Then you should deterministically map
those bits to the desired output character set - not just throw away
good quality random bytes which don't match the 'tr' pattern.
This is something which is easy to do in a good general-purpose
programming language, which the shell is not.
(In any case, passwords don't need 210 bits of entropy. 128 is more than
enough)
Regards,
Brian.
More information about the Password-Store
mailing list