The PACE protocol is a password authenticated key agreement which is widely used. For instance, in the electronic ICAO passports as the so called SAC protocol. PACE is standardised in ICAO DOC9303 Part 11.
PACE is rather complicated. For instance, it needs 2 Diffie-Hellman exchanges and a specific $G' = s*G+H$ mapping function. The complexity stems form the fact that PACE needs a function, which hashes a random value into a curve point. The function must also be timing invariant and may not lead to offline dictionary attacks.
Now I think with Curve25519 and Montgomery arithmetic we can remove all those difficulties and make a very simple PACE variant. The main reason for simplicity is that mapping a random value in the curve is easy on Curve25519. First, one can simply using that random value as the x-coordinate, because one does not have to find an x-coordinate lying on the curve. Second, Curve25519 uses the x-coordinate only. So, one does not have to calculate a corresponding y-coordinate. And finally, Curve25519 arithmetic is timing invariant.
Now let's construct the simple PACE protocol:
Let $Enc_k(x)$ be an encryption function (e.g. AES) , where k is somehow derived form a password. The same for $Dec_k(x)$ as decryption function.
\begin{array}{lcr} Terminal & & Passport \\ & & s \xleftarrow{$} \{0,1\}^{128} \\ s \leftarrow Dec_k(s') & \xleftarrow{\hspace{1cm} s' \hspace{1cm} } & s' \leftarrow Enc_k(s) \\ x \xleftarrow{$} \{0,1\}^{256} & & y \xleftarrow{$} \{0,1\}^{256}\\ h_x = s^x & \xrightarrow{h_x} & h_y = s^y \\ z \leftarrow h_y^x & \xleftarrow{h_y} & z \leftarrow h_x^y \\ \end{array}
Looks too good to be true!
So, do you see any problem here?
P.S. As Poncho made clear, this doesn’t work. But maybe someone sees an advantage of using curve22519 for PACE or any other related PAKE protocol (e.g. SPEKE).