[curves] Forward secrecy with "triple Diffie-Hellman"

Tony Arcieri bascule at gmail.com
Tue Apr 8 18:17:40 PDT 2014


Trevor described this idea to me once and I haven't really seen it written
down anywhere. It's an alternative to something like the CurveCP handshake
for a transport encryption protocol which provides forward secrecy by
deriving a unique session key each time using ephemeral D-H keys. It
couples authentication to confidentiality in ways that might bother some,
but at the same time is incredibly simple and I think that's an advantage
in and of itself.

Let's say Alice has the following elliptic curve D-H keys:

a: long-lived private key
A: long-lived public key

Alice will also generate a' and A' for each session, which are short-lived
session keys.

Bob likewise has b, B , b', and B' respectively.

Alice can do:

  a * B' || a' * B' || a' * B

(The "*" character here represents Curve25519 scalar multiplication)

Bob can do the reciprocal operation and derive the same shared secret
string:

  b * A' || b' * A' || b' * A

These secret strings can then be used as input to a KDF to create a session
key.

If these keys haven't been tampered with in-flight, Alice and Bob should
derive the same session key, and can authenticate each other via their
long-lived public keys.

Does this seem correct, and if so, does anyone know of any literature on
this approach?

-- 
Tony Arcieri
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://moderncrypto.org/mail-archive/curves/attachments/20140408/f6b0eb84/attachment.html>


More information about the Curves mailing list