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