]> Cypherpunks.ru repositories - govpn.git/commitdiff
[DOC] Overview refactoring
authorSergey Matveev <stargrave@stargrave.org>
Fri, 1 May 2015 22:25:45 +0000 (01:25 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Fri, 1 May 2015 22:25:45 +0000 (01:25 +0300)
Signed-off-by: Sergey Matveev <stargrave@stargrave.org>
doc/govpn.texi
doc/noise.texi
doc/noncediff.texi
doc/overview.texi

index 8d365711980f65168bc3e3c9c642cfa299bcad3f..44aa54d474d11bad36893421f2a3fc1378b963e5 100644 (file)
@@ -22,7 +22,8 @@ A copy of the license is included below.
 @top GoVPN
 
 This manual is for GoVPN -- simple secure free software virtual private
-network (VPN) daemon, written entirely on Go programming language.
+network (VPN) daemon, aimed to be reviewable, secure, DPI-resistant,
+written entirely on Go.
 
 @menu
 * Overview::
index 9bb27c6e514b279517b1f150e7a7500226571bb1..d37631051baec950ee8b74edf2b3ed8d10f1a0fa 100644 (file)
@@ -1,12 +1,13 @@
 @node Noise
 @section Noise
 
-You may turn on @code{-noise} option, that forces to fill up all
-outgoing packets to their maximum (MTU) size. Without that option GoVPN
-provides confidentiality and authenticity of payload, but it's size
-leaks to the observer.
+So-called noise is used to hide underlying payload packets lengths.
+Without it GoVPN provides confidentiality and authenticity of messages,
+but not their timestamps of appearance and sizes.
 
-As it can be applied only to outgoing traffic, you should enable it on
-both sides in most cases.
+You may turn on @code{-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.
 
-Pay attention that this can dramatically increase your traffic!
+Pay attention that this can dramatically increase your traffic! It is
+turned off by default.
index 14afcb109e4177e73fb8a085f06f0e217faab614..7ce3aa25c8b42ae94a3d95702f383b50f6965635 100644 (file)
@@ -14,3 +14,4 @@ In most cases there is no need in so strict nonce boundaries and
 allowable nonce differences. This is trade-off between highest security
 and possible performance degradation. For example @code{-noncediff 128}
 works rather well (no packet drops) with 1 Gbps link with two switches.
+By default no nonce differences are allowed (highest security).
index 76fac71cd6a2ee55e0f0d6b452a23144591fe97c..406ab288fdef1ad8b6344080bb89445d202f0b27 100644 (file)
@@ -1,35 +1,35 @@
 @node Overview
 @unnumbered Overview
 
-GoVPN is simple secure virtual private network daemon. It uses
+GoVPN is simple secure virtual private network daemon, written entirely
+on @url{http://golang.org/, Go programming language}.
+
+Reviewability, high 128-bit security margin and
+@url{https://en.wikipedia.org/wiki/Deep_packet_inspection, DPI}
+resistance in mind in free software solution are the main goals
+for that daemon.
+
+State off art cryptography technologies include:
+@url{http://cr.yp.to/snuffle.html, Salsa20} stream encryption,
+@url{http://143.53.36.235:8080/tea.htm, XTEA} block encryption,
+@url{http://cr.yp.to/mac.html, Poly1305} message authentication,
 @url{https://en.wikipedia.org/wiki/Encrypted_key_exchange, Diffie-Hellman Encrypted Key Exchange}
-(DH-EKE) for mutual zero-knowledge peers authentication and
-authenticated encrypted data transport. It is written entirely on
-@url{http://golang.org/, Go programming language}.
-
-All packets captured on network interface are encrypted, authenticated
-and sent to remote server, that writes them to his interface, and vice
-versa. Client and server use pre-shared authentication key (PSK) and
-128-bit identification key. There are heartbeat packets used to prevent
-session termination because of peers inactivity.
-
-Handshake is used to mutually authenticate peers, exchange common secret
-per-session encryption key and check UDP transport availability.
-
-Because of UDP and authentication overhead: each packet grows in size
-during transmission, so you have to lower you maximum transmission unit
-(MTU) on virtual network interface.
+(DH-EKE) powered by @url{http://cr.yp.to/ecdh.html, Curve25519}.
+Strong
+@url{https://en.wikipedia.org/wiki/Zero-knowledge_password_proof, zero-knowledge}
+mutual authentication with key exchange stage is invulnerable
+to man-in-the-middle attacks.
+@url{https://en.wikipedia.org/wiki/Forward_secrecy, Perfect forward secrecy}
+property guarantee that compromising of long-term authentication
+pre-shared key can not lead to previously captured traffic decrypting.
+Rehandshaking ensures session keys rotation. MAC authentication with
+one-time keys protects against
+@url{https://en.wikipedia.org/wiki/Replay_attack, replay attacks}.
 
-High security is the goal for that daemon. It uses fast cryptography
-algorithms with 128bit security margin, strong mutual zero-knowledge
-authentication and perfect-forward secrecy property. An attacker can not
-know anything about payload (except it's size and time) from captured
-traffic, even if pre-shared key is compromised. Rehandshake is performed
-by client every 4 GiB of transfered data.
+Server can work with several clients simultaneously. Each client is
+@strong{identified} by 128-bit key, that does not leak during handshake
+and each client stays @strong{anonymous} for MiTM and DPI.
 
-Each client also has it's own identification key and server works with
-all of them independently. Identification key is not secret, but it is
-encrypted (obfuscated) during transmission.
 
 The only platform specific requirement is TAP network interface support.
 API to that kind of device is different, OS dependent and non portable.
@@ -50,22 +50,13 @@ network interfaces on top of UDP entirely
 @item IPv6 compatible
 @item Encrypted and authenticated payload transport
 @item Relatively fast handshake
-@item
-@url{https://en.wikipedia.org/wiki/Replay_attack, Replay attack} protection
-@item
-@url{https://en.wikipedia.org/wiki/Forward_secrecy, Perfect forward secrecy}
-(if long-term pre-shared keys are compromised, no captured traffic can
-be decrypted anyway)
-@item
-Mutual two-side authentication (noone will send real network interface
-data unless the other side is authenticated)
-@item
-@url{https://en.wikipedia.org/wiki/Zero-knowledge_password_proof, Zero knowledge}
-authentication (pre-shared key is not transmitted in any form between
-the peers, not even it's hash value)
+@item Replay attack protection
+@item Perfect forward secrecy property
+@item Mutual two-side authentication
+@item Zero knowledge authentication
 @item Built-in rehandshake and heartbeat features
 @item Several simultaneous clients support
-@item Optional noise-appending for concealing underlying packet's length
+@item Hiding of payload packets length by noise appending
 @item Optional built-in HTTP-server for retrieving information about
 known connected peers in @url{http://json.org/, JSON} format
 @end itemize