Key Exchange
In TLS, the first step towards obtaining TLS session keys is to compute a shared secret between the client and the server by running the ECDH protocol. The resulting shared secret in TLS terms is called the pre-master secret PMS
.

Using the notation from Wikipedia, below is the 3-party ECDH protocol between the Server
the Requester
and the Notary
, enabling the Requester
and the Notary
to arrive at shares of PMS
.
Server
sends its public key toRequester
, andRequester
forwards it toNotary
Requester
picks a random private key share and computes a public key shareNotary
picks a random private key share and computes a public key shareNotary
sends toRequester
who computes and sends toServer
Requester
computes an EC pointNotary
computes an EC point- Addition of points and results in the coordinate , which is
PMS
. (The coordinate is not used in TLS)
Using the notation from here, our goal is to compute in such a way that
- Neither party learns the other party's value
- Neither party learns , only their respective shares of .
We will use two maliciously secure protocols described on p.25 in the paper Efficient Secure Two-Party Exponentiation:
A2M
protocol, which converts additive shares into multiplicative shares, i.e. given sharesa
andb
such thata + b = c
, it converts them into sharesd
ande
such thatd * e = c
M2A
protocol, which converts multiplicative shares into additive shares
We apply A2M
to to get and also we apply A2M
to to get . Then the above can be rewritten as:
Then the first party locally computes the first factor and gets , the second party locally computes the second factor and gets . Then we can again rewrite as:
Now we apply M2A
to to get , which leads us to two final terms each of which is the share of of the respective party: