ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/gvpe/doc/gvpe.5.pod
(Generate patch)

Comparing gvpe/doc/gvpe.5.pod (file contents):
Revision 1.1 by pcg, Fri Jun 11 15:56:12 2004 UTC vs.
Revision 1.6 by pcg, Thu Mar 17 22:24:31 2005 UTC

3GNU-VPE - Overview of the GNU Virtual Private Ethernet suite. 3GNU-VPE - Overview of the GNU Virtual Private Ethernet suite.
4 4
5=head1 DESCRIPTION 5=head1 DESCRIPTION
6 6
7GVPE is a suite designed to provide a virtual private network for multiple 7GVPE is a suite designed to provide a virtual private network for multiple
8nodes over an untrusted network. 8nodes over an untrusted network. This document first gives an introduction
9to VPNs in general and then describes the specific implementation of GVPE.
9 10
11=head2 WHAT IS A VPN?
12
13VPN is an acronym, it stands for:
14
15=over 4
16
17=item X<Virtual>
18
10"Virtual"X<Virtual> means that no physical network is created (of course), but an 19Virtual means that no physical network is created (of course), but a
11ethernet is emulated by creating multiple tunnels between the member 20network is I<emulated> by creating multiple tunnels between the member
21nodes by encapsulating and sending data over another transport network.
22
23Usually the emulated network is a normal IP or Ethernet, and the transport
24network is the Internet. However, using a VPN system like GVPE to connect
25nodes over other untrusted networks such as Wireless LAN is not uncommon.
26
27=item X<Private>
28
29Private means that non-participating nodes cannot decode ("sniff)" nor
30inject ("spoof") packets. This means that nodes can be connected over
31untrusted networks such as the public Internet without fear of being
32eavesdropped while at the same time being able to trust data sent by other
12nodes. 33nodes.
13 34
14"Private"X<Private> means that non-participating nodes cannot decode ("sniff)" nor
15inject ("spoof") packets.
16
17In the case of gvpe, even participating nodes cannot sniff packets send to 35In the case of GVPE, even participating nodes cannot sniff packets
18other nodes or spoof packets as if sent from other nodes. 36send to other nodes or spoof packets as if sent from other nodes, so
37communications between any two nodes is private to those two nodes.
19 38
39=item X<Network>
40
20"Network"X<Network> means that more than two parties can participate in the 41Network means that more than two parties can participate in the network,
21network, so for instance it's possible to connect multiple branches of a 42so for instance it's possible to connect multiple branches of a company
22company into a single network. Many so-called "vpn" solutions only create 43into a single network. Many so-called "vpn" solutions only create
23point-to-point tunnels. 44point-to-point tunnels, which in turn can be used to build larger
45networks.
24 46
47GVPE provides a true multi-point network in wich any number of nodes (at
48least a few dozen in practise, the theoretical limit is 4095 nodes) can
49participate.
50
51=back
52
25=head2 DESIGN GOALS 53=head2 GVPE DESIGN GOALS
26 54
27=over 4 55=over 4
28 56
29=item SIMPLE DESIGN 57=item SIMPLE DESIGN
30 58
31Cipher, HMAC algorithms and other key parameters must be selected 59Cipher, HMAC algorithms and other key parameters must be selected
32at compile time - this makes it possible to only link in algorithms 60at compile time - this makes it possible to only link in algorithms
33you actually need. It also makes the crypto part of the source very 61you actually need. It also makes the crypto part of the source very
34transparent and easy to inspect. 62transparent and easy to inspect, and last not least this makes it possible
63to hardcode the layout of all packets into the binary. GVPE goes a step
64further and internally reserves blocks of the same length for all packets,
65which virtually removes all possibilities of buffer overflows, as there is
66only a single type of buffer and it's always of fixed length.
35 67
36=item EASY TO SETUP 68=item EASY TO SETUP
37 69
38A few lines of config (the config file is shared unmodified between all 70A few lines of config (the config file is shared unmodified between all
39hosts) and a single run of C<gvpectrl> to generate the keys suffices to 71hosts) and a single run of C<gvpectrl> to generate the keys suffices to
71=head1 COMPILETIME CONFIGURATION 103=head1 COMPILETIME CONFIGURATION
72 104
73Please have a look at the C<gvpe.osdep(5)> manpage for platform-specific 105Please have a look at the C<gvpe.osdep(5)> manpage for platform-specific
74information. 106information.
75 107
76Here are a few recipes for compiling your gvpe: 108Here are a few recipes for compiling your gvpe, showing the extremes
109(fast, small, insecure OR slow, large, more secure), between you should
110choose:
77 111
78=head2 AS LOW PACKET OVERHEAD AS POSSIBLE 112=head2 AS LOW PACKET OVERHEAD AS POSSIBLE
79 113
80 ./configure --enable-hmac-length=4 --enable-rand-length=0 114 ./configure --enable-hmac-length=4 --enable-rand-length=0
81 115
82Minimize the header overhead of VPN packets (the above will result in only 116Minimize the header overhead of VPN packets (the above will result in
834 bytes of overhead over the raw ethernet frame). 117only 4 bytes of overhead over the raw ethernet frame). This is a insecure
118configuration because a HMAC length of 4 makes collision attacks based on
119the birthday paradox easy, though.
84 120
85=head2 MINIMIZE CPU TIME REQUIRED 121=head2 MINIMIZE CPU TIME REQUIRED
86 122
87 ./configure --enable-cipher=bf --enable-digest=md4 123 ./configure --enable-cipher=bf --enable-digest=md4
88 124
89Use the fastest cipher and digest algorithms currently available in gvpe. 125Use the fastest cipher and digest algorithms currently available in
126gvpe. MD4 has been broken and is quite insecure, though.
90 127
91=head2 MAXIMIZE SECURITY 128=head2 MAXIMIZE SECURITY
92 129
93 ./configure --enable-hmac-length=16 --enable-rand-length=8 --enable-digest=sha1 130 ./configure --enable-hmac-length=16 --enable-rand-length=8 --enable-digest=sha1
94 131
95This uses a 16 byte HMAC checksum to authenticate packets (I guess 8-12 132This uses a 16 byte HMAC checksum to authenticate packets (I guess 8-12
96would also be pretty secure ;) and will additionally prefix each packet 133would also be pretty secure ;) and will additionally prefix each packet
97with 8 bytes of random data. 134with 8 bytes of random data. In the long run, people should move to
135SHA-224 and beyond, but support in openssl is missing as of writing this
136document.
98 137
99In general, remember that AES-128 seems to be more secure and faster than 138In general, remember that AES-128 seems to be more secure and faster than
100AES-192 or AES-256, more randomness helps against sniffing and a longer 139AES-192 or AES-256, more randomness helps against sniffing and a longer
101HMAC helps against spoofing. MD4 is a fast digest, SHA1 or RIPEMD160 are 140HMAC helps against spoofing. MD4 is a fast digest, SHA1 or RIPEMD160 are
102better, and Blowfish is a fast cipher (and also quite secure). 141better, and Blowfish is a fast cipher (and also quite secure).
206kill the daemon, start it again, making it read it's configuration files 245kill the daemon, start it again, making it read it's configuration files
207again. 246again.
208 247
209=head1 SEE ALSO 248=head1 SEE ALSO
210 249
211gvpe.osdep(5) for OS-depedendent information, gvpe.conf(5), gvpectrl(8), and 250gvpe.osdep(5) for OS-depedendent information, gvpe.conf(5), gvpectrl(8),
212for a description of the protocol and routing algorithms, gvpe.protocol(7). 251and for a description of the transports, protocol, and routing algorithm,
252gvpe.protocol(7).
213 253
214=head1 AUTHOR 254=head1 AUTHOR
215 255
216Marc Lehmann <gvpe@plan9.de> 256Marc Lehmann <gvpe@plan9.de>
217 257

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines