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