On Sep 6, 2007, at 11:24 PM, Nelson Bolyard wrote: > No other success stories? > Are there really no other readers of this list using their own > personal > crypto devices for reading/writing signed and/or encrypted email? > > Maybe NSS is way overkill for the needs of mozilla users? > > _______________________________________________ > dev-tech-crypto mailing list > dev-tech-crypto@lists.mozilla.org > https://lists.mozilla.org/listinfo/dev-tech-crypto
Nobody uses it because nobody understands it. Nobody understands it because nobody understands legalese. Everything associated with cryptography (the way it's practiced today) has to do with legalese -- knowing the legal identity of an entity so that you could perhaps later sue them for some unknown reason. Everyone prefers to use unsigned/unencrypted systems because they are less complex to set up. They are more invisible -- they don't needlessly throw up messages about 'warning!'s that exist outside of the sender's or receiver's control (have you ever tried to use signed messages via Outlook Express over Hotmail? They append a Hotmail footer to every message body, which invalidates the signature). They are less frightening -- "what do you mean, my full legal name and address and everything is going to go out for anybody to read?!" [the envelope information isn't kept secret in PEM, and certificates are sent unencrypted via TLS unless an anonymous cipher's used first and then a full protocol renegotiation with certificate presentment occur after the anonymous cipher is established]. They have fewer moving parts that all have to be set up in just the right way. Frankly, cryptography as implemented everywhere is a failure. Nobody understands PGP, nobody uses it. Nobody understands NSS (or the underlying concepts of X.509), nobody uses it. We only buy the certificates for our servers because of the "Netscape Tax" -- the requirement that Netscape built into its browsers that every server must have a valid X.509 certificate signed by a pre-approved entity that Netscape contracted with. The user didn't even get the chance to choose what entities to trust until later -- and that process is still so arduous that no user would really want to try to learn how to. Enforcing this concept that X.509 (and the X.500 naming hierarchy, and everything associated) is the One True Way is certainly the only way to keep the US military, or governments in Europe, in tune with it -- but really, the requirements that the usage model impose create a hardship for everyone else who's trying to use it for non-Legal purposes. Nobody should have to be so rigidly regimented when they try to use it unless they're trying to adhere to Legal requirements. The amount of information in a certificate is staggering. It takes training to be able to read an actual certificate ["what's this "S=Kyle Hamilton,[EMAIL PROTECTED],CI=Las Vegas,ST=Nevada,C=US" mean? Do I speak for the City of Las Vegas simply because I'm located here in the X.500 Directory structure?]. It takes tools that most people have never heard of or used to be able to get anything useful out of a certificate (openssl asn1parse being one of them). The certified information is so hidden by the chrome of every application that uses it that it's only the most truly paranoid people who look at it anyway. ...and even then, the information they need to see isn't put in front of their face when they double-click the lock icon, they instead get a completely worthless explanation of just what 'security' (in the context of an un-wiretappable TCP connection) means. It takes at least one more click to see the information that the X.509 certificate is supposed to certify. And now, we have laws that protect childrens' information. This means that if a kid goes to a site that accepts certificate-based authentication, then they've suddenly made the operator of that site liable -- they don't even get the chance to say "we don't want kids' information" unless they design their webservice really well. So now, client-side certificate-based authentication systems are now too risky to put in place. (On the flip side, we now have Sarbanes-Oxley and other requirements, so we have business needs that non-business users need to not have to deal with.) It's very, very disheartening to see everyone beat their heads against the same structural walls that they've built around themselves when the reality is, the use of cryptography just cannot become a sustainable, thriving, useful, ubiquitous, invisible technology until these design flaws are worked out. I believe that NSS -- overkill as it may be for most users at this time -- does provide very useful functionality for anyone who might be interested in looking at alternative information which might be held in a certificate. Cryptography, as a whole and holistic concept (everything that goes into it), needs a thorough, systemic revamping in every system that has been designed to use it. NSS (and TLS in general) has shown a very important thing: it's possible to get TLS- encrypted TCP connections that Just Work, regardless of what ciphers or versions are supported by either side, or even if neither side authenticates itself with a certificate. The rest is based on cryptographic verification of asserted information, and a securable data store. That's really what it boils down to. Scary, isn't it? But, it paves the way for different information to be put into it, a reimagining of what authentication can mean, of what identification can be. (I should point out that I actually like having the legal information of an entity that I do business with available, but I've also been finding that some things I'll take the risk of not having that information specifically available. The credit card industry has all but completely and voluntarily dropped the liability for fraudulent transactions against credit cards to zero, at least in the US that I've seen... and it's very easy to file a complaint against an e- tailer that doesn't send the right goods or sends no goods at all. So even the threat of monetary loss isn't there to make people recognize the importance of knowing who they're dealing with.) TLS, btw, is the only cryptographic protocol that the IETF has gotten even remotely right. PEM? A joke. IPSEC? Even worse. None of the current institutional applications imagined by cryptographic protocol designers is in wide use. I don't think that the designers of these protocols have intentionally tried to make the situation bad, and I think they're all intelligent people. What I do think, though, is that his suggests a bit of a flaw in the common mode of thinking among them. We don't need a technology, in the non- Legal environment, that provides Legal information and only Legal information. We need a technology that can flexibly contain broad types of data, and we need systems that can flexibly deal with the data that is presented. Perhaps more importantly, we need flexibility in our thinking of what the important ideas of identity are, per-context. I've touched on three separate pieces, so far: usability, interoperability, and the threat model employed. I'll touch on usability a bit more, then compare X.509 with another, newer, more- well-implemented technology, and then I'll get off this soapbox. I was just browsing around the Apple Downloads site, under the Networking and Security division. I saw an entry for something called "SimpleAuthority", a software to ease the pain of running a Certificate Authority. Intrigued, I downloaded it, and I ran it. And... well, it's every bit as simple to operate as its name promises. (Unfortunately, it's not open source, and it caps at 6 different people for whom to issue certificates.) We need easier-to-use software to manipulate the secure repositories for our certificates. We need a reason for people to want to manipulate those repositories in order to see just what it means that the user interface is "bad" -- but they won't want to until an easier- to-use system exists. Why does it have to be so difficult to create a CA? Why does it have to be so difficult for the CA to get you to generate a CSR? Why does it have to be so difficult for you to get the certificate into your software once it's issued? And why is there such a concept of a 'signed certificate' being a magical and mystical string of bits that only an approved entity can issue? [I can see X.509 -- when used for legal identification/ authentication purposes -- having a need for such approval. I can't see such approvals necessary for any situation that doesn't have legal identification/authentication requirements... such as logging into a website, or signing messages as being from a member of the website. In that case, the website stores its database of authorized users, and the website should issue certificates to its users as the authority for the identity domain.] At the moment, OpenID is more useful and usable than X.509. OpenID was developed in the last 5 years. X.509 has had multiple iterations for over twenty years. OpenID also has implementations for what it does, implementations that are actually useful. X.509... well, doesn't, really. Why can't we change that? Why can't we point to any specific application of X.509 and say "this is what it lets us do"? I would submit that OpenID actually has a use, that people can use as it stands. X.509, the PKI needs to be put in place and then all the applications out there need to be built to support that as an authentication mechanism, and then each user needs to individually be enrolled. Thus, OpenID has the 'low barrier to entry' concept in place. However, there are three things that X.509 allows, that OpenID does not, that could be used as leverage for integration. First, it allows offline use. (OpenID requires that you are online to verify the authentication.) Second, it allows for a knowledge- based authentication server versus a location-based authentication server. (This can be used for anything that needs to be built such that attacks against a location-based authentication service are completely mitigated. It also allows for situations where online/ location-based authentication would have too much overhead.) Third, it allows for cryptographic knowledge protocols to be used. (bit- commitment and such.) These are my views on cryptography as a practiced art as it stands today. I have been explicitly focusing on the non-Legal environments (Legal with a capital L, to suggest the industry/environment rather than as a description of a type of act or environment -- i.e., situations where you need to know who signed a contract versus situations where you don't.) I am very sorry if I offend anyone with these views. -Kyle H _______________________________________________ dev-tech-crypto mailing list dev-tech-crypto@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-tech-crypto