so, essentially, you're trying to create a "key continuity" system rather than a "trusted certification" system. As you point out, the initial bootstrapping is outside the realm of what can be dealt with.
A public/private key pair could just as easily have a certificate created for it (self-signed certificate), and the add-on should be able to initiate adding the self-signed certificate to the certificate store. [The user should be prompted 'this is to allow X addon to automatically and securely update itself'.] This would allow for a standardized certificate revocation process (add-on author sends the certificate to a "revokeaddoncert" or such mailing address, perhaps signed using the private key to the certificate, stating that it is administratively revoked?) to be included in Mozilla suite updates. I would propose that a critical certificate extension be included in those self-signed certificates: 'name of Mozilla add-on'. This would allow the certificate's scope to be limited appropriately. It should also allow for the add-on's name to be blacklisted through the authorization mechanism [remember, certificates are designed to solve the authentication, not authorization, problem] even if the key is never manipulated in the user's certificate store to be 'untrusted'. The security of this system relies on two things: good key management practices at the developer side, and appropriate limitations implemented in the Mozilla software side as well. It allows for the re-use of the existing code and model in a way that does not require third-party intervention, while maintaining editorial control over badware. [For those not in the know: A 'critical extension' is a piece of information stuck in an X.509v3 certificate that is specified as 'if you don't know what this extension is, stop processing this certificate and return a certificate validation error'. When properly implemented, this would allow for the add-on update process to verify the signature of the add-on with a critically-marked certificate, without allowing that certificate to inadvertently be used for website authentication. If the critical extension includes the name of the add-on, then there comes a two-fold benefit: 1) it's cryptographically authenticated, and 2) An add-on that uses one key cannot be overwritten by any other -- for example, the 'firebug' add-on could not be overwritten by an add-on signed with a key that belongs to a 'firebad' add-on.] I will need to do some analysis to be able to describe/define the threat model against this type of system. I should point out that this is not a unique concept -- the One Laptop Per Child project insists on a key continuity management system rather than a certification authority system, though I have not looked at their threat model and analysis. Preliminarily, I like this proposal. I don't know how doable it will be, given the politics involved in the MoFo, but I think that it certainly bears looking into. (I'm suspending my own comments on the weaknesses involved until I analyze it -- but I've mentioned at least some of the already-existing pieces which can be re-used to reduce implementation time and effort.) -Kyle H On 6/14/07, Dave Townsend <[EMAIL PROTECTED]> wrote: > Hi all, I am looking for some feedback on a proposal I'm working on to > improve the security of add-on updates in Mozilla products. Let me give > an overview of the problem I wish to solve and then what I have come up > with so far as a potential solution. > > In the Mozilla applications we have an add-ons installed. I'm ignoring > how the add-ons are installed but let's assume that once there we have > some faith in them. The application periodically checks for available > updates to an add-on by downloading an update file from a url specified > by the installed add-on. > > What I want is to be able to be able to establish some trust that the > update file retrieved is correct, and has not been tampered with, > intercepted and is as it was originally written by the add-on author. > > The key problem is that I wish to do this in a way that does not cost > the add-on author any money (or at least a very small amount of money), > so getting a certificate signed by one of the root CA's is not an option > nor is serving the file from an ssl server. > > The potential solution that I am considering is by using a digital > signature. The add-on author, when he first writes the add-on creates a > public and private key. The public key is included in the add-on on > initial install. After that the private key is used to sign the update > file. In this way the application has the author's public key and can > use it to verify the signature of the update file. > > There are a few problems already pointed out: > > This all assumes that the initial add-on was not tampered with in the > first place. This is true however that is really a different problem for > the future, right now I have to concentrate on the update mechanism alone. > > If the add-on author has their private key compromised then of course we > lose all security. I don't see a real way around this but we have > certain possibilities in place (add-on blacklisting for example) that > could be called into play in such an event. > > Finally the public key for the add-on on the users machine could be > changed however in the event that someone has gained access to the users > machine I think ensuring the security of updates is a moot point. > > Now I am not an expert on cryptography so I would appreciate any > comments you have on other weaknesses in the proposal or any other > solutions or problems you think I might have missed. > > Cheers > > Dave > _______________________________________________ > dev-tech-crypto mailing list > dev-tech-crypto@lists.mozilla.org > https://lists.mozilla.org/listinfo/dev-tech-crypto > _______________________________________________ dev-tech-crypto mailing list dev-tech-crypto@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-tech-crypto