]> Cypherpunks.ru repositories - govpn.git/commitdiff
[DOC] Refactoring and more russian translation
authorSergey Matveev <stargrave@stargrave.org>
Sun, 31 Jan 2016 11:16:27 +0000 (14:16 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Sun, 31 Jan 2016 15:26:09 +0000 (18:26 +0300)
Signed-off-by: Sergey Matveev <stargrave@stargrave.org>
43 files changed:
NEWS.RU [new symlink]
THANKS [changed from symlink to file mode: 0644]
TODO [changed from symlink to file mode: 0644]
doc/Makefile
doc/about.ru.texi
doc/about.texi
doc/client.texi
doc/contacts.texi
doc/cpr.texi
doc/developer.texi
doc/download.texi
doc/egd.texi
doc/encless.texi
doc/example.texi
doc/faq.ru.texi
doc/faq.texi
doc/handshake.texi
doc/identity.texi
doc/index.texi [moved from doc/govpn.texi with 81% similarity]
doc/installation.texi
doc/integrity.texi
doc/media.texi
doc/mtu.texi
doc/netproto.texi
doc/news.ru.texi [new file with mode: 0644]
doc/news.texi
doc/noise.texi
doc/pake.texi
doc/precautions.texi
doc/proxy.texi
doc/russian.texi [new file with mode: 0644]
doc/server.texi
doc/sources.texi
doc/stats.texi
doc/style.css
doc/thanks.texi
doc/timeout.texi
doc/timesync.texi
doc/todo.texi [deleted file]
doc/transport.texi
doc/user.texi
doc/verifier.texi
doc/verifierstruct.texi

diff --git a/NEWS.RU b/NEWS.RU
new file mode 120000 (symlink)
index 0000000..85f9daf
--- /dev/null
+++ b/NEWS.RU
@@ -0,0 +1 @@
+doc/news.ru.texi
\ No newline at end of file
diff --git a/THANKS b/THANKS
deleted file mode 120000 (symlink)
index 7862103b6ce3dcb94d50a3a99cf56a073679a89e..0000000000000000000000000000000000000000
--- a/THANKS
+++ /dev/null
@@ -1 +0,0 @@
-doc/thanks.texi
\ No newline at end of file
diff --git a/THANKS b/THANKS
new file mode 100644 (file)
index 0000000000000000000000000000000000000000..740d6b38109de82880f578dc99b093d94460f264
--- /dev/null
+++ b/THANKS
@@ -0,0 +1,6 @@
+* Applied Cryptography (https://www.schneier.com/books/applied_cryptography/) (C) 1996 Bruce Schneier.
+* Strong Password-Only Authenticated Key Exchange (http://tnlandforms.us/cns05/speke.pdf) (C) 1996 David P. Jablon.
+* Augmented Encrypted Key Exchange (https://www.cs.columbia.edu/~smb/papers/aeke.pdf): a Password-Based Protocol Secure Against Dictionary Attacks and Password File Compromise (C) Steven M. Belloving, Michael Merrit.
+* Watson Ladd <watsonbladd@gmail.com> for suggestion of Elligator (http://elligator.cr.yp.to/) encoding.
+* Password Hashing Competition for Argon2 (https://password-hashing.net/#argon2).
+* Chaffing and Winnowing: Confidentiality without Encryption (http://people.csail.mit.edu/rivest/chaffing-980701.txt) (C) Ronald L. Rivest
diff --git a/TODO b/TODO
deleted file mode 120000 (symlink)
index e8b79ff7bcccc2d0ab0409382a279d9b0ddf963e..0000000000000000000000000000000000000000
--- a/TODO
+++ /dev/null
@@ -1 +0,0 @@
-doc/todo.texi
\ No newline at end of file
diff --git a/TODO b/TODO
new file mode 100644 (file)
index 0000000000000000000000000000000000000000..2ecafb04518cb20354d7c44ac67daf0579a20fbf
--- /dev/null
+++ b/TODO
@@ -0,0 +1 @@
+* Randomize ports usage
index e68437a4e8229a75d987426f678847ad5ac5d8a8..d51a84341651772baaebf27b094a6a2ae76a9569 100644 (file)
@@ -6,8 +6,12 @@ handshake.utxt: handshake.txt
        plantuml -tutxt handshake.txt
 
 govpn.info: *.texi handshake.utxt
-       $(MAKEINFO) govpn.texi
+       $(MAKEINFO) index.texi
 
 govpn.html: *.texi handshake.utxt
        rm -f govpn.html/*.html
-       $(MAKEINFO) --html --css-include=style.css -o govpn.html govpn.texi
+       $(MAKEINFO) --html \
+               --css-include=style.css \
+               --set-customization-variable SHOW_TITLE=0 \
+               --set-customization-variable DATE_IN_HEADER=1 \
+               -o govpn.html index.texi
index f24725c73063e738ff897567c7a973d2a94d2802..5bb7995e03967ecae194ef37d9486f45b563ed60 100644 (file)
@@ -1,10 +1,5 @@
 @node О демоне
-@cindex About (russian)
-@cindex Description (russian)
-@cindex О демоне
-@cindex Описание
-@cindex Вступление
-@unnumbered Подробнее о демоне GoVPN
+@section Подробнее о демоне GoVPN
 
 GoVPN это простой демон виртуальных частных сетей, код которого нацелен
 на лёгкость чтения и анализа, безопасность, устойчивость к DPI/цензуре.
@@ -12,8 +7,10 @@ GoVPN это простой демон виртуальных частных с
 @itemize
 
 @item
-Свободное программное обеспечение, копилефт: лицензировано под условиями
-@url{https://www.gnu.org/licenses/gpl-3.0.ru.html, GPLv3+}.
+@url{https://www.gnu.org/philosophy/free-sw.ru.html, Свободное программное
+обеспечение}, @url{https://www.gnu.org/philosophy/pragmatic.ru.html, копилефт}:
+лицензировано под условиями @url{https://www.gnu.org/licenses/gpl-3.0.ru.html,
+GPLv3+}.
 
 @item
 Быстрый сильный @ref{PAKE, аутентифицируемый по парольной фразе}
@@ -22,7 +19,7 @@ GoVPN это простой демон виртуальных частных с
 A-EKE (Diffie-Hellman Augmented Encrypted Key Exchange)).
 
 @item
-@ref{Verifier structure, Ð\9dеÑ\81баланÑ\81иÑ\80ованнÑ\8bе Ð°Ñ\83Ñ\82енÑ\82иÑ\84икаÑ\86ионнÑ\8bе Ñ\82окены}
+@ref{Verifier structure, Ð\9dеÑ\81баланÑ\81иÑ\80ованнÑ\8bе Ð²ÐµÑ\80иÑ\84икаÑ\82оÑ\80ы}
 устойчивые к внесетевым (offline) атакам по словарю. Используют
 усиленный по CPU и памяти алгоритм хэширования. Злоумышленник не может
 замаскироваться под клиента даже скомпрометировав базу данных токенов
@@ -50,7 +47,7 @@ A-EKE (Diffie-Hellman Augmented Encrypted Key Exchange)).
 
 @item
 Защита от атак повторного воспроизведения (replay) (используя
-одноразовые MAC и опциональное условие синхронизации времени).
+одноразовые MAC и опциональное условие @ref{Timesync, синхронизации времени}).
 
 @item
 Встроенные функции пересогласования ключей (ротация сессионных ключей) и 
index 25f0f12dc9e3e9f74ef441df11048478c11418a3..a3ed945f20c1037a72260c9a641594736a766c1d 100644 (file)
@@ -1,16 +1,15 @@
-@cindex About
-@cindex Description
-@cindex Introduction
-
 GoVPN is simple free software virtual private network daemon,
 aimed to be reviewable, secure and
 @url{https://en.wikipedia.org/wiki/Deep_packet_inspection, DPI}/censorship-resistant.
 
+See also this page @ref{О демоне, on russian}.
+
 @itemize
 
 @item
-Copylefted free software: licenced under
-@url{https://www.gnu.org/licenses/gpl-3.0.html, GPLv3+}.
+@url{https://www.gnu.org/philosophy/pragmatic.html, Copylefted}
+@url{https://www.gnu.org/philosophy/free-sw.html, free software}:
+licenced under @url{https://www.gnu.org/licenses/gpl-3.0.html, GPLv3+}.
 
 @item
 Fast strong @ref{PAKE, passphrase authenticated} augmented
@@ -44,8 +43,8 @@ indistinguishable from the noise with optionally hidden packets length.
 property.
 
 @item
-Replay attack protection (using one-time MACs and optional time
-synchronization requirement).
+Replay attack protection (using one-time MACs and optional
+@ref{Timesync, time synchronization} requirement).
 
 @item
 Built-in rehandshake (session key rotation) and heartbeat features.
index 654ec98bd555010439a310746fb0e21decae29af..5b0ae2b7fda2723894f76a765641ae736c656f95 100644 (file)
@@ -1,22 +1,16 @@
 @node Client
-@cindex Client
-@cindex Client part
-@cindex Client configuration
-@cindex Client side
-@cindex Configuring client
-@cindex govpn-client
 @section Client part
 
-Except for common @code{-stats}, @code{-egd} options client has the
-following ones:
+Except for common @ref{Stats, -stats}, @ref{EGD, -egd} options client
+has the following ones:
 
-@table @code
+@table @option
 
 @item -mtu
 Expected TAP interface @ref{MTU}.
 
 @item -proto
-@ref{Network, network protocol} to use. Can be either @emph{udp}
+@ref{Network, Network protocol} to use. Can be either @emph{udp}
 (default) or @emph{tcp}.
 
 @item -proxy
@@ -61,7 +55,7 @@ Optional path to script that will be executed after connection is
 established. Interface name will be given to it as a first argument.
 
 @item -down
-Same as @code{-up} above, but it is executed when connection is lost,
+Same as @option{-up} above, but it is executed when connection is lost,
 when we exit.
 
 @end table
@@ -69,11 +63,11 @@ when we exit.
 Example up-script that calls DHCP client and IPv6 advertisement
 solicitation:
 
-@example
+@verbatim
 client% cat > up.sh <<EOF
 #!/bin/sh
 dhclient $1
 rtsol $1
 EOF
 client% chmod +x up.sh
-@end example
+@end verbatim
index c6915ef350944909647745d6c69d37e541ff78fe..3f96135deda517e4fc4fd734226e15b455504a1b 100644 (file)
@@ -1,9 +1,4 @@
 @node Contacts
-@cindex Contacts
-@cindex Feedback
-@cindex Support
-@cindex Help
-@cindex Maillist
 @unnumbered Contacts
 
 Please send questions regarding the use of GoVPN, bug reports and patches to
index f4259f80511e1e4173d1ec00974c7363629f2c76..5afe83b94b42527f92b57787efb3b4ac85271993 100644 (file)
@@ -1,12 +1,10 @@
 @node CPR
-@cindex CPR
-@cindex Constant Packet Rate
 @subsection Constant Packet Rate
 
 Constant Packet Rate is used to hide fact of underlying payload packets
 appearance. In this mode daemon inserts necessary dummy packets and
 delays other ones.
 
-This mode is turned by @code{-cpr} option, where you specify desired
+This mode is turned by @option{-cpr} option, where you specify desired
 outgoing traffic rate in KiB/sec (kibibytes per second). This option also
 @strong{forces} using of the @ref{Noise, noise}! It is turned off by default.
index 30dd12f312c9bd5e38ba7dcd6c400b6504a0f533..4293f800c06d8084790c564e26768c911d4509a4 100644 (file)
@@ -1,7 +1,4 @@
 @node Developer
-@cindex Developer manual
-@cindex Developer
-@cindex Cryptography
 @unnumbered Developer manual
 
 Pay attention how to get @ref{Sources, development source code}.
index dc7d5f1f91d55ae4583781fb8c611d6acdf5e0c3..8547bfa6478bb3facdb3ab3ea671aa7c892e9afa 100644 (file)
@@ -1,7 +1,4 @@
 @node Tarballs
-@cindex Download
-@cindex Tarball
-@cindex Prepared tarballs
 @section Prepared tarballs
 
 You can obtain releases source code prepared tarballs from the links below:
@@ -9,75 +6,75 @@ You can obtain releases source code prepared tarballs from the links below:
 @multitable {XXXXX} {XXXX KiB} {link sign} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}
 @headitem Version @tab Size @tab Tarball @tab SHA256 checksum
 
-@item @ref{Release_5.3, 5.3} @tab 301 KiB
+@item @ref{Release 5.3, 5.3} @tab 301 KiB
 @tab @url{download/govpn-5.3.tar.xz, link} @url{download/govpn-5.3.tar.xz.sig, sign}
 @tab @code{50955d0a2ea41236682cb5ac245210691fb6ecbe88d138c5873e2362e547da48}
 
-@item @ref{Release_5.2, 5.2} @tab 300 KiB
+@item @ref{Release 5.2, 5.2} @tab 300 KiB
 @tab @url{download/govpn-5.2.tar.xz, link} @url{download/govpn-5.2.tar.xz.sig, sign}
 @tab @code{44e3a3265b30305a4436e172565585c327fb28d26197e61b7496c437d032c0db}
 
-@item @ref{Release_5.1, 5.1} @tab 287 KiB
+@item @ref{Release 5.1, 5.1} @tab 287 KiB
 @tab @url{download/govpn-5.1.tar.xz, link} @url{download/govpn-5.1.tar.xz.sig, sign}
 @tab @code{0d456c5683287dca31f8c3302eb9a9329feab82bc1fbdb0098fca991513536d1}
 
-@item @ref{Release_5.0, 5.0} @tab 237 KiB
+@item @ref{Release 5.0, 5.0} @tab 237 KiB
 @tab @url{download/govpn-5.0.tar.xz, link} @url{download/govpn-5.0.tar.xz.sig, sign}
 @tab @code{cc186a3b800279b6f5a7c86d61b250c24cf97235f6c3e1bb05a6cb60251085c6}
 
-@item @ref{Release_4.2, 4.2} @tab 233 KiB
+@item @ref{Release 4.2, 4.2} @tab 233 KiB
 @tab @url{download/govpn-4.2.tar.xz, link} @url{download/govpn-4.2.tar.xz.sig, sign}
 @tab @code{dc2d390b9dcfb30a3612018d410b61ddf8edd82f4d9aa5ed2691b027be10ba0a}
 
-@item @ref{Release_4.1, 4.1} @tab 227 KiB
+@item @ref{Release 4.1, 4.1} @tab 227 KiB
 @tab @url{download/govpn-4.1.tar.xz, link} @url{download/govpn-4.1.tar.xz.sig, sign}
 @tab @code{fbc7a730afe96384827dc1e1402c53165710ade5113d90531427c39172e40aca}
 
-@item @ref{Release_4.0, 4.0} @tab 183 KiB
+@item @ref{Release 4.0, 4.0} @tab 183 KiB
 @tab @url{download/govpn-4.0.tar.xz, link} @url{download/govpn-4.0.tar.xz.sig, sign}
 @tab @code{a791c3569c01dea8b18aa2f21d27b797ded76f2c33a8d96c2db864a9abf2615b}
 
-@item @ref{Release_3.5, 3.5} @tab 179 KiB
+@item @ref{Release 3.5, 3.5} @tab 179 KiB
 @tab @url{download/govpn-3.5.tar.xz, link} @url{download/govpn-3.5.tar.xz.sig, sign}
 @tab @code{6b60c2cd4a8b4b2c893e52d3366510678704fd68a02a0ea24cb112bd753ea54b}
 
-@item @ref{Release_3.4, 3.4} @tab 175 KiB
+@item @ref{Release 3.4, 3.4} @tab 175 KiB
 @tab @url{download/govpn-3.4.tar.xz, link} @url{download/govpn-3.4.tar.xz.sig, sign}
 @tab @code{266612a7f8faa6ceb2955ed611c0c21872776306f4eaad5b785145bbb0390c82}
 
-@item @ref{Release_3.3, 3.3} @tab 175 KiB
+@item @ref{Release 3.3, 3.3} @tab 175 KiB
 @tab @url{download/govpn-3.3.tar.xz, link} @url{download/govpn-3.3.tar.xz.sig, sign}
 @tab @code{1834a057215324f49d6272b2beb89f1532105156f7e853eae855659992ac0c84}
 
-@item @ref{Release_3.2, 3.2} @tab 174 KiB
+@item @ref{Release 3.2, 3.2} @tab 174 KiB
 @tab @url{download/govpn-3.2.tar.xz, link} @url{download/govpn-3.2.tar.xz.sig, sign}
 @tab @code{388e98d6adef5ebf3431b0d48419f54d2e2064c657de67e23c669ebcf273126d}
 
-@item @ref{Release_3.1, 3.1} @tab 54 KiB
+@item @ref{Release 3.1, 3.1} @tab 54 KiB
 @tab @url{download/govpn-3.1.tar.xz, link} @url{download/govpn-3.1.tar.xz.sig, sign}
 @tab @code{4034a67eb472e33760ed1783ca871f531c3a6be99b9bd6213f4f83c1147c344b}
 
-@item @ref{Release_3.0, 3.0} @tab 53 KiB
+@item @ref{Release 3.0, 3.0} @tab 53 KiB
 @tab @url{download/govpn-3.0.tar.xz, link} @url{download/govpn-3.0.tar.xz.sig, sign}
 @tab @code{12579c5c3cccfe73c66b5893335bc70c42d7b13b8e94c7751ec65d421eaff9a5}
 
-@item @ref{Release_2.4, 2.4} @tab 42 KiB
+@item @ref{Release 2.4, 2.4} @tab 42 KiB
 @tab @url{download/govpn-2.4.tar.xz, link} @url{download/govpn-2.4.tar.xz.sig, sign}
 @tab @code{df45225bac2384c5eed73c5cdb05dc3581495e08d365317beb03a2487d46b98c}
 
-@item @ref{Release_2.3, 2.3} @tab 34 KiB
+@item @ref{Release 2.3, 2.3} @tab 34 KiB
 @tab @url{download/govpn-2.3.tar.xz, link} @url{download/govpn-2.3.tar.xz.sig, sign}
 @tab @code{92986ec6d6da107c6cc1143659e5a154cd19b8f2ede5fa7f5ccc4525ae468e97}
 
-@item @ref{Release_2.2, 2.2} @tab 32 KiB
+@item @ref{Release 2.2, 2.2} @tab 32 KiB
 @tab @url{download/govpn-2.2.tar.xz, link} @url{download/govpn-2.2.tar.xz.sig, sign}
 @tab @code{5745278bce8b9a3bd7ec1636507bbce8c17ba1d79f1568e2f3681b7a90bbe6e1}
 
-@item @ref{Release_2.0, 2.0} @tab 31 KiB
+@item @ref{Release 2.0, 2.0} @tab 31 KiB
 @tab @url{download/govpn-2.0.tar.xz, link} @url{download/govpn-2.0.tar.xz.sig, sign}
 @tab @code{d43be1248d6a46ba8ca75be2fdab5e3d8b0660fb9df9b6d87cfa3973722b42be}
 
-@item @ref{Release_1.5, 1.5} @tab 19 KiB
+@item @ref{Release 1.5, 1.5} @tab 19 KiB
 @tab @url{download/govpn-1.5.tar.xz, link} @url{download/govpn-1.5.tar.xz.sig, sign}
 @tab @code{715b07d4d1ea4396c3e37014ca65ec3768818423521f3c12e7200b6edca48c31}
 
index 9984a20c1437f1f8d3b6138a315f3a47405e7076..06d69b033b7050fb2be4cd50aa3684d7dc1e3e92 100644 (file)
@@ -1,7 +1,4 @@
 @node EGD
-@cindex EGD
-@cindex Entropy Gathering Daemon
-@cindex Entropy
 @subsection Entropy Gathering Daemon
 
 Overall security mainly depends on client side:
@@ -9,14 +6,14 @@ Overall security mainly depends on client side:
 number generator.
 
 Some operating systems do not have good enough quality PRNG, bad
-@code{/dev/urandom}. You should use separate PRNG with them. GoVPN
+@file{/dev/urandom}. You should use separate PRNG with them. GoVPN
 communicates with them using
 @url{http://egd.sourceforge.net/, Entropy Gathering Daemon} protocol.
 
 To switch using EGD-compatible daemons instead of @code{crypto/rand}
-library you provide @code{-egd PATH} command line option, where
+library you provide @option{-egd PATH} command line option, where
 @code{PATH} is the domain socket.
 
-@example
+@verbatim
 % ./govpn-server [...] -egd /var/run/egd.sock
-@end example
+@end verbatim
index fd267c73be4a78ee592f426707eb38c43d65c2dd..6d44191ebdc1c5d492ffc321568e146f8d2acada 100644 (file)
@@ -1,11 +1,4 @@
 @node Encless
-@cindex Encryptionless
-@cindex Encryptionless mode
-@cindex Chaffing-and-Winnowing
-@cindex AONT
-@cindex All-Or-Nothing-Transformation
-@cindex OAEP
-@cindex SAEP+
 @subsection Encryptionless mode
 
 Some jurisdictions can force user to reveal his encryption keys. However
index fe00545854bd630794b5afedcd5920369aa202ae..1271a02174dada0477f55f3844a0c34dcfccc00e 100644 (file)
@@ -1,7 +1,4 @@
 @node Example
-@cindex Example
-@cindex Example usage
-@cindex Tutorial
 @section Example usage
 
 Let's assume that there is some insecure link between your computer and
@@ -22,7 +19,6 @@ software: download, @ref{Integrity, check the signature}, compile.
 @strong{Prepare the client}. Generate client's verifier for Alice as an
 example:
 
-@cindex newclient.sh
 
 @verbatim
 client% ./utils/newclient.sh Alice
@@ -37,7 +33,7 @@ Place the following YAML configuration entry on the server's side:
         verifier: $argon2d$m=4096,t=128,p=1$bwR5VjeCYIQaa8SeaI3rqg$KCNIqfS4DGsBTtVytamAzcISgrlEWvNxan1UfBrFu10
 @end verbatim
 
-@strong{Prepare the server}. Add this entry to @code{peers.yaml}
+@strong{Prepare the server}. Add this entry to @file{peers.yaml}
 configuration file:
 
 @verbatim
@@ -48,45 +44,45 @@ Alice:
 
 @strong{Prepare network on GNU/Linux IPv4 server}:
 
-@example
+@verbatim
 server% ip addr add 192.168.0.1/24 dev wlan0
 server% tunctl -t tap10
 server% ip addr add 172.16.0.1/24 dev tap10
 server% ip link set up dev tap10
-@end example
+@end verbatim
 
 @strong{Run server daemon itself}:
 
-@example
+@verbatim
 server% govpn-server -bind 192.168.0.1:1194
-@end example
+@end verbatim
 
 @strong{Prepare network on GNU/Linux IPv4 client}:
 
-@example
+@verbatim
 client% ip addr add 192.168.0.2/24 dev wlan0
 client% tunctl -t tap10
 client% ip addr add 172.16.0.2/24 dev tap10
 client% ip link set up dev tap10
 client% ip route add default via 172.16.0.1
-@end example
+@end verbatim
 
 @strong{Run client daemon itself}:
-@example
+@verbatim
 client% govpn-client \
     -verifier '$argon2d$m=4096,t=128,p=1$bwR5VjeCYIQaa8SeaI3rqg' \
     -iface tap10 \
     -remote 192.168.0.1:1194
-@end example
+@end verbatim
 
 @strong{FreeBSD IPv6 similar client-server example}:
 
-@example
+@verbatim
 server% ifconfig em0 inet6 fe80::1/64
 server% govpn-server -bind "fe80::1%em0"
-@end example
+@end verbatim
 
-@example
+@verbatim
 client% ifconfig me0 inet6 -ifdisabled auto_linklocal
 client% ifconfig tap10
 client% ifconfig tap10 inet6 fc00::2/96 up
@@ -95,4 +91,4 @@ client% govpn-client \
     -verifier '$argon2d$m=4096,t=128,p=1$bwR5VjeCYIQaa8SeaI3rqg' \
     -iface tap10 \
     -remote "[fe80::1%me0]":1194
-@end example
+@end verbatim
index b12451e60c9fa7be19e052e9911d3c6018a8a77c..b4eda3a684c92758ad8ecdde473c5833e7d5e76b 100644 (file)
@@ -1,34 +1,54 @@
 @node ЧАВО
-@cindex FAQ (russian)
-@cindex ЧАВО
-@cindex Часто задаваемые вопросы
-@unnumbered Часто задаваемые вопросы
-
-@table @asis
-
-@item Почему вы не используете TLS?
-Это сложный протокол. Он использует Аутентификацию-затем-Шифрование
-порядок использования алгоритмов -- это не безопасно. Более того, его
-библиотеки огромный и сложны для чтения, ревью и анализа.
-
-@item Почему вы не используете SSH?
-Его первые версии использовали Аутентификацию-и-Шифрование порядок,
-однако более поздние поддерживают даже ChaCha20-Poly1305 алгоритм. Его
-исходный код не тривиален и достаточно большой для чтения и ревью.
-OpenSSH не поддерживает сильные протоколы аутентификации по паролю с
-нулевым неразглашением.
-
-@item Почему вы не используете IPsec?
-Это достаточно хороший протокол, поддерживаемый большинством ОС. Но в
-нём нет сильного протокола аутентификации по паролю с нулевым
+@section Часто задаваемые вопросы
+
+@menu
+* Почему вы не используете TLS?: Почему не TLS.
+* Почему вы не используете SSH?: Почему не SSH.
+* Почему вы не используете IPsec?: Почему не IPsec.
+* Почему GoVPN написан на Go?: Почему Go.
+* Почему вы аутентифицируете по парольной фразе?: Почему парольные фразы.
+* Почему вся настройка сети делается вручную?: Почему ручная настройка сети.
+* Почему нет поддержки OS X или Windows?: Почему нет поддержки проприетарных ОС.
+* Что вы подразумеваете под совершенной прямой секретностью?: Что такое PFS.
+* Что вы подразумеваете когда говорите что клиенты анонимны?: Что такое анонимность.
+* Что вы подразумеваете под цензуроустойчивостью?: Что такое цензуроустойчивость.
+* Когда я должен использовать нешифрованный режим?: Когда нешифрованный режим.
+* Когда я должен использовать noise опцию?: Когда noise опцию.
+* Когда я должен использовать опцию синхронизации времени?: Когда синхронизацию времени.
+* Могу ли я сделать DoS (отказ в обслуживании) демона?: Можно ли DoS демона.
+* Почему YAML для конфигурации?: Почему YAML.
+@end menu
+
+@node Почему не TLS
+@subsection Почему вы не используете TLS?
+
+@itemize
+@item Это сложный плохо спроектированный протокол.
+@item Он использует Аутентификацию-затем-Шифрование порядок
+использования алгоритмов.
+@item Его библиотеки огромны и сложны для чтения, ревью и анализа.
+@end itemize
+
+@node Почему не SSH
+@subsection Почему вы не используете SSH?
+
+@itemize
+@item Его первые версии использовали Аутентификацию-и-Шифрование
+порядок, однако более поздние поддерживают даже ChaCha20-Poly1305
+алгоритм.
+@item OpenSSH не поддерживает сильные протоколы аутентификации по паролю
+с нулевым неразглашением.
+@end itemize
+
+@node Почему не IPsec
+@subsection Почему вы не используете IPsec?
+
+В нём нет сильного протокола аутентификации по паролю с нулевым
 неразглашением и, снова, его код сложно читать.
 
-@item Почему вы не используете XXX?
-По тем же самым причинам: большинство ПО не предоставляют сильных
-протоколов аутентификации, высокой криптографической безопасности и,
-большая часть, написана на C -- на нём сложно правильно писать.
+@node Почему Go
+@subsection Почему GoVPN написан на Go?
 
-@item Почему GoVPN написан на Go?
 Go очень легко читается, поддаётся ревью и поддержке. Он усложняет
 написание сложного кода. Он предоставляет всё что нужно для C языка:
 проверки границ массивов, сборщик мусора и конкурентные примитивы. Он
@@ -36,61 +56,73 @@ Go очень легко читается, поддаётся ревью и по
 более чем 750 Mbps пропускной способности), но большую надёжность и
 гораздо меньше строк кода.
 
-@item Почему вы аутентифицируете по парольной фразе?
+@node Почему парольные фразы
+@subsection Почему вы аутентифицируете по парольной фразе?
+
 Человек способ запоминать достаточно длинные парольные фразы (не
 пароли): 100-200 символов, что даёт возможность использовать её как
 высокоэнтропийный ключ. Вам нужно доверять только себе, не аппаратному
 токену или другому устройству хранения. Это удобно.
 
-@cindex Настройка сети
-@item Почему вся настройка сети делается вручную?
+@node Почему ручная настройка сети
+@subsection Почему вся настройка сети делается вручную?
+
 Потому-что существует так много вариантов использования, конфигураций и
 установок, что или я поддерживаю их всех, или использую громоздкие
 протоколы типы PPP, или просто даю право выбора администратору. VPN это
 всего-лишь прослойка.
 
-@item Почему нет поддержки OS X или Windows?
+@node Почему нет поддержки проприетарных ОС
+@subsection Почему нет поддержки OS X или Windows?
+
 Любые проприетарные системы с закрытым исходным кодом не дают
 возможности управлять компьютером. Вы не можете безопасно использовать
 всё что касается криптографии без контроля над нижестоящим
 вычислительным устройством. Выбирайте другую операционную систему.
 
-@item Что вы подразумеваете под совершенной прямой секретностью?
+@node Что такое PFS
+@subsection Что вы подразумеваете под совершенной прямой секретностью?
+
 Что вы не можете дешифровать ранее перехваченный трафик если ваши
 долгоживущие ключи будут скомпрометированы. Это свойство работает на
 уровне сессии: оно не спасёт если сессионный ключ скомпрометирован из
 памяти.
 
-@cindex Анонимность
-@cindex Анонимные клиенты
-@item Что вы подразумеваете когда говорите что клиенты анонимны?
+@node Что такое анонимность
+@subsection Что вы подразумеваете когда говорите что клиенты анонимны?
+
 Что третьей лицо не может отличить одного клиента от другого, смотря на
 трафик (транспортный или рукопожатия).
 
-@cindex Цензуроустойчивость
-@item Что вы подразумеваете под цензуроустойчивостью?
+@node Что такое цензуроустойчивость
+@subsection Что вы подразумеваете под цензуроустойчивостью?
+
 Невозможность определить GoVPN ли это трафик или просто
 @code{cat /dev/urandom | nc somehost}. Если вы не можете отличить один
 вид трафика от другого, то при цензуре ваше единственный вариант это
 заблокировать все его виды.
 
-@item Когда я должен использовать @ref{Encless, нешифрованный режим}?
+@node Когда нешифрованный режим
+@subsection Когда я должен использовать @ref{Encless, нешифрованный режим}?
+
 Если вы работаете под юрисдикциями где суды могут привлечь вас к
 ответственности за использование шифрования или могут вынудить вас
 как-либо выдать ваши ключи шифрования (хотя сессионные ключи шифрования
 генерируются каждую сессию). В большинстве случаев, эти суды не могут
-требовать аутентификационные ключи или ключи для ЭЦП. @strong{Не
-позволяйте} названию режима вас смутить: он всё-равно обеспечивает
-конфиденциальность и аутентичность передаваемых данных! Но имейте в
-виду, что этот режим требователен к ресурсам и трафику и пока работает
-только в TCP режиме.
+требовать аутентификационные ключи или ключи для ЭЦП.
+
+@strong{Не позволяйте} названию режима вас смутить: он всё-равно
+обеспечивает конфиденциальность и аутентичность передаваемых данных! Но
+имейте в виду, что этот режим требователен к ресурсам и трафику и пока
+работает только в TCP режиме.
 
-@item Вы думаете нешифрованный режим с его случайными данными поможет в суде?
 Если всё что не может быть прочитано кем-угодно считается шифрованием,
-то нет, этот режим вам не поможет. Представьте что вы говорите на другом
+то этот режим вам не поможет. Представьте что вы говорите на другом
 иностранном языке или просто используете другую схему кодирования данных.
 
-@item Когда я должен использовать @ref{Noise, noise} опцию?
+@node Когда noise опцию
+@subsection Когда я должен использовать @ref{Noise, noise} опцию?
+
 В большинстве случаев она вам не нужна без включённого
 @ref{CPR, постоянного по скорости трафика} (CPR). Без CPR и шума, в
 GoVPN трафике (так же как и в TLS, IPsec, SSH и других VPN протоколах)
@@ -99,7 +131,9 @@ GoVPN трафике (так же как и в TLS, IPsec, SSH и других V
 происходить в сети. Без CPR опции вы можете только сказать в online ли
 кто или нет -- ни больше, ни меньше.
 
-@item Когда я должен использовать опцию @ref{Timesync, синхронизации времени}?
+@node Когда синхронизацию времени
+@subsection Когда я должен использовать опцию @ref{Timesync, синхронизации времени}?
+
 Без этой опции, если кто-либо перехватит первоначальный пакет
 рукопожатия от настоящего клиента, то он сможет его повторить и получить
 пакет рукопожатия от сервера в ответ. Это может быть использовано для
@@ -110,18 +144,20 @@ GoVPN трафике (так же как и в TLS, IPsec, SSH и других V
 или менее синхронизированные часы между вашими клиентами и сервером, то
 можете всего использовать эту опцию.
 
-@item Могу ли я сделать DoS (отказ в обслуживании) демона?
+@node Можно ли DoS демона
+@subsection Могу ли я сделать DoS (отказ в обслуживании) демона?
+
 Каждый транспортный пакет первым делом аутентифицируется очень быстрым
 UMAC алгоритмом -- в большинстве случаев потребление ресурсов TCP/UDP
 слоёв будет выше чем проверка UMAC. Каждое сообщение рукопожатия
 обрабатывается только если зашифрованный @ref{Identity, идентификатор}
 клиента найден: он использует быстрый PRP без потребления энтропии.
 
-@item Почему YAML для конфигурации?
+@node Почему YAML
+@subsection Почему YAML для конфигурации?
+
 Есть не так много хорошо известных форматов позволяющих комментировать,
 легко редактировать людьми (XML совсем не дружелюбен к человеку, JSON
 более менее). Возможно самое важное свойство это шаблоны YAML: очень
 удобно сохранить много клиентов, имеющих схожие настройки, в одном
 конфигурационном файле.
-
-@end table
index 021cc552163f25bc90a09f49d0c716f308682d0a..3574f452ebbfb6cd027b009c9a4d9b258d5766de 100644 (file)
@@ -1,37 +1,54 @@
 @node FAQ
-@cindex FAQ
-@cindex Frequently Asked Questions
 @unnumbered Frequently Asked Questions
 
-@table @asis
-
-@cindex TLS
-@item Why do not you use TLS?
-It is complicated protocol. It uses Authenticate-then-Encrypt ordering
-of algorithms -- it is not secure. Moreover its libraries are huge and
-hard to read, review and analyze.
-
-@cindex SSH
-@item Why do not you use SSH?
-Its first protocol versions used A-a-E ordering, however later ones
-supports even ChaCha20-Poly1305 algorithms. But its source code is not
-so trivial and rather big to read and review. OpenSSH does not support
-strong zero-knowledge password authentication.
-
-@cindex IPsec
-@item Why do not you use IPsec?
-It is rather good protocol, supported by all modern OSes. But it lacks
-strong zero-knowledge password authentication and, again, its code is
-hard to read.
-
-@item Why do not you use XXX?
-For the same reasons: most of software do not provide strong password
-authentication, high cryptographic protocol security, and most of this
-software is written in C -- it is hard to write right on it.
-
-@cindex Why Go
-@cindex Go
-@item Why GoVPN is written on Go?
+See also this page @ref{ЧАВО, on russian}.
+
+@menu
+* Why do not you use TLS?: Why not TLS.
+* Why do not you use SSH?: Why not SSH.
+* Why do not you use IPsec?: Why not IPsec.
+* Why GoVPN is written on Go?: Why Go.
+* Why do you authenticate with passphrases?: Why passphrases.
+* Why all network configuration must be done manually?: Why manual network configuration.
+* Why there is no either OS X or Windows support?: Why no proprietary OS support.
+* What do you mean by perfect forward secrecy?: What is perfect forward secrecy.
+* What do you mean by saying that clients are anonymous?: What is anonymity.
+* What do you mean by censorship resistance?: What is censorship resistance.
+* When should I use encryptionless mode?: When encryptionless mode.
+* When should I use noise option?: When noise option.
+* When should I use time synchronization option?: When timesync option.
+* Can I DoS (denial of service) the daemon?: Can I DoS daemon.
+* Why YAML for configuration?: Why YAML.
+@end menu
+
+@node Why not TLS
+@section Why do not you use TLS?
+
+@itemize
+@item It is complicated badly designed protocol.
+@item It uses Authenticate-then-Encrypt ordering of algorithms.
+@item Its libraries are huge and hard to read, review and analyze.
+@end itemize
+
+@node Why not SSH
+@section Why do not you use SSH?
+
+@itemize
+@item Its first protocol versions used A-a-E ordering, however later
+ones supports even ChaCha20-Poly1305 algorithms.
+@item OpenSSH does not support strong zero-knowledge password
+authentication.
+@end itemize
+
+@node Why not IPsec
+@section Why do not you use IPsec?
+
+It lacks strong zero-knowledge password authentication and, again,
+its code is hard to read.
+
+@node Why Go
+@section Why GoVPN is written on Go?
+
 Go is very easy to read, review and support. It makes complex code
 writing a harder task. It provides everything needed to the C language:
 array bounds checking, garbage collection and concurrency primitives. It
@@ -39,66 +56,73 @@ provides lesser performance (however my setup on the notebook gives more
 than 750 Mbps of throughput), but higher reliability and much fewer
 lines of code.
 
-@item Why do you authenticate with passphrases?
+@node Why passphrases
+@section Why do you authenticate with passphrases?
+
 Human is capable of memorizing rather long passphrases (not passwords):
 100-200 characters, that gives ability to use it as a high-entropy key.
-You need to trust only yourself, not hardware token or some other
+You need to trust only yourself, neither hardware token nor some other
 storage device. It is convenient.
 
-@cindex Network configuration
-@item Why all network configuration must be done manually?
+@node Why manual network configuration
+@section Why all network configuration must be done manually?
+
 Because there are so many use-cases and setups, so many various
 protocols, that either I support all of them, or use complicated
 protocol setups like PPP, or just give right of the choice to the
-administrator. VPN is only just a layer.
+administrator. VPN is only just a layer, just like Ethernet cable.
+
+@node Why no proprietary OS support
+@section Why there is no either OS X or Windows support?
 
-@cindex Windows
-@cindex Microsoft Windows
-@cindex Apple OS X
-@cindex OS X
-@item Why there is no either OS X or Windows support?
 Any closed source proprietary systems do not give ability to control the
 computer. You can not securely use cryptography-related stuff without
 controlling the underlying computing device. Choose another operating
 system.
 
-@item What do you mean by perfect forward secrecy?
+@node What is perfect forward secrecy
+@section What do you mean by perfect forward secrecy?
+
 You can not decrypt previously saved traffic by compromising long-lived
 keys. PFS property is per-session level: it won't protect from leaking
 the session key from the memory.
 
-@cindex Anonymity
-@cindex Anonymous clients
-@item What do you mean by saying that clients are anonymous?
+@node What is anonymity
+@section What do you mean by saying that clients are anonymous?
+
 That third-party can not differentiate one client from another looking
 at the traffic (transport and handshake).
 
-@cindex Censorship
-@cindex Censorship resistance
-@cindex DPI resistance
-@item What do you mean by censorship resistance?
+@node What is censorship resistance
+@section What do you mean by censorship resistance?
+
 Unability to distinguish either is it GoVPN-traffic is passing by, or
 just @code{cat /dev/urandom | nc somehost}. If you can not differentiate
 one kind of traffic from another, then your only option is to forbid all
 kinds of it.
 
-@item When should I use @ref{Encless, encryptionless mode}?
+@node When encryptionless mode
+@section When should I use @ref{Encless, encryptionless mode}?
+
 If you are operating under jurisdiction where courts can either sue you
 for encryption usage or force you to somehow reveal you encryption
 keys (however new session encryption keys are generated each session).
 Those courts can not demand for authentication and signing keys in most
-cases. @strong{Do not} let mode's name to confuse you: it still
-provides confidentiality and authenticity of transmitted data! But pay
-attention that this mode is traffic and resource hungry and currently
-operate only in TCP mode.
+cases.
+
+@strong{Do not} let mode's name to confuse you: it still provides
+confidentiality and authenticity of transmitted data! But pay attention that
+this mode is traffic and resource hungry and currently operate only in TCP
+mode.
 
-@item Do you think encryptionless mode with all those random data helps in court?
 If anything that can not be read by anyone is considered encryption,
-then no, encryptionless mode won't help you. Imagine that either you are
+then encryptionless mode won't help you. Imagine that either you are
 talking on another foreign language, or just use another date encoding
 scheme.
 
-@item When should I use @ref{Noise, noise} option?
+@node When noise option
+@section When should I use @ref{Noise, noise} option?
+
 In most cases you won't need it without @ref{CPR, constant packer rate}
 turned on. Without CPR and noise options GoVPN traffic (like TLS, IPsec,
 SSH and other VPN protocols) leaks underlying interface's packets
@@ -106,7 +130,9 @@ timestamps and sizes. You can run traffic analysis and predict what is
 going on in the network. With CPR option enabled you can tell either
 somebody is online, or not -- nothing less, nothing more.
 
-@item When should I use @ref{Timesync, time synchronization} option?
+@node When timesync option
+@section When should I use @ref{Timesync, time synchronization} option?
+
 Without that option, if someone captured initial handshake packet from
 the valid client, then it could repeat it and receive a handshake packet
 as an answer from server. This can be used to detect if some user's
@@ -116,20 +142,20 @@ allowing only specified time window of packet validness. If you have got
 more or less synchronized clocks between your clients and server, then
 you can use always use this option.
 
-@cindex DoS
-@item Can I DoS (denial of service) the daemon?
+@node Can I DoS daemon
+@section Can I DoS (denial of service) the daemon?
+
 Each transport packet is authenticated first with the very fast UMAC
 algorithm -- in most cases resource consumption of TCP/UDP layers will
 be higher then UMAC verifying. Each handshake message is processed only
 when an encrypted client's @ref{Identity, identity} is found: it uses
 fast PRP without any entropy usage.
 
-@cindex Why YAML
-@item Why YAML for configuration?
+@node Why YAML
+@section Why YAML for configuration?
+
 There are not so many well-known formats that allow commenting, easy
 editing by human (XML is not human friendly at all, JSON is more or
 less). Probably the most useful feature is YAML's templates: it is very
 convenient for storing many clients sharing the same options in the
 configuration file.
-
-@end table
index 3efe97d636b470fd05632db271fc73164707d588..f19fde0c153d9f0b7afe9bd2411aee9916d233a4 100644 (file)
@@ -1,19 +1,4 @@
 @node Handshake
-@cindex Handshake
-@cindex Handshake protocol
-@cindex Diffie-Hellman
-@cindex ed25519
-@cindex curve25519
-@cindex Elligator
-@cindex Perfect Forward Secrecy
-@cindex PFS
-@cindex IDtag
-@cindex Shared key
-@cindex DH-EKE
-@cindex DH
-@cindex EKE
-@cindex A-EKE
-@cindex DH-A-EKE
 @section Handshake protocol
 
 @verbatiminclude handshake.utxt
index d74e6cfd14e8b76540e3419f0edbd2f1cd1df5a8..3a37790cab5f9b132a69ef345058089d60d322f3 100644 (file)
@@ -1,6 +1,4 @@
 @node Identity
-@cindex Client identity
-@cindex Identity
 @subsection Identity
 
 Client's identity is 128-bit string. It is not secret, so can be
similarity index 81%
rename from doc/govpn.texi
rename to doc/index.texi
index 73e69084f21512616a984fc582c7b60124bc78ca..a2aa99e84b634845d06665d15b2fca007a1bc60a 100644 (file)
@@ -24,13 +24,12 @@ A copy of the license is included in the section entitled "Copying conditions".
 
 @include about.texi
 
-@center @strong{@ref{Tarballs, Download it}}.
+@center @ref{Tarballs, @strong{Download it}}.
 
 @menu
-* About (russian): О демоне.
 * Frequently Asked Questions: FAQ.
-* Часто задаваемые вопросы: ЧАВО.
 * News::
+* Информация на русском: Русский.
 * Installation::
 * Precautions::
 * User manual: User.
@@ -38,15 +37,12 @@ A copy of the license is included in the section entitled "Copying conditions".
 * Contacts and feedback: Contacts.
 * Thanks::
 * In the media: Media.
-* TODO::
 * Copying conditions::
-* Concept index::
 @end menu
 
-@include about.ru.texi
 @include faq.texi
-@include faq.ru.texi
 @include news.texi
+@include russian.texi
 @include installation.texi
 @include precautions.texi
 @include user.texi
@@ -54,7 +50,6 @@ A copy of the license is included in the section entitled "Copying conditions".
 @include contacts.texi
 @include thanks.texi
 @include media.texi
-@include todo.texi
 
 @node Copying conditions
 @unnumbered Copying conditions
@@ -62,9 +57,4 @@ A copy of the license is included in the section entitled "Copying conditions".
 @insertcopying
 @verbatiminclude fdl.txt
 
-@node Concept index
-@unnumbered Concept index
-
-@printindex cp
-
 @bye
index 63205788dd1f819337f9473aa7d7eaacc5e490e3..b6cb7d8ae5fe3ec9ed6b4f8fbf5e33e44082e49f 100644 (file)
@@ -1,13 +1,4 @@
 @node Installation
-@cindex Installation
-@cindex Getting GoVPN
-@cindex Requirements
-@cindex Dependencies
-@cindex Ports
-@cindex Packages
-@cindex FreeBSD
-@cindex AUR
-@cindex Texinfo
 @unnumbered Installation
 
 Possibly GoVPN already exists in your distribution:
@@ -17,11 +8,11 @@ Possibly GoVPN already exists in your distribution:
 @item @url{http://www.freshports.org/security/govpn/, FreeBSD ports}
 @end itemize
 
-GoVPN is written on Go programming language and you have to install Go
-compiler (1.5+ version is highly recommended, 1.4 is the minimal
-sufficient): @code{lang/go} port in FreeBSD and @code{golang} package in
-most GNU/Linux distributions. @emph{Make} (BSD and GNU ones are fine) is
-recommended for convenient building.
+GoVPN is written on @url{https://golang.org/, Go} programming language
+and you have to install Go compiler (1.5+ version is highly recommended,
+1.4 is the minimal sufficient): @code{lang/go} port in FreeBSD and
+@code{golang} package in most GNU/Linux distributions. @emph{Make} (BSD
+and GNU ones are fine) is recommended for convenient building.
 @url{https://www.gnu.org/software/texinfo/, Texinfo} is used for
 building documentation. Possibly you also need to install TUN/TAP
 interface utilities (depending on your operating system):
@@ -40,19 +31,19 @@ Included required libraries:
 @end multitable
 
 Get @ref{Tarballs, the tarball}, check its
-@ref{Integrity, integrity and authenticity} and run @code{make}.
+@ref{Integrity, integrity and authenticity} and run @command{make}.
 @emph{govpn-client}, @emph{govpn-server}, @emph{govpn-verifier}
 binaries will be built in the current directory:
 
-@example
+@verbatim
 % wget http://www.cypherpunks.ru/govpn/download/govpn-2.3.tar.xz
 % wget http://www.cypherpunks.ru/govpn/download/govpn-2.3.tar.xz.sig
 % gpg --verify govpn-2.3.tar.xz.sig govpn-2.3.tar.xz
 % tar xf govpn-2.3.tar.xz
 % make -C govpn-2.3 all
-@end example
+@end verbatim
 
-There is @code{install} target respecting @code{DESTDIR}. It will
+There is @code{install} target respecting @env{DESTDIR}. It will
 install binaries, info-documentation and utilities.
 
 @menu
index b9c6ff522b52b4b363a6cf93b201e19d518803fa..ea5e59e51c766733e3232206946adbd0780296ce 100644 (file)
@@ -1,15 +1,11 @@
 @node Integrity
-@cindex Integrity
-@cindex Tarball integrity
-@cindex PGP
-@cindex Public key
 @section Tarballs integrity check
 
 You @strong{have to} verify downloaded archives integrity and check
 their signature to be sure that you have got trusted, untampered
 software. For integrity and authentication of downloaded binaries
 @url{https://www.gnupg.org/, The GNU Privacy Guard} is used. You must
-download signature (@code{.sig}) provided with the tarball.
+download signature (@file{.sig}) provided with the tarball.
 
 For the very first time you need to import signing public keys. They
 are provided below, but be sure that you are reading them from the
index 332ed6388af68af9c1492733475c020cdca957bc..b129c0dd1b69c40f679e4e433ba72513bb97cbe4 100644 (file)
@@ -1,6 +1,4 @@
 @node Media
-@cindex In the media
-@cindex Articles
 @unnumbered In the media
 
 @itemize
index 2206c553c9a4c5b63ea48d4a205bec9b3c33d755..29930b641063de86616d4589872a73a5240a5528 100644 (file)
@@ -1,6 +1,4 @@
 @node MTU
-@cindex MTU
-@cindex Maximum Transmission Unit
 @subsection Maximum Transmission Unit
 
 MTU option tells what maximum transmission unit is expected to get from
index f5b26f4072336b988fa4b2bab21e4a7b7973dac8..d57edb35ab0dbdf5a95a85dd48ed9b7ce05856bc 100644 (file)
@@ -1,8 +1,4 @@
 @node Network
-@cindex Transport
-@cindex Network transport
-@cindex TCP
-@cindex UDP
 @subsection Network transport
 
 You can use either UDP or TCP underlying network transport protocols.
diff --git a/doc/news.ru.texi b/doc/news.ru.texi
new file mode 100644 (file)
index 0000000..980cace
--- /dev/null
@@ -0,0 +1,267 @@
+@node Новости
+@section Новости
+
+@menu
+* Релиз 5.4::
+* Релиз 5.3::
+* Релиз 5.2::
+* Релиз 5.1::
+* Релиз 5.0::
+* Релиз 4.2::
+* Релиз 4.1::
+* Релиз 4.0::
+* Релиз 3.5::
+* Релиз 3.4::
+* Релиз 3.3::
+* Релиз 3.2::
+* Релиз 3.1::
+* Релиз 3.0::
+* Релиз 2.4::
+* Релиз 2.3::
+* Релиз 2.2::
+* Релиз 2.1::
+* Релиз 2.0::
+* Релиз 1.5::
+* Релиз 1.4::
+* Релиз 1.3::
+* Релиз 1.1::
+* Релиз 1.0::
+@end menu
+
+@node Релиз 5.4
+@subsection Релиз 5.4
+@itemize
+@item Добавлена возможность требования @ref{Timesync, синхронизации
+времени}. Она добавит временные метки в PRP аутентификацию сообщений
+рукопожатия, не позволяя повторить ранее перехваченные пакеты и получить
+ответ от сервера, делая его видимым для DPI.
+@end itemize
+
+@node Релиз 5.3
+@subsection Релиз 5.3
+@itemize
+@item Исправлен небольшой баг связанный с тем что @command{newclient.sh}
+ловил "Passphrase:" приглашение и помещал его в примерный вывод YAML.
+Просто заменил вывод приглашения ввода парольной фразы с stdout на
+stderr.
+@end itemize
+
+@node Релиз 5.2
+@subsection Релиз 5.2
+@itemize
+@item Возможность ввода парольной фразы напрямую из терминала
+(пользовательский ввод), без использования файлов с ключами. Утилита
+@command{storekey.sh} удалена.
+@end itemize
+
+@node Релиз 5.1
+@subsection Релиз 5.1
+@itemize
+@item Сервер конфигурируется через @url{http://yaml.org/, YAML} файл.
+Очень удобно иметь комментарии и шаблоны, по сравнению с JSON.
+@item Несовместимая с предыдущими версиями замена функции
+@emph{HSalsa20} на @emph{BLAKE2b} в коде рукопожатия.
+@end itemize
+
+@node Релиз 5.0
+@subsection Релиз 5.0
+@itemize
+
+@item Новый опциональный @ref{Encless, нешифрованный режим} работы.
+Технически к исходящим пакетам не применяются функции шифрования,
+поэтому вас не могут вынудить выдать ключи шифрования или привлечь к
+ответственности за использования шифрования.
+@item @ref{MTU} конфигурируются относительно каждого пользователя отдельно.
+@item Упрощённая схема дополнения полезной нагрузки, экономия в один байт.
+@item Возможность указать название TAP интерфейса явно, без
+использования up-скриптов.
+@item @command{govpn-verifier} утилита теперь может использовать @ref{EGD}.
+@end itemize
+
+@node Релиз 4.2
+@subsection Релиз 4.2
+@itemize
+@item Исправлена некритичная ошибка при которой сервер мог упасть если
+скрипт запуска (up.sh) не выполнился успешно.
+@end itemize
+
+@node Релиз 4.1
+@subsection Релиз 4.1
+@itemize
+@item Вместо PBKDF2 используется
+@url{https://password-hashing.net/#argon2, Argon2d} алгоритм хэширования
+паролей.
+@item Идентификатор клиента хранится внутри проверяльщика (verifier),
+тем самым упрощая конфигурирование сервера и код.
+@end itemize
+
+@node Релиз 4.0
+@subsection Релиз 4.0
+@itemize
+@item Сообщения рукопожатия могут быть зашумлены: их длина скрывается.
+Теперь они неотличимы от транспортных сообщений.
+@item Распараллеленная обработка клиентов на стороне сервера.
+@item Гораздо более высокая общая производительность.
+@item Конфигурирование сервера единственным JSON файлом.
+@end itemize
+
+@node Релиз 3.5
+@subsection Релиз 3.5
+@itemize
+@item Возможность использовать @ref{Network, TCP} сетевой транспорт.
+Сервер можно слушать одновременно на UDP и TCP сокетах.
+@item Возможность использовать @ref{Proxy, HTTP прокси} (через CONNECT
+метод) для доступа к серверу. Сервер может эмулировать поведение HTTP
+прокси.
+@item Обновлённая Poly1305 библиотека с исправлениями для ARM.
+@item Версия Go 1.5+ сильно рекомендуется из-за вопросов
+производительности.
+@end itemize
+
+@node Релиз 3.4
+@subsection Релиз 3.4
+@itemize
+@item Возможность использовать внешний @ref{EGD} совместимый PRNG.
+Теперь вы можете использовать GoVPN даже на системах с плохим
+@file{/dev/random}.
+@item Опция @option{-noncediff} удалена. Она заменена на хранилище уже
+замеченных nonce-ов в памяти, тем самым полностью убирая возможность
+атак перепроигрывания без потерь производительности связанных с
+перетасовкой пакетов.
+@end itemize
+
+@node Релиз 3.3
+@subsection Релиз 3.3
+@itemize
+@item Совместимость со старым GNU Make 3.x. Прежде только BSD Make и GNU
+Make 4.x поддерживались.
+@item @file{/dev/urandom} используется для правильного генерирования
+идентификатора клиента под GNU/Linux системами. Прежде,
+@file{/dev/random} мог выдать меньше ожидаемого количества данных.
+@end itemize
+
+@node Релиз 3.2
+@subsection Релиз 3.2
+@itemize
+@item Детерминированная сборка: коммиты исходного кода зависимых
+библиотек фиксированы.
+@item Для сборки из исходного кода, соединение с Интернетом больше не
+требуется: все зависимые библиотеки включены в tarball релизов.
+@item Совместимость с FreeBSD Make. GNU Make не обязателен больше.
+@end itemize
+
+@node Релиз 3.1
+@subsection Релиз 3.1
+@itemize
+@item Публичные ключи Диффи-Хельмана кодируются алгоритмом Elligator
+перед отправкой, делая их неотличимыми от случайных строчек,
+предотвращая определение удачного подбора ключа дешифрования при
+переборе паролей (используемых для создания DSA публичных ключей).
+Однако это в среднем потребляет в два раза больше энтропии при
+генерировании клюей DH.
+@end itemize
+
+@node Релиз 3.0
+@subsection Релиз 3.0
+@itemize
+@item EKE протокол заменён на Augmented-EKE и статичный симметричный
+(обе стороны его имеют) pre-shared ключ заменён на верификатор на
+стороне сервера. Это требует на 64 байта больше трафика рукопожатия,
+добавляет Ed25519 зависимость с соответствующими расходами на подпись и
+проверку, PBKDF2 зависимость и вычисления на стороне клиента.
+
+A-EKE с PBKDF2 верификаторами устойчивы к атакам по словарю. Можно
+использовать легко запоминаемые человеком парольные фразы вместо
+статичных ключей. Верификаторы на стороне сервера не могут быть
+использованы для аутентификации (скомпрометированный сервер не даст
+возможность масксироваться под пользователя).
+
+@item Изменена структура транспортных сообщений: добавлена длина
+полезной нагрузки. Это увеличивает накладные расходы на два байта, но
+сообщения сердцебиения стали меньше.
+
+@item Возможность скрывать размер полезной нагрузки за счёт добавления
+шума, мусора во время передачи данных. Каждый пакет дополняется до
+максимального размера MTU.
+
+@item Возможность скрывать факты появления пакетов полезной нагрузки, за
+счёт константного по скорости трафика. Это также включает в себя
+создание шума.
+
+@item
+Опции конфигурации @option{-timeout}, @option{-noncediff}, @option{-noise},
+@option{-cpr} настраиваются по-клиентно.
+@end itemize
+
+@node Релиз 2.4
+@subsection Релиз 2.4
+@itemize
+@item Возможность запуска встроенного HTTP-сервера отвечающего JSON-ом с
+статистикой обо всех подключённых клиентах.
+@item Документация явно лицензирована под GNU FDL 1.3+.
+@end itemize
+
+@node Релиз 2.3
+@subsection Релиз 2.3
+@itemize
+@item Пакеты рукопожатия стали неотличимыми от случайных данных. Теперь
+весь GoVPN трафик это шум для человека по середине.
+
+@item Сообщения рукопожатия стали меньше (16% сокращения трафика).
+
+@item Злоумышленник не может создать обманных пакеты рукопожатия которые
+заставят сервер генерировать приватный DH ключ, предотвращая потребление
+энтропии и ресурсоёмкие вычисления.
+@end itemize
+
+@node Релиз 2.2
+@subsection Релиз 2.2
+@itemize
+@item Исправлены deadlock-и на некоторые каналы.
+@end itemize
+
+@node Релиз 2.1
+@subsection Релиз 2.1
+@itemize
+@item Восстановлена сборка под GNU/Linux системами.
+@end itemize
+
+@node Релиз 2.0
+@subsection Релиз 2.0
+@itemize
+@item Добавлена идентификация клиентов.
+@item Поддержка одновременно нескольких клиентов одним сервером.
+@item Скрипты up/down для каждого клиента.
+@end itemize
+
+@node Релиз 1.5
+@subsection Релиз 1.5
+@itemize
+@item Шифрование/обфусцирование nonce-ов.
+@end itemize
+
+@node Релиз 1.4
+@subsection Релиз 1.4
+@itemize
+@item Оптимизации производительности.
+@end itemize
+
+@node Релиз 1.3
+@subsection Релиз 1.3
+@itemize
+@item Возможность сердцебиения.
+@item Возможность пересогласования (rehandshake).
+@item Опциональные up/down скрипты.
+@end itemize
+
+@node Релиз 1.1
+@subsection Релиз 1.1
+@itemize
+@item Поддержка FreeBSD.
+@end itemize
+
+@node Релиз 1.0
+@subsection Релиз 1.0
+@itemize
+@item Первый стабильный релиз.
+@end itemize
index 54d794428ac1d61eabaf435bf6f1157e7f78695a..c96fdb9fc5674d16301ece4fcb7d2c82a033318f 100644 (file)
@@ -1,12 +1,37 @@
 @node News
-@cindex Releases
-@cindex News
 @unnumbered News
 
-@table @strong
-
-@item @anchor{Release_5.4} Release 5.4
-@cindex Release 5.4
+See also this page @ref{Новости, on russian}.
+
+@menu
+* Release 5.4::
+* Release 5.3::
+* Release 5.2::
+* Release 5.1::
+* Release 5.0::
+* Release 4.2::
+* Release 4.1::
+* Release 4.0::
+* Release 3.5::
+* Release 3.4::
+* Release 3.3::
+* Release 3.2::
+* Release 3.1::
+* Release 3.0::
+* Release 2.4::
+* Release 2.3::
+* Release 2.2::
+* Release 2.1::
+* Release 2.0::
+* Release 1.5::
+* Release 1.4::
+* Release 1.3::
+* Release 1.1::
+* Release 1.0::
+@end menu
+
+@node Release 5.4
+@section Release 5.4
 @itemize
 @item Added optional @ref{Timesync, time synchronization} requirement.
 It will add timestamps in handshake PRP authentication, disallowing to
@@ -14,23 +39,23 @@ repeat captured packet and get reply from the server, making it visible
 to DPI.
 @end itemize
 
-@item @anchor{Release_5.3} Release 5.3
-@cindex Release 5.3
+@node Release 5.3
+@section Release 5.3
 @itemize
-@item Fixed minor bug with @code{newclient.sh} that caught
+@item Fixed minor bug with @command{newclient.sh} that caught
 "Passphrase:" prompt and inserted it into example YAML output.
 Just replaced stdout output to stderr for that prompt.
 @end itemize
 
-@item @anchor{Release_5.2} Release 5.2
-@cindex Release 5.2
+@node Release 5.2
+@section Release 5.2
 @itemize
 @item Ability to read passphrases directly from the terminal (user's
-input) without using of keyfiles. @code{storekey.sh} utility removed.
+input) without using of keyfiles. @command{storekey.sh} utility removed.
 @end itemize
 
-@item @anchor{Release_5.1} Release 5.1
-@cindex Release 5.1
+@node Release 5.1
+@section Release 5.1
 @itemize
 @item Server is configured using @url{http://yaml.org/, YAML} file. It
 is very convenient to have comments and templates, comparing to JSON.
@@ -38,8 +63,8 @@ is very convenient to have comments and templates, comparing to JSON.
 with @emph{BLAKE2b} in handshake code.
 @end itemize
 
-@item @anchor{Release_5.0} Release 5.0
-@cindex Release 5.0
+@node Release 5.0
+@section Release 5.0
 @itemize
 @item New optional @ref{Encless, encryptionless mode} of operation.
 Technically no encryption functions are applied for outgoing packets, so
@@ -49,18 +74,18 @@ encryption usage.
 @item Simplified payload padding scheme, saving one byte of data.
 @item Ability to specify TAP interface name explicitly without any
 up-scripts for convenience.
-@item @code{govpn-verifier} utility also can use @ref{EGD}.
+@item @command{govpn-verifier} utility also can use @ref{EGD}.
 @end itemize
 
-@item @anchor{Release_4.2} Release 4.2
-@cindex Release 4.2
+@node Release 4.2
+@section Release 4.2
 @itemize
 @item Fixed non-critical bug when server may fail if up-script is not
 executed successfully.
 @end itemize
 
-@item @anchor{Release_4.1} Release 4.1
-@cindex Release 4.1
+@node Release 4.1
+@section Release 4.1
 @itemize
 @item @url{https://password-hashing.net/#argon2, Argon2d} is used instead
 of PBKDF2 for password verifier hashing.
@@ -68,8 +93,8 @@ of PBKDF2 for password verifier hashing.
 server-side configuration and the code.
 @end itemize
 
-@item @anchor{Release_4.0} Release 4.0
-@cindex Release 4.0
+@node Release 4.0
+@section Release 4.0
 @itemize
 @item Handshake messages can be noised: their messages lengths are
 hidden. Now they are indistinguishable from transport messages.
@@ -78,8 +103,8 @@ hidden. Now they are indistinguishable from transport messages.
 @item Single JSON file server configuration.
 @end itemize
 
-@item @anchor{Release_3.5} Release 3.5
-@cindex Release 3.5
+@node Release 3.5
+@section Release 3.5
 @itemize
 @item Ability to use @ref{Network, TCP} network transport.
 Server can listen on both UDP and TCP sockets.
@@ -90,43 +115,39 @@ for accessing the server. Server can also emulate HTTP proxy behaviour.
 reasons.
 @end itemize
 
-@item @anchor{Release_3.4} Release 3.4
-@cindex Release 3.4
+@node Release 3.4
+@section Release 3.4
 @itemize
 @item Ability to use external @ref{EGD}-compatible PRNGs. Now you are
-able to use GoVPN even on systems with the bad @code{/dev/random},
+able to use GoVPN even on systems with the bad @file{/dev/random},
 providing higher quality entropy from external sources.
-@item Removed @code{-noncediff} option. It is replaced with in-memory
+@item Removed @option{-noncediff} option. It is replaced with in-memory
 storage of seen nonces, thus eliminating possible replay attacks at all
 without performance degradation related to inbound packets reordering.
 @end itemize
 
-@item @anchor{Release_3.3} Release 3.3
-@cindex Release 3.3
+@node Release 3.3
+@section Release 3.3
 @itemize
 @item Compatibility with an old GNU Make 3.x. Previously only BSD Make
 and GNU Make 4.x were supported.
-@item /dev/urandom is used for correct client identity generation under
-GNU/Linux systems. Previously /dev/random can produce less than required
-128-bits of random.
-@item Updated user manual examples.
+@item @file{/dev/urandom} is used for correct client identity generation
+under GNU/Linux systems. Previously @file{/dev/random} can produce less
+than required 128-bits of random.
 @end itemize
 
-@item @anchor{Release_3.2} Release 3.2
-@cindex Release 3.2
+@node Release 3.2
+@section Release 3.2
 @itemize
-@item
-Deterministic building: dependent libraries source code commits are
-fixed in our makefiles.
-@item
-No Internet connection is needed for building the source code: all
+@item Deterministic building: dependent libraries source code commits
+are fixed in our makefiles.
+@item No Internet connection is needed for building the source code: all
 required libraries are included in release tarballs.
-@item
-FreeBSD Make compatibility. GNU Make is not necessary anymore.
+@item FreeBSD Make compatibility. GNU Make is not necessary anymore.
 @end itemize
 
-@item @anchor{Release_3.1} Release 3.1
-@cindex Release 3.1
+@node Release 3.1
+@section Release 3.1
 @itemize
 @item
 Diffie-Hellman public keys are encoded with Elligator algorithm when
@@ -136,8 +157,8 @@ passwords (that are used to create DSA public keys). But this will
 consume twice entropy for DH key generation in average.
 @end itemize
 
-@item @anchor{Release_3.0} Release 3.0
-@cindex Release 3.0
+@node Release 3.0
+@section Release 3.0
 @itemize
 @item
 EKE protocol is replaced by Augmented-EKE and static symmetric (both
@@ -165,88 +186,80 @@ maximal MTU size.
 Ability to hide underlying packets appearance rate, by generating
 Constant Packet Rate traffic. This includes noise generation too.
 @item
-Per-peer @code{-timeout}, @code{-noncediff}, @code{-noise} and
-@code{-cpr} configuration options for server.
+Per-peer @option{-timeout}, @option{-noncediff}, @option{-noise} and
+@option{-cpr} configuration options for server.
 @end itemize
 
-@item @anchor{Release_2.4} Release 2.4
-@cindex Release 2.4
+@node Release 2.4
+@section Release 2.4
 @itemize
-@item
-Added ability to optionally run built-in HTTP-server responding with
-JSON of all known connected peers information. Real-time client's
+@item Added ability to optionally run built-in HTTP-server responding
+with JSON of all known connected peers information. Real-time client's
 statistics.
-
-@item
-Documentation is explicitly licenced under GNU FDL 1.3+.
+@item Documentation is explicitly licenced under GNU FDL 1.3+.
 @end itemize
 
-@item @anchor{Release_2.3} Release 2.3
-@cindex Release 2.3
+@node Release 2.3
+@section Release 2.3
 @itemize
-@item
-Handshake packets became indistinguishable from the random.
-Now all GoVPN's traffic is the noise for men in the middle.
+@item Handshake packets became indistinguishable from the random. Now
+all GoVPN's traffic is the noise for men in the middle.
 
-@item
-Handshake messages are smaller (16% traffic reduce).
+@item Handshake messages are smaller (16% traffic reduce).
 
-@item
-Adversary now can not create malicious fake handshake packets that
+@item Adversary now can not create malicious fake handshake packets that
 will force server to generate private DH key, preventing entropy
 consuming and resource heavy computations.
 @end itemize
 
-@item @anchor{Release_2.2} Release 2.2
-@cindex Release 2.2
+@node Release 2.2
+@section Release 2.2
 @itemize
 @item Fixed several possible channel deadlocks.
 @end itemize
 
-@item @anchor{Release_2.1} Release 2.1
-@cindex Release 2.1
+@node Release 2.1
+@section Release 2.1
 @itemize
 @item Fixed Linux-related building.
 @end itemize
 
-@item @anchor{Release_2.0} Release 2.0
-@cindex Release 2.0
+@node Release 2.0
+@section Release 2.0
 @itemize
 @item Added clients identification.
 @item Simultaneous several clients support by server.
 @item Per-client up/down scripts.
 @end itemize
 
-@item @anchor{Release_1.5} Release 1.5
-@cindex Release 1.5
+@node Release 1.5
+@section Release 1.5
 @itemize
 @item Nonce obfuscation/encryption.
 @end itemize
 
-@item @anchor{Release_1.4} Release 1.4
-@cindex Release 1.4
+@node Release 1.4
+@section Release 1.4
 @itemize
 @item Performance optimizations.
 @end itemize
 
-@item @anchor{Release_1.3} Release 1.3
-@cindex Release 1.3
+@node Release 1.3
+@section Release 1.3
 @itemize
 @item Heartbeat feature.
 @item Rehandshake feature.
-@item up- and down- optinal scripts.
+@item up- and down- optional scripts.
 @end itemize
 
-@item @anchor{Release_1.1} Release 1.1
-@cindex Release 1.1
+@node Release 1.1
+@section Release 1.1
 @itemize
 @item FreeBSD support.
 @end itemize
 
-@item @anchor{Release_1.0} Release 1.0
-@cindex Release 1.0
+@node Release 1.0
+@section Release 1.0
 @itemize
 @item Initial stable release.
 @end itemize
-
-@end table
index 9e171d12d4088ac4edc2c69b7236c6430d5c4a75..1aee9250f8bebb570418e062574d5d27adbe813b 100644 (file)
@@ -1,13 +1,11 @@
 @node Noise
-@cindex Noise
-@cindex Timestamps
 @subsection Noise
 
 So-called noise is used to hide underlying payload packets length.
 Without it GoVPN provides confidentiality and authenticity of messages,
 but not their timestamps of appearance and sizes.
 
-You may turn on @code{-noise} option, that forces to fill up all
+You may turn on @option{-noise} option, that forces to fill up all
 outgoing packets to their maximum (MTU) size. As it can be applied only
 to outgoing traffic, you should enable it on both sides in most cases.
 
index d343a49d3ff6d49b31d4ab4831cdd7dedf28be37..cdae5524d8d02f74b94f4602c4b9785aefd2be43 100644 (file)
@@ -1,6 +1,4 @@
 @node PAKE
-@cindex Password Authenticated Key Agreement
-@cindex PAKE
 @subsection Password Authenticated Key Agreement
 
 GoVPN uses strong password authentication. That means that it uses human
index 04017782e069b0e0aa3b03b0342ae6f6f0bb66c8..20570b00aa528147d1c9eb783afd97c81d0577ac 100644 (file)
@@ -1,6 +1,4 @@
 @node Precautions
-@cindex Dangers
-@cindex Precautions
 @unnumbered Precautions
 
 @enumerate
@@ -16,7 +14,7 @@ You must @strong{never} use the same key for multiple clients.
 @item
 You must use @strong{cryptographically good} pseudo random number
 generator. By default we use default @code{crypto/rand} library that
-reads @code{/dev/urandom} source. Some GNU/Linux and FreeBSD systems
+reads @file{/dev/urandom} source. Some GNU/Linux and FreeBSD systems
 are rather good with this entropy source. Closed proprietary ones are
 always not and you must use optional @ref{EGD} feature with them.
 @end enumerate
index a314b798efb3c7a4ed31b260b6270335d4c78d9d..f80b947db2ab9ceb4c0da95bc12a0e2e4cc257db 100644 (file)
@@ -1,9 +1,4 @@
 @node Proxy
-@cindex Proxy
-@cindex HTTP proxy
-@cindex HTTP authentication
-@cindex CONNECT
-@cindex HTTP
 @subsection Proxy
 
 You can proxy your requests through HTTP using CONNECT method. This can
@@ -20,9 +15,9 @@ Client has @emph{-proxy} option forcing it to connect to proxy and send
 CONNECT method. Optionally it can be authenticated on it using
 @emph{-proxy-auth} HTTP Basic method.
 
-@example
+@verbatim
 % govpn-client [...] -proto tcp \
     -remote "$REMOTE_ADDR":1194 \
     -proxy 192.168.55.1:8888 \
     -proxy-auth mylogin:password
-@end example
+@end verbatim
diff --git a/doc/russian.texi b/doc/russian.texi
new file mode 100644 (file)
index 0000000..ed35584
--- /dev/null
@@ -0,0 +1,12 @@
+@node Русский
+@unnumbered Информация на русском
+
+@menu
+* О демоне::
+* Часто задаваемые вопросы: ЧАВО.
+* Новости::
+@end menu
+
+@include about.ru.texi
+@include faq.ru.texi
+@include news.ru.texi
index 489402c0ed5e600e32e6040b6c7dbd869f23390a..1784a9bb4858390d276b5354ba083c1dc3f45c24 100644 (file)
@@ -1,18 +1,13 @@
 @node Server
-@cindex Server
-@cindex Server part
-@cindex Server configuration
-@cindex Server side
-@cindex govpn-server
 @section Server part
 
-Except for common @code{-stats}, @code{-egd} options server has the
-following ones:
+Except for common @ref{Stats, -stats}, @ref{EGD, -egd} options client
+has the following ones:
 
-@table @code
+@table @option
 
 @item -proto
-@ref{Network, network protocol} to use. Can be @emph{udp} (default),
+@ref{Network, Network protocol} to use. Can be @emph{udp} (default),
 @emph{tcp} or @emph{all}.
 
 @item -bind
@@ -26,9 +21,6 @@ Start trivial HTTP @ref{Proxy} server on specified @emph{host:port}.
 
 @end table
 
-@cindex YAML
-@cindex YAML configuration
-@cindex Configuration file
 Configuration file is YAML file with following example structure:
 
 @verbatim
@@ -54,19 +46,18 @@ must output interface's name to stdout (first output line).
 For example up-script can be just @code{echo tap10}, or more advanced
 like the following one:
 
-@cindex up-script
 
-@example
+@verbatim
 #!/bin/sh
 $tap=$(ifconfig tap create)
 ifconfig $tap inet6 fc00::1/96 mtu 1412 up
 echo $tap
-@end example
+@end verbatim
 
 Each minute server rereads and refreshes peers configuration and adds
 newly appeared identities, deletes an obsolete ones.
 
-You can use convenient @code{utils/newclient.sh} script for new client
+You can use convenient @command{utils/newclient.sh} script for new client
 creation:
 
 @verbatim
index d6245ce9394ba16d649c27c6e09f885f60a0a058..4f4b4382aaddefe3b33e175a357689dbccb6d253 100644 (file)
@@ -1,10 +1,4 @@
 @node Sources
-@cindex Sources
-@cindex Source code
-@cindex Development source code
-@cindex Git
-@cindex Repository
-@cindex Mirrors
 @section Development source code
 
 Development source code contains the latest version of the code. It may
@@ -16,12 +10,12 @@ You can obtain it by cloning @url{http://git-scm.com/, Git}
 @url{http://git.cypherpunks.ru/cgit.cgi/govpn.git/log/, repository}
 and fetching dependent libraries source code as git submodules:
 
-@example
+@verbatim
 % git clone git://git.cypherpunks.ru/govpn.git govpn
 % cd govpn
 % git checkout develop
 % git submodule update --init
-@end example
+@end verbatim
 
 Also there is mirror of dependent libraries for safety if their native
 repositories will be unavailable (they are seldom updated):
index 0c147005d802ebb5593e70c84f06ae71fedcabd8..e90cc3b9ceed952fb7bd3a0036ec600ca149ca03 100644 (file)
@@ -1,12 +1,10 @@
 @node Stats
-@cindex Stats
-@cindex Statistics
 @subsection Statistics
 
 Both client and server has ability to show statistics about known
 connected peers. You retrieve them by downloading JSON from built-in
 background HTTP-server. You can enable it by specifying
-@code{-stats host:port} argument.
+@option{-stats host:port} argument.
 
 Actually it is not full-fledged HTTP-server: it just accepts connection,
 reads from it (does not parse anything) and writes dummy headers with
index e63659a1c7becd475c9f0a0528dbf36570444352..19806bed6822e719055ffc91189696efb09bdfe7 100644 (file)
@@ -1,4 +1,17 @@
 body {
     margin: auto;
     max-width: 800px;
+    background-color: #AEBECE;
+}
+
+h1, h2, h3, h4 {
+    text-align: center;
+}
+
+h1, h2, h3, h4, strong {
+    color: #900090;
+}
+
+pre {
+    background-color: #CCCCCC;
 }
index aed296addb680dcee2740ee482b5c7f0797ce666..238d2fbf0f49a6f5cb9af614062d5afad1e15457 100644 (file)
@@ -1,24 +1,13 @@
 @node Thanks
-@cindex Thanks
 @unnumbered Thanks
 
 Thanks for contributions and suggestions to:
 
 @itemize
-@item
-@url{https://www.schneier.com/books/applied_cryptography/, Applied Cryptography}
-@copyright{} 1996 Bruce Schneier.
-@item
-@url{http://tnlandforms.us/cns05/speke.pdf, Strong Password-Only Authenticated Key Exchange}
-@copyright{} 1996 David P. Jablon.
-@item
-@url{https://www.cs.columbia.edu/~smb/papers/aeke.pdf, Augmented Encrypted Key Exchange}:
-a Password-Based Protocol Secure Against Dictionary Attacks and Password
-File Compromise @copyright{} Steven M. Belloving, Michael Merrit.
-@item @email{watsonbladd@@gmail.com, Watson Ladd} for suggestion of
-    @url{http://elligator.cr.yp.to/, Elligator} encoding.
-@item @url{https://password-hashing.net/#argon2, PHC for Argon2}.
-@item Ronald L. Rivest for its
-@url{http://people.csail.mit.edu/rivest/chaffing-980701.txt, Chaffing
-and Winnowing: Confidentiality without Encryption}.
+@item @url{https://www.schneier.com/books/applied_cryptography/, Applied Cryptography} @copyright{} 1996 Bruce Schneier.
+@item @url{http://tnlandforms.us/cns05/speke.pdf, Strong Password-Only Authenticated Key Exchange} @copyright{} 1996 David P. Jablon.
+@item @url{https://www.cs.columbia.edu/~smb/papers/aeke.pdf, Augmented Encrypted Key Exchange}: a Password-Based Protocol Secure Against Dictionary Attacks and Password File Compromise @copyright{} Steven M. Belloving, Michael Merrit.
+@item @email{watsonbladd@@gmail.com, Watson Ladd} for suggestion of @url{http://elligator.cr.yp.to/, Elligator} encoding.
+@item @url{https://password-hashing.net/#argon2, Password Hashing Competition for Argon2}.
+@item @url{http://people.csail.mit.edu/rivest/chaffing-980701.txt, Chaffing and Winnowing: Confidentiality without Encryption} @copyright{} Ronald L. Rivest
 @end itemize
index 89dcf1e500c8c76e4714c967e75455edc02b2e99..89dd5b011579ae16c80dc05bf8d1f28eea33bcab 100644 (file)
@@ -1,5 +1,4 @@
 @node Timeout
-@cindex Timeout
 @subsection Timeout
 
 Because of stateless UDP nature there is no way to reliably know if
index a212490fc9bdd1bd51ffe3945ddaadf84ca60c71..a07b27284ce8f68dc07b17c87a68d38f5627f805 100644 (file)
@@ -1,6 +1,4 @@
 @node Timesync
-@cindex Timesync
-@cindex Time synchronization
 @subsection Time synchronization
 
 DPI systems can be active. They could intercept first (assuming
@@ -12,10 +10,10 @@ handshake packet.
 
 Time synchronization requirement could be used for preventing this.
 Client and server clocks must be synced together more or less. You
-enable it by specifying @code{timesync} option with allowable time
+enable it by specifying @option{-timesync} option with allowable time
 accuracy (time window width) in seconds.
 
 Each handshake's packet PRP authentication just XORed with current
-timestamp rounded to @code{timesync} number of seconds. Timesync option
+timestamp rounded to @option{timesync} number of seconds. Timesync option
 is higher: less clock synchronization accuracy required, but bigger time
 window of possible packet repeating.
diff --git a/doc/todo.texi b/doc/todo.texi
deleted file mode 100644 (file)
index 288dfa3..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-@node TODO
-@cindex TODO
-@unnumbered TODO
-
-@itemize
-@item Randomize ports usage.
-@end itemize
index 3b894ec99a146b61e797950f9c867adf1bf30f35..4b8413b23e470b0cb58543ecaa4c92c89d572731 100644 (file)
@@ -1,12 +1,4 @@
 @node Transport
-@cindex Transport
-@cindex Transport protocol
-@cindex Salsa20
-@cindex PRP
-@cindex Nonce
-@cindex Poly1305
-@cindex XTEA
-@cindex Serial
 @section Transport protocol
 
 @verbatim
index ca2e81c4c371d638c86f7d183171682393d7a67b..b27b35628d1281d8d0880cad898d28eecb699ef4 100644 (file)
@@ -1,6 +1,4 @@
 @node User
-@cindex User
-@cindex User manual
 @unnumbered User manual
 
 Announcements about updates and new releases can be found in
@@ -12,7 +10,6 @@ interfaces. GoVPN is just a tunnelling of Ethernet frames, nothing less,
 nothing more. All you IP-related network management is not touched by
 VPN at all. You can automate it using up and down shell scripts.
 
-@cindex Performance
 What network performance can user expect? For example single
 @emph{Intel i5-2450M 2.5 GHz} core on @emph{FreeBSD 10.2 amd64}
 with @emph{Go 1.5.1} gives 786 Mbps (UDP transport) throughput.
index 861bef0a25ee6cbd76146b8e0211571f908f3f5d..7efdf07c1e74dfa7d1782308a556d049feec3e82 100644 (file)
@@ -1,30 +1,28 @@
 @node Verifier
-@cindex Verifier
-@cindex govpn-verifier
 @subsection Verifier
 
-Verifier is created using @code{govpn-verifier} utility.
+Verifier is created using @command{govpn-verifier} utility.
 
-@example
+@verbatim
 % govpn-verifier
 Passphrase:[hello world]
 $argon2d$m=4096,t=128,p=1$bwR5VjeCYIQaa8SeaI3rqg$KCNIqfS4DGsBTtVytamAzcISgrlEWvNxan1UfBrFu10
 $argon2d$m=4096,t=128,p=1$bwR5VjeCYIQaa8SeaI3rqg
-@end example
+@end verbatim
 
 First line is the verifier for the server side. Second line is for the
 client -- it lacks generated public key. However you can use server's
 one on the client side too.
 
-You can check passphrase against verifier by specifying @code{-verifier}
+You can check passphrase against verifier by specifying @option{-verifier}
 option with the path to verifier file:
 
-@example
+@verbatim
 % govpn-verifier -verifier '$argon2d...'
 Passphrase:[hello world]
 true
-@end example
+@end verbatim
 
 Optionally you can store plaintext passphrases on volatile memory
 (memory disk, encrypted filesystem with restrictive permissions to the
-file) and provide @code{-key} option.
+file) and provide @option{-key} option.
index 51cf2893e3b2bf564485df76ee36bed9f4d6686b..792506dd9f93ac95f4509998c07b8ce2db8cbf14 100644 (file)
@@ -1,8 +1,4 @@
 @node Verifier structure
-@cindex Verifier structure
-@cindex Argon2
-@cindex Argon2d
-@cindex Salt
 @section Verifier structure
 
 Verifier is a derivative of the password. It is resistant to