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