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