Your procedure seems backwards.
If you store the seed ofSo your idea is to effectively turn the password generation inauthentication into a database, anyone who gets access to the database will be able to generatekey-based authentication by deriving the same password. You still need to get it out and remember/store it, so there doesn't seem to be an advantage over generatingmachine passwords from a normalsingle random password and storing a hash of itkey stored elsewhere. This would necessitateAssuming key storage is secure (probably encrypted with a brute force or dictionary attack to find thestrong password), even if your database leaksthis is sound.
Additionally, IIt would suggest that abe better fit for yourto just use-case might be asymmetric keys – the computer would generate an authenticationasymmetric key-pair, store the public key and send you the private key for laterbased authentication built into most remote access tools (cf.like ssh), so that you don't mess up anything by rolling your own crypto.
If But if you do need to generate a normaluse password authentication, your idea is not insecure either.
Actually generating the password / passphrase from a SHA-512 hash (or any seed material), it's a fairly mechanical process:
- Choose the alphabet (or dictionary). For passwords you might use hex or base64, for passphrases any conveniently sized dictionary will do.
- Choose the bit-strength. 128 bits is sufficient, but may result in quite long passwords. OTOH, there's no use making it longer than input entropy.
- Consume the input bits to generate characters/words until you have a sufficiently long password. With a hashed input like SHA-512 you can just use the first bits from either end, with a non-mixed seed you should probably hash it first (with a strong password hash if entropy is low).