> We could have one master password, use site and username (and maybe a counter, to make it easy to rotate passwords) as salt, and use a hashing or password derivation algorithm to derive a unique password for each service. This would only require you to pick and remember a strong master password.
This has been tried. While it initially sounds appealing, it is a monumentally terrible idea.
* You need software to implement the scheme.
* Rotation is a problem, you need a counter for state
* Different services have widely different password rules which are additional state
* If a site stores password data in cleartext or weakly hashed, your master password/passphrase can potentially be cracked
* People choose passphrases just as badly as they choose passwords
Just write your passwords down. Maybe leave a few characters off or don't label them.