HOW-TO use plainrsa auth, contributed by Simon Chang <simonychang@gmail.com>

Before you begin, you should understand that the RSA authentication
mechanism hinges upon the idea of a split cryptographic key:  one used
by the public, the other readable only to you.  Any data that is
encrypted by a public key can be decrypted only by the corresponding
private key, so that the private key user can be assured that the
content of the transmission has not been examined by unauthorized
parties.  Similarly, any data encrypted by the private key can be
decrypted by the public key so that the public knows that this
transmission came from this user and nobody else (this idea is called
non-repudiation).  Also, the longer the key length, the more difficult
it would be for potential attacker to conduct brute-force discovery of
the keys.  So, what all this means for the security administrator is
that the setup needs a pair of reasonably long keys for each host that
wishes to authenticate in this manner.

With this in mind, it should be relatively straightforward to set up
RSA authentication.  For the purpose of this document, we assume that
we are setting up RSA authentication between two networked hosts
called Boston and Chicago.  Unless otherwise noted, all steps should
be performed on both hosts with corresponding key names.  Here are the
steps:

1)  Included in each default installation of ipsec-tools is a binary
called plainrsa-gen.  This executable is used to generate a pair of
RSA keys for the host.  There are only two parameters that you should
be concerned about: -b, which sets the number of bits for the keys,
and -f, which specifies the output file for plainrsa-gen to send the
results.  On an ordinary Pentium-II with 128 MB of RAM, it takes only
seconds to generate keys that are 2048 bits long, and only slightly
longer to generate 4096-bit keys.  Either key length should be
sufficient; any longer key length actually reduces performance and
does not increase security significantly.  You should therefore run it
as:

	plainrsa-gen -b 2048 -f /var/tmp/boston.keys

2)  When the process completes, you should have a text file that
includes both public and private keys.  GUARD THIS FILE CAREFULLY,
because once a private key is compromised it is no longer any good,
and you must generate a new pair from scratch.  Reading the file
itself, you should see several very long lines of alphanumeric data.
The only line you should be concerned with is the line towards the top
of the output file that begins with "# pubkey=0sAQPAmBdT/" or
something to that effect.  This line is your public key, which should
be made available to the other host that you are setting up.  Copy
this line to a separate file called "boston.pub" and change the
beginning of the line so that it reads ": PUB 0sAQPAmBdT/".
Alternatively, you can also grab the first line of the boston.keys
file and uncomment the line so that it reads the same as above.  Now
rename the file you generated initially to "boston.priv".

3)  You should now have two files, boston.priv and boston.pub
(chicago.priv and chicago.pub on Chicago).  The first file contains
your private key and the second file your public key.  Next you should
find a way to get the public key over to the other host involved.
Boston should have (1) its own key pair, and (2) Chicago's public key
ONLY.  Do not copy Chicago's private key over to Boston, because (a)
it is not necessary, and (b) you would now have two potential places
for losing control of your private key.

4)  You should now configure the racoon.conf configuration file for
each host to (a) turn on RSA authentication, and (b) designate each
host's private key and the remote host(s)'s public key(s).  Take all
your keys and place it in one directory and use the global directive
"path certificate" to specify the location of the keys.  This step is
especially important if you are running racoon with privilege
separation, because if racoon cannot find the keys inside the
directory you have just specified it will fail the authentication
process.  So, write the directive like the following:

	path certificate "/etc/racoon";

Next, you need to specify the host's own private key and the public
keys of all the remote peers involved. For your local private key and 
remote public key(s), you should use the following directives:

	certificate_type plain_rsa "/etc/racoon/boston.priv";
	peers_certfile plain_rsa "/etc/racoon/chicago.pub";

Notice the option "plain_rsa" for both directives.

Finally, under the "proposal" statement section, you should specify
the "rsasig" option for "authentication_method".

5)  You have finished configuring the host for RSA authentication.
Now use racoonctl to reload the configuration or simply restart the
machine and you should be all set.

TROUBLESHOOTING

In the event that the hosts fail to communicate, first go back to the
instructions above and make sure that:

1)  You have placed all the keys in the directory that is specified by
the "path certificate" directive.  Keep in mind that privilege
separation will force racoon to look into that directory and nowhere
else.
2)  You have specified correctly the host's own private key and the
remote peer's public key.
3)  You have specified the "rsasig" method for authentication in the
proposal statement.

If you run into any further problems, you should try to use "racoon
-v" to debug the setup, and send a copy of the debug messages to the
mailing list so that we can help you determine what the problem is.

Last modified: $Date: 2006/12/10 05:51:14 $
