- Updated texinfo manual.
This commit is contained in:
parent
0d99ae59bd
commit
3d7289cf74
1 changed files with 115 additions and 178 deletions
293
doc/tinc.texi
293
doc/tinc.texi
|
@ -1,5 +1,5 @@
|
|||
\input texinfo @c -*-texinfo-*-
|
||||
@c $Id: tinc.texi,v 1.8.4.10 2000/12/05 08:54:22 zarq Exp $
|
||||
@c $Id: tinc.texi,v 1.8.4.11 2001/01/06 20:02:21 guus Exp $
|
||||
@c %**start of header
|
||||
@setfilename tinc.info
|
||||
@settitle tinc Manual
|
||||
|
@ -17,7 +17,7 @@ Copyright @copyright{} 1998,199,2000 Ivo Timmermans
|
|||
<itimmermans@@bigfoot.com>, Guus Sliepen <guus@@sliepen.warande.net> and
|
||||
Wessel Dankers <wsl@@nl.linux.org>.
|
||||
|
||||
$Id: tinc.texi,v 1.8.4.10 2000/12/05 08:54:22 zarq Exp $
|
||||
$Id: tinc.texi,v 1.8.4.11 2001/01/06 20:02:21 guus Exp $
|
||||
|
||||
Permission is granted to make and distribute verbatim copies of this
|
||||
manual provided the copyright notice and this permission notice are
|
||||
|
@ -42,7 +42,7 @@ Copyright @copyright{} 1998,1999,2000 Ivo Timmermans
|
|||
<itimmermans@@bigfoot.com>, Guus Sliepen <guus@@sliepen.warande.net> and
|
||||
Wessel Dankers <wsl@@nl.linux.org>.
|
||||
|
||||
$Id: tinc.texi,v 1.8.4.10 2000/12/05 08:54:22 zarq Exp $
|
||||
$Id: tinc.texi,v 1.8.4.11 2001/01/06 20:02:21 guus Exp $
|
||||
|
||||
Permission is granted to make and distribute verbatim copies of this
|
||||
manual provided the copyright notice and this permission notice are
|
||||
|
@ -118,7 +118,8 @@ computers on the other end of the internet.
|
|||
|
||||
@cindex virtual
|
||||
This problem can be solved by using @emph{virtual} networks. Virtual
|
||||
networks can live on top of other networks, but do not interfere with
|
||||
networks can live on top of other networks, but they use encapsulation to
|
||||
keep using their private address space so they do not interfere with
|
||||
each other. Mostly, virtual networks appear like a singe LAN, even though
|
||||
they can span the entire world. But virtual networks can't be secured
|
||||
by using firewalls, because the traffic that flows through it has to go
|
||||
|
@ -160,7 +161,7 @@ both the receiving and sending end, it has become largely
|
|||
runtime-configurable---in short, it has become a full-fledged
|
||||
professional package.
|
||||
|
||||
A lot can---and will be---changed. I have a few things that I'd like to
|
||||
A lot can---and will be---changed. We have a number of things that we would like to
|
||||
see in the future releases of tinc. Not everything will be available in
|
||||
the near future. Our first objective is to make tinc work perfectly as
|
||||
it stands, and then add more advanced features.
|
||||
|
@ -173,14 +174,16 @@ available too.
|
|||
@node Supported platforms, , tinc, Introduction
|
||||
@section Supported platforms
|
||||
|
||||
tinc works on Linux, FreeBSD and Solaris. These are the three platforms
|
||||
tinc has been verified to work under Linux, FreeBSD and Solaris, with
|
||||
various hardware architectures. These are the three platforms
|
||||
that are supported by the universial TUN/TAP device driver, so if
|
||||
support for other operating systems is added to this driver, perhaps
|
||||
tinc will run on them as well. Without this driver, tinc will most
|
||||
likely compile and run, but it will not be able to send or receive data
|
||||
packets.
|
||||
|
||||
For a more up to date list, please check the list on our website:
|
||||
For an up to date list of supported platforms, please check the list on
|
||||
our website:
|
||||
@uref{http://tinc.nl.linux.org/platforms.html}.
|
||||
|
||||
|
||||
|
@ -191,14 +194,12 @@ tinc was first written for Linux running on an intel x86 processor, so
|
|||
this is the best supported platform. The protocol however, and actually
|
||||
anything about tinc, has been rewritten to support random byte ordering
|
||||
and arbitrary word length. So in theory it should run on other
|
||||
processors that Linux runs on. Take care however, we haven't been able
|
||||
to really test it yet. If you want to run tinc on another platform than
|
||||
x86, and want to tell us how it went, please do so.
|
||||
processors that Linux runs on. It has already been verified to run on
|
||||
alpha and sparc processors as well.
|
||||
|
||||
tinc uses the ethertap device that is provided in the standard kernel
|
||||
since version 2.1.60, so anything above that (2.2.x, 2.3.x, and the
|
||||
2.4.0-testx (which is current at the time of this writing) kernel
|
||||
versions) is able to support tinc.
|
||||
since version 2.1.60, so anything above that (2.2.x, 2.3.x, and 2.4.0)
|
||||
kernel version is able to support tinc.
|
||||
|
||||
|
||||
@c ==================================================================
|
||||
|
@ -294,6 +295,10 @@ Network device support
|
|||
<*> Ethertap network tap
|
||||
@end example
|
||||
|
||||
Note that if you want to run more than one instance of tinc or other
|
||||
programs that use the ethertap, you have to compile the ethertap driver
|
||||
as a module.
|
||||
|
||||
For kernel 2.3.x and 2.4.x:
|
||||
|
||||
@example
|
||||
|
@ -316,12 +321,14 @@ alias tap0 ethertap
|
|||
alias char-major-36 netlink_dev
|
||||
@end example
|
||||
|
||||
If you have a 2.4 kernel, you can also choose to use the `Ethertap
|
||||
network tap' device. This is marked obsolete, because the universal
|
||||
TUN/TAP driver is a newer implementation that is supposed to be used in
|
||||
favor of ethertap. For tinc, it doesn't really matter which one you
|
||||
choose; based on the device file name, tinc will make the right choice
|
||||
about what protocol to use.
|
||||
If you have a 2.4-pre kernel, you can choose both the TUN/TAP driver and
|
||||
the `Ethertap network tap' device. This latter is marked obsolete,
|
||||
because the universal TUN/TAP driver is a newer implementation that is
|
||||
supposed to be used in favour of ethertap. For tinc, it doesn't really
|
||||
matter which one you choose; based on the device file name, tinc will make
|
||||
the right choice about what protocol to use. However, chances are that
|
||||
although you can choose the obsolote ethertap driver, it will not function
|
||||
at all. The TUN/TAP driver is the safe choice.
|
||||
|
||||
Finally, after having set up other options, build the kernel and boot
|
||||
it. Unfortunately it's not possible to insert these modules in a
|
||||
|
@ -733,11 +740,17 @@ probe to the other end. If that other end doesn't answer within that
|
|||
same amount of seconds, the connection is terminated, and the others
|
||||
will be notified of this.
|
||||
|
||||
@item @strong{PrivateKey = <path>}
|
||||
@item PrivateKey = <key>
|
||||
This is the RSA private key for tinc. However, for safety reasons it is
|
||||
advised to store private keys of any kind in separate files. This prevents
|
||||
accidental eavesdropping if you are editting the configuration file.
|
||||
|
||||
@item PrivateKeyFile = <path>
|
||||
This is the full path name of the RSA private key file that was
|
||||
generated by ``tincd --generate-keys''. It must be a full path, not a
|
||||
relative directory. (NOTE: In version 1.0pre3, this variable was used
|
||||
to give the key inline. This is no longer supported.)
|
||||
relative directory.
|
||||
|
||||
Note that exactly @strong{one of the above two options} must be specified.
|
||||
|
||||
@item TapDevice = <device> (/dev/tap0)
|
||||
The ethertap device to use. Note that you can only use one device per
|
||||
|
@ -774,32 +787,36 @@ port port. port may be given in decimal (default), octal (when preceded
|
|||
by a single zero) o hexadecimal (prefixed with 0x). port is the port
|
||||
number for both the UDP and the TCP (meta) connections.
|
||||
|
||||
@item PublicKey = <path>
|
||||
@item PublicKey = <key>
|
||||
This is the RSA public key for this host.
|
||||
|
||||
@item PublicKeyFile = <path>
|
||||
This is the full path name of the RSA public key file that was generated
|
||||
by ``tincd --generate-keys''. It must be a full path, not a relative
|
||||
directory. (NOTE: In version 1.0pre3, this variable was used to give
|
||||
the key inline. This is no longer supported.)
|
||||
directory.
|
||||
|
||||
Note that exactly @strong{one of the above two options} must be specified
|
||||
in each host configuration file, if you want to be able to establish a
|
||||
connection with that host.
|
||||
|
||||
@item Subnet = <IP address/maskbits>
|
||||
This is the subnet range of all IP addresses that will be accepted by
|
||||
the host that defines it. Please be careful that no two subnets
|
||||
overlap. Every host @strong{must} have a different range of IP
|
||||
addresses that it can handle, otherwise you will see messages like
|
||||
`packet comes back to us'.
|
||||
the host that defines it.
|
||||
|
||||
The range must contain the IP address of the tap device, not the real IP
|
||||
address of the host running tincd.
|
||||
The range must be contained in the IP address range of the tap device,
|
||||
not the real IP address of the host running tincd.
|
||||
|
||||
maskbits is the number of bits set to 1 in the netmask part; for
|
||||
example: netmask 255.255.255.0 would become /24, 255.255.252.0 becomes
|
||||
/22.
|
||||
/22. This conforms to standard CIDR notation as described in
|
||||
@uref{ftp://ftp.isi.edu/in-notes/rfc1519.txt, RFC1519}
|
||||
|
||||
@item TCPonly = <yes|no> (no)
|
||||
If this variable is set to yes, then the packets are tunnelled over a
|
||||
TCP connection instead of a UDP connection. This is especially useful
|
||||
for those who want to run a tinc daemon from behind a masquerading
|
||||
firewall, or if UDP packet routing is disabled somehow. @emph{This is
|
||||
experimental code, try this at your own risk.}
|
||||
experimental code, try this at your own risk. It may not work at all.}
|
||||
@end table
|
||||
|
||||
|
||||
|
@ -1018,21 +1035,21 @@ to have a different ListenPort.
|
|||
|
||||
@subsubheading Key files
|
||||
|
||||
A, B, C and D all generate a passphrase with genauth 2048, the output is
|
||||
stored in /etc/tinc/passphrases/local, except for C, where it should be
|
||||
/etc/tinc/A/passphrases/local.
|
||||
A, B, C and D all have generate a public key with tincd -K, the output is
|
||||
stored in /etc/tinc/hosts/X.pub (where X is A, B or D), except for C,
|
||||
who stored it in /etc/tinc/A/hosts/C.pub.
|
||||
|
||||
A stores a copy of B's passphrase in /etc/tinc/passphrases/10.2.1.12
|
||||
A stores a copy of B's public key in /etc/tinc/hosts/B.pub
|
||||
|
||||
A stores a copy of C's passphrase in /etc/tinc/passphrases/10.3.69.254
|
||||
A stores a copy of C's public key in /etc/tinc/hosts/C.pub
|
||||
|
||||
B stores a copy of A's passphrase in /etc/tinc/passphrases/10.1.54.1
|
||||
B stores a copy of A's public key in /etc/tinc/hosts/A.pub
|
||||
|
||||
C stores a copy of A's passphrase in /etc/tinc/A/passphrases/10.1.54.1
|
||||
C stores a copy of A's public key in /etc/tinc/A/hosts/A.pub
|
||||
|
||||
C stores a copy of D's passphrase in /etc/tinc/A/passphrases/10.4.3.32
|
||||
C stores a copy of D's public key in /etc/tinc/A/hosts/D.pub
|
||||
|
||||
D stores a copy of C's passphrase in /etc/tinc/passphrases/10.3.69.254
|
||||
D stores a copy of C's public key in /etc/tinc/hosts/C.pub
|
||||
|
||||
@subsubheading Starting
|
||||
|
||||
|
@ -1061,42 +1078,28 @@ project that involves trust relations and more than one computer.
|
|||
@node Managing keys, Runtime options, Running tinc, Running tinc
|
||||
@section Managing keys
|
||||
|
||||
Before attempting to start tinc, you have to create passphrases. When
|
||||
tinc tries to make a connection, it exchanges some sensitive
|
||||
Before attempting to start tinc, you have to create public/private keypairs.
|
||||
When tinc tries to make a connection, it exchanges some sensitive
|
||||
data. Before doing so, it likes to know if the other end is
|
||||
trustworthy.
|
||||
|
||||
To do this, both ends must have some knowledge about the other. In the
|
||||
case of tinc this is the authentication passphrase.
|
||||
case of tinc this is the public keys.
|
||||
|
||||
This passphrase is a number, which is chosen at random. This number is
|
||||
then sent to the other computers which want to talk to us directly. To
|
||||
avoid breaking security, this should be done over a known secure channel
|
||||
(such as ssh or similar).
|
||||
To generate a public/private keypair, run `tincd -n vpn-name -K<bits>'.
|
||||
<bits> is optional, you can use it to specify the length of the keys.
|
||||
The length of the public/private keypairs
|
||||
should be at least 1024 for reasonable security (reasonable being good enough
|
||||
to keep the NSA busy for a few weeks).
|
||||
|
||||
All passphrases are stored in the passphrases directory, which is
|
||||
normally /etc/tinc/nn/passphrases/, but it may be changed using the
|
||||
`Passphrases' option in the config file.
|
||||
Every computer that wants to participate in the VPN should do this. The
|
||||
public keyfile should get the name of each tinc daemon and an extension .pub,
|
||||
and it should be stored in the hosts directory.
|
||||
|
||||
To generate a passphrase, run `genauth'. genauth takes one argument,
|
||||
which is the length of the passphrase in bits. The length of the
|
||||
passphrase should be in the range 1024--2048 for a key length of 128
|
||||
bits. genauth creates a random number of the specified length, and puts
|
||||
it to stdout.
|
||||
|
||||
Every computer that wants to participate in the VPN should do this, and
|
||||
store the output in the passphrases directory, in the file @file{local}.
|
||||
|
||||
When every computer has his own local key, it should copy it to the
|
||||
computer that it wants to talk to directly. (i.e. the one it connects to
|
||||
during startup.) This should be done via a secure channel, because it is
|
||||
sensitive information. If this is not done securely, someone might break
|
||||
in on you later on.
|
||||
|
||||
Those non-local passphrase files must have the name of the VPN IP
|
||||
address that they will advertise to you. For instance, if a computer
|
||||
tells us it likes to be 10.1.1.3 with netmask 255.255.0.0, the file
|
||||
should still be called 10.1.1.3, and not 10.1.0.0.
|
||||
When every computer has his own keys and configuration files, the files in the
|
||||
hosts directory should be exchanged with each other computer that it wants to
|
||||
talk to directly. Since only public keys are involved, you can safely do this
|
||||
via email, telnet or ftp, or even putting the contents on a public billboard.
|
||||
|
||||
|
||||
@c ==================================================================
|
||||
|
@ -1114,9 +1117,9 @@ generated automatically, so may be more up-to-date.
|
|||
@cindex options
|
||||
@c from the manpage
|
||||
@table @samp
|
||||
@item -c, --config=FILE
|
||||
Read configuration options from FILE. The default is
|
||||
@file{/etc/tinc/nn/tinc.conf}.
|
||||
@item -c, --config=PATH
|
||||
Read configuration options from the directory PATH. The default is
|
||||
@file{/etc/tinc/nn/}.
|
||||
|
||||
@item -d
|
||||
Increase debug level. The higher it gets, the more gets
|
||||
|
@ -1140,10 +1143,11 @@ started it that way. It will then read the PID from
|
|||
@item -n, --net=NETNAME
|
||||
Connect to net NETNAME. @xref{Multiple networks}.
|
||||
|
||||
@item -t, --timeout=TIMEOUT
|
||||
Seconds to wait before giving a timeout. Should not be set too low,
|
||||
because every time tincd senses a timeout, it disconnects and reconnects
|
||||
again, which will cause unnecessary network traffic and log messages.
|
||||
@item -K, --generate-keys[=BITS]
|
||||
Generate public/private keypair of BITS length. If BITS is not specified,
|
||||
1024 is the default. tinc will ask where you want to store the files,
|
||||
but will default to the configuration directory (you can use the -c or -n option
|
||||
in combination with -K). After that, tinc will quit.
|
||||
|
||||
@item --help
|
||||
Display a short reminder of these runtime options and terminate.
|
||||
|
@ -1177,18 +1181,22 @@ only, so keep an eye on it!
|
|||
|
||||
@item Packet with destination 1.2.3.4 is looping back to us!
|
||||
@table @bullet
|
||||
@item Some host has an IP address range that overlaps with yours
|
||||
Different hosts must have different IP ranges (as given with Subnet in
|
||||
the host configuration files). tinc relies on this information to route
|
||||
its data, so each IP address range must have exactly one host
|
||||
associated. You will only see this message if you specified a debug
|
||||
@item Something is not configured right. Packets are being sent out to the
|
||||
tap device, but according to the Subnet directives in your host configuration
|
||||
file, those packets should go to your own host. Most common mistake is that
|
||||
you have a Subnet line in your host configuration file with a netmask which is
|
||||
just as large as the netmask of the tap device. The latter should in almost all
|
||||
cases be larger. Rethink your configuration.
|
||||
Note that you will only see this message if you specified a debug
|
||||
level of 5 or higher!
|
||||
@end table
|
||||
|
||||
@item Network address and subnet mask do not match!
|
||||
@table @bullet
|
||||
@item The Subnet field must contain a network address
|
||||
If you only want to use one IP address, set the netmask to /32.
|
||||
@item The Subnet field must contain a network address. That means that
|
||||
the lower order bits of the address must be zero. For example, 192.168.1.1/24
|
||||
is wrong, you should use 192.168.1.0/24.
|
||||
@item If you only want to use one IP address, set the netmask to /32.
|
||||
@end table
|
||||
|
||||
@item This is a bug: net.c:253: 24: Some error
|
||||
|
@ -1207,17 +1215,8 @@ even if we built in a default directory to look for these files, the key
|
|||
files are bound to be in a different directory.
|
||||
@end table
|
||||
|
||||
@item Error reading RSA key file `fd47...8ceb': No such file or directory
|
||||
@table @bullet
|
||||
@item You specified the key here, not a pathname
|
||||
In version 1.0pre3, you had to put your key here. This has changed, the
|
||||
keys are now stored in separate files. This means you have to
|
||||
regenerate these keys.
|
||||
@end table
|
||||
|
||||
@end table
|
||||
|
||||
|
||||
|
||||
@c ==================================================================
|
||||
@node Technical information, About us, Running tinc, Top
|
||||
|
@ -1259,7 +1258,9 @@ field.
|
|||
|
||||
So when tinc reads an ethernet frame from the device, it determines its
|
||||
type. Right now, tinc can only handle Internet Protocol version 4 (IPv4)
|
||||
frames. Plans to support other protocols are being made. When tinc knows
|
||||
frames, because it needs IP headers for routing.
|
||||
Plans to support other protocols and switching instead of routing are being made.
|
||||
When tinc knows
|
||||
which type of frame it has read, it can also read the source and
|
||||
destination address from it.
|
||||
|
||||
|
@ -1277,6 +1278,12 @@ When the destination receives this packet, the same thing happens, only
|
|||
in reverse. So it does a decrypt on the contents of the UDP datagram,
|
||||
and it writes the decrypted information to its own ethertap device.
|
||||
|
||||
To let the kernel on the receiving end accept the packet, the destination MAC
|
||||
address must match that of the tap interface. Because of the routing nature
|
||||
of tinc, ARP is not possible. tinc solves this by always overwriting the
|
||||
destination MAC address with fe:fd:0:0:0:0. That is also the reason why you must
|
||||
set the MAC address of your tap interface to that address.
|
||||
|
||||
|
||||
@c ==================================================================
|
||||
@node The Meta-connection, , Protocol Preview, The Connection
|
||||
|
@ -1331,12 +1338,10 @@ don't take it too serious.
|
|||
|
||||
@menu
|
||||
* Key Types::
|
||||
* Key Management::
|
||||
* Authentication::
|
||||
@end menu
|
||||
|
||||
@c ==================================================================
|
||||
@node Key Types, Key Management, Security, Security
|
||||
@node Key Types, , Security, Security
|
||||
@subsection Key Types
|
||||
@c FIXME: check if I'm not talking nonsense
|
||||
|
||||
|
@ -1350,85 +1355,17 @@ the private key that matches the public key. So, a public key only allows
|
|||
@emph{other} people to send encrypted messages to you. This is very useful
|
||||
in setting up private communications channels. Just send out your public key
|
||||
and other people can talk to you in a secure way. But how can you know
|
||||
the other person is who she says she is?
|
||||
the other person is who she says she is? This is done by sending out an
|
||||
encrypted challenge that only the person with the right private key can decode
|
||||
an respond to.
|
||||
|
||||
For authentication itself tinc uses symmetric private keypairs, referred
|
||||
to as a passphrase. The identity of each tinc daemon is defined by it's
|
||||
passphrase (like you can be identified by your social security number).
|
||||
Every tinc daemon that is allowed to connect to you has a copy of your
|
||||
passphrase (hence symmetrical).
|
||||
However, encryption with public/private keys is very slow. Symmetric key cryptography
|
||||
is orders of magnitudes faster, but it is very hard to safely exchange the symmetric
|
||||
keys, since they should be kept private.
|
||||
|
||||
It would also be possible to use public/private keypairs for authentication,
|
||||
so that you could shout out your public key and don't need to keep it
|
||||
secret (like the passphrase you would have to send to someone else). Also,
|
||||
no one else has to know a private key from you.
|
||||
Both forms have their pros and cons, and at the moment tinc just uses passphrases
|
||||
(which are computationaly more efficient and perhaps in some way more
|
||||
secure).
|
||||
|
||||
@c ==================================================================
|
||||
@node Key Management, Authentication, Key Types, Security
|
||||
@subsection Key Management
|
||||
@c FIXME change for the current protocol
|
||||
|
||||
@cindex Diffie-Hellman
|
||||
You can't just send a private encryption key to your peer, because
|
||||
somebody else might already be listening to you. So you'll have to
|
||||
negotiate over a shared but secret key. One way to do this is by using
|
||||
the ``Diffie-Hellman key exchange'' protocol
|
||||
(@uref{http://www.rsa.com/rsalabs/faq/html/3-6-1.html}). The idea is as
|
||||
follows.
|
||||
|
||||
You have two participants A and B that want to agree over a shared
|
||||
secret encryption key. Both parties have some large prime number p and a
|
||||
generator g. These numbers may be known to the outside world, and hence
|
||||
may be included in the source distribution.
|
||||
|
||||
@cindex secret key
|
||||
Both parties then generate a secret key. A generates a, and computes g^a
|
||||
mod p. This is then sent to B; while B computes g^b mod p, and transmits
|
||||
this to A, b being generated by B. Both a and b must be smaller than
|
||||
p-1.
|
||||
|
||||
Both parties then calculate g^ab mod p = k. k is the new, shared, but
|
||||
still secret key.
|
||||
|
||||
To obtain a key k of a sufficient length (128 bits in our vpnd), p
|
||||
should be 2^129-1 or more.
|
||||
|
||||
|
||||
@c ==================================================================
|
||||
@node Authentication, , Key Management, Security
|
||||
@subsection Authentication
|
||||
@c FIXME: recheck
|
||||
|
||||
@cindex man-in-the-middle attack
|
||||
Because the Diffie-Hellman protocol is in itself vulnerable to the
|
||||
``man-in-the-middle attack,'' we should introduce an authentication
|
||||
system.
|
||||
|
||||
We will let A transmit a passphrase that is also known to B encrypted
|
||||
with g^a, before A sends this to B. This way, B can check whether A is
|
||||
really A or just someone else.
|
||||
B will never receive the real passphrase though, because it was
|
||||
encrypted using public/private keypairs. This way there is no way an
|
||||
imposter could steal A's passphrase.
|
||||
|
||||
@cindex passphrase
|
||||
@c ehrmz... but we only use 1024 bits passphrases ourselves? [guus]
|
||||
This passphrase should be 2304 bits for a symmetric encryption
|
||||
system. But since an asymmetric system is more secure, we could do with
|
||||
2048 bits. This only holds if the passphrase is very random.
|
||||
|
||||
These passphrases could be stored in a file that is non-readable by
|
||||
anyone else but root; e.g. @file{/etc/tinc/passphrases} with UID 0
|
||||
and permissions mode 700.
|
||||
|
||||
The only thing that needs to be taken care of is how A can securely send
|
||||
a copy of it's passphrase to B if B doesn't have it yet. This could be
|
||||
done via mail with PGP, but you should be really convinced of the
|
||||
identity of the person who owns the email address you are sending this to.
|
||||
Swapping floppy disks in real life might be the best way to do this!
|
||||
The idea is to use public/private cryptography for authentication, and for
|
||||
exchanging symmetric keys in a safe way. After that, all communications are encrypted
|
||||
with the symmetric cipher.
|
||||
|
||||
|
||||
@c ==================================================================
|
||||
|
@ -1462,11 +1399,11 @@ and join channel #tinc.
|
|||
@item Ivo Timmermans (zarq) (@email{itimmermans@@bigfoot.com})
|
||||
Main coder/hacker and maintainer of the package.
|
||||
|
||||
@item Guus Sliepen (guus)
|
||||
@item Guus Sliepen (guus) (@email{guus@@sliepen.warande.net})
|
||||
Originator of it all, co-author.
|
||||
|
||||
@item Wessel Dankers (Ubiq)
|
||||
General obfuscater of the code.
|
||||
@item Wessel Dankers (Ubiq) (@email{wsl@@nl.linux.org})
|
||||
For the name `tinc' and various suggestions.
|
||||
|
||||
@end table
|
||||
|
||||
|
|
Loading…
Reference in a new issue