Add PRF to derive key material from the ECDH shared secret.
[tinc] / README
1 This is the README file for tinc version 1.1pre1. Installation
2 instructions may be found in the INSTALL file.
3
4 tinc is Copyright (C) 1998-2011 by:
5
6 Ivo Timmermans,
7 Guus Sliepen <guus@tinc-vpn.org>,
8 and others.
9
10 For a complete list of authors see the AUTHORS file.
11
12 This program is free software; you can redistribute it and/or modify
13 it under the terms of the GNU General Public License as published by
14 the Free Software Foundation; either version 2 of the License, or (at
15 your option) any later version. See the file COPYING for more details.
16
17
18 This is a pre-release
19 ---------------------
20
21 Please note that this is NOT a stable release. Until version 1.1.0 is released,
22 please use one of the 1.0.x versions if you need a stable version of tinc.
23
24 Although tinc 1.1 will be protocol compatible with tinc 1.0.x, the
25 functionality of the tincctl program may still change, and the control socket
26 protocol is not fixed yet.
27
28
29 Security statement
30 ------------------
31
32 In August 2000, we discovered the existence of a security hole in all versions
33 of tinc up to and including 1.0pre2. This had to do with the way we exchanged
34 keys. Since then, we have been working on a new authentication scheme to make
35 tinc as secure as possible. The current version uses the OpenSSL library and
36 uses strong authentication with RSA keys.
37
38 On the 29th of December 2001, Jerome Etienne posted a security analysis of tinc
39 1.0pre4. Due to a lack of sequence numbers and a message authentication code
40 for each packet, an attacker could possibly disrupt certain network services or
41 launch a denial of service attack by replaying intercepted packets. The current
42 version adds sequence numbers and message authentication codes to prevent such
43 attacks.
44
45 On September the 15th of 2003, Peter Gutmann contacted us and showed us a
46 writeup describing various security issues in several VPN daemons. He showed
47 that tinc lacks perfect forward security, the connection authentication could
48 be done more properly, that the sequence number we use as an IV is not the best
49 practice and that the default length of the HMAC for packets is too short in
50 his opinion. We do not know of a way to exploit these weaknesses, but we will
51 address these issues in tinc 2.0.
52
53 Cryptography is a hard thing to get right. We cannot make any
54 guarantees. Time, review and feedback are the only things that can
55 prove the security of any cryptographic product. If you wish to review
56 tinc or give us feedback, you are stronly encouraged to do so.
57
58
59 Compatibility
60 -------------
61
62 Version 1.1pre1 is compatible with 1.0pre8, 1.0 and later, but not with older
63 versions of tinc.
64
65
66 Requirements
67 ------------
68
69 Either OpenSSL (http://www.openssl.org/) or libgcrypt
70 (http://www.gnupg.org/download/#libgcrypt).
71
72 The zlib library is used for optional compression. You can find it at
73 http://www.gzip.org/zlib/.
74
75 The lzo library is also used for optional compression. You can find it at
76 http://www.oberhumer.com/opensource/lzo/.
77
78 Since 1.1, the libevent library is used for the main event loop. You can find
79 it at http://monkey.org/~provos/libevent/.
80
81 In order to compile tinc, you will need a GNU C compiler environment. Please
82 ensure you have the latest stable versions of all the required libraries.
83
84
85 Features
86 --------
87
88 This version of tinc supports multiple virtual networks at once. To
89 use this feature, you may supply a netname via the -n or --net
90 options. The standard locations for the config files will then be
91 /etc/tinc/<net>/.
92
93 tincd regenerates its encryption key pairs. It does this on the first
94 activity after the keys have expired. This period is adjustable in the
95 configuration file, and the default time is 3600 seconds (one hour).
96
97 This version supports multiple subnets at once. They are also sorted
98 on subnet mask size. This means that it is possible to have
99 overlapping subnets on the VPN, as long as their subnet mask sizes
100 differ.
101
102 Since pre5, tinc can operate in several routing modes. The default mode,
103 "router", works exactly like the older version, and uses Subnet lines to
104 determine the destination of packets. The other two modes, "switch" and "hub",
105 allow the tinc daemons to work together like a single network switch or hub.
106 This is useful for bridging networks. The latter modes only work properly on
107 Linux, FreeBSD and Windows.
108
109 The algorithms used for encryption and generating message authentication codes
110 can now be changed in the configuration files. All cipher and digest algorithms
111 supported by OpenSSL can be used. Useful ciphers are "blowfish" (default),
112 "bf-ofb", "des", "des3", etcetera. Useful digests are "sha1" (default), "md5",
113 etcetera.
114
115 Support for routing IPv6 packets has been added. Just add Subnet lines with
116 IPv6 addresses (without using :: abbreviations) and use ifconfig or ip (from
117 the iproute package) to give the virtual network interface corresponding IPv6
118 addresses. tinc does not provide autoconfiguration for IPv6 hosts, if you need
119 it use radvd or zebra.
120
121 It is also possible to make tunnels to other tinc daemons over IPv6 networks,
122 if the operating system supports IPv6.  tinc will automatically use both IPv6
123 and IPv4 when available, but this can be changed by adding the option
124 "AddressFamily = ipv4" or "AddressFamily = ipv6" to the tinc.conf file.
125
126 Normally, when started tinc will detach and run in the background. In a native
127 Windows environment this means tinc will intall itself as a service, which will
128 restart after reboots.  To prevent tinc from detaching or running as a service,
129 use the -D option.
130