]> Cypherpunks.ru repositories - govpn.git/blobdiff - doc/govpn.texi
[DOC] Explicitly note how to subscribe to maillist
[govpn.git] / doc / govpn.texi
index 5bffe87af1563ece7d4832b8a5c94d79a177f769..21656a03a9fde2aee90f4c62752d80a011a709bf 100644 (file)
@@ -139,7 +139,7 @@ clone the repository or decompress tarball and set path like this:
 
 @example
 % mkdir -p govpn/src
-% git clone https://github.com/stargrave/govpn govpn/src/govpn
+% git clone https://github.com/stargrave/govpn.git govpn/src/govpn
 or
 % tar xfC govpn-1.5.tar.xz govpn/src && mv govpn/src/govpn-1.5 govpn/src/govpn
 % export GOPATH=$(pwd)/govpn:$GOPATH
@@ -168,7 +168,8 @@ you really needs security. Moreover it is possible that those OS leaks
 information about possible PRNG states. And at least Apple OS X and
 Microsoft Windows are already known to have weak CSPRNGs.
 
-GoVPN could use it's own PRNG implementation like Fortuna, but it is
+GoVPN could use it's own PRNG implementation like
+@url{https://www.schneier.com/fortuna.html, Fortuna}, but it is
 much easier to use the right OS, to use free software.
 
 Also you should @strong{never} use one key for multiple clients. Salsa20
@@ -229,14 +230,25 @@ Ethernet frame header length, that in my case is 14 bytes long (1476 - 14).
 Do not forget about setting @code{GOMAXPROC} environment variable for
 using more than one CPU.
 
+At first you have to generate client's authentication key and client's
+unique identification. There is @code{utils/newclient.sh} script for
+convenience.
+
+@example
+% ./utils/newclient.sh Alice
+peers/9b40701bdaf522f2b291cb039490312/Alice
+@end example
+
+@code{9b40701bdaf522f2b291cb039490312} is client's identification.
+@code{Alice} is just an empty file that can help to search them like
+this: @verb{|find peers -name Alice|}. @code{key} file inside peer's
+directory contains authentication key.
+
 GNU/Linux IPv4 client-server example:
 
 @example
-server% mkdir -p peers/CLIENTID
-server% umask 066
-server% echo MYLONG64HEXKEY > peers/CLIENTID/key
 server% echo "#!/bin/sh" > peers/CLIENTID/up.sh
-server% echo "echo tap10" > peers/CLIENTID/up.sh
+server% echo "echo tap10" >> peers/CLIENTID/up.sh
 server% chmod 500 peers/CLIENTID/up.sh
 server% ip addr add 192.168.0.1/24 dev wlan0
 server% tunctl -t tap10
@@ -264,10 +276,6 @@ done
 FreeBSD IPv6 client-server example:
 
 @example
-server% mkdir -p peers/CLIENTID
-server% umask 066
-server% echo MYLONG64HEXKEY > peers/CLIENTID/key
-server% echo "#!/bin/sh" > 
 server% cat > peers/CLIENTID/up.sh <<EOF
 #!/bin/sh
 $tap=$(ifconfig tap create)
@@ -318,7 +326,7 @@ cases you have to rehandshake again.
 @item Message authentication
 @url{http://cr.yp.to/mac.html, Poly1305}
 @item Password authenticated key agreement
-@url{http://cr.yp.to/ecdh.html, Curve25519} based DH-EKE
+DH-EKE powered by @url{http://cr.yp.to/ecdh.html, Curve25519}
 @item Packet overhead
 24 bytes per packet
 @item Handshake overhead
@@ -390,19 +398,19 @@ server remembers clients address, decrypt @code{CPubKey}, generates
 number @code{RS} and 256bit random @code{SS}. PSK-encryption uses
 incremented @code{R} (from previous message) for nonce
 @item
-@verb{|enc(PSK, SPubKey) + enc(K, RS + SS) + NULLs -> Client|} [88 bytes]
+@verb{|enc(PSK, R+1, SPubKey) + enc(K, R, RS + SS) + NULLs -> Client|} [88 bytes]
 @item
 client decrypt @code{SPubKey}, computes @code{K}, decrypts @code{RS},
 @code{SS} with key @code{K}, remembers @code{SS}, generates 64bit random
 number @code{RC} and 256bit random @code{SC},
 @item
-@verb{|enc(K, RS + RC + SC) + NULLs -> Server|} [64 bytes]
+@verb{|enc(K, R+1, RS + RC + SC) + NULLs -> Server|} [64 bytes]
 @item
 server decrypt @code{RS}, @code{RC}, @code{SC} with key @code{K},
 compares @code{RS} with it's own one send before, computes final main
 encryption key @code{S = SS XOR SC}
 @item
-@verb{|ENC(K, RC) + NULLs -> Client|} [24 bytes]
+@verb{|ENC(K, 0, RC) + NULLs -> Client|} [24 bytes]
 @item
 server switches to the new client
 @item
@@ -422,11 +430,16 @@ ones.
 
 Please send all your bug requests, patches and related questions to
 @email{govpn-devel@@lists.cypherpunks.ru} mailing list.
-Visit @url{https://lists.cypherpunks.ru/mailman/listinfo/govpn-devel}
-for information about subscription options and archived messages access.
-
-Development Git source code repository currently is located on:
-@url{https://github.com/stargrave/govpn}.
+Either visit @url{https://lists.cypherpunks.ru/mailman/listinfo/govpn-devel}
+for information about subscription options and archived messages access, or
+send email with the subject @code{subscribe} to
+@email{govpn-devel-request@@lists.cypherpunks.ru}.
+
+Official website is @url{http://www.cypherpunks.ru/govpn/}, also available
+as @url{https://www.torproject.org/, Tor} hidden service:
+@url{http://vabu56j2ep2rwv3b.onion/govpn/}.
+Development Git source code repository currently is located here:
+@url{https://github.com/stargrave/govpn.git}.
 
 @node Copying conditions
 @unnumbered Copying conditions