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