--- gvpe/README 2004/06/11 15:56:03 1.7
+++ gvpe/README 2005/03/18 01:53:05 1.8
@@ -7,31 +7,58 @@
==== DESCRIPTION ====
GVPE is a suite designed to provide a virtual private network for
- multiple nodes over an untrusted network.
+ multiple nodes over an untrusted network. This document first gives an
+ introduction to VPNs in general and then describes the specific
+ implementation of GVPE.
- "Virtual" means that no physical network is created (of course), but an
- ethernet is emulated by creating multiple tunnels between the member
- nodes.
- "Private" means that non-participating nodes cannot decode ("sniff)" nor
- inject ("spoof") packets.
+== WHAT IS A VPN? ==
- In the case of gvpe, even participating nodes cannot sniff packets send
- to other nodes or spoof packets as if sent from other nodes.
+ VPN is an acronym, it stands for:
- "Network" means that more than two parties can participate in the
- network, so for instance it's possible to connect multiple branches of a
- company into a single network. Many so-called "vpn" solutions only
- create point-to-point tunnels.
+: Virtual means that no physical network is created (of course), but a
+ network is *emulated* by creating multiple tunnels between the
+ member nodes by encapsulating and sending data over another
+ transport network.
+ Usually the emulated network is a normal IP or Ethernet, and the
+ transport network is the Internet. However, using a VPN system like
+ GVPE to connect nodes over other untrusted networks such as Wireless
+ LAN is not uncommon.
-== DESIGN GOALS ==
+: Private means that non-participating nodes cannot decode ("sniff)"
+ nor inject ("spoof") packets. This means that nodes can be connected
+ over untrusted networks such as the public Internet without fear of
+ being eavesdropped while at the same time being able to trust data
+ sent by other nodes.
+
+ In the case of GVPE, even participating nodes cannot sniff packets
+ send to other nodes or spoof packets as if sent from other nodes, so
+ communications between any two nodes is private to those two nodes.
+
+: Network means that more than two parties can participate in the
+ network, so for instance it's possible to connect multiple branches
+ of a company into a single network. Many so-called "vpn" solutions
+ only create point-to-point tunnels, which in turn can be used to
+ build larger networks.
+
+ GVPE provides a true multi-point network in wich any number of nodes
+ (at least a few dozen in practise, the theoretical limit is 4095
+ nodes) can participate.
+
+
+== GVPE DESIGN GOALS ==
: SIMPLE DESIGN
Cipher, HMAC algorithms and other key parameters must be selected at
compile time - this makes it possible to only link in algorithms you
actually need. It also makes the crypto part of the source very
- transparent and easy to inspect.
+ transparent and easy to inspect, and last not least this makes it
+ possible to hardcode the layout of all packets into the binary. GVPE
+ goes a step further and internally reserves blocks of the same
+ length for all packets, which virtually removes all possibilities of
+ buffer overflows, as there is only a single type of buffer and it's
+ always of fixed length.
: EASY TO SETUP
A few lines of config (the config file is shared unmodified between
@@ -65,7 +92,9 @@
Please have a look at the ``gvpe.osdep(5)'' manpage for
platform-specific information.
- Here are a few recipes for compiling your gvpe:
+ Here are a few recipes for compiling your gvpe, showing the extremes
+ (fast, small, insecure OR slow, large, more secure), between you should
+ choose:
== AS LOW PACKET OVERHEAD AS POSSIBLE ==
@@ -73,7 +102,9 @@
./configure --enable-hmac-length=4 --enable-rand-length=0
Minimize the header overhead of VPN packets (the above will result in
- only 4 bytes of overhead over the raw ethernet frame).
+ only 4 bytes of overhead over the raw ethernet frame). This is a
+ insecure configuration because a HMAC length of 4 makes collision
+ attacks based on the birthday paradox easy, though.
== MINIMIZE CPU TIME REQUIRED ==
@@ -81,7 +112,7 @@
./configure --enable-cipher=bf --enable-digest=md4
Use the fastest cipher and digest algorithms currently available in
- gvpe.
+ gvpe. MD4 has been broken and is quite insecure, though.
== MAXIMIZE SECURITY ==
@@ -90,7 +121,9 @@
This uses a 16 byte HMAC checksum to authenticate packets (I guess 8-12
would also be pretty secure ;) and will additionally prefix each packet
- with 8 bytes of random data.
+ with 8 bytes of random data. In the long run, people should move to
+ SHA-224 and beyond, but support in openssl is missing as of writing this
+ document.
In general, remember that AES-128 seems to be more secure and faster
than AES-192 or AES-256, more randomness helps against sniffing and a
@@ -215,42 +248,23 @@
==== SEE ALSO ====
gvpe.osdep(5) for OS-depedendent information, gvpe.conf(5), gvpectrl(8),
- and for a description of the protocol and routing algorithms,
- gvpe.protocol(7).
+ and for a description of the transports, protocol, and routing
+ algorithm, gvpe.protocol(7).
+
+ The GVPE mailinglist, at , or
+ ``gvpe@lists.schmorp.de''.
==== AUTHOR ====
- Marc Lehmann
+ Marc Lehmann
==== COPYRIGHTS AND LICENSES ====
- Vpe itself is distributed under the GENERAL PUBLIC LICENSE (see the file
- COPYING that should be part of your distribution).
+ GVPE itself is distributed under the GENERAL PUBLIC LICENSE (see the
+ file COPYING that should be part of your distribution).
In some configurations it uses modified versions of the tinc vpn suite,
which is also available under the GENERAL PUBLIC LICENSE.
- In some configurations (notably darwin), it uses a poll emulation
- library that comes with the following license notice:
-
- Copyright (c) 1995-2002 Brian M. Clapper
- All rights reserved.
-
- Redistribution and use in source and binary forms are permitted
- provided that: (1) source distributions retain this entire
- copyright notice and comment; (2) modifications made to the
- software are prominently mentioned, and a copy of the original
- software (or a pointer to its location) are included; and (3)
- distributions including binaries display the following
- acknowledgement: "This product includes software developed by Brian
- M. Clapper " in the documentation or other
- materials provided with the distribution. The name of the author
- may not be used to endorse or promote products derived from this
- software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-