> On 01/04/2012 03:51 PM, Brian Smith wrote: > > Ryan Sleevi wrote: > >> IIRC, libpkix is an RFC 3280 and RFC 4158 conforming implementation, > >> while non-libpkix is not. That isn't to say the primitives don't exist > >> - > >> they do, and libpkix uses them - but that the non-libpkix path doesn't > >> use > >> them presently, and some may be non-trivial work to implement. > > It would be helpful to get some links to some real-world servers that > > would require Firefox to do complex path building. > Mostly in the government. They higher 3rd parties to replace our current > path processing because it is non-conformant. In the real world, FF is > basically holding the web back because we are the only major browser > that is not RFC compliant! We should have had full pkix processing 5 > years ago!
To echo what Bob is saying here, in past work I saw problems on a weekly basis with non-3280 validating libraries within the areas of government, military, and education - and these are not just "US-only" problems. The 'big ideas' of PKI tended not to take off commercially, especially in the realm of ecommerce, but huge amounts of infrastructure and energy has been dedicated to the dream of PKI elsewhere. While you talk about the needs of Firefox with regards to NSS' future, I think it is important to realize that libpkix is the only /open/ implementation (at least, as far as I know) that even comes close to 3280/5280, at least as is available to C/C++ applications. The next closest is probably Peter Gutmann's cryptlib, which unfortunately is not widely used in open-source projects. Note, for other languages, you have Sun/Oracle's Java implementation (which libpkix mirrors a very early version of, as discussed in the libpkix history) and the Legion of the Bouncy Castle's C# implementation. These are the same customers who are often beholden to keep IE 6/ActiveX around for legacy applications. So while much energy is being put forth (including from Microsoft) to move these organizations to 'modern' systems that can support a richer web, if their security needs can't be met by Firefox, then there will be a problem (or, like Bob said, they'll make their own - and weigh that as a cost against switching from MSFT). A couple examples would include the GRID project (which uses a cross-certified mesh - http://www.igtf.net/), the US government's Federal PKI Bridge CA ( https://turnlevel.com/wp-content/uploads/2010/05/FederalBridge.gif ), and the DOD/DISA's PKI setup. The layout of the DOD PKI is fairly similar to those among various European identity card PKIs, with added cross-certification for test roots so that third-parties can develop interoperable software. However, even outside the spectrum of government/enterprise, you still see issues that 3280/5280 address better than the current non-libpkix implementation. EV certificates (and soon, the CA/B Forum Baseline Specifications) rely on proper policy OID validation - but the failure to match the OID is not a validation failure, it's just a sign of a 'lesser' level of identity assurance. CA key rollover is incredibly common. Likewise, as CAs buy eachother out, you end up with effectively bridge or mesh topologies where they cross-certify eachother for legacy systems. As far as "non-TLS-compliant" servers, I think that's an oversimplification. It relies on the assumption that 1) There is one and only one root certificate 2) the server knows all the trust anchors of the client. Both statements can be shown to be demonstrably false (just look at how many cross-certified verisign or entrust roots there are, due to CA key rollovers). So there is no reasonable way for a server to send a client a 'complete' chain, nor to send them a chain that they can know will validate to the clients trust anchors. At best, only the EE cert matters. For all of these reasons, I really do think libpkix is a huge step forward - and it's many nuances and bugs can be things we should work on solving, rather than trying to determine some minimal set of functionality and graft that onto the existing pre-libpkix implementation. Speaking with an individual hat on, there are only a few reasons I can think of why Chromium /wouldn't/ want to use libpkix universally on all supported platforms: 1) On Windows, CryptoAPI simply is a more robust (5280 compliant) and extendable implementation - and many of these government/enterprise sectors have extended it, in my experience, so having Chromium ignore those could be problematic. 2) On Mac, I haven't had any time to explore developing a PKCS#11 module that can read Keychain/CDSA-based trust anchors and trust settings. I would be absolutely thrilled to be able to use libpkix for the Mac implementation - Apple's path building/chain validation logic is horrid (barely targets RFC 2459), and they're on their way to deprecating every useful API that returns meaningful information, over-simplifying it to target the iOS market. This has been a sore point for many Apple users in the US government, so being able to better support their needs would be great for Chromium - and Firefox. The archives at http://lists.apple.com/archives/fed-talk/ give a good idea of some of the needs and complaints about Apple's lack of PKI robustness. Having worked on commercial software targeting these customers, and having use a variety of both open and closed-source crypto libraries in the past, I really do believe there is a huge value to developers in having libpkix and having it work well - but unfortunately that value can be hard to articulate, due to what are very closed/secretive environments in which this software gets used. To further expound on the value of libpkix (while also being /very/ aware of its many deficiencies), I would love to see the original goal of also having an OpenSSL-compatible libpkix implementation available. This would make libpkix a huge value-add for languages like Python/Perl/Ruby/PHP/etc which expose C-bindings, and potentially "fix" many of the security issues I see being introduced time and time again (no name validation, no basic constraints validation, no date validation, etc). So while I understand and appreciate the Firefox/NSS-centric view, I don't think that's the only perspective needed to look at libpkix. -- dev-tech-crypto mailing list dev-tech-crypto@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-tech-crypto