]> Cypherpunks.ru repositories - govpn.git/blob - doc/faq.texi
[DOC] Various small corrections
[govpn.git] / doc / faq.texi
1 @node FAQ
2 @unnumbered Frequently Asked Questions
3
4 @table @asis
5
6 @item Why do not you use TLS?
7 It is complicated protocol. It uses Authenticate-then-Encrypt ordering
8 of algorithms -- it is not secure. Moreover its libraries are huge and
9 hard to read, review and analyze.
10
11 @item Why do not you use SSH?
12 Its first protocol versions used A-a-E ordering, however later ones
13 supports even ChaCha20-Poly1305 algorithms. But its source code is not
14 so trivial and rather big to read and review. OpenSSH does not support
15 strong zero-knowledge password authentication.
16
17 @item Why do not you use IPsec?
18 It is rather good protocol, supported by all modern OSes. But it lacks
19 strong zero-knowledge password authentication and, again, its code is
20 hard to read.
21
22 @item Why do not you use XXX?
23 For the same reasons: most of software do not provide strong password
24 authentication, high cryptographic protocol security, and most of this
25 software is written in C -- it is hard to write right on it.
26
27 @item Why GoVPN is written on Go?
28 Go is very easy to read, review and support. It makes complex code
29 writing a harder task. It provides everything needed to the C language:
30 array bounds checking, garbage collection and concurrency primitives. It
31 provides lesser performance (however my setup on the notebook gives more
32 than 750 Mbps of throughput), but higher reliability and much fewer
33 lines of code.
34
35 @item Why do you authenticate with passphrases?
36 Human is capable of memorizing rather long passphrases (not passwords):
37 100-200 characters, that gives ability to use it as a high-entropy key.
38 You need to trust only yourself, not hardware token or some other
39 storage device. It is convenient.
40
41 @item Why all network configuration must be done manually?
42 Because there are so many use-cases and setups, so many various
43 protocols, that either I support all of them, or use complicated
44 protocol setups like PPP, or just give right of the choice to the
45 administrator. VPN is only just a layer.
46
47 @item Why there is no either OS X or Windows support?
48 Any closed source proprietary systems do not give ability to control the
49 computer. You can not securely use cryptography-related stuff without
50 controlling the underlying computing device. Choose another operating
51 system.
52
53 @item What do you mean by perfect forward secrecy?
54 You can not decrypt previously saved traffic by compromising long-lived
55 keys. PFS property is per-session level: it won't protect from leaking
56 the session key from the memory.
57
58 @item What do you mean by saying that clients are anonymous?
59 That third-party can not differentiate one client from another looking
60 at the traffic (transport and handshake).
61
62 @item What do you mean by censorship resistance?
63 Unability to distinguish either is it GoVPN-traffic is passing by, or
64 just @code{cat /dev/urandom | nc somehost}. If you can not differentiate
65 one kind of traffic from another, then your only option is to forbid all
66 kinds of it.
67
68 @item When should I use @ref{Encless, encryptionless mode}?
69 If you are operating under jurisdiction where courts can either sue you
70 for encryption usage or force you to somehow reveal you encryption
71 keys (however new session encryption keys are generated each session).
72 Those courts can not demand for authentication and signing keys in most
73 cases. @strong{Do not} let mode's name to confuse you: it still
74 provides confidentiality and authenticity of transmitted data! But pay
75 attention that this mode is traffic and resource hungry and currently
76 operate only in TCP mode.
77
78 @item When should I use @ref{Noise, noise} option?
79 In most cases you won't need it without @ref{CPR, constant packer rate}
80 turned on. Without CPR and noise options GoVPN traffic (like TLS, IPsec,
81 SSH and other VPN protocols) leaks underlying interface's packets
82 timestamps and sizes. You can run traffic analysis and predict what is
83 going on in the network. With CPR option enabled you can tell either
84 somebody is online, or not -- nothing less, nothing more.
85
86 @item Can I DoS (denial of service) the daemon?
87 Each transport packet is authenticated first with the very fast UMAC
88 algorithm -- in most cases resource consumption of TCP/UDP layers will
89 be higher then UMAC verifying. Each handshake message is processed only
90 when an encrypted client's @ref{Identity, identity} is found: it uses
91 fast PRP without any entropy usage.
92
93 @end table