]> Cypherpunks.ru repositories - govpn.git/blob - doc/news.texi
21104e0006b478d5f6be8ea13aa67e80bc0ad741
[govpn.git] / doc / news.texi
1 @node News
2 @unnumbered News
3
4 See also this page @ref{Новости, on russian}.
5
6 @node Release 7.1
7 @section Release 7.1
8 @itemize
9 @item Fixed bug in client's identity generation and detection code:
10 simultaneous clients may be incorrectly identified, preventing their
11 connection establishing and allowing DPI to detect GoVPN packets.
12 @end itemize
13
14 @node Release 7.0
15 @section Release 7.0
16 @itemize
17 @item (X)Salsa20 is replaced with ChaCha20. Theoretically it should be
18 faster and more secure. Previous versions are not compatible with it!
19 @item Ability to use TUN-interfaces under GNU/Linux. FreeBSD has already
20 supported them without any modifications.
21 @end itemize
22
23 @node Release 6.0
24 @section Release 6.0
25 @itemize
26 @item Argon2d is replaced with Balloon hashing. Found Argon2 libraries
27 written on pure Go have various problems. Moreover Argon2i should be
28 used instead, but it has some possible
29 @url{http://eprint.iacr.org/2016/027, cryptographic defects}. So it is
30 replaced with much more simpler (and seems even cryptographically
31 better) @url{https://crypto.stanford.edu/balloon/, Balloon hashing}.
32 @end itemize
33
34 @node Release 5.10
35 @section Release 5.10
36 @itemize
37 @item @option{-version} option added, printing program version.
38 @end itemize
39
40 @node Release 5.9
41 @section Release 5.9
42 @itemize
43 @item Client reconnects in the loop when connection is lost. Optionally
44 you can disable that behaviour: client will exit immediately, as it
45 previously did.
46 @end itemize
47
48 @node Release 5.8
49 @section Release 5.8
50 @itemize
51 @item Optional ability to use syslog for logging, with
52 @url{https://tools.ietf.org/html/rfc5424, RFC 5424}-like
53 structured records.
54 @item XTEA algorithm is not used anymore for nonce obfuscation, but
55 BLAKE2b-MAC instead. Encryptionless mode now really does not depend on
56 encryption functions.
57 @end itemize
58
59 @node Release 5.7
60 @section Release 5.7
61 @itemize
62 @item TAP interface name and remote peer's address are passed to up- and
63 down- scripts through environment variables.
64 @item Update Argon2 library to use version 1.3 of the algorithm.
65 @end itemize
66
67 @node Release 5.6
68 @section Release 5.6
69 @itemize
70 @item Added up/down example script for replacing default route (thanks
71 to Zhuoyun Wei).
72 @item Fixed documentation bug: @file{.info} was not installing.
73 @end itemize
74
75 @node Release 5.5
76 @section Release 5.5
77 @itemize
78 @item Ability to work on 32-bit platforms. @emph{sync/atomic} library
79 has some specific issues that caused panics on previous versions.
80 @end itemize
81
82 @node Release 5.4
83 @section Release 5.4
84 @itemize
85 @item Added optional time synchronization requirement.
86 It will add timestamps in handshake PRP authentication, disallowing to
87 repeat captured packet and get reply from the server, making it visible
88 to DPI.
89 @end itemize
90
91 @node Release 5.3
92 @section Release 5.3
93 @itemize
94 @item Fixed minor bug with @command{newclient.sh} that caught
95 "Passphrase:" prompt and inserted it into example YAML output.
96 Just replaced stdout output to stderr for that prompt.
97 @end itemize
98
99 @node Release 5.2
100 @section Release 5.2
101 @itemize
102 @item Ability to read passphrases directly from the terminal (user's
103 input) without using of keyfiles. @command{storekey.sh} utility removed.
104 @end itemize
105
106 @node Release 5.1
107 @section Release 5.1
108 @itemize
109 @item Server is configured using @url{http://yaml.org/, YAML} file. It
110 is very convenient to have comments and templates, comparing to JSON.
111 @item Incompatible with previous versions replacement of @emph{HSalsa20}
112 with @emph{BLAKE2b} in handshake code.
113 @end itemize
114
115 @node Release 5.0
116 @section Release 5.0
117 @itemize
118 @item New optional encryptionless mode of operation.
119 Technically no encryption functions are applied for outgoing packets, so
120 you can not be forced to reveal your encryption keys or sued for
121 encryption usage.
122 @item MTUs are configured on per-user basis.
123 @item Simplified payload padding scheme, saving one byte of data.
124 @item Ability to specify TAP interface name explicitly without any
125 up-scripts for convenience.
126 @item @command{govpn-verifier} utility also can use EGD.
127 @end itemize
128
129 @node Release 4.2
130 @section Release 4.2
131 @itemize
132 @item Fixed non-critical bug when server may fail if up-script is not
133 executed successfully.
134 @end itemize
135
136 @node Release 4.1
137 @section Release 4.1
138 @itemize
139 @item @url{https://password-hashing.net/#argon2, Argon2d} is used instead
140 of PBKDF2 for password verifier hashing.
141 @item Client's identity is stored inside the verifier, so it simplifies
142 server-side configuration and the code.
143 @end itemize
144
145 @node Release 4.0
146 @section Release 4.0
147 @itemize
148 @item Handshake messages can be noised: their messages lengths are
149 hidden. Now they are indistinguishable from transport messages.
150 @item Parallelized clients processing on the server side.
151 @item Much higher overall performance.
152 @item Single JSON file server configuration.
153 @end itemize
154
155 @node Release 3.5
156 @section Release 3.5
157 @itemize
158 @item Ability to use TCP network transport.
159 Server can listen on both UDP and TCP sockets.
160 @item Ability to use HTTP proxies (through CONNECT method)
161 for accessing the server. Server can also emulate HTTP proxy behaviour.
162 @item Updated Poly1305 library with ARM-related bugfixes.
163 @item Go 1.5+ version is highly recommended because of performance
164 reasons.
165 @end itemize
166
167 @node Release 3.4
168 @section Release 3.4
169 @itemize
170 @item Ability to use external EGD-compatible PRNGs. Now you are
171 able to use GoVPN even on systems with the bad @file{/dev/random},
172 providing higher quality entropy from external sources.
173 @item Removed @option{-noncediff} option. It is replaced with in-memory
174 storage of seen nonces, thus eliminating possible replay attacks at all
175 without performance degradation related to inbound packets reordering.
176 @end itemize
177
178 @node Release 3.3
179 @section Release 3.3
180 @itemize
181 @item Compatibility with an old GNU Make 3.x. Previously only BSD Make
182 and GNU Make 4.x were supported.
183 @item @file{/dev/urandom} is used for correct client identity generation
184 under GNU/Linux systems. Previously @file{/dev/random} can produce less
185 than required 128-bits of random.
186 @end itemize
187
188 @node Release 3.2
189 @section Release 3.2
190 @itemize
191 @item Deterministic building: dependent libraries source code commits
192 are fixed in our makefiles.
193 @item No Internet connection is needed for building the source code: all
194 required libraries are included in release tarballs.
195 @item FreeBSD Make compatibility. GNU Make is not necessary anymore.
196 @end itemize
197
198 @node Release 3.1
199 @section Release 3.1
200 @itemize
201 @item
202 Diffie-Hellman public keys are encoded with Elligator algorithm when
203 sending over the wire, making them indistinguishable from the random
204 strings, preventing detection of successful decryption try when guessing
205 passwords (that are used to create DSA public keys). But this will
206 consume twice entropy for DH key generation in average.
207 @end itemize
208
209 @node Release 3.0
210 @section Release 3.0
211 @itemize
212 @item
213 EKE protocol is replaced by Augmented-EKE and static symmetric (both
214 sides have it) pre-shared key replaced with server-side verifier. This
215 requires, 64 more bytes in handshake traffic, Ed25519 dependency with
216 corresponding sign/verify computations, PBKDF2 dependency and its
217 usage on the client side during handshake.
218
219 A-EKE with PBKDF2-based verifiers is resistant to dictionary attacks,
220 can use human memorable passphrases instead of static keys and
221 server-side verifiers can not be used for authentication (compromised
222 server does not leak client's authentication keys/passphrases).
223
224 @item
225 Changed transport message structure: added payload packet's length.
226 This will increase transport overhead for two bytes, but heartbeat
227 packets became smaller
228
229 @item
230 Ability to hide underlying packets lengths by appending noise, junk
231 data during transmission. Each packet can be fill up-ed to its
232 maximal MTU size.
233
234 @item
235 Ability to hide underlying packets appearance rate, by generating
236 Constant Packet Rate traffic. This includes noise generation too.
237 @item
238 Per-peer @option{-timeout}, @option{-noncediff}, @option{-noise} and
239 @option{-cpr} configuration options for server.
240 @end itemize
241
242 @node Release 2.4
243 @section Release 2.4
244 @itemize
245 @item Added ability to optionally run built-in HTTP-server responding
246 with JSON of all known connected peers information. Real-time client's
247 statistics.
248 @item Documentation is explicitly licenced under GNU FDL 1.3+.
249 @end itemize
250
251 @node Release 2.3
252 @section Release 2.3
253 @itemize
254 @item Handshake packets became indistinguishable from the random. Now
255 all GoVPN's traffic is the noise for men in the middle.
256
257 @item Handshake messages are smaller (16% traffic reduce).
258
259 @item Adversary now can not create malicious fake handshake packets that
260 will force server to generate private DH key, preventing entropy
261 consuming and resource heavy computations.
262 @end itemize
263
264 @node Release 2.2
265 @section Release 2.2
266 @itemize
267 @item Fixed several possible channel deadlocks.
268 @end itemize
269
270 @node Release 2.1
271 @section Release 2.1
272 @itemize
273 @item Fixed Linux-related building.
274 @end itemize
275
276 @node Release 2.0
277 @section Release 2.0
278 @itemize
279 @item Added clients identification.
280 @item Simultaneous several clients support by server.
281 @item Per-client up/down scripts.
282 @end itemize
283
284 @node Release 1.5
285 @section Release 1.5
286 @itemize
287 @item Nonce obfuscation/encryption.
288 @end itemize
289
290 @node Release 1.4
291 @section Release 1.4
292 @itemize
293 @item Performance optimizations.
294 @end itemize
295
296 @node Release 1.3
297 @section Release 1.3
298 @itemize
299 @item Heartbeat feature.
300 @item Rehandshake feature.
301 @item up- and down- optional scripts.
302 @end itemize
303
304 @node Release 1.1
305 @section Release 1.1
306 @itemize
307 @item FreeBSD support.
308 @end itemize