- From: Wendy Seltzer <wseltzer@w3.org>
- Date: Mon, 14 May 2012 13:53:11 -0400
- To: "public-webcrypto@w3.org" <public-webcrypto@w3.org>
(I'm not sure why this didn't go through directly, since Eric is subscribed as an Invited Expert -- perhaps with a different email address?) -------- Original Message -------- Date: Mon, 14 May 2012 16:07:28 +0000 From: Eric Rescorla <ekr@rtfm.com> The Netflix use case document posted by Mitch shows an example of a DH key exchange designed to create a secure key between Alice and Bob without the JS getting it. To support Diffie-Hellman key exchange using WebCrypto, we might do something like this: // In this example, we use the following webcrypto APIs: // DiffieHellman object ctor // DiffieHellman(p, g) // // (member function) generate() internally creates a & returns A // a is never visible in Javascript // generate() // // (member function) computeSS() takes B & calculates ss // computeSS(B) // example usage of above APIs to create ss var dh = new DiffieHellman(p, g); var A = dh.generate(); // we now send p, g, and A to the server which responds with B // after receiving B we generate ss which stays inside our dh object dh.computeSS(B); At this point, we have created a shared secret which is inaccessible to Javascript, but we cant yet do anything useful with it. In order to transform the shared secret into something usable we need to use a key derivation algorithm (RFC 2631? or something simpler?) to compress or expand the keying material ss to keying data which is the appropriate size for some other algorithm." I agree that this creates a shared secret not known to the JS, but what stops the JS from mounting a MITM attack. I.e., it generates it's own DH key pair (c, C) and provides C to boththe local browser and the remote end. At this point, it shares K_ac with the browser and K_bc with Bob. Absent some method for verifying that a DH share came out of a compliant browser, it's not clear to me what security benefit has been achieved here. -Ekr
Received on Monday, 14 May 2012 17:53:25 UTC