I use a lot of different sites, and my number one security issue is to never reuse a password. As it seems that every company out there like TalkTalk is as leaky as a sieve, I figure that's the right priority. However, it places a premium on generating random passwords, and remembering them. I am not keen on writing them down, and mistrust any closed source software method of storing them ('would you like the browser to remember your password for this site?', yeah, like heck!). I don't like the idea of one piece of hardware to store my passwords. I don't like the idea of writing a program in C or Python or something, that I can't run on every device I may want to use, say at work or visiting a friend. I guess I'm pretty fussy.
So I came up with this method nearly a decade ago. It slightly surprises me that I've not seen more of this type around or even talked about, because as far as I can see, it ticks many boxes. Which has got me concerned that it isn't such a good idea after all? Are there any security flaws that I don't mention, and are the ones I mention more serious than I think?
The principle is to implement a random oracle, using SHA-1. Obviously, this approximation to it gives a finite length pseudo random answer, rather than the infinite length truly random answer of the theoretical oracle.
I am therefore relying on the ability of the hash to produce a string that's not predictable. As this is one of the design goals of cryptographic hashes, that much I trust.
Obviously the other thing I am relying on for security is the privacy of my pass phrase.
So, questions ...
2) I tend to copy the generated passwords, and paste into the box on the website (because I'm lazy). Is this a bad thing to do, or a really bad thing to do. Does not typing the password improve security against keyboard loggers, or does using the cut/paste buffer offer an easier to subvert channel and so degrades security?
3) Have I missed any big gotchas?
4) Why haven't I seen this type of password generator + rememberer talked about more, what is wrong with it?
5) I assume that my copy of SHA-1 doesn't have a back-door in it. While I haven't reverse engineered the version I found on the web to check compliance with the government published algorithm, I have run the published test input/output pairs on it, and it complies. It also doesn't seem to have an 'if input==test_case, output valid result' construct in it like VW cars have in their emission control systems. Is my reasoning valid?
6) Publishing the algorithm must reduce security, though the real security is in the master phrase secrecy and the properties of the hash. Is my reasoning valid?
7) I use passwords with significantly lower entropy than my master pass phrase. This should make it impossible to brute force my master phrase from any single password compromise. Is this right?
8) While my 3 letter / 2 digit combinations only have 12 bits of true entropy per set, using several of these groups is much better than most people do.
9) I'm not sure whether I have got a valid copyright combination given the 3rd party software I've included? My preferred license would be beer-ware.
This html runs in my browser as is, even with the leading spaces.