]> git.meshlink.io Git - meshlink/blobdiff - README
Avoid allocating packet buffers unnecessarily.
[meshlink] / README
diff --git a/README b/README
index 688a5543ab254ba232cae6a3a9bc7e664154a50f..390468b0e09eea4d10769f0feebd6712e3d30d4e 100644 (file)
--- a/README
+++ b/README
-This is the README file for tinc version 1.0pre8. Installation
-instructions may be found in the INSTALL file.
+This is the README file for the MeshLink library. Installation instructions may
+be found in the INSTALL file.
 
-tinc is Copyright (C) 1998-2002 by:
-
-Ivo Timmermans <ivo@o2w.nl>,
-Guus Sliepen <guus@sliepen.eu.org>,
-and others.
-
-For a complete list of authors see the AUTHORS file.
+MeshLink is Copyright (C) 2014-2018 Guus Sliepen <guus@meshlink.io>
 
 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2 of the License, or (at
 your option) any later version. See the file COPYING for more details.
 
+To obtain a license to use this library in commercial software, please contact
+sales@meshlink.io.
 
-Security statement
-------------------
-
-In August 2000, we discovered the existence of a security hole in all versions
-of tinc up to and including 1.0pre2. This had to do with the way we exchanged
-keys. Since then, we have been working on a new authentication scheme to make
-tinc as secure as possible. The current version uses the OpenSSL library and
-uses strong authentication with RSA keys.
-
-On the 29th of December 2001, Jerome Etienne posted a security analysis of tinc
-1.0pre4. Due to a lack of sequence numbers and a message authentication code
-for each packet, an attacker could possibly disrupt certain network services or
-launch a denial of service attack by replaying intercepted packets. The current
-version adds sequence numbers and message authentication codes to prevent such
-attacks.
-
-Cryptography is a hard thing to get right. We cannot make any
-guarantees. Time, review and feedback are the only things that can
-prove the security of any cryptographic product. If you wish to review
-tinc or give us feedback, you are stronly encouraged to do so.
-
-
-Changes to configuration file format since 1.0pre5
---------------------------------------------------
 
-Some configuration variables have different names now. Most notably "TapDevice"
-should be changed into "Device", and "Device" should be changed into
-"BindToDevice".
+This is not a finished version
+------------------------------
 
-Compatibility
--------------
-
-Version 1.0pre8 is not compatible with older versions of tinc.
+Please do not use this library yet.
 
 
 Requirements
 ------------
 
-Since 1.0pre3, we use OpenSSL for all cryptographic functions.  So you
-need to install this library first; grab it from
-http://www.openssl.org/.  We recommend version 0.9.5 or better.  If
-this library is not installed on you system, configure will fail.  The
-manual in doc/tinc.texi contains more detailed information on how to
-install this library.
-
-Since 1.0pre6, the zlib library is used for optional compression. You need this
-library whether or not you plan to enable the compression. You can find it at
-http://www.gzip.org/zlib/. Because of a possible exploit in earlier versions we
-recommand that you download version 1.1.4 or later.
+In order to compile MeshLink, you will need a GNU C compiler environment.
 
-In order to compile tinc, you will also need autoconf, automake, GNU make, m4
-and gettext.
+The following libraries are used by default, but can be disabled if necessary:
 
+- Catta (https://github.com/meshlink/catta)
 
 Features
 --------
 
-This version of tinc supports multiple virtual networks at once. To
-use this feature, you may supply a netname via the -n or --net
-options. The standard locations for the config files will then be
-/etc/tinc/<net>/. Because of this feature, tinc will send packets
-directly to their destinations, instead of to the uplink. If this
-behaviour is undesirable (for instance because of firewalls or other
-restrictions), please use an older version of tinc (I would recommend
-tinc-0.2.19).
-
-In order to force the kernel to accept received packets, the
-destination MAC address will be set to FE:FD:00:00:00:00 upon
-reception. The MAC address of the ethertap or tun/tap interface must
-also be set to this address. See the manual for more detailed
-information.
-
-tincd regenerates its encryption key pairs. It does this on the first
-activity after the keys have expired. This period is adjustable in the
-configuration file, and the default time is 3600 seconds (one hour).
-
-This version supports multiple subnets at once. They are also sorted
-on subnet mask size. This means that it is possible to have
-overlapping subnets on the VPN, as long as their subnet mask sizes
-differ.
-
-Since pre5, tinc can operate in several routing modes. The default mode,
-"router", works exactly like the older version, and uses Subnet lines to
-determine the destination of packets. The other two modes, "switch" and "hub",
-allow the tinc daemons to work together like a single network switch or hub.
-This is useful for bridging networks. The latter modes only work properly on
-Linux and FreeBSD.
-
-The algorithms used for encryption and generating message authentication codes
-can now be changed in the configuration files. All cipher and digest algorithms
-supported by OpenSSL can be used. Useful ciphers are "blowfish" (default),
-"bf-ofb", "des", "des3", etcetera. Useful digests are "sha1" (default), "md5",
-etcetera.
+MeshLink is a library that allows applications to connect to other instances of
+itself, and exchange messages in a secure way. MeshLink provides end-to-end
+encryption and authentication of messages with perfect forward secrecy. The
+MeshLink library starts its own thread which handles all network
+communications. The application only needs to register callbacks to get
+notified of incoming messages and other important events.
 
-Support for routing IPv6 packets has been added. Just add Subnet lines with
-IPv6 addresses (without using :: abbreviations) and use ifconfig or ip (from
-the iproute package) to give the virtual network interface corresponding IPv6
-addresses. tinc does not provide autoconfiguration for IPv6 hosts, if you need
-it use radvd or zebra. Tunneling IPv6 packets only works on Linux, FreeBSD and
-possibly OpenBSD.
+Other noteworthy features are:
 
-It is also possible to make tunnels to other tinc daemons over IPv6 networks.
-In order to enable this feature the option "AddressFamily = any" or
-"AddressFamily = ipv6" must be added to the tinc.conf file. The host
-configuration files should contain IPv6 addresses for the "Address" variables,
-or hostnames which have an AAAA or A6 record.
+- IPv6 support
+- NAT traversal (requires at least one node that is not behind a NAT)
+- Ed25519 keys (TBD)
+- ChaCha-Poly1305 encryption and message authentication