I am working on a Golang code similar to Signal protocol. I need to modify it. I am confused on tripartite Diffie-Hellman handshake part of code, i.e. why public key has two separate parts as compared to private key which has only one part in bytes as shown below. I can more info if needed. Thanks.
-
1$\begingroup$ Start with a primer on elliptic curve cryptography? $\endgroup$– Squeamish OssifrageMar 24, 2019 at 22:24
-
1$\begingroup$ And consider using Noise if you need to design a new protocol? $\endgroup$– Squeamish OssifrageMar 24, 2019 at 22:24
-
$\begingroup$ Thanks a lot. A lecture on cryptography made me understood it. $\endgroup$– Tahir AbbasMar 24, 2019 at 23:20
1 Answer
The answer to this question is simple. In simple words, in elliptic curve cryptography, the public key is calculated by multiplying the private key value $s$ with the base point $G$, which results a point on the elliptic curve point: $W = s \cdot G$. This point consists of has two values on the x-axis and one on y-axis if the curve is considered to be within a 2D coordinate system.
Here is a link which gives a good idea of it: ECC with Diffie-Hellman.