I'm sure it can, because SRP (secure remote protocol) can be implemented everywhere where Diffie-Hellman works, but I need a proof to put this aspect into Wikipedia.
Edit: ok, can it be at least partially moved to elliptic curves?
Cryptography Stack Exchange is a question and answer site for software developers, mathematicians and others interested in cryptography. It only takes a minute to sign up.
Sign up to join this communityI'm sure it can, because SRP (secure remote protocol) can be implemented everywhere where Diffie-Hellman works, but I need a proof to put this aspect into Wikipedia.
Edit: ok, can it be at least partially moved to elliptic curves?
SRP needs more than a group, it requires a field. See the specification: second user sends $B = v + g^b$. This requires two operations, addition and multiplication. You cannot trivially slap that onto a group which provides only one operation, such as elliptic curves.
Variants of SRP which use elliptic curves have been proposed, but do not seem to have reached wide acceptance or even substantial scrutiny yet. See for instance this proposal. Also, this article gives some details (e.g. it claims to break a previous proposal for an EC-based SRP variant).
The DH operations in the SRP algorithm cannot simply be replaced with 'equivalent' ECDH operations.
In DH, we generate a public key A
from a private key a
like so:
A=pow(g, a, n)
where pow(g, a, n)
is g^a mod N, and g and N are known constants
In ECDH, we generate a public key A
from a private key a
like so:
A=point_mult(a, g)
where point_mult
represents EC point multiplication, a is a scalar, and g is a known generator point on the elliptical curve.
Let's see what happens if we simply try to replace every instance of DH A=pow(g, a, n)
in the SRP algorithm with ECDH A=point_mult(a, g)
.
In the SRP algorithm, the server generates the server session key as follows:
S_s = pow(A * pow(v, u, N), b, N)
where A was previously calculated as A=pow(g, a, n)
, and v was previously calculated as v=g^x
. So the above equation could be written as:
S_s = pow(pow(g, a, n) * pow(g^x, u, N), b, N)
or
S_s = pow(pow(g, a, n) * pow(g, u*x, N), b, N)
Focusing on just pow(g, a, n) * pow(g, u*x, N)
from the above equation, if we replace the DH operations in this expression with their 'equivalent' ECDH operations, we would have:
point_mult(a, g) * point_mult(ux * g)
And, therein lies the problem. The above expression is the product of two points on an elliptical curve. But, in elliptical curve math, there is no way to multiply two points. We can add two points, and we can multiply a point by a scalar - but we cannot multiply a point by another point.
pow(g, a, n) * pow(g, u*x, N)
becomes point_mult(a, g) * point_mult(ux * g)
- no; that would become point_mult(a, g) + point_mult(u*x, g)
, where '+' is point addition, which is perfectly well defined. The reason SRP doesn't translate immediately to elliptic curves comes earlier, when B needs to compute B = (v + g^b) % N - the + there is 'field addition', which elliptic curves do not have a corresponding operation
$\endgroup$