]> Cypherpunks.ru repositories - govpn.git/blobdiff - doc/handshake.texi
Encode public keys with Elligator before sending over the wire
[govpn.git] / doc / handshake.texi
index 6f1e37e32a72098cb00abb3b28238fe8ae1cfcf2..0b7f4bd840dea447bbaaab0d5e895c26f59165b9 100644 (file)
@@ -23,19 +23,20 @@ Client computes verifier which produces @code{DSAPriv} and
 @item
 Client generates DH keypair: @code{CDHPub} and @code{CDHPriv}.
 Also it generates random 64-bit @code{R} that is used as a nonce for
-symmetric encryption.
+symmetric encryption. @code{El()} is Elligator point encoding algorithm.
 @end enumerate
 
 @strong{Interaction stage}:
 
 @enumerate
 @item
-@verb{|R + enc(H(DSAPub), R, CDHPub) + IDtag -> Server|} [48 bytes]
+@verb{|R + enc(H(DSAPub), R, El(CDHPub)) + IDtag -> Server|} [48 bytes]
 
 @item
 @itemize @bullet
 @item Server remembers client address.
-@item Decrypts @code{CDHPub}.
+@item Decrypts @code{El(CDHPub)}.
+@item Inverts @code{El()} encoding and gets @code{CDHPub}.
 @item Generates DH keypair: @code{SDHPriv}/@code{SDHPub}.
 @item Computes common shared key @code{K = H(DH(SDHPriv, CDHPub))}.
 @item Generates 64-bit random number @code{RS}.
@@ -43,11 +44,12 @@ symmetric encryption.
 @end itemize
 
 @item
-@verb{|enc(H(DSAPub), R+1, SDHPub) + enc(K, R, RS + SS) + IDtag -> Client|} [80 bytes]
+@verb{|enc(H(DSAPub), R+1, El(SDHPub)) + enc(K, R, RS + SS) + IDtag -> Client|} [80 bytes]
 
 @item
 @itemize @bullet
-@item Client decrypts @code{SDHPub}.
+@item Client decrypts @code{El(SDHPub)}.
+@item Inverts @code{El()} encoding and gets @code{SDHPub}.
 @item Computes @code{K}.
 @item Decrypts @code{RS} and @code{SS}.
 @item Remembers @code{SS}.
@@ -64,9 +66,9 @@ symmetric encryption.
     @item Server decrypts @code{RS}, @code{RC}, @code{SC},
     @code{Sign(DSAPriv, K)}.
 
-    @item Compares @code{RS} with it's own one sent before. Server
+    @item Compares @code{RS} with its own one sent before. Server
     decrypts @code{RS}, @code{RC}, @code{SC} with key @code{K}, compares
-    @code{RS} with it's own one sent before.
+    @code{RS} with its own one sent before.
 
     @item Verifies @code{K} signature with verifier @code{DSAPub}.
 
@@ -80,7 +82,7 @@ symmetric encryption.
 @item
 @itemize @bullet
 @item Client decrypts @code{RC}
-@item Compares with it's own one sent before.
+@item Compares with its own one sent before.
 @item Computes final session encryption key as server did.
 @end itemize