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