On Thu, Sep 25, 2014 at 8:29 AM, Gervase Markham <g...@mozilla.org> wrote: > A question which occurred to me, and I thought I'd put before an > audience of the wise: > > * What advantages, if any, do client certs have over number-sequence > widgets such as e.g. the HSBC Secure Key, used with SSL? > > http://www.hsbc.co.uk/1/2/customer-support/online-banking-security/secure-key > > It seems like they have numerous disadvantages (some subjective): > > * Client certs can be invisibly stolen if a machine is compromised > * Client certs are harder to manage and reason about for an average > person > * Client certs generally expire and need replacing, with no warning > * Client certs are either single-machine, or need a probably-complex > copying process > > What are the advantages?
Going back to this thread because nobody seems to have addressed the real issue - usability. Right now I am working on email encryption but solving the usability issues of email requires a general solution so I have worked on these issues as well. And I think I have solved them. Passwords have terrible security because they shift the cost to someone who does not care about security of the asset because they don't own it. I use the same password for my Washington Post, New York Times, Slashdot, etc. accounts and it was leaked over five years ago. I do not care because it isn't my asset involved. So the passwords get forgotten and no password is better than the security of the recovery system which is SMTP. Passwords are also horribly insecure because they are disclosed to validate them. Now we could solve this with some clever crypto scheme but why bother when its actually easier to design a sensible PKI scheme. Passwords also have pretty horrid usability. But they get away with it because implementation of client certificates is really, really bad. One time tokens are pretty horrid usability as well. You have to carry the thing about with you. Which I won't do unless I am paid. So most of those schemes are migrating into smart phones. TAAA-DAAA! We are now emulating 1970s technology with a computer that would have been supercomputer class in the 1990s. There is a much better way to use a smartphone, send it a message that asks "Do you want to pay your gas bill of $503.43?" and have the user answer yes or no and the app return a signed message. I am currently working on making S/MIME and PGP email really really easy to use. As in no more effort to use than regular email. As part of that I have written a tool that creates and installs a certificate. For a self signed cert the process is just run the configurator tool and its done. For a CA issued cert, the user will specify the domain name of the CA and it is done. Not even email links to click on because the configurator has control of their mail app and can do the challenge/response automatically. [There are other validation schemes supported but I won't go into them here] What I have taken out is all the makework that the user currently has to suffer. And this is not just bad for Thunderbird, it is poke the user in the eye with a sharp stick bad. It literally takes a quarter of an hour to go through all the incantations. And that is me doing it, I know what I am doing. I would expect no more than 60% of users to follow instructions correctly. And all the effort is complete makework. The user has to pull the certificate out of the Windows store and install it in T-bird. Oh and repeat once a year. Client SSL certs are just as bad and in addition the use interface is horrid like it is on every other browser. The basic problem with most Internet crypto is that the implementation is 'enterprise grade'. By which I mean terrible usability because the person who decides what stuff to buy will never use it. The problems don't require a usability lab to sort out either. In fact DON'T go to the lab. If the user is being given work to do then the design is wrong. I don't need to test out my configurator in the usability lab because there isn't a user interface to test. OK so how do we solve the usability issues Gerv raised? * Certs expire after 1 year * Transferring keys between devices? Answer: We don't. Look again at the requirements. What are the use cases that drive them? I can't see any driver for enterprise or consumer deployments. I can't even see a need to do either in the government case, but the first is probably inherited from NSA doctrine. First step to sanity is that authentication keys are only ever in one machine. If a user has two machines then they have two keys. If they have eight machines then they have eight keys. This solves two problems, first the key transport problem, second a large chunk of the revocation problem. If a device is lost we only need to affect one device, not every device. [Decryption keys are another matter, there are good reasons to have a single decryption key in multiple devices. And the reason that I got into the per device authentication keys in the first place was to enable the migration scheme for decryption keys.] So now we have a per machine certificate, how do we bind eight keys to one account? Well in PKIX thats just a matter of eight certs. What I am actually doing is a little more complicated though. I am setting up a personal PKI hierarchy for each person. At the root of the hierarchy is an offline 'life-long' master key (it can be rolled but there is no predetermined expiry). Underneath that there is an online cert signing key. So the first step to provision a device would be to issue a cert for its authentication key. That is not quite enough though, what if the device is lost? To address this issue we either use an OCSP token or make the device certs short lived and re-issue them monthly or whatever. My goal is to achieve transparent usability for Internet security. I am not tied to one particular approach or even a business model. PKI is a useful technology, but I am actually using a lot of symmetric key, Kerberos type approaches under the covers. I did not begin with 'how do we keep CAs' but giving the option to put services in the cloud allows for a better consumer experience and as the success of dropcam shows, given a cloud option, most users will take it as the easy path. The current status is that I have a lot of open source code and specs. These are linked from prismproof.org. I have the configurator running for Windows Live Mail and I will add outlook soon. But I abandoned the attempt to do T-bird because I just can't get the dev system running on my Windows box despite more than a day trying. The documentation is incomplete and misses out references to necessary tools to even build the library. The error made in T-bird is that it ignores the fact that storing keys is a platform concern. Platforms such as Windows and OSX have code and in many cases hardware to protect keys. Applications should use them. Even if they want to use their own crypto library, protecting the user should always be first. It would not be very difficult to write a driver that allows Thunderbird/Firefox to make use of keys stored in an OS secure keystore and get the benefit of hardware protection. Certainly a lot easier than writing platform specific drivers. Which is a long winded way of saying that I can show people how to fix the usability nightmare that client side certs are at present on the mozilla platform but I can't to the work myself and putting the user first might require a change in approach for the crypto stack. _______________________________________________ dev-security-policy mailing list dev-security-policy@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-security-policy