MQV (Menezes–Qu–Vanstone) is an authenticated protocol for key agreement based on the Diffie–Hellman scheme. Like other authenticated Diffie–Hellman schemes, MQV provides protection against an active attacker. The protocol can be modified to work in an arbitrary finite group, and, in particular, elliptic curve groups, where it is known as elliptic curve MQV (ECMQV). MQV was initially proposed by Alfred Menezes, Minghua Qu and Scott Vanstone in 1995. It was later modified in joint work with Laurie Law and Jerry Solinas. There are one-, two- and three-pass variants. MQV is incorporated in the public-key standard IEEE P1363 and NIST's SP800-56A standard. Some variants of MQV are claimed in patents assigned to Certicom. ECMQV has been dropped from the National Security Agency's Suite B set of cryptographic standards.
Description Alice has a key pair ( A , a ) {\displaystyle (A,a)} with A {\displaystyle A} her public key and a {\displaystyle a} her private key and Bob has the key pair ( B , b ) {\displaystyle (B,b)} with B {\displaystyle B} his public key and b {\displaystyle b} his private key. In the following R ¯ {\displaystyle {\bar {R}}} has the following meaning. Let R = ( x , y ) {\displaystyle R=(x,y)} be a point on an elliptic curve. Then R ¯ = ( x mod 2 L ) + 2 L {\displaystyle {\bar {R}}=(x\,{\bmod {\,}}2^{L})+2^{L}} where L = ⌈ ⌈ log 2 n ⌉ 2 ⌉ {\displaystyle L=\left\lceil {\frac {\lceil \log _{2}n\rceil }{2}}\right\rceil } and n {\displaystyle n} is the order of the used generator point P {\displaystyle P} . So R ¯ {\displaystyle {\bar {R}}} are the first L bits of the first coordinate of R {\displaystyle R} .
Note: for the algorithm to be secure some checks have to be performed. See Hankerson et al.
Correctness Bob calculates:
K = h ⋅ S b ( X + X ¯ A ) = h ⋅ S b ( x P + X ¯ a P ) = h ⋅ S b ( x + X ¯ a ) P = h ⋅ S b S a P {\displaystyle K=h\cdot S_{b}(X+{\bar {X}}A)=h\cdot S_{b}(xP+{\bar {X}}aP)=h\cdot S_{b}(x+{\bar {X}}a)P=h\cdot S_{b}S_{a}P}
Alice calculates:
K = h ⋅ S a ( Y + Y ¯ B ) = h ⋅ S a ( y P + Y ¯ b P ) = h ⋅ S a ( y + Y ¯ b ) P = h ⋅ S b S a P {\displaystyle K=h\cdot S_{a}(Y+{\bar {Y}}B)=h\cdot S_{a}(yP+{\bar {Y}}bP)=h\cdot S_{a}(y+{\bar {Y}}b)P=h\cdot S_{b}S_{a}P}
So the shared secrets K {\displaystyle K} are indeed the same with K = h ⋅ S b S a P {\displaystyle K=h\cdot S_{b}S_{a}P}
… excerpt ends here. Continue reading the full article.
