On Thu, February 14, 2013 11:55 am, John Dennis wrote: > On 02/14/2013 02:34 PM, Ryan Sleevi wrote: > > On Thu, February 14, 2013 10:43 am, Robert Relyea wrote: > >> On 02/14/2013 07:54 AM, David Dahl wrote: > >>> ----- Original Message ----- > >>>> From: "Gervase Markham"<g...@mozilla.org> > >>>> To: mozilla-dev-tech-cry...@lists.mozilla.org > >>>> Cc: "Eric Rescorla"<e...@mozilla.com>, "Brian > >>>> Smith"<bsm...@mozilla.com>, "Brendan Eich"<bren...@mozilla.com>, "Ben > >>>> Adida"<benad...@mozilla.com>, "Brian Warner"<war...@mozilla.com> > >>>> Sent: Thursday, February 14, 2013 5:22:41 AM > >>>> Subject: Re: Web Crypto API(s) and what Mozilla wants / needs > >>>> > >>>> On 13/02/13 20:55, David Dahl wrote: > >>>>> The main issue is: What does Mozilla actually need here? What is > >>>>> Mozilla's official policy or thinking on a crypto API for the DOM? > >>>> As you are the Mozillian with most experience in this area, I'd say > >>>> that > >>>> insofar as we will ever have an official policy, it's likely to be > >>>> "what > >>>> you think" (after taking the input of others, as you are doing). > >>>> Please > >>>> feel empowered :-) > >>> Ah, thanks! I am however, not a 'crypto expert' and would like the > >>> actual experts to weigh in and set the 'policy' (for lack of a better > >>> word.) At this point in the game, it would seem that FirefoxOS, with > >>> it's enhanced security model, would benefit greatly from APIs like > >>> this. > >>> I am hoping that will help in garnering the resources to implement > >>> and/or develop an engineering schedule for this. > >>> > >>> -david > >> Well, I am quite pleased with the approach of providing a limited > >> controllable set of primitives that are easy to use. The encrypt/sign > >> - > >> decrypt/verify using PKI completely sounds like the right first > >> primitive to supply, along with seal/unseal. Key management/key > >> exchange > >> is the hardest part to get right in crypto. Both of these provide the > >> simplest model for managing these things. > > > > Agreed on key management/key exchange. Note that the current proposal > > intentionally largely tries to avoid these matters, for that reason. > > Instead, it operates on the presumption that the user has a Key object, > > and the question is what operations can be performed with it. > > > >> > >> I'm sure there are lots of applications where these primitives are > >> insufficient, but enabling a stable set that is easy for the > >> non-crypto > >> person to get right definately sounds like the right way to move > >> forward. (Both of these also has the advantage of allowing you to > >> define > >> API's where algorithm selection can be automatic, meaning the users > >> automatically get new algorithm support without having to change the > >> javascript application. > > > > Bob, > > > > As you mentioned, there are lots of applications where these primitives > > are insufficient. Certainly, NSS would not be in usable today for > > Firefox > > or Chromium if it adopted only the high-level approach being proposed > > (and > > as reflected in APIs like KeyCzar and NaCL). Likewise, NSS's > > highest-level > > APIs (like S/MIME) go largely unmaintained/unused, while the low-level > > crypto is used in a variety of projects (as shown at the sheer number of > > packages converted at > > http://fedoraproject.org/wiki/FedoraCryptoConsolidation ). > > > > Do you know of any applications where they *would* be sufficient? Do you > > anticipate non-crypto people to be able to use 'crypto', even > > high-level, > > for the development of an overall secure system? I'm aware of the > > arguments made in http://cr.yp.to/highspeed/coolnacl-20120725.pdf , and > > I > > certainly support a high-level API, but I don't think you avoid any of > > the > > thorny issues (algorithm negotiation, wire format, etc), and I'm not > > sure > > that the high-level API makes the overall *application* any more or less > > secure than a low-level API using recognized primitives. > > > > I guess it's my way of suggesting I'm more concerned about the places > > where "these primitives are insufficient", and I'm less convinced of the > > idea that it any more easier "for the non-crypto person to get right". > > Given your long-standing role in NSS, I'm curious your thoughts on the > > types of applications that would be able to actually (and successfully, > > and securely) use such an API. > > Sorry to butt in on a question directed to Bob, but ... > > Here's one data point. I constantly hear the complaint from developers > that NSS is too low level and using it is too hard. They wonder why > there can't be a higher level API that insulates them from many of the > quirky details they find somewhat incomprehensible leaving them with > doubts about the correctness of what they've done and dismayed at the > time it took to accomplish it. > > So yes, I think higher level API's would be welcome. I also think it > would be welcome if the high level API interfaces permitted swapping out > the low level crypto library on which they are based. Why? It's not > unusual for someone with a problem to be asked, can you use X, Y, or Z > instead and tell me if you still have the issue. That's a non-starter > for many applications unless they had the foresight to implement > "pluggable crypto", and I'm only aware of a handful of those, usually > they've hitched their horse to one implementation. >
John, Surely you're not suggesting that arbitrary web applications be able to use JavaScript to swap out the crypto library used by the browser? This is purely in the context of a Javascript API intended for both web applications AND extensions (or, in the case of B2G, B2G Apps). So there's a wide spectrum of possible applications that may be developed or wish to be developed. For example, would a B2G SSH be possible? ConnectBot is quite popular on Android - after all, AIUI, the NSS Android builds themselves rely on having an SSH app installed on the phone (Kai, is that a correct understanding?) Were you perhaps talking about a new C API for high-level crypto, that interops with multiple 'lower' level APIs (if so, what APIs?). Arguably, NSS is itself a 'pluggable' crypto - everything in pk11wrap and higher is implemented in terms of PKCS#11 - that is, not directly talking to softoken, but speaking to generic PKCS#11 modules and slots, which are a standard abstraction for crypto modules/libraries. -- dev-tech-crypto mailing list dev-tech-crypto@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-tech-crypto