Frank Hecker wrote:
Ian G wrote:

One way to short-circuit this is to simply state that the root CA is responsible for any/all subroots. So this would imply that the root CA's policies and audit drill down through the subroots, and they apply. Then, it would be up to the root auditor to decide whether a subroot needed a separate audit or not.

I think this approach would be good if we were starting from a greenfield environment. However I think in the current CA environment we're faced with a situation where in practice roots don't necessarily always accept direct responsibility for the actions of their subordinates (or for those of other root CAs that they've issued cross certificates for).

Hmmm... So, who takes responsibility for these CAs, or is this part of the unanswered question?

Is there some agreement with the subsidiaries? Is the agreement submitted as part of the Mozo review?


From a practical standpoint the issuance of subordinate CA certificates or cross certificates has been seen as more of a technical issue: "A needs to treat B as a subordinate CA because B wants/needs to take advantage of A's inclusion in IE/Firefox/etc."


Right.


This predominant attitude toward subordinates is a defect to be sure. The question is, to what extent (and in what circumstances) is it a security-relevant defect.


and, to whom? Obviously, the security of the subordinate CA is well improved by this "defect" ;)


One problem with this is that it might also not be realistic. Consider two CAs, one of which does "style A" and another does "style B". In the doco and audit for the root CA, there will be a need somehow to capture that distinction. The natural direction here will end up that the root's policies will tend to say "see the subroot's policies for more detail."

Right, and that's a quite common situation: There will be a root CA that really acts just as a convenient "gathering point" for a bunch of different subordinates to get CA certs from, with the root's policies just having to do with subordinates, and every relevant to end-entity certs pushed down to the subordinate CAs. This is the model for a lot of government-sponsored PKIs where the PKI is not just government-specific but serves as an unmbrella for commercial and nonprofit groups to set up their own CAs under the government-operated and-authorized root.


Yes, and at a technical level I don't see an issue. At a legal/liabilities level I see an open question: who is taking on the liability, how is it shared, etc.


Either way we look at it, I feel that the more controls are put in place, the more we end up putting in "paper fixes" and the more we complicate things for a gain that we don't fully understand.

Yes, and I'm going to use your comment as a jumping off point for a broader comment:

We have traditionally treated CA inclusion as a security issue, with the purpose of evaluating CAs for inclusion to ensure that we didn't suffer major security vulnerabilities due to CA actions or omissions. However I could also make the case that the CA is less like the other security-related stuff we do (e.g., security testing, fixing reported vulnerabilities in the code, etc.) and more like what we've been doing in the licensing/copyright area.

OK.


I think there's general agreement that browser exploits are a "clear and present danger", and it's worth our spending whatever time it takes to make sure they're fixed as expeditiously as possible. Over on the legal/licensing/copyright front, there are certainly bad things that could happen to us, like getting code in the tree that was not authorized by the creator, getting code in that was under an incompatible license, and so on. Based on our experience and judgment over time, we've deemed it adequate to set up some safeguards in place: having formal license policies and a formal committers agreement, having people vouch for others seeking commit access, and so on. However we haven't gone overboard with double- and triple-checking everyone who contributes code, vetting every single code contribution for legal issues, and so on. This would greatly raise the bar to getting code contributions from people, and we just don't see that as being justified based on experience and the perceived risks.

So, which is the better model for including CAs? I'm beginning to think that the licensing/copyright situation is perhaps a better model for us: set up a documented framework, perform some reasonable due diligence, and be transparent in terms of what we're doing (as happens when approving new committers), but when making judgment calls err on the side of inclusion rather than exclusion.


This is an interesting approach and I certainly don't disagree with the basic thrust. If anything I would say that there isn't one "superior model" but there are aspects from both models (bugs v. licence) that can help, or there are aspects from both models that we are sorely missing.

I also think it helps a lot to define the target of the security model. Who are we trying to protect? I say the end-user (and have said so in recent documents) rather than say Mozo or the CA or whoever else we might encounter in the path.

If one were to then ask about how certs and CAs can present risks, liabilities and obligations, as well as benefits and protection to the end-user, it is not entirely clear how this is done. Not only is the UI somewhat and arbitrarily opaque as to who the CA is, there is no clear legal relationship with the CA.

So, CAs might make a good case for end-user benefit; but this all comes to nought because the end-user has no relationship with the CA. So if anything goes wrong there is no apparent way to perfect the benefit / loss. And, according to some schools of thought, if you can't perfect it, it doesn't exist.

If I was captaining the good ship CA Policy, I would look for this sort of added clause:



x. The CA makes an offer to typical end-users of our product (perhaps similar to an open source licence).
      i.   it should be clear, understandable and accessible;
      ii.  it should offer permission to USE the certs;
      iii. it should cover everyone who has no other agreement;
iv. it should state that there is no other permission, in absence of an agreement that is specifically entered into by the user.

   x. The offer to end-users should disclaim all liability.

x. CAs may have other arrangements for customers and others who have higher needs.



The nice thing about this is that it is pretty much in place already. Major CAs have some form of RPA on their site, and they match the terms above, more or less, already.

Now, if this were to be standardised as Mozo-level policy, it clears the way for a number of other fixes.



This does somewhat put the finger on the relationship between the CA and Mozilla. Currently, this is an informal agreement based on the policy, bug filing, and other communications. What might be better is a single document (or mod to the policy) that specified what the complete agreement was (listing the others). In this we could typically include the disclaimers of liability, and how we would deal with the disputes, e.g., over the activities of the CA's wilder subroots, and at an extreme level, any root revocation at Mozilla's discretion.

I'd like at some point to consider formalizing our relationships with CAs, e.g., through some sort of formal legal agreement associated with Mozilla including a root. That would take a bit of work and involve a number of people to get it done right,


I'm not actually sure a "formal legal agreement" is needed. Although we understand the lawyers like to have these things reviewed and signed in blood to the Nth degree ... we should also note that the whole open source regime is gaining a lot of traction as a respectable legal tradition, and there is no formal contract involved there.

From which I would say that a good model is to simply state the policy as a "posted notice" with a clause that states "by submitting your root to the bugzilla for consideration, you agree to the terms and conditions of this policy." Adding that sort of clause to the policy should be a lot easier than trying to craft some sort of "mutual agreement."


and unfortunately I have more pressing priorities right now in the CA area. (Basically: getting requests processed in a timely manner and doing the work necessary to have someone else take over these duties sometime in 2009.)

However I think these sorts of discussions are useful, as they will provide good context if/when we actually get down to drafting a formal CA agreement.


Yes, I understand that it will require some serious work to do this. When we saw this at the CA I know, it took a good year to write the framework, another year to get it approved, and then the rollout is still going on.

If we can toss the principles around in advance, it might be easier.

iang
_______________________________________________
dev-tech-crypto mailing list
dev-tech-crypto@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-crypto

Reply via email to